@limetech/lime-elements 33.14.0-next.12 → 33.14.0-next.16
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.
- package/dist/cjs/{checkbox.template-c0b4c7c7.js → checkbox.template-d4423721.js} +1 -1
- package/dist/cjs/component-f7ef9087.js +2365 -0
- package/dist/cjs/{index-153dc912.js → index-e63a89d7.js} +73 -64
- package/dist/cjs/lime-elements.cjs.js +3 -3
- package/dist/cjs/limel-badge.cjs.entry.js +2 -2
- package/dist/cjs/limel-banner.cjs.entry.js +2 -2
- package/dist/cjs/limel-button-group.cjs.entry.js +2 -2
- package/dist/cjs/limel-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/limel-chip-set.cjs.entry.js +2 -2
- package/dist/cjs/limel-circular-progress.cjs.entry.js +2 -2
- package/dist/cjs/limel-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +2 -2
- package/dist/cjs/limel-config.cjs.entry.js +2 -2
- package/dist/cjs/limel-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
- package/dist/cjs/limel-file.cjs.entry.js +2 -2
- package/dist/cjs/limel-flatpickr-adapter_2.cjs.entry.js +3 -3
- package/dist/cjs/limel-flex-container.cjs.entry.js +2 -2
- package/dist/cjs/limel-form.cjs.entry.js +2 -2
- package/dist/cjs/limel-grid.cjs.entry.js +2 -2
- package/dist/cjs/limel-header.cjs.entry.js +2 -2
- package/dist/cjs/limel-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-icon.cjs.entry.js +2 -2
- package/dist/cjs/limel-linear-progress.cjs.entry.js +2 -2
- package/dist/cjs/limel-list_2.cjs.entry.js +497 -0
- package/dist/cjs/limel-menu-list.cjs.entry.js +885 -0
- package/dist/cjs/limel-menu.cjs.entry.js +6 -6
- package/dist/cjs/limel-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-popover-surface.cjs.entry.js +2 -2
- package/dist/cjs/limel-popover.cjs.entry.js +2 -2
- package/dist/cjs/limel-portal.cjs.entry.js +1935 -0
- package/dist/cjs/limel-progress-flow-item.cjs.entry.js +3 -3
- package/dist/cjs/limel-progress-flow.cjs.entry.js +2 -2
- package/dist/cjs/limel-select.cjs.entry.js +2 -2
- package/dist/cjs/limel-slider.cjs.entry.js +2 -2
- package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/limel-spinner.cjs.entry.js +2 -2
- package/dist/cjs/limel-switch.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/limel-table.cjs.entry.js +2 -2
- package/dist/cjs/limel-tooltip-content.cjs.entry.js +7 -4
- package/dist/cjs/limel-tooltip.cjs.entry.js +3 -3
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/chip-set/chip-set.js +2 -2
- package/dist/collection/components/list/list-renderer.js +161 -163
- package/dist/collection/components/list/list.css +0 -10
- package/dist/collection/components/list/list.js +77 -125
- package/dist/collection/components/menu/menu.js +13 -13
- package/dist/collection/components/menu-list/menu-list-renderer-config.js +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer.js +158 -0
- package/dist/collection/components/menu-list/menu-list.css +3397 -0
- package/dist/collection/components/menu-list/menu-list.js +288 -0
- package/dist/collection/components/menu-list/menu-list.types.js +1 -0
- package/dist/collection/components/menu-surface/menu-surface.js +84 -87
- package/dist/collection/components/picker/picker.js +2 -2
- package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +1 -1
- package/dist/collection/components/tooltip/tooltip-content.css +25 -13
- package/dist/collection/components/tooltip/tooltip-content.js +4 -3
- package/dist/collection/components/tooltip/tooltip.css +0 -6
- package/dist/collection/components/tooltip/tooltip.js +31 -5
- package/dist/esm/{checkbox.template-434214d5.js → checkbox.template-dbdd27c8.js} +1 -1
- package/dist/esm/component-2eb4e07b.js +2357 -0
- package/dist/esm/{index-dc421a6e.js → index-2316f345.js} +73 -64
- package/dist/esm/lime-elements.js +3 -3
- package/dist/esm/limel-badge.entry.js +2 -2
- package/dist/esm/limel-banner.entry.js +2 -2
- package/dist/esm/limel-button-group.entry.js +2 -2
- package/dist/esm/limel-button.entry.js +2 -2
- package/dist/esm/limel-checkbox.entry.js +3 -3
- package/dist/esm/limel-chip-set.entry.js +2 -2
- package/dist/esm/limel-circular-progress.entry.js +2 -2
- package/dist/esm/limel-code-editor.entry.js +2 -2
- package/dist/esm/limel-collapsible-section.entry.js +2 -2
- package/dist/esm/limel-config.entry.js +2 -2
- package/dist/esm/limel-date-picker.entry.js +2 -2
- package/dist/esm/limel-dialog.entry.js +2 -2
- package/dist/esm/limel-file.entry.js +2 -2
- package/dist/esm/limel-flatpickr-adapter_2.entry.js +3 -3
- package/dist/esm/limel-flex-container.entry.js +2 -2
- package/dist/esm/limel-form.entry.js +2 -2
- package/dist/esm/limel-grid.entry.js +2 -2
- package/dist/esm/limel-header.entry.js +2 -2
- package/dist/esm/limel-icon-button.entry.js +2 -2
- package/dist/esm/limel-icon.entry.js +2 -2
- package/dist/esm/limel-linear-progress.entry.js +2 -2
- package/dist/esm/limel-list_2.entry.js +492 -0
- package/dist/esm/limel-menu-list.entry.js +881 -0
- package/dist/esm/limel-menu.entry.js +6 -6
- package/dist/esm/limel-picker.entry.js +2 -2
- package/dist/esm/limel-popover-surface.entry.js +2 -2
- package/dist/esm/limel-popover.entry.js +2 -2
- package/dist/esm/limel-portal.entry.js +1931 -0
- package/dist/esm/limel-progress-flow-item.entry.js +3 -3
- package/dist/esm/limel-progress-flow.entry.js +2 -2
- package/dist/esm/limel-select.entry.js +2 -2
- package/dist/esm/limel-slider.entry.js +2 -2
- package/dist/esm/limel-snackbar.entry.js +2 -2
- package/dist/esm/limel-spinner.entry.js +2 -2
- package/dist/esm/limel-switch.entry.js +2 -2
- package/dist/esm/limel-tab-bar.entry.js +2 -2
- package/dist/esm/limel-tab-panel.entry.js +2 -2
- package/dist/esm/limel-table.entry.js +2 -2
- package/dist/esm/limel-tooltip-content.entry.js +7 -4
- package/dist/esm/limel-tooltip.entry.js +3 -3
- package/dist/esm/loader.js +3 -3
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-af7c5b11.entry.js → p-03c28bee.entry.js} +2 -2
- package/dist/lime-elements/p-041ae00c.entry.js +1 -0
- package/dist/lime-elements/p-143705b1.entry.js +1 -0
- package/dist/lime-elements/{p-467c87f6.entry.js → p-1d7c7d5e.entry.js} +1 -1
- package/dist/lime-elements/p-1fb5340d.entry.js +1 -0
- package/dist/lime-elements/p-227d2c5a.entry.js +1 -0
- package/dist/lime-elements/p-31299106.js +126 -0
- package/dist/lime-elements/p-34c7872e.entry.js +1 -0
- package/dist/lime-elements/p-3525d50c.entry.js +37 -0
- package/dist/lime-elements/p-4932c029.entry.js +1 -0
- package/dist/lime-elements/p-4b5af81b.entry.js +1 -0
- package/dist/lime-elements/p-510bb5a4.entry.js +1 -0
- package/dist/lime-elements/p-590ef65e.entry.js +1 -0
- package/dist/lime-elements/p-64549ba6.entry.js +37 -0
- package/dist/lime-elements/p-692f31f1.entry.js +16 -0
- package/dist/lime-elements/p-7476efe0.entry.js +1 -0
- package/dist/lime-elements/{p-c636bfcf.entry.js → p-85094bfc.entry.js} +2 -2
- package/dist/lime-elements/p-89b5a983.js +1 -0
- package/dist/lime-elements/p-8d8bd2ab.entry.js +73 -0
- package/dist/lime-elements/p-90f3e17c.entry.js +37 -0
- package/dist/lime-elements/{p-fabb836f.js → p-92146da6.js} +1 -1
- package/dist/lime-elements/p-9d362dd5.entry.js +1 -0
- package/dist/lime-elements/{p-90b2c0a2.entry.js → p-a1153d2a.entry.js} +1 -1
- package/dist/lime-elements/{p-5577f962.entry.js → p-a3dadae7.entry.js} +2 -2
- package/dist/lime-elements/p-b386bfeb.entry.js +1 -0
- package/dist/lime-elements/p-b5d6abc3.entry.js +126 -0
- package/dist/lime-elements/p-bbc1bb01.entry.js +1 -0
- package/dist/lime-elements/p-be56ffab.entry.js +1 -0
- package/dist/lime-elements/p-c35874db.entry.js +1 -0
- package/dist/lime-elements/p-c8c8a946.entry.js +59 -0
- package/dist/lime-elements/p-d070f0e7.entry.js +1 -0
- package/dist/lime-elements/p-d2c74396.entry.js +1 -0
- package/dist/lime-elements/{p-67c48f98.entry.js → p-d97f8f04.entry.js} +1 -1
- package/dist/lime-elements/p-dcad1b31.entry.js +82 -0
- package/dist/lime-elements/p-de017026.entry.js +1 -0
- package/dist/lime-elements/p-e332bcf4.entry.js +1 -0
- package/dist/lime-elements/p-e5738ec6.entry.js +1 -0
- package/dist/lime-elements/p-e881e98d.entry.js +1 -0
- package/dist/lime-elements/{p-2476f7bb.entry.js → p-f079f1fd.entry.js} +2 -2
- package/dist/lime-elements/p-f2df64ec.entry.js +1 -0
- package/dist/lime-elements/p-f4495f59.entry.js +1 -0
- package/dist/lime-elements/p-fc30b8e3.entry.js +1 -0
- package/dist/lime-elements/{p-61ecc7f1.entry.js → p-ff0217b3.entry.js} +2 -2
- package/dist/loader/index.d.ts +0 -1
- package/dist/types/components/list/list-item.types.d.ts +2 -1
- package/dist/types/components/list/list-renderer-config.d.ts +0 -1
- package/dist/types/components/list/list-renderer.d.ts +0 -1
- package/dist/types/components/list/list.d.ts +0 -7
- package/dist/types/components/list/list.types.d.ts +1 -1
- package/dist/types/components/menu/menu.d.ts +2 -3
- package/dist/types/components/menu/menu.types.d.ts +35 -3
- package/dist/types/components/menu-list/menu-list-renderer-config.d.ts +8 -0
- package/dist/types/components/menu-list/menu-list-renderer.d.ts +49 -0
- package/dist/types/components/menu-list/menu-list.d.ts +59 -0
- package/dist/types/components/menu-list/menu-list.types.d.ts +6 -0
- package/dist/types/components/menu-surface/menu-surface.d.ts +0 -1
- package/dist/types/components/tooltip/tooltip-content.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +31 -5
- package/dist/types/components.d.ts +66 -5
- package/dist/types/interface.d.ts +1 -0
- package/package.json +3 -2
- package/dist/cjs/limel-list_3.cjs.entry.js +0 -5418
- package/dist/esm/limel-list_3.entry.js +0 -5412
- package/dist/lime-elements/p-034f336b.entry.js +0 -126
- package/dist/lime-elements/p-136230d6.entry.js +0 -1
- package/dist/lime-elements/p-16c336e8.entry.js +0 -59
- package/dist/lime-elements/p-191f05bc.entry.js +0 -1
- package/dist/lime-elements/p-1a3a9bfd.entry.js +0 -1
- package/dist/lime-elements/p-231f62ba.entry.js +0 -1
- package/dist/lime-elements/p-24c128ec.entry.js +0 -37
- package/dist/lime-elements/p-30c4b32a.entry.js +0 -1
- package/dist/lime-elements/p-3a21fa33.entry.js +0 -37
- package/dist/lime-elements/p-3df01502.entry.js +0 -1
- package/dist/lime-elements/p-63e4f918.entry.js +0 -1
- package/dist/lime-elements/p-6d9f679d.entry.js +0 -1
- package/dist/lime-elements/p-6e3b6e69.entry.js +0 -1
- package/dist/lime-elements/p-79541c2b.entry.js +0 -73
- package/dist/lime-elements/p-7be3a593.entry.js +0 -1
- package/dist/lime-elements/p-7c6f6b80.entry.js +0 -1
- package/dist/lime-elements/p-7dd9c41d.entry.js +0 -16
- package/dist/lime-elements/p-9b79dfe7.js +0 -1
- package/dist/lime-elements/p-a6a7dd00.entry.js +0 -1
- package/dist/lime-elements/p-b0b18dfc.entry.js +0 -1
- package/dist/lime-elements/p-b88e7350.entry.js +0 -1
- package/dist/lime-elements/p-bd805195.entry.js +0 -1
- package/dist/lime-elements/p-bde1749a.entry.js +0 -1
- package/dist/lime-elements/p-c45238b6.entry.js +0 -1
- package/dist/lime-elements/p-c53695a3.entry.js +0 -37
- package/dist/lime-elements/p-dc5b3f45.entry.js +0 -1
- package/dist/lime-elements/p-e078c459.entry.js +0 -177
- package/dist/lime-elements/p-e9b4bdac.entry.js +0 -1
- package/dist/lime-elements/p-eb81fc35.entry.js +0 -1
- package/dist/lime-elements/p-f94cbe50.entry.js +0 -1
- package/dist/lime-elements/p-fa880bd6.entry.js +0 -1
|
@@ -97,8 +97,8 @@ export class Menu {
|
|
|
97
97
|
var _a;
|
|
98
98
|
const activeElement = this.list.shadowRoot.activeElement;
|
|
99
99
|
activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur();
|
|
100
|
-
const
|
|
101
|
-
const selectedIndex = Math.max(
|
|
100
|
+
const MenuItems = this.items.filter(this.isMenuItem);
|
|
101
|
+
const selectedIndex = Math.max(MenuItems.findIndex((item) => item.selected), 0);
|
|
102
102
|
const menuElements = Array.from(this.list.shadowRoot.querySelectorAll('[role="menuitem"]'));
|
|
103
103
|
(_a = menuElements[selectedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
104
104
|
};
|
|
@@ -131,7 +131,7 @@ export class Menu {
|
|
|
131
131
|
h("slot", { name: "trigger" }, this.renderTrigger()),
|
|
132
132
|
h("limel-portal", { class: portalClasses, style: portalPosition, visible: this.open, containerId: this.portalId, openDirection: this.openDirection, position: this.fixed ? 'fixed' : 'absolute', containerStyle: { 'z-index': dropdownZIndex } },
|
|
133
133
|
h("limel-menu-surface", { open: this.open, onDismiss: this.onClose, style: cssProperties },
|
|
134
|
-
h("limel-list", { class: {
|
|
134
|
+
h("limel-menu-list", { class: {
|
|
135
135
|
'has-grid-layout has-interactive-items': this.gridLayout,
|
|
136
136
|
}, items: this.items, type: "menu", badgeIcons: this.badgeIcons, onChange: this.onListChange, ref: this.setListElement })))));
|
|
137
137
|
}
|
|
@@ -173,7 +173,7 @@ export class Menu {
|
|
|
173
173
|
});
|
|
174
174
|
return zipObject(propertyNames, values);
|
|
175
175
|
}
|
|
176
|
-
|
|
176
|
+
isMenuItem(item) {
|
|
177
177
|
return !('separator' in item);
|
|
178
178
|
}
|
|
179
179
|
static get is() { return "limel-menu"; }
|
|
@@ -197,8 +197,8 @@ export class Menu {
|
|
|
197
197
|
"optional": false,
|
|
198
198
|
"docs": {
|
|
199
199
|
"tags": [{
|
|
200
|
-
"
|
|
201
|
-
"
|
|
200
|
+
"name": "deprecated",
|
|
201
|
+
"text": "Use with default trigger has been deprecated.\nPlease supply your own trigger element."
|
|
202
202
|
}],
|
|
203
203
|
"text": "Is displayed on the default trigger button."
|
|
204
204
|
},
|
|
@@ -218,7 +218,7 @@ export class Menu {
|
|
|
218
218
|
},
|
|
219
219
|
"MenuItem": {
|
|
220
220
|
"location": "import",
|
|
221
|
-
"path": "
|
|
221
|
+
"path": "@limetech/lime-elements"
|
|
222
222
|
},
|
|
223
223
|
"ListSeparator": {
|
|
224
224
|
"location": "import",
|
|
@@ -261,7 +261,7 @@ export class Menu {
|
|
|
261
261
|
"references": {
|
|
262
262
|
"OpenDirection": {
|
|
263
263
|
"location": "import",
|
|
264
|
-
"path": "
|
|
264
|
+
"path": "@limetech/lime-elements"
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
},
|
|
@@ -341,8 +341,8 @@ export class Menu {
|
|
|
341
341
|
"optional": false,
|
|
342
342
|
"docs": {
|
|
343
343
|
"tags": [{
|
|
344
|
-
"
|
|
345
|
-
"
|
|
344
|
+
"name": "deprecated",
|
|
345
|
+
"text": "Fixed position was used to get around a bug in the placement\nof the menu. This bug has since been fixed, which makes this attribute\nobsolete."
|
|
346
346
|
}],
|
|
347
347
|
"text": "Defines whether the menu should have a fixed position on the screen."
|
|
348
348
|
},
|
|
@@ -377,10 +377,10 @@ export class Menu {
|
|
|
377
377
|
"text": "Is emitted when a menu item is selected."
|
|
378
378
|
},
|
|
379
379
|
"complexType": {
|
|
380
|
-
"original": "
|
|
381
|
-
"resolved": "
|
|
380
|
+
"original": "MenuItem | MenuItem[]",
|
|
381
|
+
"resolved": "MenuItem<any> | MenuItem<any>[]",
|
|
382
382
|
"references": {
|
|
383
|
-
"
|
|
383
|
+
"MenuItem": {
|
|
384
384
|
"location": "import",
|
|
385
385
|
"path": "@limetech/lime-elements"
|
|
386
386
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { h } from '@stencil/core';
|
|
2
|
+
export class MenuListRenderer {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.defaultConfig = {
|
|
5
|
+
isOpen: true,
|
|
6
|
+
badgeIcons: false,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Determine which MenuItem should have the `tab-index` attribute set,
|
|
10
|
+
* and return the index at which that MenuItem is located in `items`.
|
|
11
|
+
* Returns `undefined` if no item should have the attribute set.
|
|
12
|
+
* See https://github.com/material-components/material-components-web/tree/e66a43a75fef4f9179e24856649518e15e279a04/packages/mdc-list#accessibility
|
|
13
|
+
*
|
|
14
|
+
* @param {Array<ListSeparator | MenuItems>} items the items of the list, including any `ListSeparator`:s
|
|
15
|
+
* @returns {number} the index as per the description
|
|
16
|
+
*/
|
|
17
|
+
this.getIndexForWhichToApplyTabIndex = (items) => {
|
|
18
|
+
let result;
|
|
19
|
+
for (let i = 0, max = items.length; i < max; i += 1) {
|
|
20
|
+
if ('separator' in items[i]) {
|
|
21
|
+
// Ignore ListSeparator
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const item = items[i];
|
|
25
|
+
if (item.selected) {
|
|
26
|
+
result = i;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
if (result === undefined && !item.disabled) {
|
|
30
|
+
result = i;
|
|
31
|
+
// Do NOT break, as any later item with
|
|
32
|
+
// `selected=true` should get the tab-index instead!
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Render a single list item
|
|
40
|
+
*
|
|
41
|
+
* @param {ListSeparator | MenuItems} item the item to render
|
|
42
|
+
* @param {number} index the index the item had in the `items` array
|
|
43
|
+
* @returns {HTMLElement} the list item
|
|
44
|
+
*/
|
|
45
|
+
this.renderMenuItem = (item, index) => {
|
|
46
|
+
if ('separator' in item) {
|
|
47
|
+
return h("li", { class: "mdc-deprecated-list-divider", role: "separator" });
|
|
48
|
+
}
|
|
49
|
+
const classNames = {
|
|
50
|
+
'mdc-deprecated-list-item': true,
|
|
51
|
+
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
52
|
+
'mdc-deprecated-list-item--selected': item.selected,
|
|
53
|
+
};
|
|
54
|
+
const attributes = {};
|
|
55
|
+
if (index === this.applyTabIndexToItemAtIndex) {
|
|
56
|
+
attributes.tabindex = '0';
|
|
57
|
+
}
|
|
58
|
+
return (h("li", Object.assign({ class: classNames, role: "menuitem", "aria-disabled": item.disabled ? 'true' : 'false', "aria-selected": item.selected ? 'true' : 'false', "data-index": index }, attributes),
|
|
59
|
+
item.icon ? this.renderIcon(this.config, item) : null,
|
|
60
|
+
this.renderText(item),
|
|
61
|
+
this.twoLines && this.avatarList ? this.renderDivider() : null,
|
|
62
|
+
this.renderActionMenu(item.actions)));
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Render the text of the list item
|
|
66
|
+
*
|
|
67
|
+
* @param {MenuItem} item the list item
|
|
68
|
+
* @returns {HTMLElement | string} the text for the list item
|
|
69
|
+
*/
|
|
70
|
+
this.renderText = (item) => {
|
|
71
|
+
if (this.isSimpleItem(item)) {
|
|
72
|
+
return (h("span", { class: "mdc-deprecated-list-item__text" }, item.text));
|
|
73
|
+
}
|
|
74
|
+
return (h("div", { class: "mdc-deprecated-list-item__text" },
|
|
75
|
+
h("div", { class: "mdc-deprecated-list-item__primary-command-text" },
|
|
76
|
+
h("div", { class: "mdc-deprecated-list-item__primary-text" }, item.text),
|
|
77
|
+
this.renderCommandText(item)),
|
|
78
|
+
h("div", { class: "mdc-deprecated-list-item__secondary-text" }, item.secondaryText)));
|
|
79
|
+
};
|
|
80
|
+
this.renderCommandText = (item) => {
|
|
81
|
+
if (!('commandText' in item)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
return (h("div", { class: "mdc-deprecated-list-item__command-text" }, item.commandText));
|
|
85
|
+
};
|
|
86
|
+
this.isSimpleItem = (item) => {
|
|
87
|
+
if ('commandText' in item) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if ('secondaryText' in item) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Render an icon for a list item
|
|
97
|
+
*
|
|
98
|
+
* @param {MenuListRendererConfig} config the config object, passed on from the `renderMenuItem` function
|
|
99
|
+
* @param {MenuItem} item the list item
|
|
100
|
+
* @returns {HTMLElement} the icon element
|
|
101
|
+
*/
|
|
102
|
+
this.renderIcon = (config, item) => {
|
|
103
|
+
const style = {};
|
|
104
|
+
if (item.iconColor) {
|
|
105
|
+
if (config.badgeIcons) {
|
|
106
|
+
style['--icon-background-color'] = item.iconColor;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
style.color = item.iconColor;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return (h("limel-icon", { badge: config.badgeIcons, class: "mdc-deprecated-list-item__graphic", name: item.icon, style: style, size: config.iconSize }));
|
|
113
|
+
};
|
|
114
|
+
this.renderDivider = () => {
|
|
115
|
+
const classes = {
|
|
116
|
+
'mdc-deprecated-list-divider': true,
|
|
117
|
+
'mdc-deprecated-list-divider--inset': true,
|
|
118
|
+
};
|
|
119
|
+
if (this.config.iconSize) {
|
|
120
|
+
classes[this.config.iconSize] = true;
|
|
121
|
+
}
|
|
122
|
+
return h("hr", { class: classes });
|
|
123
|
+
};
|
|
124
|
+
this.renderActionMenu = (actions) => {
|
|
125
|
+
if (!actions || actions.length === 0) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
return (h("limel-menu", { class: "mdc-deprecated-list-item__meta", items: actions, openDirection: "left" },
|
|
129
|
+
h("limel-icon", { slot: "trigger", name: "menu_2", size: "small" })));
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
render(items, config = {}) {
|
|
133
|
+
items = items || [];
|
|
134
|
+
this.config = Object.assign(Object.assign({}, this.defaultConfig), config);
|
|
135
|
+
this.twoLines = items.some((item) => {
|
|
136
|
+
return 'secondaryText' in item && !!item.secondaryText;
|
|
137
|
+
});
|
|
138
|
+
this.commandKey = items.some((item) => {
|
|
139
|
+
return 'commandText' in item && !!item.commandText;
|
|
140
|
+
});
|
|
141
|
+
this.hasIcons = items.some((item) => {
|
|
142
|
+
return 'icon' in item && !!item.icon;
|
|
143
|
+
});
|
|
144
|
+
this.avatarList = this.config.badgeIcons && this.hasIcons;
|
|
145
|
+
this.applyTabIndexToItemAtIndex =
|
|
146
|
+
this.getIndexForWhichToApplyTabIndex(items);
|
|
147
|
+
const classNames = {
|
|
148
|
+
'mdc-deprecated-list': true,
|
|
149
|
+
'mdc-deprecated-list--two-line': this.twoLines,
|
|
150
|
+
selectable: true,
|
|
151
|
+
'mdc-deprecated-list--avatar-list': this.avatarList,
|
|
152
|
+
'list--compact': this.twoLines &&
|
|
153
|
+
this.commandKey &&
|
|
154
|
+
['small', 'x-small'].includes(this.config.iconSize),
|
|
155
|
+
};
|
|
156
|
+
return (h("ul", { class: classNames, "aria-hidden": true, role: "menu", "aria-orientation": "vertical" }, items.map(this.renderMenuItem)));
|
|
157
|
+
}
|
|
158
|
+
}
|