@nuralyui/menu 0.0.1

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 (61) hide show
  1. package/demo/menus-demo.d.ts +22 -0
  2. package/demo/menus-demo.d.ts.map +1 -0
  3. package/demo/menus-demo.js +147 -0
  4. package/demo/menus-demo.js.map +1 -0
  5. package/index.d.ts +2 -0
  6. package/index.d.ts.map +1 -0
  7. package/index.js +2 -0
  8. package/index.js.map +1 -0
  9. package/menu.component.d.ts +19 -0
  10. package/menu.component.d.ts.map +1 -0
  11. package/menu.component.js +109 -0
  12. package/menu.component.js.map +1 -0
  13. package/menu.constants.d.ts +12 -0
  14. package/menu.constants.d.ts.map +1 -0
  15. package/menu.constants.js +14 -0
  16. package/menu.constants.js.map +1 -0
  17. package/menu.style.d.ts +2 -0
  18. package/menu.style.d.ts.map +1 -0
  19. package/menu.style.js +86 -0
  20. package/menu.style.js.map +1 -0
  21. package/menu.types.d.ts +22 -0
  22. package/menu.types.d.ts.map +1 -0
  23. package/menu.types.js +2 -0
  24. package/menu.types.js.map +1 -0
  25. package/package.json +15 -0
  26. package/react.d.ts +3 -0
  27. package/react.d.ts.map +1 -0
  28. package/react.js +10 -0
  29. package/react.js.map +1 -0
  30. package/templates/hy-menu-link.d.ts +30 -0
  31. package/templates/hy-menu-link.d.ts.map +1 -0
  32. package/templates/hy-menu-link.js +123 -0
  33. package/templates/hy-menu-link.js.map +1 -0
  34. package/templates/hy-sub-menu.d.ts +26 -0
  35. package/templates/hy-sub-menu.d.ts.map +1 -0
  36. package/templates/hy-sub-menu.js +96 -0
  37. package/templates/hy-sub-menu.js.map +1 -0
  38. package/templates/menu-link.contants.d.ts +5 -0
  39. package/templates/menu-link.contants.d.ts.map +1 -0
  40. package/templates/menu-link.contants.js +6 -0
  41. package/templates/menu-link.contants.js.map +1 -0
  42. package/templates/menu-link.style.d.ts +2 -0
  43. package/templates/menu-link.style.d.ts.map +1 -0
  44. package/templates/menu-link.style.js +96 -0
  45. package/templates/menu-link.style.js.map +1 -0
  46. package/templates/sub-menu.style.d.ts +2 -0
  47. package/templates/sub-menu.style.d.ts.map +1 -0
  48. package/templates/sub-menu.style.js +81 -0
  49. package/templates/sub-menu.style.js.map +1 -0
  50. package/test/menu-link_test.d.ts +2 -0
  51. package/test/menu-link_test.d.ts.map +1 -0
  52. package/test/menu-link_test.js +85 -0
  53. package/test/menu-link_test.js.map +1 -0
  54. package/test/menu_test.d.ts +2 -0
  55. package/test/menu_test.d.ts.map +1 -0
  56. package/test/menu_test.js +81 -0
  57. package/test/menu_test.js.map +1 -0
  58. package/test/sub-menu_test.d.ts +2 -0
  59. package/test/sub-menu_test.d.ts.map +1 -0
  60. package/test/sub-menu_test.js +72 -0
  61. package/test/sub-menu_test.js.map +1 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { LitElement } from 'lit';
