@exmg/exm-navigation 1.0.3 → 1.1.1-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/README.md +73 -0
  2. package/dist/exm-navigation-base.d.ts +131 -0
  3. package/dist/exm-navigation-base.js +391 -0
  4. package/dist/exm-navigation-drawer-base.d.ts +11 -0
  5. package/dist/exm-navigation-drawer-base.js +52 -0
  6. package/dist/exm-navigation-drawer-menu-base.d.ts +12 -0
  7. package/dist/exm-navigation-drawer-menu-base.js +45 -0
  8. package/dist/exm-navigation-drawer-menu.d.ts +9 -0
  9. package/dist/exm-navigation-drawer-menu.js +12 -0
  10. package/dist/exm-navigation-drawer-nav-item-base.d.ts +14 -0
  11. package/dist/exm-navigation-drawer-nav-item-base.js +49 -0
  12. package/dist/exm-navigation-drawer-nav-item.d.ts +8 -0
  13. package/dist/exm-navigation-drawer-nav-item.js +10 -0
  14. package/{src → dist}/exm-navigation-drawer.d.ts +0 -1
  15. package/{src → dist}/exm-navigation-drawer.js +0 -2
  16. package/dist/exm-navigation-icon-base.d.ts +7 -0
  17. package/dist/exm-navigation-icon-base.js +20 -0
  18. package/dist/exm-navigation-icon-button-base.d.ts +9 -0
  19. package/dist/exm-navigation-icon-button-base.js +36 -0
  20. package/dist/exm-navigation-icon-button.d.ts +8 -0
  21. package/dist/exm-navigation-icon-button.js +10 -0
  22. package/dist/exm-navigation-icon.d.ts +8 -0
  23. package/dist/exm-navigation-icon.js +10 -0
  24. package/dist/exm-navigation-rail-base.d.ts +12 -0
  25. package/dist/exm-navigation-rail-base.js +55 -0
  26. package/{src → dist}/exm-navigation-rail-nav-item-base.d.ts +2 -4
  27. package/dist/exm-navigation-rail-nav-item-base.js +37 -0
  28. package/{src → dist}/exm-navigation-rail-nav-item.d.ts +0 -1
  29. package/{src → dist}/exm-navigation-rail-nav-item.js +0 -2
  30. package/{src → dist}/exm-navigation-rail.d.ts +0 -1
  31. package/{src → dist}/exm-navigation-rail.js +0 -2
  32. package/dist/exm-navigation-sub-menu-base.d.ts +28 -0
  33. package/dist/exm-navigation-sub-menu-base.js +153 -0
  34. package/dist/exm-navigation-sub-menu.d.ts +8 -0
  35. package/dist/exm-navigation-sub-menu.js +10 -0
  36. package/dist/exm-navigation-topbar-base.d.ts +10 -0
  37. package/dist/exm-navigation-topbar-base.js +33 -0
  38. package/dist/exm-navigation-topbar.d.ts +8 -0
  39. package/dist/exm-navigation-topbar.js +10 -0
  40. package/dist/exm-navigation.d.ts +8 -0
  41. package/dist/exm-navigation.js +10 -0
  42. package/dist/index.d.ts +12 -0
  43. package/dist/index.js +13 -0
  44. package/dist/mixins/media-queries.d.ts +8 -0
  45. package/dist/mixins/media-queries.js +57 -0
  46. package/{src/styles/exm-navigation-rail-nav-css.d.ts → dist/styles/exm-navigation-css.d.ts} +0 -1
  47. package/dist/styles/exm-navigation-css.js +72 -0
  48. package/{src → dist}/styles/exm-navigation-drawer-css.d.ts +0 -1
  49. package/dist/styles/exm-navigation-drawer-css.js +35 -0
  50. package/dist/styles/exm-navigation-drawer-nav-item-css.d.ts +1 -0
  51. package/dist/styles/exm-navigation-drawer-nav-item-css.js +84 -0
  52. package/dist/styles/exm-navigation-icon-button-css.d.ts +1 -0
  53. package/dist/styles/exm-navigation-icon-button-css.js +29 -0
  54. package/dist/styles/exm-navigation-icon-css.d.ts +1 -0
  55. package/dist/styles/exm-navigation-icon-css.js +22 -0
  56. package/{src → dist}/styles/exm-navigation-rail-css.d.ts +0 -1
  57. package/dist/styles/exm-navigation-rail-css.js +50 -0
  58. package/{src → dist}/styles/exm-navigation-rail-nav-item-css.d.ts +0 -1
  59. package/dist/styles/exm-navigation-rail-nav-item-css.js +94 -0
  60. package/dist/styles/exm-navigation-sub-menu-css.d.ts +1 -0
  61. package/dist/styles/exm-navigation-sub-menu-css.js +21 -0
  62. package/dist/styles/exm-navigation-topbar-css.d.ts +1 -0
  63. package/dist/styles/exm-navigation-topbar-css.js +30 -0
  64. package/dist/types.d.ts +8 -0
  65. package/dist/types.js +2 -0
  66. package/package.json +19 -20
  67. package/index.d.ts +0 -16
  68. package/index.js +0 -17
  69. package/src/exm-navigation-base.d.ts +0 -30
  70. package/src/exm-navigation-base.js +0 -85
  71. package/src/exm-navigation-drawer-base.d.ts +0 -29
  72. package/src/exm-navigation-drawer-base.js +0 -173
  73. package/src/exm-navigation-drawer-nav.d.ts +0 -9
  74. package/src/exm-navigation-drawer-nav.js +0 -47
  75. package/src/exm-navigation-rail-base.d.ts +0 -4
  76. package/src/exm-navigation-rail-base.js +0 -10
  77. package/src/exm-navigation-rail-nav-base.d.ts +0 -4
  78. package/src/exm-navigation-rail-nav-base.js +0 -9
  79. package/src/exm-navigation-rail-nav-item-base.js +0 -69
  80. package/src/exm-navigation-rail-nav.d.ts +0 -9
  81. package/src/exm-navigation-rail-nav.js +0 -12
  82. package/src/exm-navigation-signals.d.ts +0 -11
  83. package/src/exm-navigation-signals.js +0 -11
  84. package/src/exm-navigation-toolbar-base.d.ts +0 -8
  85. package/src/exm-navigation-toolbar-base.js +0 -33
  86. package/src/exm-navigation-toolbar.d.ts +0 -9
  87. package/src/exm-navigation-toolbar.js +0 -12
  88. package/src/styles/exm-navigation-drawer-css.js +0 -4
  89. package/src/styles/exm-navigation-drawer.scss +0 -29
  90. package/src/styles/exm-navigation-rail-css.js +0 -4
  91. package/src/styles/exm-navigation-rail-nav-css.js +0 -4
  92. package/src/styles/exm-navigation-rail-nav-item-css.js +0 -4
  93. package/src/styles/exm-navigation-rail-nav-item.scss +0 -107
  94. package/src/styles/exm-navigation-rail-nav.scss +0 -7
  95. package/src/styles/exm-navigation-rail.scss +0 -35
  96. package/src/styles/exm-navigation-styles-css.d.ts +0 -2
  97. package/src/styles/exm-navigation-styles-css.js +0 -4
  98. package/src/styles/exm-navigation-styles.scss +0 -46
  99. package/src/styles/exm-navigation-toolbar-css.d.ts +0 -2
  100. package/src/styles/exm-navigation-toolbar-css.js +0 -4
  101. package/src/styles/exm-navigation-toolbar.scss +0 -18
