@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.
Files changed (203) hide show
  1. package/dist/cjs/{checkbox.template-c0b4c7c7.js → checkbox.template-d4423721.js} +1 -1
  2. package/dist/cjs/component-f7ef9087.js +2365 -0
  3. package/dist/cjs/{index-153dc912.js → index-e63a89d7.js} +73 -64
  4. package/dist/cjs/lime-elements.cjs.js +3 -3
  5. package/dist/cjs/limel-badge.cjs.entry.js +2 -2
  6. package/dist/cjs/limel-banner.cjs.entry.js +2 -2
  7. package/dist/cjs/limel-button-group.cjs.entry.js +2 -2
  8. package/dist/cjs/limel-button.cjs.entry.js +2 -2
  9. package/dist/cjs/limel-checkbox.cjs.entry.js +3 -3
  10. package/dist/cjs/limel-chip-set.cjs.entry.js +2 -2
  11. package/dist/cjs/limel-circular-progress.cjs.entry.js +2 -2
  12. package/dist/cjs/limel-code-editor.cjs.entry.js +2 -2
  13. package/dist/cjs/limel-collapsible-section.cjs.entry.js +2 -2
  14. package/dist/cjs/limel-config.cjs.entry.js +2 -2
  15. package/dist/cjs/limel-date-picker.cjs.entry.js +2 -2
  16. package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
  17. package/dist/cjs/limel-file.cjs.entry.js +2 -2
  18. package/dist/cjs/limel-flatpickr-adapter_2.cjs.entry.js +3 -3
  19. package/dist/cjs/limel-flex-container.cjs.entry.js +2 -2
  20. package/dist/cjs/limel-form.cjs.entry.js +2 -2
  21. package/dist/cjs/limel-grid.cjs.entry.js +2 -2
  22. package/dist/cjs/limel-header.cjs.entry.js +2 -2
  23. package/dist/cjs/limel-icon-button.cjs.entry.js +2 -2
  24. package/dist/cjs/limel-icon.cjs.entry.js +2 -2
  25. package/dist/cjs/limel-linear-progress.cjs.entry.js +2 -2
  26. package/dist/cjs/limel-list_2.cjs.entry.js +497 -0
  27. package/dist/cjs/limel-menu-list.cjs.entry.js +885 -0
  28. package/dist/cjs/limel-menu.cjs.entry.js +6 -6
  29. package/dist/cjs/limel-picker.cjs.entry.js +2 -2
  30. package/dist/cjs/limel-popover-surface.cjs.entry.js +2 -2
  31. package/dist/cjs/limel-popover.cjs.entry.js +2 -2
  32. package/dist/cjs/limel-portal.cjs.entry.js +1935 -0
  33. package/dist/cjs/limel-progress-flow-item.cjs.entry.js +3 -3
  34. package/dist/cjs/limel-progress-flow.cjs.entry.js +2 -2
  35. package/dist/cjs/limel-select.cjs.entry.js +2 -2
  36. package/dist/cjs/limel-slider.cjs.entry.js +2 -2
  37. package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
  38. package/dist/cjs/limel-spinner.cjs.entry.js +2 -2
  39. package/dist/cjs/limel-switch.cjs.entry.js +2 -2
  40. package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
  41. package/dist/cjs/limel-tab-panel.cjs.entry.js +2 -2
  42. package/dist/cjs/limel-table.cjs.entry.js +2 -2
  43. package/dist/cjs/limel-tooltip-content.cjs.entry.js +7 -4
  44. package/dist/cjs/limel-tooltip.cjs.entry.js +3 -3
  45. package/dist/cjs/loader.cjs.js +3 -3
  46. package/dist/collection/collection-manifest.json +3 -2
  47. package/dist/collection/components/chip-set/chip-set.js +2 -2
  48. package/dist/collection/components/list/list-renderer.js +161 -163
  49. package/dist/collection/components/list/list.css +0 -10
  50. package/dist/collection/components/list/list.js +77 -125
  51. package/dist/collection/components/menu/menu.js +13 -13
  52. package/dist/collection/components/menu-list/menu-list-renderer-config.js +1 -0
  53. package/dist/collection/components/menu-list/menu-list-renderer.js +158 -0
  54. package/dist/collection/components/menu-list/menu-list.css +3397 -0
  55. package/dist/collection/components/menu-list/menu-list.js +288 -0
  56. package/dist/collection/components/menu-list/menu-list.types.js +1 -0
  57. package/dist/collection/components/menu-surface/menu-surface.js +84 -87
  58. package/dist/collection/components/picker/picker.js +2 -2
  59. package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +1 -1
  60. package/dist/collection/components/tooltip/tooltip-content.css +25 -13
  61. package/dist/collection/components/tooltip/tooltip-content.js +4 -3
  62. package/dist/collection/components/tooltip/tooltip.css +0 -6
  63. package/dist/collection/components/tooltip/tooltip.js +31 -5
  64. package/dist/esm/{checkbox.template-434214d5.js → checkbox.template-dbdd27c8.js} +1 -1
  65. package/dist/esm/component-2eb4e07b.js +2357 -0
  66. package/dist/esm/{index-dc421a6e.js → index-2316f345.js} +73 -64
  67. package/dist/esm/lime-elements.js +3 -3
  68. package/dist/esm/limel-badge.entry.js +2 -2
  69. package/dist/esm/limel-banner.entry.js +2 -2
  70. package/dist/esm/limel-button-group.entry.js +2 -2
  71. package/dist/esm/limel-button.entry.js +2 -2
  72. package/dist/esm/limel-checkbox.entry.js +3 -3
  73. package/dist/esm/limel-chip-set.entry.js +2 -2
  74. package/dist/esm/limel-circular-progress.entry.js +2 -2
  75. package/dist/esm/limel-code-editor.entry.js +2 -2
  76. package/dist/esm/limel-collapsible-section.entry.js +2 -2
  77. package/dist/esm/limel-config.entry.js +2 -2
  78. package/dist/esm/limel-date-picker.entry.js +2 -2
  79. package/dist/esm/limel-dialog.entry.js +2 -2
  80. package/dist/esm/limel-file.entry.js +2 -2
  81. package/dist/esm/limel-flatpickr-adapter_2.entry.js +3 -3
  82. package/dist/esm/limel-flex-container.entry.js +2 -2
  83. package/dist/esm/limel-form.entry.js +2 -2
  84. package/dist/esm/limel-grid.entry.js +2 -2
  85. package/dist/esm/limel-header.entry.js +2 -2
  86. package/dist/esm/limel-icon-button.entry.js +2 -2
  87. package/dist/esm/limel-icon.entry.js +2 -2
  88. package/dist/esm/limel-linear-progress.entry.js +2 -2
  89. package/dist/esm/limel-list_2.entry.js +492 -0
  90. package/dist/esm/limel-menu-list.entry.js +881 -0
  91. package/dist/esm/limel-menu.entry.js +6 -6
  92. package/dist/esm/limel-picker.entry.js +2 -2
  93. package/dist/esm/limel-popover-surface.entry.js +2 -2
  94. package/dist/esm/limel-popover.entry.js +2 -2
  95. package/dist/esm/limel-portal.entry.js +1931 -0
  96. package/dist/esm/limel-progress-flow-item.entry.js +3 -3
  97. package/dist/esm/limel-progress-flow.entry.js +2 -2
  98. package/dist/esm/limel-select.entry.js +2 -2
  99. package/dist/esm/limel-slider.entry.js +2 -2
  100. package/dist/esm/limel-snackbar.entry.js +2 -2
  101. package/dist/esm/limel-spinner.entry.js +2 -2
  102. package/dist/esm/limel-switch.entry.js +2 -2
  103. package/dist/esm/limel-tab-bar.entry.js +2 -2
  104. package/dist/esm/limel-tab-panel.entry.js +2 -2
  105. package/dist/esm/limel-table.entry.js +2 -2
  106. package/dist/esm/limel-tooltip-content.entry.js +7 -4
  107. package/dist/esm/limel-tooltip.entry.js +3 -3
  108. package/dist/esm/loader.js +3 -3
  109. package/dist/lime-elements/lime-elements.esm.js +1 -1
  110. package/dist/lime-elements/{p-af7c5b11.entry.js → p-03c28bee.entry.js} +2 -2
  111. package/dist/lime-elements/p-041ae00c.entry.js +1 -0
  112. package/dist/lime-elements/p-143705b1.entry.js +1 -0
  113. package/dist/lime-elements/{p-467c87f6.entry.js → p-1d7c7d5e.entry.js} +1 -1
  114. package/dist/lime-elements/p-1fb5340d.entry.js +1 -0
  115. package/dist/lime-elements/p-227d2c5a.entry.js +1 -0
  116. package/dist/lime-elements/p-31299106.js +126 -0
  117. package/dist/lime-elements/p-34c7872e.entry.js +1 -0
  118. package/dist/lime-elements/p-3525d50c.entry.js +37 -0
  119. package/dist/lime-elements/p-4932c029.entry.js +1 -0
  120. package/dist/lime-elements/p-4b5af81b.entry.js +1 -0
  121. package/dist/lime-elements/p-510bb5a4.entry.js +1 -0
  122. package/dist/lime-elements/p-590ef65e.entry.js +1 -0
  123. package/dist/lime-elements/p-64549ba6.entry.js +37 -0
  124. package/dist/lime-elements/p-692f31f1.entry.js +16 -0
  125. package/dist/lime-elements/p-7476efe0.entry.js +1 -0
  126. package/dist/lime-elements/{p-c636bfcf.entry.js → p-85094bfc.entry.js} +2 -2
  127. package/dist/lime-elements/p-89b5a983.js +1 -0
  128. package/dist/lime-elements/p-8d8bd2ab.entry.js +73 -0
  129. package/dist/lime-elements/p-90f3e17c.entry.js +37 -0
  130. package/dist/lime-elements/{p-fabb836f.js → p-92146da6.js} +1 -1
  131. package/dist/lime-elements/p-9d362dd5.entry.js +1 -0
  132. package/dist/lime-elements/{p-90b2c0a2.entry.js → p-a1153d2a.entry.js} +1 -1
  133. package/dist/lime-elements/{p-5577f962.entry.js → p-a3dadae7.entry.js} +2 -2
  134. package/dist/lime-elements/p-b386bfeb.entry.js +1 -0
  135. package/dist/lime-elements/p-b5d6abc3.entry.js +126 -0
  136. package/dist/lime-elements/p-bbc1bb01.entry.js +1 -0
  137. package/dist/lime-elements/p-be56ffab.entry.js +1 -0
  138. package/dist/lime-elements/p-c35874db.entry.js +1 -0
  139. package/dist/lime-elements/p-c8c8a946.entry.js +59 -0
  140. package/dist/lime-elements/p-d070f0e7.entry.js +1 -0
  141. package/dist/lime-elements/p-d2c74396.entry.js +1 -0
  142. package/dist/lime-elements/{p-67c48f98.entry.js → p-d97f8f04.entry.js} +1 -1
  143. package/dist/lime-elements/p-dcad1b31.entry.js +82 -0
  144. package/dist/lime-elements/p-de017026.entry.js +1 -0
  145. package/dist/lime-elements/p-e332bcf4.entry.js +1 -0
  146. package/dist/lime-elements/p-e5738ec6.entry.js +1 -0
  147. package/dist/lime-elements/p-e881e98d.entry.js +1 -0
  148. package/dist/lime-elements/{p-2476f7bb.entry.js → p-f079f1fd.entry.js} +2 -2
  149. package/dist/lime-elements/p-f2df64ec.entry.js +1 -0
  150. package/dist/lime-elements/p-f4495f59.entry.js +1 -0
  151. package/dist/lime-elements/p-fc30b8e3.entry.js +1 -0
  152. package/dist/lime-elements/{p-61ecc7f1.entry.js → p-ff0217b3.entry.js} +2 -2
  153. package/dist/loader/index.d.ts +0 -1
  154. package/dist/types/components/list/list-item.types.d.ts +2 -1
  155. package/dist/types/components/list/list-renderer-config.d.ts +0 -1
  156. package/dist/types/components/list/list-renderer.d.ts +0 -1
  157. package/dist/types/components/list/list.d.ts +0 -7
  158. package/dist/types/components/list/list.types.d.ts +1 -1
  159. package/dist/types/components/menu/menu.d.ts +2 -3
  160. package/dist/types/components/menu/menu.types.d.ts +35 -3
  161. package/dist/types/components/menu-list/menu-list-renderer-config.d.ts +8 -0
  162. package/dist/types/components/menu-list/menu-list-renderer.d.ts +49 -0
  163. package/dist/types/components/menu-list/menu-list.d.ts +59 -0
  164. package/dist/types/components/menu-list/menu-list.types.d.ts +6 -0
  165. package/dist/types/components/menu-surface/menu-surface.d.ts +0 -1
  166. package/dist/types/components/tooltip/tooltip-content.d.ts +1 -1
  167. package/dist/types/components/tooltip/tooltip.d.ts +31 -5
  168. package/dist/types/components.d.ts +66 -5
  169. package/dist/types/interface.d.ts +1 -0
  170. package/package.json +3 -2
  171. package/dist/cjs/limel-list_3.cjs.entry.js +0 -5418
  172. package/dist/esm/limel-list_3.entry.js +0 -5412
  173. package/dist/lime-elements/p-034f336b.entry.js +0 -126
  174. package/dist/lime-elements/p-136230d6.entry.js +0 -1
  175. package/dist/lime-elements/p-16c336e8.entry.js +0 -59
  176. package/dist/lime-elements/p-191f05bc.entry.js +0 -1
  177. package/dist/lime-elements/p-1a3a9bfd.entry.js +0 -1
  178. package/dist/lime-elements/p-231f62ba.entry.js +0 -1
  179. package/dist/lime-elements/p-24c128ec.entry.js +0 -37
  180. package/dist/lime-elements/p-30c4b32a.entry.js +0 -1
  181. package/dist/lime-elements/p-3a21fa33.entry.js +0 -37
  182. package/dist/lime-elements/p-3df01502.entry.js +0 -1
  183. package/dist/lime-elements/p-63e4f918.entry.js +0 -1
  184. package/dist/lime-elements/p-6d9f679d.entry.js +0 -1
  185. package/dist/lime-elements/p-6e3b6e69.entry.js +0 -1
  186. package/dist/lime-elements/p-79541c2b.entry.js +0 -73
  187. package/dist/lime-elements/p-7be3a593.entry.js +0 -1
  188. package/dist/lime-elements/p-7c6f6b80.entry.js +0 -1
  189. package/dist/lime-elements/p-7dd9c41d.entry.js +0 -16
  190. package/dist/lime-elements/p-9b79dfe7.js +0 -1
  191. package/dist/lime-elements/p-a6a7dd00.entry.js +0 -1
  192. package/dist/lime-elements/p-b0b18dfc.entry.js +0 -1
  193. package/dist/lime-elements/p-b88e7350.entry.js +0 -1
  194. package/dist/lime-elements/p-bd805195.entry.js +0 -1
  195. package/dist/lime-elements/p-bde1749a.entry.js +0 -1
  196. package/dist/lime-elements/p-c45238b6.entry.js +0 -1
  197. package/dist/lime-elements/p-c53695a3.entry.js +0 -37
  198. package/dist/lime-elements/p-dc5b3f45.entry.js +0 -1
  199. package/dist/lime-elements/p-e078c459.entry.js +0 -177
  200. package/dist/lime-elements/p-e9b4bdac.entry.js +0 -1
  201. package/dist/lime-elements/p-eb81fc35.entry.js +0 -1
  202. package/dist/lime-elements/p-f94cbe50.entry.js +0 -1
  203. 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 listItems = this.items.filter(this.isListItem);
101
- const selectedIndex = Math.max(listItems.findIndex((item) => item.selected), 0);
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
- isListItem(item) {
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
- "text": "Use with default trigger has been deprecated.\nPlease supply your own trigger element.",
201
- "name": "deprecated"
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": "./menu.types"
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": "./menu.types"
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
- "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.",
345
- "name": "deprecated"
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": "ListItem | ListItem[]",
381
- "resolved": "ListItem<any> | ListItem<any>[]",
380
+ "original": "MenuItem | MenuItem[]",
381
+ "resolved": "MenuItem<any> | MenuItem<any>[]",
382
382
  "references": {
383
- "ListItem": {
383
+ "MenuItem": {
384
384
  "location": "import",
385
385
  "path": "@limetech/lime-elements"
386
386
  }
@@ -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
+ }