7
+ import '../menu.component';
8
+ import { IMenu } from '../menu.types';
9
+ export declare class ElMeenuElement extends LitElement {
10
+ path: number[];
11
+ value: string;
12
+ items: IMenu[];
13
+ items2: IMenu[];
14
+ items3: IMenu[];
15
+ protected render(): import("lit").TemplateResult<1>;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'hy-menu-demo': ElMeenuElement;
20
+ }
21
+ }
22
+ //# sourceMappingURL=menus-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menus-demo.d.ts","sourceRoot":"","sources":["../../../../src/components/menu/demo/menus-demo.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAC,UAAU,EAAO,MAAM,KAAK,CAAC;AAErC,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAC;AAEpC,qBACa,cAAe,SAAQ,UAAU;IAE5C,IAAI,EAAG,MAAM,EAAE,CAAC;IAEhB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,EAAE,CAmCZ;IAEF,MAAM,EAAE,KAAK,EAAE,CA0Bb;IAEF,MAAM,EAAE,KAAK,EAAE,CAab;cAEiB,MAAM;CA4C1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,cAAc,CAAC;KAChC;CACF"}
@@ -0,0 +1,147 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /**
4
+ * @license
5
+ * Copyright 2023 Google Laabidi Aymen
6
+ * SPDX-License-Identifier: MIT
7
+ */
8
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ import { LitElement, html } from 'lit';
15
+ import { customElement, state } from 'lit/decorators.js';
16
+ import '../menu.component';
17
+ let ElMeenuElement = class ElMeenuElement extends LitElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.items = [
21
+ {
22
+ text: 'First Menu',
23
+ selected: true,
24
+ children: [
25
+ { text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'warning', label: 'warning' }
26
+ },
27
+ { text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'warning', label: 'warning' },
28
+ children: [
29
+ { text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'circle-exclamation', label: 'error' }
30
+ },
31
+ { text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'warning', label: 'warning' },
32
+ children: [
33
+ { text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'circle-exclamation', label: 'error' }
34
+ },
35
+ { text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }, status: { icon: 'warning', label: 'warning' }
36
+ },
37
+ ], },
38
+ ] },
39
+ ],
40
+ disabled: false,
41
+ icon: 'bug',
42
+ menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] },
43
+ status: { icon: 'warning', label: 'warning' }
44
+ },
45
+ {
46
+ text: 'Second Menu',
47
+ children: [
48
+ { text: 'Submenu 2-1', link: 'Submenu 2-1 link', icon: 'cloud', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] } },
49
+ { text: 'Submenu 2-2', link: 'Submenu 2-2 link', icon: 'wifi', menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] } },
50
+ ],
51
+ link: '',
52
+ menu: { icon: 'bars', actions: [{ label: 'Delete', value: 'delete' }, { label: 'Rename', value: 'rename' }] }
53
+ },
54
+ ];
55
+ this.items2 = [
56
+ {
57
+ text: 'First Menu',
58
+ disabled: false,
59
+ },
60
+ {
61
+ text: 'First Menu',
62
+ children: [
63
+ { text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right' },
64
+ { text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree', children: [
65
+ { text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right' },
66
+ { text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree' },
67
+ ], },
68
+ ],
69
+ disabled: false,
70
+ },
71
+ {
72
+ text: 'Second Menu',
73
+ children: [
74
+ { text: 'Submenu 2-1', link: 'Submenu 2-1 link', icon: 'cloud' },
75
+ { text: 'Submenu 2-2', link: 'Submenu 2-2 link', icon: 'wifi' },
76
+ ],
77
+ link: '',
78
+ },
79
+ ];
80
+ this.items3 = [
81
+ {
82
+ text: 'Submenu 0-0', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',
83
+ },
84
+ {
85
+ text: 'Submenu 0-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',
86
+ }, {
87
+ text: 'Submenu 0-2', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',
88
+ },
89
+ ];
90
+ }
91
+ render() {
92
+ var _a;
93
+ return html `
94
+ <h3>Treeview</h3>
95
+ <hy-menu
96
+ .items=${this.items}
97
+ @action-click=${(e) => {
98
+ console.log('action name', e.detail.value);
99
+ console.log('option path', e.detail.path);
100
+ }}
101
+ @change=${(e) => {
102
+ this.path = e.detail.path;
103
+ this.value = e.detail.value;
104
+ }}
105
+ ></hy-menu>
106
+ path: ${(_a = this.path) === null || _a === void 0 ? void 0 : _a.join('-')} value: ${this.value}
107
+
108
+ <h3>Treeview</h3>
109
+ <hy-menu
110
+ .items=${this.items}
111
+ @change=${(e) => {
112
+ this.path = e.detail.path;
113
+ this.value = e.detail.value;
114
+ }}
115
+ ></hy-menu>
116
+
117
+ <h3>Treeview</h3>
118
+ <hy-menu
119
+ .items=${this.items2}
120
+ @change=${(e) => {
121
+ this.path = e.detail.path;
122
+ this.value = e.detail.value;
123
+ }}
124
+ ></hy-menu>
125
+
126
+ <h3>Treeview</h3>
127
+ <hy-menu
128
+ .items=${this.items3}
129
+ @change=${(e) => {
130
+ this.path = e.detail.path;
131
+ this.value = e.detail.value;
132
+ }}
133
+ ></hy-menu>
134
+ `;
135
+ }
136
+ };
137
+ __decorate([
138
+ state()
139
+ ], ElMeenuElement.prototype, "path", void 0);
140
+ __decorate([
141
+ state()
142
+ ], ElMeenuElement.prototype, "value", void 0);
143
+ ElMeenuElement = __decorate([
144
+ customElement('hy-menu-demo')
145
+ ], ElMeenuElement);
146
+ export { ElMeenuElement };
147
+ //# sourceMappingURL=menus-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menus-demo.js","sourceRoot":"","sources":["../../../../src/components/menu/demo/menus-demo.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * @license\n * Copyright 2023 Google Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport {LitElement, html} from 'lit';\nimport {customElement, state} from 'lit/decorators.js';\nimport '../menu.component';\nimport {IMenu} from '../menu.types';\n\n@customElement('hy-menu-demo')\nexport class ElMeenuElement extends LitElement {\n @state()\n path!: number[];\n @state()\n value!: string;\n items: IMenu[] = [\n {\n text: 'First Menu',\n selected:true,\n children: [\n {text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'warning',label:'warning'}\n },\n {text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'warning',label:'warning'}\n ,children: [\n {text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'circle-exclamation',label:'error'}\n },\n {text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'warning',label:'warning'}\n ,children: [\n {text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'circle-exclamation',label:'error'}\n },\n {text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},status:{icon:'warning',label:'warning'}\n },\n ],},\n ]},\n ],\n disabled: false,\n icon:'bug',\n menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]},\n status:{icon:'warning',label:'warning'}\n },\n {\n text: 'Second Menu',\n children: [\n {text: 'Submenu 2-1', link: 'Submenu 2-1 link', icon: 'cloud',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]}},\n {text: 'Submenu 2-2', link: 'Submenu 2-2 link', icon: 'wifi',menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]}},\n \n ],\n link: '',\n menu:{icon:'bars',actions:[{label:'Delete',value:'delete'},{label:'Rename',value:'rename'}]}\n },\n ];\n\n items2: IMenu[] = [\n {\n text: 'First Menu',\n disabled: false,\n },\n {\n text: 'First Menu',\n children: [\n {text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right'},\n {text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree', children: [\n {text: 'Submenu 1-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right'},\n {text: 'Submenu 1-2', link: 'Submenu 1-2 link', icon: 'tree'},\n ],},\n \n ],\n disabled: false,\n },\n {\n text: 'Second Menu',\n children: [\n {text: 'Submenu 2-1', link: 'Submenu 2-1 link', icon: 'cloud'},\n {text: 'Submenu 2-2', link: 'Submenu 2-2 link', icon: 'wifi'},\n \n ],\n link: '',\n },\n ];\n\n items3: IMenu[] = [\n {\n text: 'Submenu 0-0', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',\n \n },\n {\n text: 'Submenu 0-1', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',\n \n }, {\n text: 'Submenu 0-2', link: 'Submenu 1-1 link', icon: 'globe', iconPosition: 'right',\n \n },\n \n ];\n\n protected override render() {\n return html`\n <h3>Treeview</h3>\n <hy-menu\n .items=${this.items}\n @action-click=${(e:CustomEvent)=>{\n console.log('action name',e.detail.value)\n console.log('option path',e.detail.path)\n }}\n @change=${(e: CustomEvent) => {\n this.path = e.detail.path;\n this.value = e.detail.value;\n }}\n ></hy-menu>\n path: ${this.path?.join('-')} value: ${this.value}\n\n <h3>Treeview</h3>\n <hy-menu\n .items=${this.items}\n @change=${(e: CustomEvent) => {\n this.path = e.detail.path;\n this.value = e.detail.value;\n }}\n ></hy-menu>\n\n <h3>Treeview</h3>\n <hy-menu\n .items=${this.items2}\n @change=${(e: CustomEvent) => {\n this.path = e.detail.path;\n this.value = e.detail.value;\n }}\n ></hy-menu>\n\n <h3>Treeview</h3>\n <hy-menu\n .items=${this.items3}\n @change=${(e: CustomEvent) => {\n this.path = e.detail.path;\n this.value = e.detail.value;\n }}\n ></hy-menu>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hy-menu-demo': ElMeenuElement;\n }\n}\n"]}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './menu.component.js';
2
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
package/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './menu.component.js';
2
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/menu/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './menu.component.js';\n"]}
@@ -0,0 +1,19 @@
1
+ import { LitElement } from 'lit';
2
+ import { IMenu } from './menu.types.js';
3
+ import './templates/hy-menu-link.js';
4
+ import './templates/hy-sub-menu.js';
5
+ export declare class HyMenuComponent extends LitElement {
6
+ private _currentSelectedLink;
7
+ _menuLinks: NodeListOf<HTMLElement>;
8
+ _subMenues: NodeListOf<HTMLElement>;
9
+ items: IMenu[];
10
+ firstUpdated(): void;
11
+ _getPreSelectedIndex(): void;
12
+ _updateSelectedLink(updateSelectedLinkEvent: CustomEvent): void;
13
+ _handleInitHighlighted(): void;
14
+ _selectMenu(selectMenuEvent: CustomEvent): void;
15
+ _display(items: IMenu[], path?: number[]): any;
16
+ render(): import("lit").TemplateResult<1>;
17
+ static styles: import("lit").CSSResult[][];
18
+ }
19
+ //# sourceMappingURL=menu.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.component.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAO,MAAM,KAAK,CAAC;AAGrC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AAEpC,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAO,CAAC,oBAAoB,CAAU;IAEtC,UAAU,EAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAGrC,UAAU,EAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAGrC,KAAK,EAAG,KAAK,EAAE,CAAC;IAEP,YAAY,IAAI,IAAI;IAI7B,oBAAoB;IAKpB,mBAAmB,CAAC,uBAAuB,EAAE,WAAW;IAoBxD,sBAAsB;IAOtB,WAAW,CAAC,eAAe,EAAC,WAAW;IAWvC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,GAAG;IAkCzC,MAAM;IAQf,OAAgB,MAAM,8BAAY;CACnC"}
@@ -0,0 +1,109 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ import { LitElement, html } from 'lit';
9
+ import { customElement, property, queryAll } from 'lit/decorators.js';
10
+ import { styles } from './menu.style.js';
11
+ import './templates/hy-menu-link.js';
12
+ import './templates/hy-sub-menu.js';
13
+ let HyMenuComponent = class HyMenuComponent extends LitElement {
14
+ firstUpdated() {
15
+ this._getPreSelectedIndex();
16
+ }
17
+ _getPreSelectedIndex() {
18
+ const listOfLinks = [...this._menuLinks.values()];
19
+ this._currentSelectedLink = listOfLinks.findIndex((element) => element.hasAttribute('selected'));
20
+ }
21
+ _updateSelectedLink(updateSelectedLinkEvent) {
22
+ var _a;
23
+ this._handleInitHighlighted();
24
+ const newSelectedIndex = updateSelectedLinkEvent.detail.index;
25
+ const value = updateSelectedLinkEvent.detail.value;
26
+ if (this._currentSelectedLink >= 0)
27
+ this._menuLinks[this._currentSelectedLink].removeAttribute('selected');
28
+ this._menuLinks[newSelectedIndex].setAttribute('selected', 'true');
29
+ this._currentSelectedLink = newSelectedIndex;
30
+ const pathToOption = (_a = this._menuLinks[newSelectedIndex]
31
+ .getAttribute('data-path')) === null || _a === void 0 ? void 0 : _a.split('-').map((valueString) => +valueString);
32
+ this.dispatchEvent(new CustomEvent('change', {
33
+ bubbles: true,
34
+ composed: true,
35
+ detail: { path: pathToOption, value },
36
+ }));
37
+ }
38
+ _handleInitHighlighted() {
39
+ this._subMenues.forEach((element) => {
40
+ if (element.hasAttribute('highlighted')) {
41
+ element.removeAttribute('highlighted');
42
+ }
43
+ });
44
+ }
45
+ _selectMenu(selectMenuEvent) {
46
+ if (this._currentSelectedLink >= 0) {
47
+ this._menuLinks[this._currentSelectedLink].removeAttribute('selected');
48
+ this._currentSelectedLink = -1;
49
+ }
50
+ this._handleInitHighlighted();
51
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: { path: selectMenuEvent.detail.path, value: selectMenuEvent.detail.value } }));
52
+ }
53
+ _display(items, path = []) {
54
+ return items.map((menu, index) => {
55
+ const currentPath = [...path, index].join('-');
56
+ if (menu.children) {
57
+ return html `
58
+ <hy-sub-menu
59
+ .menu=${menu.menu}
60
+ .text=${menu.text}
61
+ .icon=${menu.icon}
62
+ .disabled=${menu.disabled}
63
+ .status=${menu.status}
64
+ .highlighted=${menu.selected}
65
+ data-path=${currentPath}
66
+ @select-menu=${this._selectMenu}>
67
+ ${this._display(menu.children, [...path, index])}
68
+ </hy-sub-menu>
69
+ `;
70
+ }
71
+ else {
72
+ return html ` <hy-menu-link
73
+ data-path=${currentPath}
74
+ icon=${menu.icon}
75
+ .menu=${menu.menu}
76
+ .status=${menu.status}
77
+ text=${menu.text}
78
+ link=${menu.link}
79
+ iconposition=${menu.iconPosition}
80
+ ?selected=${menu.selected}
81
+ ?disabled=${menu.disabled}
82
+ @selected-link=${this._updateSelectedLink}
83
+ ></hy-menu-link>`;
84
+ }
85
+ });
86
+ }
87
+ render() {
88
+ return html `
89
+ <ul>
90
+ ${this._display(this.items)}
91
+ </ul>
92
+ `;
93
+ }
94
+ };
95
+ HyMenuComponent.styles = [styles];
96
+ __decorate([
97
+ queryAll('hy-menu-link')
98
+ ], HyMenuComponent.prototype, "_menuLinks", void 0);
99
+ __decorate([
100
+ queryAll('hy-sub-menu')
101
+ ], HyMenuComponent.prototype, "_subMenues", void 0);
102
+ __decorate([
103
+ property()
104
+ ], HyMenuComponent.prototype, "items", void 0);
105
+ HyMenuComponent = __decorate([
106
+ customElement('hy-menu')
107
+ ], HyMenuComponent);
108
+ export { HyMenuComponent };
109
+ //# sourceMappingURL=menu.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.component.js","sourceRoot":"","sources":["../../../src/components/menu/menu.component.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {LitElement, html} from 'lit';\nimport {customElement, property, queryAll} from 'lit/decorators.js';\nimport {styles} from './menu.style.js';\nimport {IMenu} from './menu.types.js';\nimport './templates/hy-menu-link.js';\nimport './templates/hy-sub-menu.js';\n\n@customElement('hy-menu')\nexport class HyMenuComponent extends LitElement {\n private _currentSelectedLink!: number;\n @queryAll('hy-menu-link')\n _menuLinks!: NodeListOf<HTMLElement>;\n\n @queryAll('hy-sub-menu')\n _subMenues!: NodeListOf<HTMLElement>;\n\n @property()\n items!: IMenu[];\n\n override firstUpdated(): void {\n this._getPreSelectedIndex();\n }\n\n _getPreSelectedIndex() {\n const listOfLinks = [...this._menuLinks.values()];\n this._currentSelectedLink = listOfLinks.findIndex((element) => element.hasAttribute('selected'));\n }\n\n _updateSelectedLink(updateSelectedLinkEvent: CustomEvent) {\n this._handleInitHighlighted();\n const newSelectedIndex = updateSelectedLinkEvent.detail.index;\n const value = updateSelectedLinkEvent.detail.value;\n if (this._currentSelectedLink >= 0) this._menuLinks[this._currentSelectedLink].removeAttribute('selected');\n this._menuLinks[newSelectedIndex].setAttribute('selected', 'true');\n this._currentSelectedLink = newSelectedIndex;\n const pathToOption = this._menuLinks[newSelectedIndex]\n .getAttribute('data-path')\n ?.split('-')\n .map((valueString) => +valueString);\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: {path: pathToOption, value},\n })\n );\n }\n\n _handleInitHighlighted() {\n this._subMenues.forEach((element) => {\n if (element.hasAttribute('highlighted')) {\n element.removeAttribute('highlighted');\n }\n });\n }\n _selectMenu(selectMenuEvent:CustomEvent){\n if (this._currentSelectedLink >= 0) \n {\n this._menuLinks[this._currentSelectedLink].removeAttribute('selected');\n this._currentSelectedLink = -1;\n }\n\n this._handleInitHighlighted()\n this.dispatchEvent(new CustomEvent('change',{bubbles:true,composed:true,detail:{path:selectMenuEvent.detail.path,value:selectMenuEvent.detail.value}}));\n }\n\n _display(items: IMenu[], path: number[] = []): any {\n return items.map((menu, index) => {\n const currentPath = [...path, index].join('-');\n if (menu.children) {\n return html`\n <hy-sub-menu \n .menu=${menu.menu} \n .text=${menu.text} \n .icon=${menu.icon} \n .disabled=${menu.disabled} \n .status=${menu.status}\n .highlighted=${menu.selected}\n data-path=${currentPath} \n @select-menu=${this._selectMenu}>\n ${this._display(menu.children, [...path, index])}\n </hy-sub-menu>\n `;\n } else {\n return html` <hy-menu-link\n data-path=${currentPath}\n icon=${menu.icon}\n .menu=${menu.menu}\n .status=${menu.status}\n text=${menu.text}\n link=${menu.link}\n iconposition=${menu.iconPosition}\n ?selected=${menu.selected}\n ?disabled=${menu.disabled}\n @selected-link=${this._updateSelectedLink}\n ></hy-menu-link>`;\n }\n });\n }\n\n override render() {\n return html`\n <ul>\n ${this._display(this.items)}\n </ul>\n `;\n }\n\n static override styles = [styles];\n}\n"]}
@@ -0,0 +1,12 @@
1
+ export declare const EMPTY_STRING = "";
2
+ export declare const NOTHING_STRING = "";
3
+ export declare enum OPTION_TYPES {
4
+ GROUP = "group",
5
+ DIVIDER = "divider"
6
+ }
7
+ export declare enum TRIGGERS {
8
+ Click = "click",
9
+ Hover = "hover",
10
+ ContextMenu = "context-menu"
11
+ }
12
+ //# sourceMappingURL=menu.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.constants.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,WAAW,iBAAiB;CAC7B"}
@@ -0,0 +1,14 @@
1
+ export const EMPTY_STRING = '';
2
+ export const NOTHING_STRING = '';
3
+ export var OPTION_TYPES;
4
+ (function (OPTION_TYPES) {
5
+ OPTION_TYPES["GROUP"] = "group";
6
+ OPTION_TYPES["DIVIDER"] = "divider";
7
+ })(OPTION_TYPES || (OPTION_TYPES = {}));
8
+ export var TRIGGERS;
9
+ (function (TRIGGERS) {
10
+ TRIGGERS["Click"] = "click";
11
+ TRIGGERS["Hover"] = "hover";
12
+ TRIGGERS["ContextMenu"] = "context-menu";
13
+ })(TRIGGERS || (TRIGGERS = {}));
14
+ //# sourceMappingURL=menu.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.constants.js","sourceRoot":"","sources":["../../../src/components/menu/menu.constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,2BAAe,CAAA;IACf,2BAAe,CAAA;IACf,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB","sourcesContent":["export const EMPTY_STRING = '';\nexport const NOTHING_STRING = '';\nexport enum OPTION_TYPES {\n GROUP = 'group',\n DIVIDER = 'divider',\n}\n\nexport enum TRIGGERS {\n Click = 'click',\n Hover = 'hover',\n ContextMenu = 'context-menu',\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult[];
2
+ //# sourceMappingURL=menu.style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.style.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu.style.ts"],"names":[],"mappings":"AAqFA,eAAO,MAAM,MAAM,2BAAc,CAAC"}
package/menu.style.js ADDED
@@ -0,0 +1,86 @@
1
+ import { css } from 'lit';
2
+ const menuStyle = css `
3
+ ul {
4
+ width: var(--hybrid-menu-width);
5
+ padding: var(--hybrid-menu-padding);
6
+ border: var(--hybrid-menu-border);
7
+ font-size: var(--hybrid-menu-font-size);
8
+ font-family: var(--hybrid-menu-font-family)
9
+ }
10
+ :host {
11
+ --hybrid-menu-font-size:13px;
12
+ --hybrid-menu-font-family:serif;
13
+ --hybrid-menu-padding: 2px;
14
+ --hybrid-menu-width: 45%;
15
+ --hybrid-menu-border: 1px solid #f4f4f4;
16
+ --hybrid-menu-link-color: #000000;
17
+ --hybrid-menu-link-icon-color: #525252;
18
+ --hybrid-menu-disabled-link-color: #c6c6c6;
19
+ --hybrid-menu-focus-border: 1px solid #0f62fe;
20
+ --hybrid-menu-focus-color: #000000;
21
+ --hybrid-menu-active-color: #000000;
22
+ --hybrid-menu-active-background-color: #c6c6c6;
23
+ --hybrid-menu-hover-link-background-color: #f4f4f4;
24
+ --hybrid-menu-hover-link-color: #000000;
25
+ --hybrid-menu-selected-link-background-color: #e0e0e0;
26
+ --hybrid-menu-selected-link-border: 3px solid #0f62fe;
27
+ --hybrid-menu-selected-color: #000000;
28
+ --hybrid-menu-link-background-color: transparent;
29
+ --hybrid-menu-link-padding-y: 8px;
30
+ --hybrid-menu-link-empty-icon-padding-left: 39px;
31
+ --hybrid-menu-link-icon-padding-right: 15px;
32
+ --hybrid-menu-link-icon-padding-left: 10px;
33
+ --hybrid-menu-link-icon-right-padding-left: 39px;
34
+ --hybrid-menu-link-icon-only-width: 42px;
35
+ --hybrid-sub-menu-color: #000000;
36
+ --hybrid-sub-menu-disabled-color: #c6c6c6;
37
+ --hybrid-sub-menu-focus-color: #525252;
38
+ --hybrid-sub-menu-focus-border: 1px solid #0f62fe;
39
+ --hybrid-sub-menu-hover-background-color: #f4f4f4;
40
+ --hybrid-sub-menu-hover-color: #161616;
41
+ --hybrid-sub-menu-active-background-color: #c6c6c6;
42
+ --hybrid-sub-menu-active-color: #000000;
43
+ --hybrid-sub-menu-highlighted-color: #000000;
44
+ --hybrid-sub-menu-highlighted-background-color: #e2e2e2;
45
+ --hybrid-sub-menu-text-icon-color: #525252;
46
+ --hybrid-sub-menu-action-icon-color:#525252;
47
+ --hybrid-sub-menu-status-icon-color:#525252;
48
+ --hybrid-sub-menu-toggle-icon-color: #525252;
49
+ --hybrid-sub-menu-padding-y: 8px;
50
+ --hybrid-sub-menu-margin-y: 0px;
51
+ --hybrid-sub-menu-padding-left: 10px;
52
+ --hybrid-sub-menu-padding-left-text: 15px;
53
+ --hybrid-sub-menu-empty-icon-padding-left-text: 29px;
54
+ --hybrid-sub-menu-children-padding-left: 15px;
55
+ }
56
+ @media (prefers-color-scheme: dark) {
57
+ :host {
58
+ --hybrid-menu-border: 1px solid #ffffff;
59
+ --hybrid-menu-link-color:#ffffff;
60
+ --hybrid-menu-focus-border: 1px solid #ffffff;
61
+ --hybrid-menu-focus-color: #ffffff;
62
+ --hybrid-menu-hover-link-background-color: #333333;
63
+ --hybrid-menu-hover-link-color: #ffffff;
64
+ --hybrid-menu-active-color: #ffffff;
65
+ --hybrid-menu-active-background-color: #242424;
66
+ --hybrid-menu-selected-link-border: 3px solid #ffffff;
67
+ --hybrid-menu-selected-link-background-color: #3a3a3a;
68
+ --hybrid-menu-selected-color:#ffffff;
69
+ --hybrid-menu-disabled-link-color: #525252;
70
+ --hybrid-sub-menu-color: #ffffff;
71
+ --hybrid-sub-menu-disabled-color: #525252;
72
+ --hybrid-sub-menu-focus-border: 1px solid #ffffff;
73
+ --hybrid-sub-menu-focus-color: #525252;
74
+ --hybrid-sub-menu-hover-background-color: #333333;
75
+ --hybrid-sub-menu-hover-color: #ffffff;
76
+ --hybrid-sub-menu-active-background-color: #242424;
77
+ --hybrid-sub-menu-active-color: #ffffff;
78
+ --hybrid-sub-menu-highlighted-color: #ffffff;
79
+ --hybrid-sub-menu-highlighted-background-color: #3a3a3a;
80
+ --hybrid-sub-menu-text-icon-color: #525252;
81
+ --hybrid-sub-menu-toggle-icon-color: #525252;
82
+ }
83
+ }
84
+ `;
85
+ export const styles = [menuStyle];
86
+ //# sourceMappingURL=menu.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.style.js","sourceRoot":"","sources":["../../../src/components/menu/menu.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AAExB,MAAM,SAAS,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFpB,CAAC;AACF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC","sourcesContent":["import {css} from 'lit';\n\nconst menuStyle = css`\n ul {\n width: var(--hybrid-menu-width);\n padding: var(--hybrid-menu-padding);\n border: var(--hybrid-menu-border);\n font-size: var(--hybrid-menu-font-size);\n font-family: var(--hybrid-menu-font-family)\n }\n :host {\n --hybrid-menu-font-size:13px;\n --hybrid-menu-font-family:serif;\n --hybrid-menu-padding: 2px;\n --hybrid-menu-width: 45%;\n --hybrid-menu-border: 1px solid #f4f4f4;\n --hybrid-menu-link-color: #000000;\n --hybrid-menu-link-icon-color: #525252;\n --hybrid-menu-disabled-link-color: #c6c6c6;\n --hybrid-menu-focus-border: 1px solid #0f62fe;\n --hybrid-menu-focus-color: #000000;\n --hybrid-menu-active-color: #000000;\n --hybrid-menu-active-background-color: #c6c6c6;\n --hybrid-menu-hover-link-background-color: #f4f4f4;\n --hybrid-menu-hover-link-color: #000000;\n --hybrid-menu-selected-link-background-color: #e0e0e0;\n --hybrid-menu-selected-link-border: 3px solid #0f62fe;\n --hybrid-menu-selected-color: #000000;\n --hybrid-menu-link-background-color: transparent;\n --hybrid-menu-link-padding-y: 8px;\n --hybrid-menu-link-empty-icon-padding-left: 39px;\n --hybrid-menu-link-icon-padding-right: 15px;\n --hybrid-menu-link-icon-padding-left: 10px;\n --hybrid-menu-link-icon-right-padding-left: 39px;\n --hybrid-menu-link-icon-only-width: 42px;\n --hybrid-sub-menu-color: #000000;\n --hybrid-sub-menu-disabled-color: #c6c6c6;\n --hybrid-sub-menu-focus-color: #525252;\n --hybrid-sub-menu-focus-border: 1px solid #0f62fe;\n --hybrid-sub-menu-hover-background-color: #f4f4f4;\n --hybrid-sub-menu-hover-color: #161616;\n --hybrid-sub-menu-active-background-color: #c6c6c6;\n --hybrid-sub-menu-active-color: #000000;\n --hybrid-sub-menu-highlighted-color: #000000;\n --hybrid-sub-menu-highlighted-background-color: #e2e2e2;\n --hybrid-sub-menu-text-icon-color: #525252;\n --hybrid-sub-menu-action-icon-color:#525252;\n --hybrid-sub-menu-status-icon-color:#525252;\n --hybrid-sub-menu-toggle-icon-color: #525252;\n --hybrid-sub-menu-padding-y: 8px;\n --hybrid-sub-menu-margin-y: 0px;\n --hybrid-sub-menu-padding-left: 10px;\n --hybrid-sub-menu-padding-left-text: 15px;\n --hybrid-sub-menu-empty-icon-padding-left-text: 29px;\n --hybrid-sub-menu-children-padding-left: 15px;\n }\n @media (prefers-color-scheme: dark) {\n :host {\n --hybrid-menu-border: 1px solid #ffffff;\n --hybrid-menu-link-color:#ffffff;\n --hybrid-menu-focus-border: 1px solid #ffffff;\n --hybrid-menu-focus-color: #ffffff;\n --hybrid-menu-hover-link-background-color: #333333;\n --hybrid-menu-hover-link-color: #ffffff;\n --hybrid-menu-active-color: #ffffff;\n --hybrid-menu-active-background-color: #242424;\n --hybrid-menu-selected-link-border: 3px solid #ffffff;\n --hybrid-menu-selected-link-background-color: #3a3a3a;\n --hybrid-menu-selected-color:#ffffff;\n --hybrid-menu-disabled-link-color: #525252;\n --hybrid-sub-menu-color: #ffffff;\n --hybrid-sub-menu-disabled-color: #525252;\n --hybrid-sub-menu-focus-border: 1px solid #ffffff;\n --hybrid-sub-menu-focus-color: #525252;\n --hybrid-sub-menu-hover-background-color: #333333;\n --hybrid-sub-menu-hover-color: #ffffff;\n --hybrid-sub-menu-active-background-color: #242424;\n --hybrid-sub-menu-active-color: #ffffff;\n --hybrid-sub-menu-highlighted-color: #ffffff;\n --hybrid-sub-menu-highlighted-background-color: #3a3a3a;\n --hybrid-sub-menu-text-icon-color: #525252;\n --hybrid-sub-menu-toggle-icon-color: #525252;\n }\n }\n`;\nexport const styles = [menuStyle];\n"]}
@@ -0,0 +1,22 @@
1
+ export interface IMenu {
2
+ text: string;
3
+ link?: string;
4
+ menu?: {
5
+ icon: string;
6
+ actions: IAction[];
7
+ };
8
+ status?: {
9
+ icon: string;
10
+ label: string;
11
+ };
12
+ icon?: string;
13
+ iconPosition?: string;
14
+ selected?: boolean;
15
+ disabled?: boolean;
16
+ children?: IMenu[];
17
+ }
18
+ export interface IAction {
19
+ label: string;
20
+ value: string;
21
+ }
22
+ //# sourceMappingURL=menu.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.types.d.ts","sourceRoot":"","sources":["../../../src/components/menu/menu.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,EAAE,CAAA;KAAC,CAAC;IACtC,MAAM,CAAC,EAAC;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAA;KAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;CACpB;AACD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAC,MAAM,CAAC;IACb,KAAK,EAAC,MAAM,CAAA;CACb"}
package/menu.types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=menu.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.types.js","sourceRoot":"","sources":["../../../src/components/menu/menu.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface IMenu {\n text: string;\n link?: string;\n menu?:{icon:string,actions:IAction[]};\n status?:{icon:string,label:string};\n icon?: string;\n iconPosition?: string;\n selected?: boolean;\n disabled?: boolean;\n children?: IMenu[];\n}\nexport interface IAction{\n label:string,\n value:string\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@nuralyui/menu",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "dependencies": {
8
+ "dayjs": "^1.11.7"
9
+ },
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "author": "Labidi Aymen",
14
+ "license": "ISC"
15
+ }
package/react.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { HyMenuComponent } from './menu.component.js';
2
+ export declare const HyDropdown: import("@lit-labs/react").ReactWebComponent<HyMenuComponent, {}>;
3
+ //# sourceMappingURL=react.d.ts.map
package/react.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/components/menu/react.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,eAAO,MAAM,UAAU,kEAKrB,CAAC"}
package/react.js ADDED
@@ -0,0 +1,10 @@
1
+ import { createComponent } from '@lit-labs/react';
2
+ import * as React from 'react';
3
+ import { HyMenuComponent } from './menu.component.js';
4
+ export const HyDropdown = createComponent({
5
+ tagName: 'hy-menu',
6
+ elementClass: HyMenuComponent,
7
+ react: React,
8
+ events: {},
9
+ });
10
+ //# sourceMappingURL=react.js.map
package/react.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/components/menu/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;IACxC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,eAAe;IAC7B,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,EAAE;CACX,CAAC,CAAC","sourcesContent":["import {createComponent} from '@lit-labs/react';\nimport * as React from 'react';\nimport {HyMenuComponent} from './menu.component.js';\nexport const HyDropdown = createComponent({\n tagName: 'hy-menu',\n elementClass: HyMenuComponent,\n react: React,\n events: {},\n});\n"]}
@@ -0,0 +1,30 @@
1
+ import { LitElement } from 'lit';
2
+ import { ICON_POSITION } from './menu-link.contants.js';
3
+ import { IAction } from '../menu.types.js';
4
+ import '../../dropdown/hy-dropdown.component.js';
5
+ export declare class HyMenuLink extends LitElement {
6
+ static index: number;
7
+ private linkPosition;
8
+ text: string;
9
+ link: string;
10
+ disabled: boolean;
11
+ icon: string;
12
+ iconPosition: ICON_POSITION;
13
+ selected: boolean;
14
+ menu: {
15
+ icon: string;
16
+ actions: IAction[];
17
+ };
18
+ status: {
19
+ icon: string;
20
+ label: string;
21
+ };
22
+ optionPath: number[];
23
+ connectedCallback(): void;
24
+ firstUpdated(): void;
25
+ _clickLink(event?: Event): void;
26
+ onActionClick(e: CustomEvent): void;
27
+ render(): import("lit").TemplateResult<1>;
28
+ static styles: import("lit").CSSResult;
29
+ }
30
+ //# sourceMappingURL=hy-menu-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hy-menu-link.d.ts","sourceRoot":"","sources":["../../../../src/components/menu/templates/hy-menu-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAI9C,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,yCAAyC,CAAA;AAEhD,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IAGrB,OAAO,CAAC,YAAY,CAAU;IAG9B,IAAI,SAAgB;IAGpB,IAAI,EAAG,MAAM,CAAC;IAGd,QAAQ,UAAS;IAGjB,IAAI,SAAgB;IAGpB,YAAY,gBAAsB;IAGlC,QAAQ,UAAS;IAGjB,IAAI,EAAE;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,OAAO,EAAC,OAAO,EAAE,CAAA;KAAC,CAAA;IAGrC,MAAM,EAAE;QAAC,IAAI,EAAC,MAAM,CAAC;QAAA,KAAK,EAAC,MAAM,CAAA;KAAC,CAAA;IAElC,UAAU,EAAE,MAAM,EAAE,CAAC;IAGZ,iBAAiB,IAAI,IAAI;IAYzB,YAAY,IAAI,IAAI;IAM7B,UAAU,CAAC,KAAK,CAAC,EAAC,KAAK;IAYvB,aAAa,CAAC,CAAC,EAAC,WAAW;IAIlB,MAAM;IAsCf,OAAgB,MAAM,0BAAU;CACjC"}