@@ -0,0 +1,45 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { ExmgElement } from '@exmg/lit-base/index.js';
4
+ import { property } from 'lit/decorators.js';
5
+ import { repeat } from 'lit/directives/repeat.js';
6
+ import './exm-navigation-rail-nav-item.js';
7
+ import './exm-navigation-drawer-nav-item.js';
8
+ import '@material/web/list/list.js';
9
+ import '@exmg/exm-collapsed/exm-collapsed.js';
10
+ export class ExmNavigationDrawerMenuBase extends ExmgElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.items = [];
14
+ this.path = [];
15
+ }
16
+ handleDrawerMenuItemClick(path) {
17
+ this.fire('drawer-menu-item-click', path);
18
+ }
19
+ render() {
20
+ return html `<div class="top"><slot name="top"></slot></div>
21
+ <nav class="nav">
22
+ <md-list>
23
+ ${repeat(this.items || [], ({ id }) => id, (item) => html `
24
+ <exm-navigation-drawer-nav-item
25
+ type="button"
26
+ @click=${this.handleDrawerMenuItemClick.bind(this, item.id)}
27
+ ?has-submenu=${(item.items || []).length > 0}
28
+ ?selected=${item.id === this.path[0]}
29
+ icon=${item.icon || ''}
30
+ >
31
+ ${item.label}
32
+ </exm-navigation-drawer-nav-item>
33
+ `)}
34
+ </md-list>
35
+ </nav>
36
+ <div class="bottom"><slot name="bottom"></slot></div>`;
37
+ }
38
+ }
39
+ __decorate([
40
+ property({ type: Array })
41
+ ], ExmNavigationDrawerMenuBase.prototype, "items", void 0);
42
+ __decorate([
43
+ property({ type: Array })
44
+ ], ExmNavigationDrawerMenuBase.prototype, "path", void 0);
45
+ //# sourceMappingURL=exm-navigation-drawer-menu-base.js.map
@@ -0,0 +1,9 @@
1
+ import { ExmNavigationDrawerMenuBase } from './exm-navigation-drawer-menu-base.js';
2
+ export declare class ExmNavigationDrawerMenu extends ExmNavigationDrawerMenuBase {
3
+ static styles: import("lit").CSSResult[];
4
+ }
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ 'exm-navigation-drawer-menu': ExmNavigationDrawerMenu;
8
+ }
9
+ }
@@ -0,0 +1,12 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from 'lit/decorators/custom-element.js';
3
+ import { ExmNavigationDrawerMenuBase } from './exm-navigation-drawer-menu-base.js';
4
+ import { style } from './styles/exm-navigation-sub-menu-css.js';
5
+ let ExmNavigationDrawerMenu = class ExmNavigationDrawerMenu extends ExmNavigationDrawerMenuBase {
6
+ };
7
+ ExmNavigationDrawerMenu.styles = [style];
8
+ ExmNavigationDrawerMenu = __decorate([
9
+ customElement('exm-navigation-drawer-menu')
10
+ ], ExmNavigationDrawerMenu);
11
+ export { ExmNavigationDrawerMenu };
12
+ //# sourceMappingURL=exm-navigation-drawer-menu.js.map
@@ -0,0 +1,14 @@
1
+ import { LitElement } from 'lit';
2
+ import '@material/web/focus/md-focus-ring.js';
3
+ import './exm-navigation-icon.js';
4
+ import '@material/web/list/list.js';
5
+ import '@material/web/list/list-item.js';
6
+ export declare class ExmNavigationDrawerNavItemBase extends LitElement {
7
+ icon: string;
8
+ itemId?: string;
9
+ selected: boolean;
10
+ hasSubmenu: boolean;
11
+ submenuIcon: string;
12
+ static styles: import("lit").CSSResult[];
13
+ render(): import("lit-html").TemplateResult<1>;
14
+ }
@@ -0,0 +1,49 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, nothing } from 'lit';
3
+ import { property } from 'lit/decorators.js';
4
+ import { style } from './styles/exm-navigation-drawer-nav-item-css.js';
5
+ import '@material/web/focus/md-focus-ring.js';
6
+ import './exm-navigation-icon.js';
7
+ import '@material/web/list/list.js';
8
+ import '@material/web/list/list-item.js';
9
+ import { classMap } from 'lit/directives/class-map.js';
10
+ export class ExmNavigationDrawerNavItemBase extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.icon = '';
14
+ this.selected = false;
15
+ this.hasSubmenu = false;
16
+ this.submenuIcon = 'arrow_forward';
17
+ }
18
+ render() {
19
+ const classList = { selected: this.selected, 'has-sub-menu': this.hasSubmenu, 'has-icon': !!this.icon };
20
+ return html `
21
+ <button class="${classMap(classList)}">
22
+ ${this.icon ? html `<exm-navigation-icon class="item-icon" icon=${this.icon}></exm-navigation-icon>` : nothing}
23
+ <span class="label"><slot></slot></span>
24
+ ${this.hasSubmenu
25
+ ? html `<exm-navigation-icon class="has-submenu" icon=${this.submenuIcon}></exm-navigation-icon>`
26
+ : nothing}
27
+ <md-ripple part="ripple"></md-ripple>
28
+ <md-focus-ring part="focus-ring" inward></md-focus-ring>
29
+ </button>
30
+ `;
31
+ }
32
+ }
33
+ ExmNavigationDrawerNavItemBase.styles = [style];
34
+ __decorate([
35
+ property({ type: String })
36
+ ], ExmNavigationDrawerNavItemBase.prototype, "icon", void 0);
37
+ __decorate([
38
+ property({ type: String })
39
+ ], ExmNavigationDrawerNavItemBase.prototype, "itemId", void 0);
40
+ __decorate([
41
+ property({ type: Boolean, reflect: true })
42
+ ], ExmNavigationDrawerNavItemBase.prototype, "selected", void 0);
43
+ __decorate([
44
+ property({ type: Boolean, attribute: 'has-submenu' })
45
+ ], ExmNavigationDrawerNavItemBase.prototype, "hasSubmenu", void 0);
46
+ __decorate([
47
+ property({ type: String, attribute: 'submenu-icon' })
48
+ ], ExmNavigationDrawerNavItemBase.prototype, "submenuIcon", void 0);
49
+ //# sourceMappingURL=exm-navigation-drawer-nav-item-base.js.map
@@ -0,0 +1,8 @@
1
+ import { ExmNavigationDrawerNavItemBase } from './exm-navigation-drawer-nav-item-base.js';
2
+ export declare class ExmNavigationDrawerNavItem extends ExmNavigationDrawerNavItemBase {
3
+ }
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'exm-navigation-drawer-nav-item': ExmNavigationDrawerNavItem;
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from 'lit/decorators.js';
3
+ import { ExmNavigationDrawerNavItemBase } from './exm-navigation-drawer-nav-item-base.js';
4
+ let ExmNavigationDrawerNavItem = class ExmNavigationDrawerNavItem extends ExmNavigationDrawerNavItemBase {
5
+ };
6
+ ExmNavigationDrawerNavItem = __decorate([
7
+ customElement('exm-navigation-drawer-nav-item')
8
+ ], ExmNavigationDrawerNavItem);
9
+ export { ExmNavigationDrawerNavItem };
10
+ //# sourceMappingURL=exm-navigation-drawer-nav-item.js.map
@@ -1,6 +1,5 @@
1
1
  import { ExmNavigationDrawerBase } from './exm-navigation-drawer-base.js';
