Skip to content

Commit

Permalink
refactor!: update menu-bar to use vaadin-menu-bar-list-box (#5354)
Browse files Browse the repository at this point in the history
  • Loading branch information
web-padawan authored Jan 23, 2023
1 parent a6edd66 commit 1f47047
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 12 deletions.
6 changes: 3 additions & 3 deletions packages/context-menu/src/vaadin-contextmenu-items-mixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ export const ItemsMixin = (superClass) =>
const subMenu = root.querySelector(this.constructor.is);
subMenu.closeOn = menu.closeOn;

const listBox = root.querySelector('vaadin-context-menu-list-box');
const listBox = root.querySelector(`${this._tagNamePrefix}-list-box`);

listBox.innerHTML = '';

Expand Down Expand Up @@ -244,7 +244,7 @@ export const ItemsMixin = (superClass) =>
/** @private */
__initMenu(root, menu) {
if (!root.firstElementChild) {
const listBox = document.createElement('vaadin-context-menu-list-box');
const listBox = document.createElement(`${this._tagNamePrefix}-list-box`);
root.appendChild(listBox);

if (this._theme) {
Expand Down Expand Up @@ -353,7 +353,7 @@ export const ItemsMixin = (superClass) =>
}
});
} else {
const listBox = root.querySelector('vaadin-context-menu-list-box');
const listBox = root.querySelector(`${this._tagNamePrefix}-list-box`);
if (this._theme) {
listBox.setAttribute('theme', this._theme);
} else {
Expand Down
81 changes: 81 additions & 0 deletions packages/menu-bar/src/vaadin-menu-bar-list-box.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/**
* @license
* Copyright (c) 2019 - 2023 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
import { DirMixin } from '@vaadin/component-base/src/dir-mixin.js';
import { ListMixin } from '@vaadin/component-base/src/list-mixin.js';
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';

/**
* An element used internally by `<vaadin-menu-bar>`. Not intended to be used separately.
*
* @extends HTMLElement
* @mixes ControllerMixin
* @mixes DirMixin
* @mixes ListMixin
* @mixes ThemableMixin
* @protected
*/
class MenuBarListBox extends ListMixin(ThemableMixin(DirMixin(ControllerMixin(PolymerElement)))) {
static get is() {
return 'vaadin-menu-bar-list-box';
}

static get template() {
return html`
<style>
:host {
display: flex;
}
:host([hidden]) {
display: none !important;
}
[part='items'] {
height: 100%;
width: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
</style>
<div part="items">
<slot></slot>
</div>
`;
}

static get properties() {
return {
// We don't need to define this property since super default is vertical,
// but we don't want it to be modified, or be shown in the API docs.
/** @private */
orientation: {
readOnly: true,
},
};
}

/**
* @return {!HTMLElement}
* @protected
* @override
*/
get _scrollerElement() {
return this.shadowRoot.querySelector('[part="items"]');
}

/** @protected */
ready() {
super.ready();

this.setAttribute('role', 'menu');
}
}

customElements.define(MenuBarListBox.is, MenuBarListBox);

export { MenuBarListBox };
1 change: 1 addition & 0 deletions packages/menu-bar/src/vaadin-menu-bar-submenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* Copyright (c) 2019 - 2023 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import './vaadin-menu-bar-list-box.js';
import './vaadin-menu-bar-overlay.js';
import { html } from '@polymer/polymer/lib/utils/html-tag.js';
import { ContextMenu } from '@vaadin/context-menu/src/vaadin-context-menu.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/menu-bar/src/vaadin-menu-bar.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export interface MenuBarEventMap extends HTMLElementEventMap, MenuBarCustomEvent
*
* - `<vaadin-menu-bar-button>` - has the same API as [`<vaadin-button>`](#/elements/vaadin-button).
* - `<vaadin-context-menu-item>` - has the same API as [`<vaadin-item>`](#/elements/vaadin-item).
* - `<vaadin-context-menu-list-box>` - has the same API as [`<vaadin-list-box>`](#/elements/vaadin-list-box).
* - `<vaadin-menu-bar-list-box>` - has the same API as [`<vaadin-list-box>`](#/elements/vaadin-list-box).
* - `<vaadin-menu-bar-overlay>` - has the same API as [`<vaadin-overlay>`](#/elements/vaadin-overlay).
*
* @fires {CustomEvent} item-selected - Fired when a submenu item or menu bar button without children is clicked.
Expand Down
2 changes: 1 addition & 1 deletion packages/menu-bar/src/vaadin-menu-bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ import { MenuBarMixin } from './vaadin-menu-bar-mixin.js';
*
* - `<vaadin-menu-bar-button>` - has the same API as [`<vaadin-button>`](#/elements/vaadin-button).
* - `<vaadin-context-menu-item>` - has the same API as [`<vaadin-item>`](#/elements/vaadin-item).
* - `<vaadin-context-menu-list-box>` - has the same API as [`<vaadin-list-box>`](#/elements/vaadin-list-box).
* - `<vaadin-menu-bar-list-box>` - has the same API as [`<vaadin-list-box>`](#/elements/vaadin-list-box).
* - `<vaadin-menu-bar-overlay>` - has the same API as [`<vaadin-overlay>`](#/elements/vaadin-overlay).
*
* @fires {CustomEvent<boolean>} item-selected - Fired when a submenu item or menu bar button without children is clicked.
Expand Down
12 changes: 6 additions & 6 deletions packages/menu-bar/test/dom/__snapshots__/menu-bar.test.snap.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ snapshots["menu-bar overlay"] =
start-aligned=""
top-aligned=""
>
<vaadin-context-menu-list-box
<vaadin-menu-bar-list-box
aria-orientation="vertical"
role="list"
role="menu"
>
<vaadin-context-menu-item
aria-haspopup="false"
Expand All @@ -84,7 +84,7 @@ snapshots["menu-bar overlay"] =
>
Generate Report
</vaadin-context-menu-item>
</vaadin-context-menu-list-box>
</vaadin-menu-bar-list-box>
<vaadin-menu-bar-submenu hidden="">
</vaadin-menu-bar-submenu>
</vaadin-menu-bar-overlay>
Expand All @@ -101,9 +101,9 @@ snapshots["menu-bar overlay class"] =
start-aligned=""
top-aligned=""
>
<vaadin-context-menu-list-box
<vaadin-menu-bar-list-box
aria-orientation="vertical"
role="list"
role="menu"
>
<vaadin-context-menu-item
aria-haspopup="false"
Expand All @@ -121,7 +121,7 @@ snapshots["menu-bar overlay class"] =
>
Generate Report
</vaadin-context-menu-item>
</vaadin-context-menu-list-box>
</vaadin-menu-bar-list-box>
<vaadin-menu-bar-submenu hidden="">
</vaadin-menu-bar-submenu>
</vaadin-menu-bar-overlay>
Expand Down
2 changes: 1 addition & 1 deletion packages/menu-bar/test/menu-bar.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ describe('item components', () => {
const subMenu = menu._subMenu;
overflow.click();
await nextRender(subMenu);
const listBox = subMenu.$.overlay.querySelector('vaadin-context-menu-list-box');
const listBox = subMenu.$.overlay.querySelector('vaadin-menu-bar-list-box');
expect(listBox.items[0]).to.equal(buttons[2].item.component);
expect(listBox.items[0].firstChild).to.equal(menu.items[2].component);
expect(listBox.items[0].firstChild.localName).to.equal('div');
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { contextMenuListBox } from '@vaadin/context-menu/theme/lumo/vaadin-context-menu-list-box-styles.js';
import { listBox } from '@vaadin/list-box/theme/lumo/vaadin-list-box-styles.js';
import { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';

registerStyles('vaadin-menu-bar-list-box', [listBox, contextMenuListBox], { moduleId: 'lumo-menu-bar-list-box' });
1 change: 1 addition & 0 deletions packages/menu-bar/theme/lumo/vaadin-menu-bar.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import './vaadin-menu-bar-button.js';
import './vaadin-menu-bar-item-styles.js';
import './vaadin-menu-bar-list-box-styles.js';
import './vaadin-menu-bar-overlay-styles.js';
import './vaadin-menu-bar-styles.js';
import '@vaadin/context-menu/theme/lumo/vaadin-context-menu.js';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { contextMenuListBox } from '@vaadin/context-menu/theme/material/vaadin-context-menu-list-box-styles.js';
import { listBox } from '@vaadin/list-box/theme/material/vaadin-list-box-styles.js';
import { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';

registerStyles('vaadin-menu-bar-list-box', [listBox, contextMenuListBox], { moduleId: 'material-menu-bar-list-box' });
1 change: 1 addition & 0 deletions packages/menu-bar/theme/material/vaadin-menu-bar.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import './vaadin-menu-bar-button.js';
import './vaadin-menu-bar-item-styles.js';
import './vaadin-menu-bar-list-box-styles.js';
import './vaadin-menu-bar-styles.js';
import './vaadin-menu-bar-overlay-styles.js';
import '@vaadin/context-menu/theme/material/vaadin-context-menu.js';
Expand Down

0 comments on commit 1f47047

Please sign in to comment.