Skip to content

Commit 4558508

Browse files
committed
Add MenuSeparator component
1 parent 78fd914 commit 4558508

File tree

6 files changed

+79
-8
lines changed

6 files changed

+79
-8
lines changed

src/main/java/com/flowingcode/addons/applayout/AppDrawer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ public AppDrawer(Component headerComponent) {
6767
pm.getElement().executeJs("this.style.height='calc(100% - '+($0.scrollHeight+16)+'px)'", header);
6868
r[0].remove();
6969
});
70-
71-
getElement().getStyle().set("--fc-separator-background-color", "var(--app-drawer-content-container_-_background-color)");
70+
7271
removeAll();
7372
}
7473

@@ -105,7 +104,7 @@ public void removeAll() {
105104
this.add(pm);
106105
}
107106

108-
public void setMenuItems(Collection<MenuItem> menuItems) {
107+
public void setMenuItems(Collection<? extends Component> menuItems) {
109108
pm.removeAll();
110109
menuItems.stream().forEach(pm::add);
111110
}

src/main/java/com/flowingcode/addons/applayout/AppLayout.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public void setHeight(String height) {
8585
header.setHeight(height);
8686
}
8787

88-
public void setMenuItems(MenuItem... menuitems) {
88+
public void setMenuItems(Component... menuitems) {
8989
drawer.setMenuItems(Arrays.asList(menuitems));
9090
}
9191

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.flowingcode.addons.applayout;
2+
3+
import com.vaadin.flow.component.Component;
4+
import com.vaadin.flow.component.Tag;
5+
import com.vaadin.flow.component.dependency.JsModule;
6+
7+
@JsModule("./fc-applayout/fc-separator.js")
8+
@Tag("fc-separator")
9+
public class MenuSeparator extends Component {
10+
11+
private static final long serialVersionUID = 1L;
12+
13+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
2+
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
3+
4+
import {ThemableMixin} from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
5+
6+
/*
7+
Styles:
8+
--fc-separator-border-color
9+
--fc-separator-text-padding
10+
*/
11+
class MenuSeparator extends ThemableMixin(PolymerElement) {
12+
static get is() { return 'fc-separator'; }
13+
14+
static get template() {
15+
//Based on https://stackoverflow.com/a/28434792/1297272
16+
//(C) 2015 CC-BY-SA https://stackoverflow.com/users/677418/sleek-geek
17+
return html`
18+
<style>
19+
:host {
20+
display: flex;
21+
justify-content: center;
22+
opacity: 0.6;
23+
}
24+
:host div {
25+
width: 100%;
26+
text-align: center;
27+
position: relative;
28+
}
29+
30+
:host div:after {
31+
content: '';
32+
width: 100%;
33+
position: absolute;
34+
border-bottom: solid 1px var(--fc-separator-border-color, rgba(0,0,0, 0.6));
35+
left: 0;
36+
top: 50%;
37+
z-index: 1;
38+
}
39+
40+
:host span {
41+
width: auto;
42+
display: inline-block;
43+
z-index: 3;
44+
padding: 0 var(--fc-separator-text-padding, 8px) 0 var(--fc-separator-text-padding, 8px);
45+
position: relative;
46+
}
47+
</style>
48+
<div>
49+
<span><slot></slot></span>
50+
</div>
51+
`;}
52+
53+
}
54+
55+
customElements.define(MenuSeparator.is, MenuSeparator);

src/main/resources/META-INF/frontend/styles/applayout-styles.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ app-drawer {
3838
z-index: 1000;
3939
}
4040

41+
fc-separator {
42+
--fc-separator-border-color: rgba(0,0,20,0.6);
43+
}
44+
4145
app-drawer paper-listbox {
4246
overflow-y: auto;
4347
}

src/test/java/com/flowingcode/addons/applayout/DemoView.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public DemoView() {
6868
this.setMargin(false);
6969

7070
app.setMenuItems(createMenuItems());
71-
71+
7272
app.setToolbarIconButtons(miSettings);
7373
this.add(app, container);
7474

@@ -175,15 +175,15 @@ private void toggleSettings(MenuItem toggleSettings) {
175175
}
176176
}
177177

178-
private MenuItem[] createMenuItems() {
178+
private Component[] createMenuItems() {
179179

180180
MenuItem mi = new MenuItem("Say hello", () -> showContent("Hello!")).setIcon("settings");
181181

182182
MenuItem miToggleSettings = new MenuItem().setIcon("settings");
183183
miToggleSettings.setCommand(() -> toggleSettings(miToggleSettings));
184184
toggleSettings(miToggleSettings);
185185

186-
return new MenuItem[] {
186+
return new Component[] {
187187
//icon as VaadinIcon enum
188188
new MenuItem("Content", VaadinIcon.BOOK, () -> showHamletContent())
189189
.setCommand(MouseButton.MIDDLE, ()->{
@@ -212,7 +212,7 @@ private MenuItem[] createMenuItems() {
212212
.add(new MenuItem("And Again",()->showContent("And Again!")))
213213
),
214214

215-
new MenuItem("------"),
215+
new MenuSeparator(),
216216

217217
new MenuItem("Item 1"),
218218
new MenuItem("Item 2"),

0 commit comments

Comments
 (0)