I want a Vaadin accordin to expand by default last Tabs as show in image B. (tabs are dinamically created)
It could be do it in this way:
main(){
dinamically_load_accordion();
accordion.setSelectedTab( last_added);
}
dinamically_load_accordion(){
while( ) {
last_added = accordion.addTab(this.tree, tittle);
}
}
Related
I have a Blazor WASM application using a MudTable that displays many rows from List<T>.
The MudTable uses #ref="_mappingTable" to identify the table in code.
In code, I set the selected item:
_mappingTable.SetSelectedItem(specificItemFromTheList);
StateHasChanged();
This seems to work fine. However, I'd then like the table to automatically scroll so that item is now visible. It's not automatically doing that and not sure how to achieve that.
There is an open issue requesting a new function "Scroll to row in MudTable"
https://github.com/MudBlazor/MudBlazor/issues/5445
You can wait for that issue to be solved or try the alternative posted by the user geometrikal
Currently using this code to scroll a row into view. It assumes the
table rows are all the same height.
export function scrollMudTableToRow(rowIndex) {
var tableElement = document.querySelector("div.mud-table-container");
var tableHeight = tableElement.offsetHeight;
var tableOffset = tableElement.scrollTop;
var tableRowHeight = tableElement.querySelector("tr.mud-table-row").scrollHeight;
// Element is above view - scroll so it is at top
if (rowIndex * tableRowHeight < tableOffset) {
tableElement.scrollTo(0, rowIndex * tableRowHeight);
}
// Element is below view - scroll so that it is at bottom
else if ((rowIndex + 1) * tableRowHeight > tableOffset + tableHeight) {
tableElement.scrollTo(0, (rowIndex + 1) * tableRowHeight - tableHeight);
}
}
how to insert a button or any other kind of component in javafx tableview cell using tornadofx ?
I am in a situation where i have a column header "Action". I need to render several action buttons in the table view .
Use the cellFormat function and assign a container with the buttons to the graphic property of the cell:
column("Name", SomeObject::someproperty).cellFormat {
graphic = hbox(spacing = 5) {
button("Action 1").action { doSomething() }
button("Action 2").action { doSomethingElse() }
}
}
I'm working on my WordPress website with Visual Composer.
I need to include a pageable container but it would be great if it can be like a slideshow.
This is my pageable container
Thanks in advance,
Regards :)
Based upon the current version of WP Bakery Page Builder the below works for me:
To build it I created a row with 3 columns, with the pageable container in the middle column and the left and right arrow images in the columns on either side.
Both arrow images and the pageable container were given IDs. In my example the IDs of the arrows were #arrow_prev and #arrow_next respectively. You can give your pageable container any unique ID.
(function ($) {
$(document).ready(function(){
$( '#arrow_prev' ).click( function( e ) {
var pageable_container = $(this).closest(".vc_row").find(".vc_tta-panels-container");
move_pageable_container(pageable_container,'prev');
});
$( '#arrow_next' ).click( function( e ) {
var pageable_container = $(this).closest(".vc_row").find(".vc_tta-panels-container");
move_pageable_container(pageable_container,'next');
});
function move_pageable_container(pageable_container,direction){
// Make a list of the panel IDs
var panel_ids = $(pageable_container.find(".vc_tta-panel"))
.map(function() { return this.id; }) // convert to set of IDs
.get();
// Find position of the active panel in list
var current_active_pos = panel_ids.indexOf($(pageable_container).find(".vc_tta-panel.vc_active").attr('id'));
var new_pos = 0;
switch(direction) {
case 'prev':
if (current_active_pos > 0){
new_pos = current_active_pos-1;
}else{
new_pos = panel_ids.length-1;
}
break;
case 'next':
if (current_active_pos < panel_ids.length-1){
new_pos = current_active_pos+1;
}else{
new_pos = 0;
}
break;
}
// Clear active panels
$(pageable_container.find(".vc_tta-panel")).each(function(i,a) {
$(this).removeClass("vc_active");
});
var new_active_panel = $(pageable_container).find('#'+ panel_ids[new_pos]);
$(new_active_panel).addClass("vc_animating");
$(new_active_panel).addClass("vc_active");
setTimeout(
function(){
$(new_active_panel).removeClass("vc_animating");
}, 350);
}
}
);
})(jQuery);
If you want a pseudo fading-in effect then you can use this additional CSS in your style sheet:
#id_of_pageable_container .vc_tta-panel.vc_animating {
opacity: 0!important;
}
Where #id_of_pageable_container is the ID that you gave your pageable container
A simpler solution with vanilla js only:
The idea is to find the target page button and press it programmatically, so that there is no need to mimic the plugin's animations as in Chaz's solution.
Add js (via Raw JS widget / other means):
function prevSlide () {
const slides = document.getElementsByClassName('vc_pagination-item');
for (let i = 0; i < slides.length; i++) {
if (slides[i].className.includes('vc_active')) {
if (i - 1 < 0) return;
slides[i - 1].firstChild.click();
return;
}
}
}
function nextSlide () {
const slides = document.getElementsByClassName('vc_pagination-item');
for (let i = 0; i < slides.length; i++) {
if (slides[i].className.includes('vc_active')) {
if (i + 1 >= slides.length) return;
slides[i + 1].firstChild.click();
return;
}
}
}
Add button widgets and set href to call js:
For left arrow button,
javascript:prevSlide();
For right arrow button,
javascript:nextSlide();
Hope this helps.
I prefer to use the Post Grid widget for that. Keep in mind that the pageable container is not totally responsive, it doesn't react to swipe touching, but the Post Grid does.
Post Grid is really powerful, although it also has its caveouts. You can create your content with posts and pages, or a custom post type and then filter what you want to show in your slider from the widget options.
In "advanced mode" you can use the Grid Builder to create your own template and control the output.
The only problems that I've found with this method is to set a variable height in sliders and that sometimes it is slow loading content and is not possible to do a lazyload.
I am using the Twenty Thirteen theme as a base for a custom child theme that I am creating. The client would like only three widgets in the footer and I need to evenly space them. When I put three widgets there is still room on the right for a fourth (I am not using the sidebar widget, which would knock the 4th widget below the top three).
I found this code in the functions.js file:
/**
* Arranges footer widgets vertically.
*/
if ( $.isFunction( $.fn.masonry ) ) {
var columnWidth = body.is( '.sidebar' ) ? 228 : 245;
$( '#secondary .widget-area' ).masonry( {
itemSelector: '.widget',
columnWidth: columnWidth,
gutterWidth: 20,
isRTL: body.is( '.rtl' )
} );
}
} )( jQuery );
It looks like it changes the width but how do I change it to make it only 3 widgets across instead of four?
Thanks,
Matt
The gutterWidth option adds additional spacing between columns, but not on the outer sides of the container. You can alter that value to increase spacing.
However, I think you are going to have to alter other files to properly achieve the task.
I've got a spark List with an item renderer. When I click on an element, the renderer becomes larger and when I click again, it becomes small again.
The problem is that list doesn't resize with the content. I've tried to dispatch an event from the renderer passing its content size and resize list in this way:
private function refreshList(event:ResultEvent):void
{
var size:Number = (event.result as Number) + 6;
if (size >= mylist.width)
{
consultingNumber++;
mylist.width = size;
}
else
{
consultingNumber--;
if (consultingNumber == 0)
mylist.width = size;
}
mylist.invalidateDisplayList();
}
consultingNumber is the number of 'opened' renderer.
It works quite well, but when all renderer is 'closed' an horizontal scrollbar appear.
Tracing list's width it result correct but the scrollbar is there even if I set horizontalScrollPolicy to off.
Try calling myList.invalidateSize() instead of myList.invalidateDisplayList();
Here is some more information about the flex component lifecycle which should get you on the right track:
http://weblog.mrinalwadhwa.com/2009/06/21/flex-4-component-lifecycle/
http://www.slideshare.net/rjowen/adobe-flex-component-lifecycle-presentation
Cheers