2
2
  export declare class ExmNavigationDrawer extends ExmNavigationDrawerBase {
3
- static styles: import("lit").CSSResult[];
4
3
  }
5
4
  declare global {
6
5
  interface HTMLElementTagNameMap {
@@ -1,10 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { customElement } from 'lit/decorators.js';
3
3
  import { ExmNavigationDrawerBase } from './exm-navigation-drawer-base.js';
4
- import { style } from './styles/exm-navigation-drawer-css.js';
5
4
  let ExmNavigationDrawer = class ExmNavigationDrawer extends ExmNavigationDrawerBase {
6
5
  };
7
- ExmNavigationDrawer.styles = [style];
8
6
  ExmNavigationDrawer = __decorate([
9
7
  customElement('exm-navigation-drawer')
10
8
  ], ExmNavigationDrawer);
@@ -0,0 +1,7 @@
1
+ import { ExmgElement } from '@exmg/lit-base/index.js';
2
+ import './styles/exm-navigation-icon-css.js';
3
+ export declare class ExmNavigationIconBase extends ExmgElement {
4
+ icon: string;
5
+ static styles: import("lit").CSSResult[];
6
+ render(): import("lit-html").TemplateResult<1>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { ExmgElement } from '@exmg/lit-base/index.js';
4
+ import { property } from 'lit/decorators.js';
5
+ import { style } from './styles/exm-navigation-icon-css.js';
6
+ import './styles/exm-navigation-icon-css.js';
7
+ export class ExmNavigationIconBase extends ExmgElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.icon = 'menu';
11
+ }
12
+ render() {
13
+ return html `<span class="icon">${this.icon}</span>`;
14
+ }
15
+ }
16
+ ExmNavigationIconBase.styles = [style];
17
+ __decorate([
18
+ property({ type: String })
19
+ ], ExmNavigationIconBase.prototype, "icon", void 0);
20
+ //# sourceMappingURL=exm-navigation-icon-base.js.map
@@ -0,0 +1,9 @@
1
+ import { ExmgElement } from '@exmg/lit-base/index.js';
2
+ import './exm-navigation-icon.js';
3
+ export declare class ExmNavigationIconButtonBase extends ExmgElement {
4
+ icon: string;
5
+ label: string;
6
+ static styles: import("lit").CSSResult[];
7
+ private handleMenuButtonClick;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ }
@@ -0,0 +1,36 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, nothing } from 'lit';
3
+ import { ExmgElement } from '@exmg/lit-base/index.js';
4
+ import { property } from 'lit/decorators.js';
5
+ import { classMap } from 'lit/directives/class-map.js';
6
+ import { style } from './styles/exm-navigation-icon-button-css.js';
7
+ import './exm-navigation-icon.js';
8
+ export class ExmNavigationIconButtonBase extends ExmgElement {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.icon = 'menu';
12
+ this.label = '';
13
+ }
14
+ handleMenuButtonClick(itemId) {
15
+ this.fire('navigation-icon-button-click', itemId);
16
+ }
17
+ render() {
18
+ const buttonClass = { 'has-label': !!this.label };
19
+ return html `
20
+ <button class="icon-button ${classMap(buttonClass)}" @click=${this.handleMenuButtonClick}>
21
+ <exm-navigation-icon icon=${this.icon}></exm-navigation-icon>
22
+ ${this.label ? html ` <span class="label">${this.label}</span>` : nothing}
23
+ <md-ripple part="ripple"></md-ripple>
24
+ <md-focus-ring part="focus-ring" inward></md-focus-ring>
25
+ </button>
26
+ `;
27
+ }
28
+ }
29
+ ExmNavigationIconButtonBase.styles = [style];
30
+ __decorate([
31
+ property({ type: String })
32
+ ], ExmNavigationIconButtonBase.prototype, "icon", void 0);
33
+ __decorate([
34
+ property({ type: String })
35
+ ], ExmNavigationIconButtonBase.prototype, "label", void 0);
36
+ //# sourceMappingURL=exm-navigation-icon-button-base.js.map
@@ -0,0 +1,8 @@
1
+ import { ExmNavigationIconButtonBase } from './exm-navigation-icon-button-base.js';
2
+ export declare class ExmNavigationIconButton extends ExmNavigationIconButtonBase {
3
+ }
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'exm-navigation-icon-button': ExmNavigationIconButton;
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from 'lit/decorators/custom-element.js';
3
+ import { ExmNavigationIconButtonBase } from './exm-navigation-icon-button-base.js';
4
+ let ExmNavigationIconButton = class ExmNavigationIconButton extends ExmNavigationIconButtonBase {
5
+ };
6
+ ExmNavigationIconButton = __decorate([
7
+ customElement('exm-navigation-icon-button')
8
+ ], ExmNavigationIconButton);
9
+ export { ExmNavigationIconButton };
10
+ //# sourceMappingURL=exm-navigation-icon-button.js.map
@@ -0,0 +1,8 @@
1
+ import { ExmNavigationIconBase } from './exm-navigation-icon-base.js';
2
+ export declare class ExmNavigationIcon extends ExmNavigationIconBase {
3
+ }
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'exm-navigation-icon': ExmNavigationIcon;
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement } from 'lit/decorators/custom-element.js';
3
+ import { ExmNavigationIconBase } from './exm-navigation-icon-base.js';
4
+ let ExmNavigationIcon = class ExmNavigationIcon extends ExmNavigationIconBase {
5
+ };
6
+ ExmNavigationIcon = __decorate([
7
+ customElement('exm-navigation-icon')
8
+ ], ExmNavigationIcon);
9
+ export { ExmNavigationIcon };
10
+ //# sourceMappingURL=exm-navigation-icon.js.map
@@ -0,0 +1,12 @@
1
+ import { ExmgElement } from '@exmg/lit-base/index.js';
2
+ import { MenuItem } from './types.js';
3
+ import './exm-navigation-rail-nav-item.js';
4
+ export declare class ExmNavigationRailBase extends ExmgElement {
5
+ items: MenuItem[];
6
+ selected: string[];
7
+ static styles: import("lit").CSSResult[];
8
+ private handleRailClick;
9
+ private handleRailMouseEnter;
10
+ private handleRailMouseLeave;
11
+ render(): import("lit-html").TemplateResult<1>;
12
+ }
@@ -0,0 +1,55 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { ExmgElement } from '@exmg/lit-base/index.js';
4
+ import { property } from 'lit/decorators.js';
5
+ import { repeat } from 'lit/directives/repeat.js';
6
+ import { style } from './styles/exm-navigation-rail-css.js';
7
+ import './exm-navigation-rail-nav-item.js';
8
+ export class ExmNavigationRailBase extends ExmgElement {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.items = [];
12
+ this.selected = [];
13
+ }
14
+ handleRailClick(itemId) {
15
+ this.fire('rail-item-click', itemId);
16
+ }
17
+ handleRailMouseEnter(itemId) {
18
+ this.fire('rail-item-mouseenter', itemId);
19
+ }
20
+ handleRailMouseLeave(itemId) {
21
+ this.fire('rail-item-mouseleave', itemId);
22
+ }
23
+ render() {
24
+ return html `<div class="rail-top"><slot name="rail-top"></slot></div>
25
+ <nav class="nav">
26
+ <ul>
27
+ ${repeat(this.items, (item) => {
28
+ return html `
29
+ <li>
30
+ <exm-navigation-rail-nav-item
31
+ @click=${() => this.handleRailClick(item.id)}
32
+ @mouseenter=${() => this.handleRailMouseEnter(item.id)}
33
+ @mouseleave=${() => this.handleRailMouseLeave(item.id)}
34
+ label=${item.label}
35
+ icon=${item.icon || ''}
36
+ ?hasSubMenu=${(item.items || []).length > 0}
37
+ itemId=${item.id}
38
+ .selected=${this.selected[0] === item.id}
39
+ ></exm-navigation-rail-nav-item>
40
+ </li>
41
+ `;
42
+ })}
43
+ </ul>
44
+ </nav>
45
+ <div class="rail-bottom"><slot name="rail-bottom"></slot></div>`;
46
+ }
47
+ }
48
+ ExmNavigationRailBase.styles = [style];
49
+ __decorate([
50
+ property({ type: Array })
51
+ ], ExmNavigationRailBase.prototype, "items", void 0);
52
+ __decorate([
53
+ property({ type: Array })
54
+ ], ExmNavigationRailBase.prototype, "selected", void 0);
55
+ //# sourceMappingURL=exm-navigation-rail-base.js.map
@@ -1,14 +1,12 @@
1
1
  import { LitElement } from 'lit';
