Skip to content

Commit a5cea7d

Browse files
javier-godoypaodb
authored andcommitted
feat: move selected tab to the main part of the menu-bar
Close #13
1 parent 44b4d35 commit a5cea7d

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.flowingcode.vaadin.addons</groupId>
66
<artifactId>enhanced-tabs-addon</artifactId>
7-
<version>1.1.1-SNAPSHOT</version>
7+
<version>1.2.0-SNAPSHOT</version>
88
<name>Enhanced Tabs Add-on</name>
99
<description>Enhanced Tabs Add-on for Vaadin Flow</description>
1010
<url>https://www.flowingcode.com/en/open-source/</url>

src/main/java/com/flowingcode/vaadin/addons/enhancedtabs/EnhancedTabs.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ public void add(Tab... tabs) {
187187
ev ->
188188
tab.getElement()
189189
.executeJs(
190-
"this.addEventListener('click', ()=>{let overlay = this.closest('vaadin-menu-bar-overlay, vaadin-context-menu-overlay'); overlay && overlay.close();})"));
190+
"this.addEventListener('click', ()=>{let overlay = this.closest('vaadin-menu-bar-overlay, vaadin-context-menu-overlay'); overlay && overlay.close();})",
191+
this));
191192
}
192193

193194
if (tabs.length == 0) {
@@ -506,6 +507,7 @@ private void updateSelectedTab(boolean changedFromClient) {
506507

507508
if (selectedTab != null) {
508509
selectedTab.setSelected(true);
510+
getElement().executeJs("this.__detectOverflow()");
509511
}
510512

511513
fireEvent(new SelectedChangeEvent(this, previousTab, changedFromClient));

src/main/resources/META-INF/frontend/fcEnhancedTabs/connector.js

+25
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,31 @@
4747
}
4848
});
4949

50+
const __detectOverflow = tabs.__detectOverflow.bind(tabs);
51+
52+
tabs.__detectOverflow = function() {
53+
//restore the normal order of buttons
54+
var buttons = tabs._buttons;
55+
const selectedButton = buttons.find(e=>e._position!==undefined);
56+
if (selectedButton) {
57+
buttons[0].parentElement.insertBefore(selectedButton, buttons[selectedButton._position+1]);
58+
__detectOverflow();
59+
selectedButton._position=undefined;
60+
}
61+
62+
__detectOverflow();
63+
64+
// move the selected tab out of the overflow button
65+
buttons = tabs._buttons;
66+
const selectedIndex = buttons.findIndex(e=>e.item.component && e.item.component.querySelector('vaadin-tab[selected]'));
67+
const overflowIndex = buttons.findIndex(e=>e.style.visibility);
68+
if (selectedIndex>=overflowIndex && overflowIndex>0) {
69+
buttons[0].parentElement.insertBefore(buttons[selectedIndex], buttons[overflowIndex-1]);
70+
__detectOverflow();
71+
buttons[selectedIndex]._position = selectedIndex;
72+
}
73+
};
74+
5075
}
5176
}
5277
})();

0 commit comments

Comments
 (0)