@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
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"./components/linear-progress/linear-progress.js",
|
|
25
25
|
"./components/list/list.js",
|
|
26
26
|
"./components/menu/menu.js",
|
|
27
|
+
"./components/menu-list/menu-list.js",
|
|
27
28
|
"./components/menu-surface/menu-surface.js",
|
|
28
29
|
"./components/picker/picker.js",
|
|
29
30
|
"./components/popover/popover.js",
|
|
@@ -44,8 +45,8 @@
|
|
|
44
45
|
],
|
|
45
46
|
"compiler": {
|
|
46
47
|
"name": "@stencil/core",
|
|
47
|
-
"version": "2.
|
|
48
|
-
"typescriptVersion": "4.
|
|
48
|
+
"version": "2.10.0",
|
|
49
|
+
"typescriptVersion": "4.3.5"
|
|
49
50
|
},
|
|
50
51
|
"collections": [],
|
|
51
52
|
"bundles": []
|
|
@@ -778,8 +778,8 @@ export class ChipSet {
|
|
|
778
778
|
"signature": "(emptyInput?: boolean) => Promise<void>",
|
|
779
779
|
"parameters": [{
|
|
780
780
|
"tags": [{
|
|
781
|
-
"
|
|
782
|
-
"
|
|
781
|
+
"name": "param",
|
|
782
|
+
"text": "emptyInput if `true`, any text in the input is discarded"
|
|
783
783
|
}],
|
|
784
784
|
"text": "if `true`, any text in the input is discarded"
|
|
785
785
|
}],
|
|
@@ -7,8 +7,164 @@ export class ListRenderer {
|
|
|
7
7
|
isOpen: true,
|
|
8
8
|
badgeIcons: false,
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Determine which ListItem should have the `tab-index` attribute set,
|
|
12
|
+
* and return the index at which that ListItem is located in `items`.
|
|
13
|
+
* Returns `undefined` if no item should have the attribute set.
|
|
14
|
+
* See https://github.com/material-components/material-components-web/tree/e66a43a75fef4f9179e24856649518e15e279a04/packages/mdc-list#accessibility
|
|
15
|
+
*
|
|
16
|
+
* @param {Array<ListItem | ListSeparator | MenuItems>} items the items of the list, including any `ListSeparator`:s
|
|
17
|
+
* @returns {number} the index as per the description
|
|
18
|
+
*/
|
|
19
|
+
this.getIndexForWhichToApplyTabIndex = (items) => {
|
|
20
|
+
let result;
|
|
21
|
+
for (let i = 0, max = items.length; i < max; i += 1) {
|
|
22
|
+
if ('separator' in items[i]) {
|
|
23
|
+
// Ignore ListSeparator
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const item = items[i];
|
|
27
|
+
if (item.selected) {
|
|
28
|
+
result = i;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
if (result === undefined && !item.disabled) {
|
|
32
|
+
result = i;
|
|
33
|
+
// Do NOT break, as any later item with
|
|
34
|
+
// `selected=true` should get the tab-index instead!
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Render a single list item
|
|
42
|
+
*
|
|
43
|
+
* @param {ListItem | ListSeparator | MenuItems} item the item to render
|
|
44
|
+
* @param {number} index the index the item had in the `items` array
|
|
45
|
+
* @returns {HTMLElement} the list item
|
|
46
|
+
*/
|
|
47
|
+
this.renderListItem = (item, index) => {
|
|
48
|
+
if ('separator' in item) {
|
|
49
|
+
return h("li", { class: "mdc-deprecated-list-divider", role: "separator" });
|
|
50
|
+
}
|
|
51
|
+
if (['radio', 'checkbox'].includes(this.config.type)) {
|
|
52
|
+
return this.renderVariantListItem(this.config, item, index);
|
|
53
|
+
}
|
|
54
|
+
const classNames = {
|
|
55
|
+
'mdc-deprecated-list-item': true,
|
|
56
|
+
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
57
|
+
'mdc-deprecated-list-item--selected': item.selected,
|
|
58
|
+
};
|
|
59
|
+
const attributes = {};
|
|
60
|
+
if (index === this.applyTabIndexToItemAtIndex) {
|
|
61
|
+
attributes.tabindex = '0';
|
|
62
|
+
}
|
|
63
|
+
return (h("li", Object.assign({ class: classNames, "aria-disabled": item.disabled ? 'true' : 'false', "aria-selected": item.selected ? 'true' : 'false', "data-index": index }, attributes),
|
|
64
|
+
item.icon ? this.renderIcon(this.config, item) : null,
|
|
65
|
+
this.renderText(item),
|
|
66
|
+
this.twoLines && this.avatarList ? this.renderDivider() : null,
|
|
67
|
+
this.renderActionMenu(item.actions)));
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Render the text of the list item
|
|
71
|
+
*
|
|
72
|
+
* @param {ListItem | MenuItem} item the list item
|
|
73
|
+
* @returns {HTMLElement | string} the text for the list item
|
|
74
|
+
*/
|
|
75
|
+
this.renderText = (item) => {
|
|
76
|
+
if (this.isSimpleItem(item)) {
|
|
77
|
+
return (h("span", { class: "mdc-deprecated-list-item__text" }, item.text));
|
|
78
|
+
}
|
|
79
|
+
return (h("div", { class: "mdc-deprecated-list-item__text" },
|
|
80
|
+
h("div", { class: "mdc-deprecated-list-item__primary-command-text" },
|
|
81
|
+
h("div", { class: "mdc-deprecated-list-item__primary-text" }, item.text),
|
|
82
|
+
this.renderCommandText(item)),
|
|
83
|
+
h("div", { class: "mdc-deprecated-list-item__secondary-text" }, item.secondaryText)));
|
|
84
|
+
};
|
|
85
|
+
this.renderCommandText = (item) => {
|
|
86
|
+
if (!('commandText' in item)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
return (h("div", { class: "mdc-deprecated-list-item__command-text" }, item.commandText));
|
|
90
|
+
};
|
|
91
|
+
this.isSimpleItem = (item) => {
|
|
92
|
+
if ('commandText' in item) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
if ('secondaryText' in item) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Render an icon for a list item
|
|
102
|
+
*
|
|
103
|
+
* @param {ListRendererConfig} config the config object, passed on from the `renderListItem` function
|
|
104
|
+
* @param {ListItem} item the list item
|
|
105
|
+
* @returns {HTMLElement} the icon element
|
|
106
|
+
*/
|
|
107
|
+
this.renderIcon = (config, item) => {
|
|
108
|
+
const style = {};
|
|
109
|
+
if (item.iconColor) {
|
|
110
|
+
if (config.badgeIcons) {
|
|
111
|
+
style['--icon-background-color'] = item.iconColor;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
style.color = item.iconColor;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return (h("limel-icon", { badge: config.badgeIcons, class: "mdc-deprecated-list-item__graphic", name: item.icon, style: style, size: config.iconSize }));
|
|
118
|
+
};
|
|
119
|
+
this.renderDivider = () => {
|
|
120
|
+
const classes = {
|
|
121
|
+
'mdc-deprecated-list-divider': true,
|
|
122
|
+
'mdc-deprecated-list-divider--inset': true,
|
|
123
|
+
};
|
|
124
|
+
if (this.config.iconSize) {
|
|
125
|
+
classes[this.config.iconSize] = true;
|
|
126
|
+
}
|
|
127
|
+
return h("hr", { class: classes });
|
|
128
|
+
};
|
|
129
|
+
this.renderActionMenu = (actions) => {
|
|
130
|
+
if (!actions || actions.length === 0) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
return (h("limel-menu", { class: "mdc-deprecated-list-item__meta", items: actions, openDirection: "left" },
|
|
134
|
+
h("limel-icon", { slot: "trigger", name: "menu_2", size: "small" })));
|
|
135
|
+
};
|
|
136
|
+
this.renderVariantListItem = (config, item, index) => {
|
|
137
|
+
let itemTemplate;
|
|
138
|
+
if (config.type === 'radio') {
|
|
139
|
+
itemTemplate = (h(RadioButtonTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
140
|
+
}
|
|
141
|
+
else if (config.type === 'checkbox') {
|
|
142
|
+
itemTemplate = (h(CheckboxTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
143
|
+
}
|
|
144
|
+
const classNames = {
|
|
145
|
+
'mdc-deprecated-list-item': true,
|
|
146
|
+
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
147
|
+
'mdc-deprecated-list-item__text': !item.secondaryText,
|
|
148
|
+
};
|
|
149
|
+
const attributes = {};
|
|
150
|
+
if (index === this.applyTabIndexToItemAtIndex) {
|
|
151
|
+
attributes.tabindex = '0';
|
|
152
|
+
}
|
|
153
|
+
return (h("li", Object.assign({ class: classNames, role: config.type, "aria-checked": item.selected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', "data-index": index }, attributes), this.renderVariantListItemContent(config, item, itemTemplate)));
|
|
154
|
+
};
|
|
155
|
+
this.renderVariantListItemContent = (config, item, itemTemplate) => {
|
|
156
|
+
if (this.hasIcons) {
|
|
157
|
+
return [
|
|
158
|
+
item.icon ? this.renderIcon(config, item) : null,
|
|
159
|
+
this.renderText(item),
|
|
160
|
+
h("div", { class: "mdc-deprecated-list-item__meta" }, itemTemplate),
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
return [
|
|
164
|
+
h("div", { class: "mdc-deprecated-list-item__graphic" }, itemTemplate),
|
|
165
|
+
this.renderText(item),
|
|
166
|
+
];
|
|
167
|
+
};
|
|
12
168
|
}
|
|
13
169
|
render(items, config = {}) {
|
|
14
170
|
items = items || [];
|
|
@@ -23,7 +179,7 @@ export class ListRenderer {
|
|
|
23
179
|
return 'icon' in item && !!item.icon;
|
|
24
180
|
});
|
|
25
181
|
this.avatarList = this.config.badgeIcons && this.hasIcons;
|
|
26
|
-
const selectableListTypes = ['selectable', 'radio', 'checkbox'
|
|
182
|
+
const selectableListTypes = ['selectable', 'radio', 'checkbox'];
|
|
27
183
|
let role;
|
|
28
184
|
switch (this.config.type) {
|
|
29
185
|
case 'checkbox':
|
|
@@ -33,7 +189,7 @@ export class ListRenderer {
|
|
|
33
189
|
role = 'radiogroup';
|
|
34
190
|
break;
|
|
35
191
|
default:
|
|
36
|
-
role =
|
|
192
|
+
role = 'listbox';
|
|
37
193
|
}
|
|
38
194
|
this.applyTabIndexToItemAtIndex =
|
|
39
195
|
this.getIndexForWhichToApplyTabIndex(items);
|
|
@@ -46,164 +202,6 @@ export class ListRenderer {
|
|
|
46
202
|
this.commandKey &&
|
|
47
203
|
['small', 'x-small'].includes(this.config.iconSize),
|
|
48
204
|
};
|
|
49
|
-
return (h("ul", { class: classNames,
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Determine which ListItem should have the `tab-index` attribute set,
|
|
53
|
-
* and return the index at which that ListItem is located in `items`.
|
|
54
|
-
* Returns `undefined` if no item should have the attribute set.
|
|
55
|
-
* See https://github.com/material-components/material-components-web/tree/e66a43a75fef4f9179e24856649518e15e279a04/packages/mdc-list#accessibility
|
|
56
|
-
*
|
|
57
|
-
* @param {Array<ListItem | ListSeparator | MenuItems>} items the items of the list, including any `ListSeparator`:s
|
|
58
|
-
* @returns {number} the index as per the description
|
|
59
|
-
*/
|
|
60
|
-
getIndexForWhichToApplyTabIndex(items) {
|
|
61
|
-
let result;
|
|
62
|
-
for (let i = 0, max = items.length; i < max; i += 1) {
|
|
63
|
-
if ('separator' in items[i]) {
|
|
64
|
-
// Ignore ListSeparator
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
const item = items[i];
|
|
68
|
-
if (item.selected) {
|
|
69
|
-
result = i;
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
if (result === undefined && !item.disabled) {
|
|
73
|
-
result = i;
|
|
74
|
-
// Do NOT break, as any later item with
|
|
75
|
-
// `selected=true` should get the tab-index instead!
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return result;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Render a single list item
|
|
83
|
-
*
|
|
84
|
-
* @param {ListItem | ListSeparator | MenuItems} item the item to render
|
|
85
|
-
* @param {number} index the index the item had in the `items` array
|
|
86
|
-
* @returns {HTMLElement} the list item
|
|
87
|
-
*/
|
|
88
|
-
renderListItem(item, index) {
|
|
89
|
-
if ('separator' in item) {
|
|
90
|
-
return h("li", { class: "mdc-deprecated-list-divider", role: "separator" });
|
|
91
|
-
}
|
|
92
|
-
if (['radio', 'checkbox'].includes(this.config.type)) {
|
|
93
|
-
return this.renderVariantListItem(this.config, item, index);
|
|
94
|
-
}
|
|
95
|
-
const classNames = {
|
|
96
|
-
'mdc-deprecated-list-item': true,
|
|
97
|
-
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
98
|
-
'mdc-deprecated-list-item--selected': item.selected,
|
|
99
|
-
};
|
|
100
|
-
const attributes = {};
|
|
101
|
-
if (index === this.applyTabIndexToItemAtIndex) {
|
|
102
|
-
attributes.tabindex = '0';
|
|
103
|
-
}
|
|
104
|
-
return (h("li", Object.assign({ class: classNames, role: this.config.type === 'menu' ? 'menuitem' : '', "aria-disabled": item.disabled ? 'true' : 'false', "aria-selected": item.selected ? 'true' : 'false', "data-index": index }, attributes),
|
|
105
|
-
item.icon ? this.renderIcon(this.config, item) : null,
|
|
106
|
-
this.renderText(item),
|
|
107
|
-
this.twoLines && this.avatarList ? this.renderDivider() : null,
|
|
108
|
-
this.renderActionMenu(item.actions)));
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Render the text of the list item
|
|
112
|
-
*
|
|
113
|
-
* @param {ListItem | MenuItem} item the list item
|
|
114
|
-
* @returns {HTMLElement | string} the text for the list item
|
|
115
|
-
*/
|
|
116
|
-
renderText(item) {
|
|
117
|
-
if (this.isSimpleItem(item)) {
|
|
118
|
-
return (h("span", { class: "mdc-deprecated-list-item__text" }, item.text));
|
|
119
|
-
}
|
|
120
|
-
return (h("div", { class: "mdc-deprecated-list-item__text" },
|
|
121
|
-
h("div", { class: "mdc-deprecated-list-item__primary-command-text" },
|
|
122
|
-
h("div", { class: "mdc-deprecated-list-item__primary-text" }, item.text),
|
|
123
|
-
this.renderCommandText(item)),
|
|
124
|
-
h("div", { class: "mdc-deprecated-list-item__secondary-text" }, item.secondaryText)));
|
|
125
|
-
}
|
|
126
|
-
renderCommandText(item) {
|
|
127
|
-
if (!('commandText' in item)) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
return (h("div", { class: "mdc-deprecated-list-item__command-text" }, item.commandText));
|
|
131
|
-
}
|
|
132
|
-
isSimpleItem(item) {
|
|
133
|
-
if ('commandText' in item) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
if ('secondaryText' in item) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Render an icon for a list item
|
|
143
|
-
*
|
|
144
|
-
* @param {ListRendererConfig} config the config object, passed on from the `renderListItem` function
|
|
145
|
-
* @param {ListItem} item the list item
|
|
146
|
-
* @returns {HTMLElement} the icon element
|
|
147
|
-
*/
|
|
148
|
-
renderIcon(config, item) {
|
|
149
|
-
const style = {};
|
|
150
|
-
if (item.iconColor) {
|
|
151
|
-
if (config.badgeIcons) {
|
|
152
|
-
style['--icon-background-color'] = item.iconColor;
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
style.color = item.iconColor;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return (h("limel-icon", { badge: config.badgeIcons, class: "mdc-deprecated-list-item__graphic", name: item.icon, style: style, size: config.iconSize }));
|
|
159
|
-
}
|
|
160
|
-
renderDivider() {
|
|
161
|
-
const classes = {
|
|
162
|
-
'mdc-deprecated-list-divider': true,
|
|
163
|
-
'mdc-deprecated-list-divider--inset': true,
|
|
164
|
-
};
|
|
165
|
-
if (this.config.iconSize) {
|
|
166
|
-
classes[this.config.iconSize] = true;
|
|
167
|
-
}
|
|
168
|
-
return h("hr", { class: classes });
|
|
169
|
-
}
|
|
170
|
-
renderActionMenu(actions) {
|
|
171
|
-
if (!actions || actions.length === 0) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
return (h("limel-menu", { class: "mdc-deprecated-list-item__meta", items: actions, openDirection: "left" },
|
|
175
|
-
h("limel-icon", { slot: "trigger", name: "menu_2", size: "small" })));
|
|
176
|
-
}
|
|
177
|
-
renderVariantListItem(config, item, index) {
|
|
178
|
-
let itemTemplate;
|
|
179
|
-
if (config.type === 'radio') {
|
|
180
|
-
itemTemplate = (h(RadioButtonTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
181
|
-
}
|
|
182
|
-
else if (config.type === 'checkbox') {
|
|
183
|
-
itemTemplate = (h(CheckboxTemplate, { id: `c_${index}`, checked: item.selected, disabled: item.disabled }));
|
|
184
|
-
}
|
|
185
|
-
const classNames = {
|
|
186
|
-
'mdc-deprecated-list-item': true,
|
|
187
|
-
'mdc-deprecated-list-item--disabled': item.disabled,
|
|
188
|
-
'mdc-deprecated-list-item__text': !item.secondaryText,
|
|
189
|
-
};
|
|
190
|
-
const attributes = {};
|
|
191
|
-
if (index === this.applyTabIndexToItemAtIndex) {
|
|
192
|
-
attributes.tabindex = '0';
|
|
193
|
-
}
|
|
194
|
-
return (h("li", Object.assign({ class: classNames, role: config.type, "aria-checked": item.selected ? 'true' : 'false', "aria-disabled": item.disabled ? 'true' : 'false', "data-index": index }, attributes), this.renderVariantListItemContent(config, item, itemTemplate)));
|
|
195
|
-
}
|
|
196
|
-
renderVariantListItemContent(config, item, itemTemplate) {
|
|
197
|
-
if (this.hasIcons) {
|
|
198
|
-
return [
|
|
199
|
-
item.icon ? this.renderIcon(config, item) : null,
|
|
200
|
-
this.renderText(item),
|
|
201
|
-
h("div", { class: "mdc-deprecated-list-item__meta" }, itemTemplate),
|
|
202
|
-
];
|
|
203
|
-
}
|
|
204
|
-
return [
|
|
205
|
-
h("div", { class: "mdc-deprecated-list-item__graphic" }, itemTemplate),
|
|
206
|
-
this.renderText(item),
|
|
207
|
-
];
|
|
205
|
+
return (h("ul", { class: classNames, role: role, "aria-orientation": "vertical" }, items.map(this.renderListItem)));
|
|
208
206
|
}
|
|
209
207
|
}
|
|
@@ -3052,10 +3052,6 @@ a.mdc-list-item {
|
|
|
3052
3052
|
pointer-events: none;
|
|
3053
3053
|
}
|
|
3054
3054
|
|
|
3055
|
-
.mdc-menu {
|
|
3056
|
-
max-height: 70vh;
|
|
3057
|
-
}
|
|
3058
|
-
|
|
3059
3055
|
.mdc-deprecated-list {
|
|
3060
3056
|
--mdc-theme-text-icon-on-background: var(
|
|
3061
3057
|
--icon-color,
|
|
@@ -3123,12 +3119,6 @@ a.mdc-list-item {
|
|
|
3123
3119
|
.mdc-deprecated-list.mdc-deprecated-list--avatar-list .mdc-deprecated-list-item:last-child hr.mdc-deprecated-list-divider {
|
|
3124
3120
|
display: none;
|
|
3125
3121
|
}
|
|
3126
|
-
.mdc-deprecated-list .mdc-deprecated-list-item[role=menuitem] {
|
|
3127
|
-
font-size: 0.8125rem;
|
|
3128
|
-
}
|
|
3129
|
-
.mdc-deprecated-list .mdc-deprecated-list-item[role=menuitem] .mdc-deprecated-list-item__graphic {
|
|
3130
|
-
margin-right: 0.875rem;
|
|
3131
|
-
}
|
|
3132
3122
|
.mdc-deprecated-list.mdc-deprecated-list--two-line .mdc-deprecated-list-item__text {
|
|
3133
3123
|
padding: 0.5rem 0;
|
|
3134
3124
|
}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { MDCList } from '@material/list';
|
|
2
|
-
import { MDCMenu } from '@material/menu';
|
|
3
2
|
import { MDCRipple } from '@material/ripple';
|
|
4
3
|
import { strings as listStrings } from '@material/list/constants';
|
|
5
|
-
import { strings as menuStrings } from '@material/menu/constants';
|
|
6
4
|
import { Component, Element, Event, h, Host, Prop, Watch, } from '@stencil/core';
|
|
7
5
|
import { ListRenderer } from './list-renderer';
|
|
8
6
|
const { ACTION_EVENT } = listStrings;
|
|
9
|
-
const { SELECTED_EVENT } = menuStrings;
|
|
10
7
|
/**
|
|
11
8
|
* @exampleComponent limel-example-list
|
|
12
9
|
* @exampleComponent limel-example-list-secondary
|
|
@@ -37,8 +34,81 @@ export class List {
|
|
|
37
34
|
// eslint-disable-next-line no-magic-numbers
|
|
38
35
|
this.maxLinesSecondaryText = 3;
|
|
39
36
|
this.listRenderer = new ListRenderer();
|
|
40
|
-
this.
|
|
41
|
-
|
|
37
|
+
this.setup = () => {
|
|
38
|
+
this.setupList();
|
|
39
|
+
this.setupListeners();
|
|
40
|
+
};
|
|
41
|
+
this.setupList = () => {
|
|
42
|
+
const element = this.element.shadowRoot.querySelector('.mdc-deprecated-list');
|
|
43
|
+
if (!element) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.mdcList = new MDCList(element);
|
|
47
|
+
this.mdcList.listElements.forEach((item) => new MDCRipple(item));
|
|
48
|
+
};
|
|
49
|
+
this.setupListeners = () => {
|
|
50
|
+
if (!this.mdcList) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
this.mdcList.unlisten(ACTION_EVENT, this.handleAction);
|
|
54
|
+
this.selectable = ['selectable', 'radio', 'checkbox'].includes(this.type);
|
|
55
|
+
this.multiple = this.type === 'checkbox';
|
|
56
|
+
if (!this.selectable) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
this.mdcList.listen(ACTION_EVENT, this.handleAction);
|
|
60
|
+
this.mdcList.singleSelection = !this.multiple;
|
|
61
|
+
};
|
|
62
|
+
this.teardown = () => {
|
|
63
|
+
var _a, _b;
|
|
64
|
+
(_a = this.mdcList) === null || _a === void 0 ? void 0 : _a.unlisten(ACTION_EVENT, this.handleAction);
|
|
65
|
+
(_b = this.mdcList) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
66
|
+
};
|
|
67
|
+
this.handleAction = (event) => {
|
|
68
|
+
if (!this.multiple) {
|
|
69
|
+
this.handleSingleSelect(event.detail.index);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.handleMultiSelect(event.detail.index);
|
|
73
|
+
};
|
|
74
|
+
this.handleSingleSelect = (index) => {
|
|
75
|
+
const listItems = this.items.filter(this.isListItem);
|
|
76
|
+
if (listItems[index].disabled) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const selectedItem = listItems.find((item) => {
|
|
80
|
+
return !!item.selected;
|
|
81
|
+
});
|
|
82
|
+
if (selectedItem) {
|
|
83
|
+
this.change.emit(Object.assign(Object.assign({}, selectedItem), { selected: false }));
|
|
84
|
+
}
|
|
85
|
+
if (listItems[index] !== selectedItem) {
|
|
86
|
+
this.change.emit(Object.assign(Object.assign({}, listItems[index]), { selected: true }));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
this.handleMultiSelect = (index) => {
|
|
90
|
+
const listItems = this.items.filter(this.isListItem);
|
|
91
|
+
if (listItems[index].disabled) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const selectedItems = listItems
|
|
95
|
+
.filter((item, listIndex) => {
|
|
96
|
+
if (listIndex === index) {
|
|
97
|
+
// This is the item that was selected or deselected,
|
|
98
|
+
// so we negate its previous selection status.
|
|
99
|
+
return !item.selected;
|
|
100
|
+
}
|
|
101
|
+
// This is an item that didn't change, so we keep its selection status.
|
|
102
|
+
return item.selected;
|
|
103
|
+
})
|
|
104
|
+
.map((item) => {
|
|
105
|
+
return Object.assign(Object.assign({}, item), { selected: true });
|
|
106
|
+
});
|
|
107
|
+
this.change.emit(selectedItems);
|
|
108
|
+
};
|
|
109
|
+
this.isListItem = (item) => {
|
|
110
|
+
return !('separator' in item);
|
|
111
|
+
};
|
|
42
112
|
}
|
|
43
113
|
connectedCallback() {
|
|
44
114
|
this.setup();
|
|
@@ -61,9 +131,6 @@ export class List {
|
|
|
61
131
|
maxLinesSecondaryText = 1;
|
|
62
132
|
}
|
|
63
133
|
const html = this.listRenderer.render(this.items, this.config);
|
|
64
|
-
if (this.type === 'menu') {
|
|
65
|
-
return h("div", { class: "mdc-menu mdc-menu-surface" }, html);
|
|
66
|
-
}
|
|
67
134
|
return (h(Host, { style: {
|
|
68
135
|
'--maxLinesSecondaryText': `${maxLinesSecondaryText}`,
|
|
69
136
|
} }, html));
|
|
@@ -84,121 +151,6 @@ export class List {
|
|
|
84
151
|
.filter((item) => item.selected)
|
|
85
152
|
.map((item) => listItems.indexOf(item));
|
|
86
153
|
}
|
|
87
|
-
setup() {
|
|
88
|
-
if (this.type === 'menu') {
|
|
89
|
-
this.setupMenu();
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.setupList();
|
|
93
|
-
}
|
|
94
|
-
this.setupListeners();
|
|
95
|
-
}
|
|
96
|
-
setupList() {
|
|
97
|
-
const element = this.element.shadowRoot.querySelector('.mdc-deprecated-list');
|
|
98
|
-
if (!element) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this.mdcList = new MDCList(element);
|
|
102
|
-
this.mdcList.listElements.forEach((item) => new MDCRipple(item));
|
|
103
|
-
}
|
|
104
|
-
setupMenu() {
|
|
105
|
-
const element = this.element.shadowRoot.querySelector('.mdc-menu');
|
|
106
|
-
if (!element) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
this.mdcMenu = new MDCMenu(element);
|
|
110
|
-
this.mdcMenu.hasTypeahead = true;
|
|
111
|
-
this.mdcMenu.wrapFocus = true;
|
|
112
|
-
this.mdcMenu.items.forEach((item) => new MDCRipple(item));
|
|
113
|
-
}
|
|
114
|
-
setupListeners() {
|
|
115
|
-
if (this.type === 'menu') {
|
|
116
|
-
this.setupMenuListeners();
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
this.setupListListeners();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
setupListListeners() {
|
|
123
|
-
if (!this.mdcList) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
this.mdcList.unlisten(ACTION_EVENT, this.handleAction);
|
|
127
|
-
this.selectable = ['selectable', 'radio', 'checkbox', 'menu'].includes(this.type);
|
|
128
|
-
this.multiple = this.type === 'checkbox';
|
|
129
|
-
if (!this.selectable) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
this.mdcList.listen(ACTION_EVENT, this.handleAction);
|
|
133
|
-
this.mdcList.singleSelection = !this.multiple;
|
|
134
|
-
}
|
|
135
|
-
setupMenuListeners() {
|
|
136
|
-
if (!this.mdcMenu) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
this.mdcMenu.unlisten(SELECTED_EVENT, this.handleMenuSelect);
|
|
140
|
-
this.selectable = true;
|
|
141
|
-
this.mdcMenu.listen(SELECTED_EVENT, this.handleMenuSelect);
|
|
142
|
-
}
|
|
143
|
-
teardown() {
|
|
144
|
-
var _a, _b, _c, _d;
|
|
145
|
-
(_a = this.mdcList) === null || _a === void 0 ? void 0 : _a.unlisten(ACTION_EVENT, this.handleAction);
|
|
146
|
-
(_b = this.mdcList) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
147
|
-
(_c = this.mdcMenu) === null || _c === void 0 ? void 0 : _c.unlisten(SELECTED_EVENT, this.handleMenuSelect);
|
|
148
|
-
(_d = this.mdcMenu) === null || _d === void 0 ? void 0 : _d.destroy();
|
|
149
|
-
}
|
|
150
|
-
handleAction(event) {
|
|
151
|
-
if (!this.multiple) {
|
|
152
|
-
this.handleSingleSelect(event.detail.index);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
this.handleMultiSelect(event.detail.index);
|
|
156
|
-
}
|
|
157
|
-
handleMenuSelect(event) {
|
|
158
|
-
this.handleSingleSelect(event.detail.index);
|
|
159
|
-
}
|
|
160
|
-
handleSingleSelect(index) {
|
|
161
|
-
const listItems = this.items.filter(this.isListItem);
|
|
162
|
-
if (listItems[index].disabled) {
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const selectedItem = listItems.find((item) => {
|
|
166
|
-
return !!item.selected;
|
|
167
|
-
});
|
|
168
|
-
if (selectedItem) {
|
|
169
|
-
this.change.emit(Object.assign(Object.assign({}, selectedItem), { selected: false }));
|
|
170
|
-
}
|
|
171
|
-
if (listItems[index] !== selectedItem) {
|
|
172
|
-
if (this.type === 'menu') {
|
|
173
|
-
this.change.emit(Object.assign(Object.assign({}, listItems[index]), { selected: false }));
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
this.change.emit(Object.assign(Object.assign({}, listItems[index]), { selected: true }));
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
handleMultiSelect(index) {
|
|
180
|
-
const listItems = this.items.filter(this.isListItem);
|
|
181
|
-
if (listItems[index].disabled) {
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
const selectedItems = listItems
|
|
185
|
-
.filter((item, listIndex) => {
|
|
186
|
-
if (listIndex === index) {
|
|
187
|
-
// This is the item that was selected or deselected,
|
|
188
|
-
// so we negate its previous selection status.
|
|
189
|
-
return !item.selected;
|
|
190
|
-
}
|
|
191
|
-
// This is an item that didn't change, so we keep its selection status.
|
|
192
|
-
return item.selected;
|
|
193
|
-
})
|
|
194
|
-
.map((item) => {
|
|
195
|
-
return Object.assign(Object.assign({}, item), { selected: true });
|
|
196
|
-
});
|
|
197
|
-
this.change.emit(selectedItems);
|
|
198
|
-
}
|
|
199
|
-
isListItem(item) {
|
|
200
|
-
return !('separator' in item);
|
|
201
|
-
}
|
|
202
154
|
static get is() { return "limel-list"; }
|
|
203
155
|
static get encapsulation() { return "shadow"; }
|
|
204
156
|
static get originalStyleUrls() { return {
|
|
@@ -280,7 +232,7 @@ export class List {
|
|
|
280
232
|
"mutable": false,
|
|
281
233
|
"complexType": {
|
|
282
234
|
"original": "ListType",
|
|
283
|
-
"resolved": "\"checkbox\" | \"
|
|
235
|
+
"resolved": "\"checkbox\" | \"radio\" | \"selectable\"",
|
|
284
236
|
"references": {
|
|
285
237
|
"ListType": {
|
|
286
238
|
"location": "import",
|
|
@@ -292,7 +244,7 @@ export class List {
|
|
|
292
244
|
"optional": false,
|
|
293
245
|
"docs": {
|
|
294
246
|
"tags": [],
|
|
295
|
-
"text": "The type of the list, omit to get a regular list. Available types are:\n`selectable`: regular list with single selection.\n`radio`: radio button list with single selection.\n`checkbox`: checkbox list with multiple selection
|
|
247
|
+
"text": "The type of the list, omit to get a regular list. Available types are:\n`selectable`: regular list with single selection.\n`radio`: radio button list with single selection.\n`checkbox`: checkbox list with multiple selection."
|
|
296
248
|
},
|
|
297
249
|
"attribute": "type",
|
|
298
250
|
"reflect": false
|