2
2
  import '@material/web/focus/md-focus-ring.js';
3
+ import './exm-navigation-icon.js';
3
4
  export declare class ExmNavigationRailNavItemBase extends LitElement {
4
5
  icon: string;
5
6
  itemId?: string;
6
7
  label?: string;
7
8
  selected: boolean;
8
9
  hasSubMenu: boolean;
9
- constructor();
10
- deselectOtherOptions(id: string): void;
11
- hoverIn(): void;
12
- hoverOut(): void;
10
+ static styles: import("lit").CSSResult[];
13
11
  render(): import("lit-html").TemplateResult<1>;
14
12
  }
@@ -0,0 +1,37 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html } from 'lit';
3
+ import { property } from 'lit/decorators.js';
4
+ import { style } from './styles/exm-navigation-rail-nav-item-css.js';
5
+ import '@material/web/focus/md-focus-ring.js';
6
+ import './exm-navigation-icon.js';
7
+ export class ExmNavigationRailNavItemBase extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.icon = '';
11
+ this.selected = false;
12
+ this.hasSubMenu = false;
13
+ }
14
+ render() {
15
+ return html `<button role="link">
16
+ <md-focus-ring></md-focus-ring><exm-navigation-icon class="symbols" icon=${this.icon}></exm-navigation-icon>
17
+ <div class="label">${this.label}</div>
18
+ </button>`;
19
+ }
20
+ }
21
+ ExmNavigationRailNavItemBase.styles = [style];
22
+ __decorate([
23
+ property({ type: String })
24
+ ], ExmNavigationRailNavItemBase.prototype, "icon", void 0);
25
+ __decorate([
26
+ property({ type: String })
27
+ ], ExmNavigationRailNavItemBase.prototype, "itemId", void 0);
28
+ __decorate([
29
+ property({ type: String })
30
+ ], ExmNavigationRailNavItemBase.prototype, "label", void 0);
31
+ __decorate([
32
+ property({ type: Boolean, reflect: true })
33
+ ], ExmNavigationRailNavItemBase.prototype, "selected", void 0);
34
+ __decorate([
35
+ property({ type: Boolean })
36
+ ], ExmNavigationRailNavItemBase.prototype, "hasSubMenu", void 0);
37
+ //# sourceMappingURL=exm-navigation-rail-nav-item-base.js.map
@@ -1,6 +1,5 @@
1
1
  import { ExmNavigationRailNavItemBase } from './exm-navigation-rail-nav-item-base.js';
2
2
  export declare class ExmNavigationRailNavItem extends ExmNavigationRailNavItemBase {
3
- static styles: import("lit").CSSResult[];
4
3
  }
5
4
  declare global {
6
5
  interface HTMLElementTagNameMap {
@@ -1,10 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { customElement } from 'lit/decorators.js';
3
- import { style } from './styles/exm-navigation-rail-nav-item-css.js';
4
3
  import { ExmNavigationRailNavItemBase } from './exm-navigation-rail-nav-item-base.js';
5
4
  let ExmNavigationRailNavItem = class ExmNavigationRailNavItem extends ExmNavigationRailNavItemBase {
6
5
  };
7
- ExmNavigationRailNavItem.styles = [style];
8
6
  ExmNavigationRailNavItem = __decorate([
9
7
  customElement('exm-navigation-rail-nav-item')
10
8
  ], ExmNavigationRailNavItem);
@@ -1,6 +1,5 @@
1
1
  import { ExmNavigationRailBase } from './exm-navigation-rail-base.js';
2
2
  export declare class ExmNavigationRail extends ExmNavigationRailBase {
3
- static styles: import("lit").CSSResult[];
4
3
  }
5
4
  declare global {
6
5
  interface HTMLElementTagNameMap {
@@ -1,10 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { customElement } from 'lit/decorators/custom-element.js';
3
3
  import { ExmNavigationRailBase } from './exm-navigation-rail-base.js';
4
- import { style } from './styles/exm-navigation-rail-css.js';
5
4
  let ExmNavigationRail = class ExmNavigationRail extends ExmNavigationRailBase {
6
5
  };
7
- ExmNavigationRail.styles = [style];
8
6
  ExmNavigationRail = __decorate([
9
7
  customElement('exm-navigation-rail')
10
8
  ], ExmNavigationRail);
@@ -0,0 +1,28 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { ExmgElement } from '@exmg/lit-base/index.js';
3
+ import { MenuItem } from './types.js';
4
+ import './exm-navigation-rail-nav-item.js';
5
+ import './exm-navigation-drawer-nav-item.js';
6
+ import '@material/web/list/list.js';
7
+ import '@exmg/exm-collapsed/exm-collapsed.js';
8
+ export declare class ExmNavigationSubMenuBase extends ExmgElement {
9
+ items: MenuItem[];
10
+ path: (string | null)[];
11
+ hasBackButton: boolean;
12
+ currentItem?: MenuItem['items'];
13
+ static itemIndex: number;
14
+ navigationElement?: HTMLElement;
15
+ static styles: import("lit").CSSResult[];
16
+ protected updated(changedProperties: PropertyValues): void;
17
+ connectedCallback(): void;
18
+ disconnectedCallback(): void;
19
+ private handleSubMenuItemClick;
20
+ /**
21
+ * If a collapsable menuitem is not selected we can just pass the path.
22
+ * If it is selected, we remove the item from the path to collapse the menu again
23
+ */
24
+ private handleCollapsableSubMenuItemClick;
25
+ private getItemStyle;
26
+ private renderSubMenu;
27
+ render(): import("lit-html").TemplateResult<1>;
28
+ }
@@ -0,0 +1,153 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { ExmgElement } from '@exmg/lit-base/index.js';
4
+ import { property, query, state } from 'lit/decorators.js';
5
+ import { repeat } from 'lit/directives/repeat.js';
6
+ import { style } from './styles/exm-navigation-sub-menu-css.js';
7
+ import { animate, fadeOut, fadeIn } from '@lit-labs/motion';
8
+ import './exm-navigation-rail-nav-item.js';
9
+ import './exm-navigation-drawer-nav-item.js';
10
+ import '@material/web/list/list.js';
11
+ import '@exmg/exm-collapsed/exm-collapsed.js';
12
+ import { classMap } from 'lit/directives/class-map.js';
13
+ import { styleMap } from 'lit/directives/style-map.js';
14
+ export class ExmNavigationSubMenuBase extends ExmgElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.items = [];
18
+ this.path = [];
19
+ this.hasBackButton = false;
20
+ }
21
+ updated(changedProperties) {
22
+ var _a;
23
+ if (changedProperties.has('path') || changedProperties.has('items')) {
24
+ this.currentItem = ((_a = this.items.find((item) => item.id === this.path[0])) === null || _a === void 0 ? void 0 : _a.items) || [];
25
+ }
26
+ }
27
+ connectedCallback() {
28
+ super.connectedCallback();
29
+ }
30
+ disconnectedCallback() {
31
+ if (this.navigationElement) {
32
+ this.navigationElement.classList.remove('show');
33
+ }
34
+ super.disconnectedCallback();
35
+ }
36
+ handleSubMenuItemClick(path) {
37
+ this.fire('sub-menu-item-click', path);
38
+ }
39
+ /**
40
+ * If a collapsable menuitem is not selected we can just pass the path.
41
+ * If it is selected, we remove the item from the path to collapse the menu again
42
+ */
43
+ handleCollapsableSubMenuItemClick(path, id, selected) {
44
+ if (!selected) {
45
+ this.handleSubMenuItemClick(path);
46
+ return;
47
+ }
48
+ const index = path.findIndex((item) => item === id);
49
+ this.fire('sub-menu-item-click', path.splice(0, index));
50
+ }
51
+ getItemStyle() {
52
+ return {
53
+ 'grid-area': `${ExmNavigationSubMenuBase.itemIndex}/1/${ExmNavigationSubMenuBase.itemIndex + 1}/2`,
54
+ };
55
+ }
56
+ renderSubMenu(item, path) {
57
+ const selected = this.path.includes(item.id);
58
+ return html `
59
+ <exm-navigation-drawer-nav-item
60
+ ${animate({
61
+ keyframeOptions: {
62
+ duration: 300,
63
+ },
64
+ out: fadeOut,
65
+ in: fadeIn,
66
+ properties: ['opacity'],
67
+ })}
68
+ style=${styleMap(this.getItemStyle())}
69
+ type="button"
70
+ ?selected=${selected}
71
+ class="has-submenu ${this.path.includes(item.id) ? 'selected' : ''}"
72
+ @click=${this.handleCollapsableSubMenuItemClick.bind(this, [...path], item.id, selected)}
73
+ ?has-submenu=${true}
74
+ submenu-icon=${this.path.includes(item.id) ? 'expand_less' : 'expand_more'}
75
+ >${item.label}
76
+ </exm-navigation-drawer-nav-item>
77
+ <exm-collapsed id="collapsed" ?opened=${this.path.includes(item.id)}>
78
+ <div class="sub-menu">
79
+ <md-list>
80
+ <!-- Need to check for multiple items -->
81
+ ${(item.items || []).map((subItem) => {
82
+ ExmNavigationSubMenuBase.itemIndex += 1;
83
+ return (subItem.items || []).length === 0
84
+ ? html `
85
+ <exm-navigation-drawer-nav-item
86
+ style=${styleMap(this.getItemStyle())}
87
+ class="collapsed-item"
88
+ ?selected=${this.path.includes(subItem.id)}
89
+ @click=${this.handleSubMenuItemClick.bind(this, [...path, subItem.id])}
90
+ >
91
+ ${subItem.label}
92
+ </exm-navigation-drawer-nav-item>
93
+ `
94
+ : this.renderSubMenu(item, [this.path[0] || '', item.id]);
95
+ })}
96
+ </md-list>
97
+ </div>
98
+ </exm-collapsed>
99
+ `;
100
+ }
101
+ render() {
102
+ const navClass = { nav: true, 'has-back-button': this.hasBackButton };
103
+ ExmNavigationSubMenuBase.itemIndex = 0;
104
+ return html `<div class="top"><slot name="top"></slot></div>
105
+ <nav id="exm-navigation-sub-menu" class=${classMap(navClass)}>
106
+ <md-list>
107
+ ${repeat(this.currentItem || [], ({ id }) => id, (item) => {
108
+ ExmNavigationSubMenuBase.itemIndex += 1;
109
+ return (item.items || []).length === 0
110
+ ? html `
111
+ <exm-navigation-drawer-nav-item
112
+ ${animate({
113
+ keyframeOptions: {
114
+ duration: 300,
115
+ },
116
+ stabilizeOut: true,
117
+ out: fadeOut,
118
+ in: fadeIn,
119
+ properties: ['opacity'],
120
+ })}
121
+ style="${styleMap(this.getItemStyle())}"
122
+ type="button"
123
+ ?selected=${this.path.includes(item.id)}
124
+ @click=${this.handleSubMenuItemClick.bind(this, [this.path[0] || '', item.id])}
125
+ >
126
+ ${item.label}
127
+ </exm-navigation-drawer-nav-item>
128
+ `
129
+ : this.renderSubMenu(item, [this.path[0] || '', item.id]);
130
+ })}
131
+ </md-list>
132
+ </nav>
133
+ <div class="bottom"><slot name="bottom"></slot></div>`;
134
+ }
135
+ }
136
+ ExmNavigationSubMenuBase.itemIndex = 0;
137
+ ExmNavigationSubMenuBase.styles = [style];
138
+ __decorate([
139
+ property({ type: Array })
140
+ ], ExmNavigationSubMenuBase.prototype, "items", void 0);
141
+ __decorate([
142
+ property({ type: Array })
143
+ ], ExmNavigationSubMenuBase.prototype, "path", void 0);
144
+ __decorate([
145
+ property({ type: Boolean, attribute: 'has-back-button' })
146
+ ], ExmNavigationSubMenuBase.prototype, "hasBackButton", void 0);
147
+ __decorate([
148
+ state()
149
+ ], ExmNavigationSubMenuBase.prototype, "currentItem", void 0);
150
+ __decorate([
151
+ query('nav')
152
+ ], ExmNavigationSubMenuBase.prototype, "navigationElement", void 0);
153
+ //# sourceMappingURL=exm-navigation-sub-menu-base.js.map
@@ -0,0 +1,8 @@
1
+ import { ExmNavigationSubMenuBase } from './exm-navigation-sub-menu-base.js';
2
+ export declare class ExmNavigationSubMenu extends ExmNavigationSubMenuBase {
3
+ }
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'exm-navigation-sub-menu': ExmNavigationSubMenu;
7
+ }
8
+ }