@limetech/lime-elements 33.14.0-next.8 → 34.0.0-next.3

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 (210) 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 +16 -6
  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 +5 -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 +484 -0
  27. package/dist/cjs/limel-menu-list.cjs.entry.js +863 -0
  28. package/dist/cjs/limel-menu.cjs.entry.js +6 -32
  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 +3 -3
  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/button-group/button-group.js +15 -5
  48. package/dist/collection/components/chip-set/chip-set.js +2 -2
  49. package/dist/collection/components/config/config.js +3 -0
  50. package/dist/collection/components/header/header.js +0 -1
  51. package/dist/collection/components/list/list-renderer.js +152 -147
  52. package/dist/collection/components/list/list.css +16 -12
  53. package/dist/collection/components/list/list.js +77 -125
  54. package/dist/collection/components/menu/menu.js +15 -61
  55. package/dist/collection/components/menu-list/menu-list-renderer-config.js +1 -0
  56. package/dist/collection/components/menu-list/menu-list-renderer.js +150 -0
  57. package/dist/collection/components/menu-list/menu-list.css +3367 -0
  58. package/dist/collection/components/menu-list/menu-list.js +274 -0
  59. package/dist/collection/components/menu-list/menu-list.types.js +1 -0
  60. package/dist/collection/components/menu-surface/menu-surface.js +84 -87
  61. package/dist/collection/components/picker/picker.js +2 -2
  62. package/dist/collection/components/popover/popover.js +0 -1
  63. package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +1 -1
  64. package/dist/collection/components/table/table.css +9 -2
  65. package/dist/collection/components/tooltip/tooltip-content.css +25 -13
  66. package/dist/collection/components/tooltip/tooltip-content.js +4 -3
  67. package/dist/collection/components/tooltip/tooltip.css +0 -6
  68. package/dist/collection/components/tooltip/tooltip.js +32 -5
  69. package/dist/esm/{checkbox.template-434214d5.js → checkbox.template-dbdd27c8.js} +1 -1
  70. package/dist/esm/component-2eb4e07b.js +2357 -0
  71. package/dist/esm/{index-dc421a6e.js → index-2316f345.js} +73 -64
  72. package/dist/esm/lime-elements.js +3 -3
  73. package/dist/esm/limel-badge.entry.js +2 -2
  74. package/dist/esm/limel-banner.entry.js +2 -2
  75. package/dist/esm/limel-button-group.entry.js +16 -6
  76. package/dist/esm/limel-button.entry.js +2 -2
  77. package/dist/esm/limel-checkbox.entry.js +3 -3
  78. package/dist/esm/limel-chip-set.entry.js +2 -2
  79. package/dist/esm/limel-circular-progress.entry.js +2 -2
  80. package/dist/esm/limel-code-editor.entry.js +2 -2
  81. package/dist/esm/limel-collapsible-section.entry.js +2 -2
  82. package/dist/esm/limel-config.entry.js +5 -2
  83. package/dist/esm/limel-date-picker.entry.js +2 -2
  84. package/dist/esm/limel-dialog.entry.js +2 -2
  85. package/dist/esm/limel-file.entry.js +2 -2
  86. package/dist/esm/limel-flatpickr-adapter_2.entry.js +3 -3
  87. package/dist/esm/limel-flex-container.entry.js +2 -2
  88. package/dist/esm/limel-form.entry.js +2 -2
  89. package/dist/esm/limel-grid.entry.js +2 -2
  90. package/dist/esm/limel-header.entry.js +2 -2
  91. package/dist/esm/limel-icon-button.entry.js +2 -2
  92. package/dist/esm/limel-icon.entry.js +2 -2
  93. package/dist/esm/limel-linear-progress.entry.js +2 -2
  94. package/dist/esm/limel-list_2.entry.js +479 -0
  95. package/dist/esm/limel-menu-list.entry.js +859 -0
  96. package/dist/esm/limel-menu.entry.js +6 -32
  97. package/dist/esm/limel-picker.entry.js +2 -2
  98. package/dist/esm/limel-popover-surface.entry.js +2 -2
  99. package/dist/esm/limel-popover.entry.js +2 -2
  100. package/dist/esm/limel-portal.entry.js +1931 -0
  101. package/dist/esm/limel-progress-flow-item.entry.js +3 -3
  102. package/dist/esm/limel-progress-flow.entry.js +2 -2
  103. package/dist/esm/limel-select.entry.js +2 -2
  104. package/dist/esm/limel-slider.entry.js +2 -2
  105. package/dist/esm/limel-snackbar.entry.js +2 -2
  106. package/dist/esm/limel-spinner.entry.js +2 -2
  107. package/dist/esm/limel-switch.entry.js +2 -2
  108. package/dist/esm/limel-tab-bar.entry.js +2 -2
  109. package/dist/esm/limel-tab-panel.entry.js +2 -2
  110. package/dist/esm/limel-table.entry.js +3 -3
  111. package/dist/esm/limel-tooltip-content.entry.js +7 -4
  112. package/dist/esm/limel-tooltip.entry.js +3 -3
  113. package/dist/esm/loader.js +3 -3
  114. package/dist/lime-elements/lime-elements.esm.js +1 -1
  115. package/dist/lime-elements/{p-af7c5b11.entry.js → p-03c28bee.entry.js} +2 -2
  116. package/dist/lime-elements/p-041ae00c.entry.js +1 -0
  117. package/dist/lime-elements/p-143705b1.entry.js +1 -0
  118. package/dist/lime-elements/{p-467c87f6.entry.js → p-1d7c7d5e.entry.js} +1 -1
  119. package/dist/lime-elements/p-1fb5340d.entry.js +1 -0
  120. package/dist/lime-elements/p-227d2c5a.entry.js +1 -0
  121. package/dist/lime-elements/p-31299106.js +126 -0
  122. package/dist/lime-elements/p-31fecf5d.entry.js +1 -0
  123. package/dist/lime-elements/p-34c7872e.entry.js +1 -0
  124. package/dist/lime-elements/p-3525d50c.entry.js +37 -0
  125. package/dist/lime-elements/p-4932c029.entry.js +1 -0
  126. package/dist/lime-elements/p-4b5af81b.entry.js +1 -0
  127. package/dist/lime-elements/p-510bb5a4.entry.js +1 -0
  128. package/dist/lime-elements/{p-67c48f98.entry.js → p-587bd6ca.entry.js} +1 -1
  129. package/dist/lime-elements/p-64549ba6.entry.js +37 -0
  130. package/dist/lime-elements/p-692f31f1.entry.js +16 -0
  131. package/dist/lime-elements/p-7476efe0.entry.js +1 -0
  132. package/dist/lime-elements/p-78afe9df.entry.js +1 -0
  133. package/dist/lime-elements/{p-c636bfcf.entry.js → p-85094bfc.entry.js} +2 -2
  134. package/dist/lime-elements/p-89b5a983.js +1 -0
  135. package/dist/lime-elements/p-8d1ab246.entry.js +1 -0
  136. package/dist/lime-elements/p-8d8bd2ab.entry.js +73 -0
  137. package/dist/lime-elements/p-90f3e17c.entry.js +37 -0
  138. package/dist/lime-elements/{p-fabb836f.js → p-92146da6.js} +1 -1
  139. package/dist/lime-elements/p-9d362dd5.entry.js +1 -0
  140. package/dist/lime-elements/{p-90b2c0a2.entry.js → p-a1153d2a.entry.js} +1 -1
  141. package/dist/lime-elements/{p-5577f962.entry.js → p-a3dadae7.entry.js} +2 -2
  142. package/dist/lime-elements/p-b386bfeb.entry.js +1 -0
  143. package/dist/lime-elements/p-b5d6abc3.entry.js +126 -0
  144. package/dist/lime-elements/p-bbc1bb01.entry.js +1 -0
  145. package/dist/lime-elements/p-be56ffab.entry.js +1 -0
  146. package/dist/lime-elements/p-c35874db.entry.js +1 -0
  147. package/dist/lime-elements/p-c8c8a946.entry.js +59 -0
  148. package/dist/lime-elements/p-d070f0e7.entry.js +1 -0
  149. package/dist/lime-elements/p-d2c74396.entry.js +1 -0
  150. package/dist/lime-elements/p-df55ee67.entry.js +82 -0
  151. package/dist/lime-elements/p-e5738ec6.entry.js +1 -0
  152. package/dist/lime-elements/p-e881e98d.entry.js +1 -0
  153. package/dist/lime-elements/{p-2476f7bb.entry.js → p-f079f1fd.entry.js} +2 -2
  154. package/dist/lime-elements/p-f2df64ec.entry.js +1 -0
  155. package/dist/lime-elements/p-f4495f59.entry.js +1 -0
  156. package/dist/lime-elements/p-fc30b8e3.entry.js +1 -0
  157. package/dist/lime-elements/{p-61ecc7f1.entry.js → p-ff0217b3.entry.js} +2 -2
  158. package/dist/loader/index.d.ts +0 -1
  159. package/dist/types/components/header/header.d.ts +0 -1
  160. package/dist/types/components/list/list-item.types.d.ts +2 -1
  161. package/dist/types/components/list/list-renderer-config.d.ts +0 -1
  162. package/dist/types/components/list/list-renderer.d.ts +3 -3
  163. package/dist/types/components/list/list.d.ts +0 -7
  164. package/dist/types/components/list/list.types.d.ts +1 -1
  165. package/dist/types/components/menu/menu.d.ts +4 -13
  166. package/dist/types/components/menu/menu.types.d.ts +34 -0
  167. package/dist/types/components/menu-list/menu-list-renderer-config.d.ts +7 -0
  168. package/dist/types/components/menu-list/menu-list-renderer.d.ts +48 -0
  169. package/dist/types/components/menu-list/menu-list.d.ts +59 -0
  170. package/dist/types/components/menu-list/menu-list.types.d.ts +6 -0
  171. package/dist/types/components/menu-surface/menu-surface.d.ts +0 -1
  172. package/dist/types/components/popover/popover.d.ts +0 -1
  173. package/dist/types/components/tooltip/tooltip-content.d.ts +1 -1
  174. package/dist/types/components/tooltip/tooltip.d.ts +32 -5
  175. package/dist/types/components.d.ts +68 -17
  176. package/dist/types/interface.d.ts +1 -0
  177. package/package.json +3 -2
  178. package/dist/cjs/limel-list_3.cjs.entry.js +0 -5398
  179. package/dist/esm/limel-list_3.entry.js +0 -5392
  180. package/dist/lime-elements/p-034f336b.entry.js +0 -126
  181. package/dist/lime-elements/p-136230d6.entry.js +0 -1
  182. package/dist/lime-elements/p-16c336e8.entry.js +0 -59
  183. package/dist/lime-elements/p-191f05bc.entry.js +0 -1
  184. package/dist/lime-elements/p-1a3a9bfd.entry.js +0 -1
  185. package/dist/lime-elements/p-231f62ba.entry.js +0 -1
  186. package/dist/lime-elements/p-24c128ec.entry.js +0 -37
  187. package/dist/lime-elements/p-30c4b32a.entry.js +0 -1
  188. package/dist/lime-elements/p-3a21fa33.entry.js +0 -37
  189. package/dist/lime-elements/p-3df01502.entry.js +0 -1
  190. package/dist/lime-elements/p-63e4f918.entry.js +0 -1
  191. package/dist/lime-elements/p-6d9f679d.entry.js +0 -1
  192. package/dist/lime-elements/p-6e3b6e69.entry.js +0 -1
  193. package/dist/lime-elements/p-6fcc1378.entry.js +0 -177
  194. package/dist/lime-elements/p-79541c2b.entry.js +0 -73
  195. package/dist/lime-elements/p-7be3a593.entry.js +0 -1
  196. package/dist/lime-elements/p-7c6f6b80.entry.js +0 -1
  197. package/dist/lime-elements/p-7dd9c41d.entry.js +0 -16
  198. package/dist/lime-elements/p-9b79dfe7.js +0 -1
  199. package/dist/lime-elements/p-a6a7dd00.entry.js +0 -1
  200. package/dist/lime-elements/p-aeeca058.entry.js +0 -1
  201. package/dist/lime-elements/p-b0b18dfc.entry.js +0 -1
  202. package/dist/lime-elements/p-b88e7350.entry.js +0 -1
  203. package/dist/lime-elements/p-bde1749a.entry.js +0 -1
  204. package/dist/lime-elements/p-c45238b6.entry.js +0 -1
  205. package/dist/lime-elements/p-c53695a3.entry.js +0 -37
  206. package/dist/lime-elements/p-dc5b3f45.entry.js +0 -1
  207. package/dist/lime-elements/p-e9b4bdac.entry.js +0 -1
  208. package/dist/lime-elements/p-eb81fc35.entry.js +0 -1
  209. package/dist/lime-elements/p-f94cbe50.entry.js +0 -1
  210. package/dist/lime-elements/p-fa880bd6.entry.js +0 -1
@@ -0,0 +1,274 @@
1
+ import { MDCMenu } from '@material/menu';
2
+ import { MDCRipple } from '@material/ripple';
3
+ import { strings as listStrings } from '@material/list/constants';
4
+ import { strings as menuStrings } from '@material/menu/constants';
5
+ import { Component, Element, Event, h, Prop, Watch, } from '@stencil/core';
6
+ import { MenuListRenderer } from './menu-list-renderer';
7
+ const { ACTION_EVENT } = listStrings;
8
+ const { SELECTED_EVENT } = menuStrings;
9
+ /**
10
+ * @private
11
+ */
12
+ export class MenuList {
13
+ constructor() {
14
+ /**
15
+ * Size of the icons in the list
16
+ */
17
+ this.iconSize = 'small';
18
+ /**
19
+ * By default, lists will display 3 lines of text, and then truncate the rest.
20
+ * Consumers can increase or decrease this number by specifying
21
+ * `maxLinesSecondaryText`. If consumer enters zero or negative
22
+ * numbers we default to 1; and if they type decimals we round up.
23
+ */
24
+ // eslint-disable-next-line no-magic-numbers
25
+ this.maxLinesSecondaryText = 3;
26
+ this.MenuListRenderer = new MenuListRenderer();
27
+ this.setup = () => {
28
+ this.setupMenu();
29
+ this.setupListeners();
30
+ };
31
+ this.setupMenu = () => {
32
+ const element = this.element.shadowRoot.querySelector('.mdc-menu');
33
+ if (!element) {
34
+ return;
35
+ }
36
+ this.mdcMenu = new MDCMenu(element);
37
+ this.mdcMenu.hasTypeahead = true;
38
+ this.mdcMenu.wrapFocus = true;
39
+ this.mdcMenu.items.forEach((item) => new MDCRipple(item));
40
+ };
41
+ this.setupListeners = () => {
42
+ if (!this.mdcMenu) {
43
+ return;
44
+ }
45
+ this.mdcMenu.unlisten(SELECTED_EVENT, this.handleMenuSelect);
46
+ this.mdcMenu.listen(SELECTED_EVENT, this.handleMenuSelect);
47
+ };
48
+ this.teardown = () => {
49
+ var _a, _b, _c, _d;
50
+ (_a = this.mdcList) === null || _a === void 0 ? void 0 : _a.unlisten(ACTION_EVENT, this.handleAction);
51
+ (_b = this.mdcList) === null || _b === void 0 ? void 0 : _b.destroy();
52
+ (_c = this.mdcMenu) === null || _c === void 0 ? void 0 : _c.unlisten(SELECTED_EVENT, this.handleMenuSelect);
53
+ (_d = this.mdcMenu) === null || _d === void 0 ? void 0 : _d.destroy();
54
+ };
55
+ this.handleAction = (event) => {
56
+ this.handleSingleSelect(event.detail.index);
57
+ };
58
+ this.handleMenuSelect = (event) => {
59
+ this.handleSingleSelect(event.detail.index);
60
+ };
61
+ this.handleSingleSelect = (index) => {
62
+ const MenuItems = this.items.filter(this.isMenuItem);
63
+ if (MenuItems[index].disabled) {
64
+ return;
65
+ }
66
+ const selectedItem = MenuItems.find((item) => {
67
+ return !!item.selected;
68
+ });
69
+ if (selectedItem) {
70
+ this.change.emit(Object.assign(Object.assign({}, selectedItem), { selected: false }));
71
+ }
72
+ if (MenuItems[index] !== selectedItem) {
73
+ this.change.emit(Object.assign(Object.assign({}, MenuItems[index]), { selected: false }));
74
+ }
75
+ };
76
+ this.isMenuItem = (item) => {
77
+ return !('separator' in item);
78
+ };
79
+ }
80
+ connectedCallback() {
81
+ this.setup();
82
+ }
83
+ disconnectedCallback() {
84
+ this.teardown();
85
+ }
86
+ componentDidLoad() {
87
+ this.setup();
88
+ }
89
+ render() {
90
+ this.config = {
91
+ badgeIcons: this.badgeIcons,
92
+ type: this.type,
93
+ iconSize: this.iconSize,
94
+ };
95
+ const html = this.MenuListRenderer.render(this.items, this.config);
96
+ return h("div", { class: "mdc-menu mdc-menu-surface" }, html);
97
+ }
98
+ handleType() {
99
+ this.setupListeners();
100
+ }
101
+ itemsChanged() {
102
+ if (!this.mdcList) {
103
+ return;
104
+ }
105
+ const MenuItems = this.items.filter(this.isMenuItem);
106
+ this.mdcList.selectedIndex = MenuItems.findIndex((item) => item.selected);
107
+ }
108
+ static get is() { return "limel-menu-list"; }
109
+ static get encapsulation() { return "shadow"; }
110
+ static get originalStyleUrls() { return {
111
+ "$": ["menu-list.scss"]
112
+ }; }
113
+ static get styleUrls() { return {
114
+ "$": ["menu-list.css"]
115
+ }; }
116
+ static get properties() { return {
117
+ "items": {
118
+ "type": "unknown",
119
+ "mutable": false,
120
+ "complexType": {
121
+ "original": "Array<MenuItem | ListSeparator>",
122
+ "resolved": "(ListSeparator | MenuItem<any>)[]",
123
+ "references": {
124
+ "Array": {
125
+ "location": "global"
126
+ },
127
+ "MenuItem": {
128
+ "location": "import",
129
+ "path": "@limetech/lime-elements"
130
+ },
131
+ "ListSeparator": {
132
+ "location": "import",
133
+ "path": "@limetech/lime-elements"
134
+ }
135
+ }
136
+ },
137
+ "required": false,
138
+ "optional": false,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": "List of items to display"
142
+ }
143
+ },
144
+ "badgeIcons": {
145
+ "type": "boolean",
146
+ "mutable": false,
147
+ "complexType": {
148
+ "original": "boolean",
149
+ "resolved": "boolean",
150
+ "references": {}
151
+ },
152
+ "required": false,
153
+ "optional": false,
154
+ "docs": {
155
+ "tags": [],
156
+ "text": "Set to `true` if the list should display larger icons with a background"
157
+ },
158
+ "attribute": "badge-icons",
159
+ "reflect": false
160
+ },
161
+ "iconSize": {
162
+ "type": "string",
163
+ "mutable": false,
164
+ "complexType": {
165
+ "original": "IconSize",
166
+ "resolved": "\"large\" | \"medium\" | \"small\" | \"x-small\"",
167
+ "references": {
168
+ "IconSize": {
169
+ "location": "import",
170
+ "path": "@limetech/lime-elements"
171
+ }
172
+ }
173
+ },
174
+ "required": false,
175
+ "optional": false,
176
+ "docs": {
177
+ "tags": [],
178
+ "text": "Size of the icons in the list"
179
+ },
180
+ "attribute": "icon-size",
181
+ "reflect": false,
182
+ "defaultValue": "'small'"
183
+ },
184
+ "type": {
185
+ "type": "string",
186
+ "mutable": false,
187
+ "complexType": {
188
+ "original": "MenuListType",
189
+ "resolved": "\"menu\"",
190
+ "references": {
191
+ "MenuListType": {
192
+ "location": "import",
193
+ "path": "@limetech/lime-elements"
194
+ }
195
+ }
196
+ },
197
+ "required": false,
198
+ "optional": false,
199
+ "docs": {
200
+ "tags": [],
201
+ "text": "The type of the menu, omit to get a regular vertical menu.\nAvailable types are:\n`menu`: regular vertical menu."
202
+ },
203
+ "attribute": "type",
204
+ "reflect": false
205
+ },
206
+ "maxLinesSecondaryText": {
207
+ "type": "number",
208
+ "mutable": false,
209
+ "complexType": {
210
+ "original": "number",
211
+ "resolved": "number",
212
+ "references": {}
213
+ },
214
+ "required": false,
215
+ "optional": false,
216
+ "docs": {
217
+ "tags": [],
218
+ "text": "By default, lists will display 3 lines of text, and then truncate the rest.\nConsumers can increase or decrease this number by specifying\n`maxLinesSecondaryText`. If consumer enters zero or negative\nnumbers we default to 1; and if they type decimals we round up."
219
+ },
220
+ "attribute": "max-lines-secondary-text",
221
+ "reflect": false,
222
+ "defaultValue": "3"
223
+ }
224
+ }; }
225
+ static get events() { return [{
226
+ "method": "change",
227
+ "name": "change",
228
+ "bubbles": true,
229
+ "cancelable": true,
230
+ "composed": true,
231
+ "docs": {
232
+ "tags": [],
233
+ "text": "Fired when a new value has been selected from the list. Only fired if selectable is set to true"
234
+ },
235
+ "complexType": {
236
+ "original": "MenuItem | MenuItem[]",
237
+ "resolved": "MenuItem<any> | MenuItem<any>[]",
238
+ "references": {
239
+ "MenuItem": {
240
+ "location": "import",
241
+ "path": "@limetech/lime-elements"
242
+ }
243
+ }
244
+ }
245
+ }, {
246
+ "method": "select",
247
+ "name": "select",
248
+ "bubbles": true,
249
+ "cancelable": true,
250
+ "composed": true,
251
+ "docs": {
252
+ "tags": [],
253
+ "text": "Fired when an action has been selected from the action menu of a list item"
254
+ },
255
+ "complexType": {
256
+ "original": "MenuItem | MenuItem[]",
257
+ "resolved": "MenuItem<any> | MenuItem<any>[]",
258
+ "references": {
259
+ "MenuItem": {
260
+ "location": "import",
261
+ "path": "@limetech/lime-elements"
262
+ }
263
+ }
264
+ }
265
+ }]; }
266
+ static get elementRef() { return "element"; }
267
+ static get watchers() { return [{
268
+ "propName": "type",
269
+ "methodName": "handleType"
270
+ }, {
271
+ "propName": "items",
272
+ "methodName": "itemsChanged"
273
+ }]; }
274
+ }
@@ -12,9 +12,90 @@ export class MenuSurface {
12
12
  * True if the menu surface is open, false otherwise
13
13
  */
14
14
  this.open = false;
15
- this.handleDocumentClick = this.handleDocumentClick.bind(this);
16
- this.handleKeyDown = this.handleKeyDown.bind(this);
17
- this.handleResize = this.handleResize.bind(this);
15
+ this.setup = () => {
16
+ const menuElement = this.host.shadowRoot.querySelector('.mdc-menu-surface');
17
+ if (!menuElement) {
18
+ return;
19
+ }
20
+ this.menuSurface = new MDCMenuSurface(menuElement);
21
+ this.menuSurface.setAnchorCorner(Corner.TOP_START);
22
+ document.addEventListener('mousedown', this.handleDocumentClick, {
23
+ capture: true,
24
+ });
25
+ this.host.addEventListener('keydown', this.handleKeyDown);
26
+ window.addEventListener('resize', this.handleResize, {
27
+ passive: true,
28
+ });
29
+ };
30
+ this.teardown = () => {
31
+ var _a;
32
+ (_a = this.menuSurface) === null || _a === void 0 ? void 0 : _a.destroy();
33
+ document.removeEventListener('mousedown', this.handleDocumentClick, {
34
+ capture: true,
35
+ });
36
+ this.host.removeEventListener('keydown', this.handleKeyDown);
37
+ window.removeEventListener('resize', this.handleResize);
38
+ };
39
+ this.handleDocumentClick = (event) => {
40
+ const elementPath = event.path || [];
41
+ if (!this.open) {
42
+ return;
43
+ }
44
+ if (isDescendant(event.target, this.host)) {
45
+ return;
46
+ }
47
+ if (this.allowClicksElement) {
48
+ const clickedInAllowedElement = elementPath.includes(this.allowClicksElement);
49
+ if (clickedInAllowedElement) {
50
+ return;
51
+ }
52
+ }
53
+ this.dismiss.emit();
54
+ this.preventClickEventPropagation();
55
+ };
56
+ this.handleResize = () => {
57
+ if (this.open) {
58
+ this.dismiss.emit();
59
+ }
60
+ };
61
+ this.preventClickEventPropagation = () => {
62
+ // When the menu surface is open, we want to stop the `click` event from propagating
63
+ // when clicking outside the surface itself. This is to prevent any dialog that might
64
+ // be open from closing, etc. However, when dragging a scrollbar no `click` event is emitted,
65
+ // only mousedown and mouseup. So we listen for `mousedown` and attach a one-time listener
66
+ // for `click`, so we can capture and "kill" it.
67
+ document.addEventListener('click', this.stopEvent, {
68
+ capture: true,
69
+ once: true,
70
+ });
71
+ // We also capture and "kill" the next `mouseup` event.
72
+ document.addEventListener('mouseup', this.stopEvent, {
73
+ capture: true,
74
+ once: true,
75
+ });
76
+ // If the user dragged the scrollbar, no `click` event happens. So when we get the
77
+ // `mouseup` event, remove the handler for `click` if it's still there.
78
+ // Otherwise, we would catch the next click even though the menu is no longer open.
79
+ document.addEventListener('mouseup', () => {
80
+ document.removeEventListener('click', this.stopEvent, {
81
+ capture: true,
82
+ });
83
+ }, {
84
+ once: true,
85
+ });
86
+ };
87
+ this.stopEvent = (event) => {
88
+ event.stopPropagation();
89
+ event.preventDefault();
90
+ };
91
+ this.handleKeyDown = (event) => {
92
+ const isEscape = event.key === ESCAPE || event.keyCode === ESCAPE_KEY_CODE;
93
+ const isTab = event.key === TAB || event.keyCode === TAB_KEY_CODE;
94
+ if (this.open && (isEscape || isTab)) {
95
+ event.stopPropagation();
96
+ this.dismiss.emit();
97
+ }
98
+ };
18
99
  }
19
100
  connectedCallback() {
20
101
  this.setup();
@@ -36,90 +117,6 @@ export class MenuSurface {
36
117
  return (h("div", { class: classList, tabindex: "-1" },
37
118
  h("slot", null)));
38
119
  }
39
- setup() {
40
- const menuElement = this.host.shadowRoot.querySelector('.mdc-menu-surface');
41
- if (!menuElement) {
42
- return;
43
- }
44
- this.menuSurface = new MDCMenuSurface(menuElement);
45
- this.menuSurface.setAnchorCorner(Corner.TOP_START);
46
- document.addEventListener('mousedown', this.handleDocumentClick, {
47
- capture: true,
48
- });
49
- this.host.addEventListener('keydown', this.handleKeyDown);
50
- window.addEventListener('resize', this.handleResize, {
51
- passive: true,
52
- });
53
- }
54
- teardown() {
55
- var _a;
56
- (_a = this.menuSurface) === null || _a === void 0 ? void 0 : _a.destroy();
57
- document.removeEventListener('mousedown', this.handleDocumentClick, {
58
- capture: true,
59
- });
60
- this.host.removeEventListener('keydown', this.handleKeyDown);
61
- window.removeEventListener('resize', this.handleResize);
62
- }
63
- handleDocumentClick(event) {
64
- const elementPath = event.path || [];
65
- if (!this.open) {
66
- return;
67
- }
68
- if (isDescendant(event.target, this.host)) {
69
- return;
70
- }
71
- if (this.allowClicksElement) {
72
- const clickedInAllowedElement = elementPath.includes(this.allowClicksElement);
73
- if (clickedInAllowedElement) {
74
- return;
75
- }
76
- }
77
- this.dismiss.emit();
78
- this.preventClickEventPropagation();
79
- }
80
- handleResize() {
81
- if (this.open) {
82
- this.dismiss.emit();
83
- }
84
- }
85
- preventClickEventPropagation() {
86
- // When the menu surface is open, we want to stop the `click` event from propagating
87
- // when clicking outside the surface itself. This is to prevent any dialog that might
88
- // be open from closing, etc. However, when dragging a scrollbar no `click` event is emitted,
89
- // only mousedown and mouseup. So we listen for `mousedown` and attach a one-time listener
90
- // for `click`, so we can capture and "kill" it.
91
- document.addEventListener('click', this.stopEvent, {
92
- capture: true,
93
- once: true,
94
- });
95
- // We also capture and "kill" the next `mouseup` event.
96
- document.addEventListener('mouseup', this.stopEvent, {
97
- capture: true,
98
- once: true,
99
- });
100
- // If the user dragged the scrollbar, no `click` event happens. So when we get the
101
- // `mouseup` event, remove the handler for `click` if it's still there.
102
- // Otherwise, we would catch the next click even though the menu is no longer open.
103
- document.addEventListener('mouseup', () => {
104
- document.removeEventListener('click', this.stopEvent, {
105
- capture: true,
106
- });
107
- }, {
108
- once: true,
109
- });
110
- }
111
- stopEvent(event) {
112
- event.stopPropagation();
113
- event.preventDefault();
114
- }
115
- handleKeyDown(event) {
116
- const isEscape = event.key === ESCAPE || event.keyCode === ESCAPE_KEY_CODE;
117
- const isTab = event.key === TAB || event.keyCode === TAB_KEY_CODE;
118
- if (this.open && (isEscape || isTab)) {
119
- event.stopPropagation();
120
- this.dismiss.emit();
121
- }
122
- }
123
120
  static get is() { return "limel-menu-surface"; }
124
121
  static get encapsulation() { return "shadow"; }
125
122
  static get originalStyleUrls() { return {
@@ -646,8 +646,8 @@ export class Picker {
646
646
  "optional": false,
647
647
  "docs": {
648
648
  "tags": [{
649
- "text": "This was used for a workaround, and isn't needed any\nlonger. Setting it has no effect, and the property will be removed\nin the next major version.",
650
- "name": "deprecated"
649
+ "name": "deprecated",
650
+ "text": "This was used for a workaround, and isn't needed any\nlonger. Setting it has no effect, and the property will be removed\nin the next major version."
651
651
  }],
652
652
  "text": "True if the dropdown list should be displayed without cutting the content"
653
653
  },
@@ -53,7 +53,6 @@ import { ESCAPE } from '../../util/keycodes';
53
53
  *
54
54
  * @slot - Content to put inside the surface
55
55
  * @exampleComponent limel-example-popover
56
- * @private
57
56
  */
58
57
  export class Popover {
59
58
  constructor() {
@@ -118,7 +118,7 @@
118
118
  z-index: 1;
119
119
  right: 0;
120
120
  transform: translateX(50%);
121
- overflow-y: hidden;
121
+ overflow: hidden;
122
122
  }
123
123
  .divider:after {
124
124
  position: absolute;
@@ -1209,8 +1209,7 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
1209
1209
  margin-top: 0.75rem;
1210
1210
  }
1211
1211
  :host(.has-low-density) .tabulator-cell {
1212
- height: 2.75rem;
1213
- line-height: 2rem;
1212
+ height: 2.75rem !important;
1214
1213
  padding-left: 0.75rem;
1215
1214
  padding-right: 0.5rem;
1216
1215
  }
@@ -1349,6 +1348,14 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
1349
1348
  .tabulator-row .tabulator-cell {
1350
1349
  border-right: transparent;
1351
1350
  padding: 0.5rem;
1351
+ display: inline-flex;
1352
+ align-items: center;
1353
+ }
1354
+ .tabulator-row .tabulator-cell[style*="text-align: right;"] {
1355
+ justify-content: flex-end;
1356
+ }
1357
+ .tabulator-row .tabulator-cell[style*="text-align: center;"] {
1358
+ justify-content: center;
1352
1359
  }
1353
1360
 
1354
1361
  .tabulator-col,
@@ -1,21 +1,33 @@
1
- .tooltip-content {
1
+ :host {
2
+ animation: display-tooltip 0.2s ease;
2
3
  display: flex;
3
4
  flex-direction: row;
4
- color: rgb(var(--color-gray-default));
5
- border-radius: 0.5rem;
6
- width: auto;
7
- display: flex;
8
- padding: 0.75rem;
9
- transition: opacity 150ms ease-out;
10
- margin-top: 0.3rem;
11
- background-color: rgb(var(--color-gray-darker));
5
+ border-radius: 0.25rem;
6
+ padding: 0.25rem 0.5rem;
7
+ font-size: 0.875rem;
8
+ background-color: rgb(var(--contrast-1300));
9
+ box-shadow: var(--shadow-depth-16);
12
10
  }
13
- .tooltip-content .tooltip {
14
- color: rgb(var(--color-gray-lighter));
11
+
12
+ .label {
13
+ color: rgb(var(--contrast-200));
15
14
  }
16
- .tooltip-content .helperLabel {
15
+
16
+ .helper-label {
17
+ color: rgb(var(--contrast-800));
17
18
  padding: 0 0 0 1rem;
18
19
  }
19
- .tooltip-content .helperLabel:empty {
20
+ .helper-label:empty {
20
21
  display: none;
22
+ }
23
+
24
+ @keyframes display-tooltip {
25
+ 0% {
26
+ opacity: 0;
27
+ transform: translate3d(0, 0, 0) scale(0.94);
28
+ }
29
+ 100% {
30
+ opacity: 1;
31
+ transform: translate3d(0, 0, 0) scale(1);
32
+ }
21
33
  }
@@ -6,9 +6,10 @@ import { Component, h, Prop } from '@stencil/core';
6
6
  */
7
7
  export class TooltipContent {
8
8
  render() {
9
- return (h("div", { class: "tooltip-content" },
10
- h("div", { class: "tooltip" }, this.label),
11
- h("div", { class: "helperLabel" }, this.helperLabel)));
9
+ return [
10
+ h("div", { class: "label" }, this.label),
11
+ h("div", { class: "helper-label" }, this.helperLabel),
12
+ ];
12
13
  }
13
14
  static get is() { return "limel-tooltip-content"; }
14
15
  static get encapsulation() { return "shadow"; }
@@ -2,11 +2,5 @@
2
2
  * @prop --tooltip-z-index: z-index of the tooltip.
3
3
  */
4
4
  .trigger-anchor {
5
- display: inline-block;
6
5
  position: relative;
7
- }
8
-
9
- .tooltip-container {
10
- color: #f1f1f1;
11
- background-color: #232324;
12
6
  }
@@ -1,19 +1,46 @@
1
1
  import { Component, h, Prop, Element, State } from '@stencil/core';
2
2
  import { createRandomString } from '../../util/random-string';
3
3
  /**
4
- * Tooltips display a text label identifying an element, such as a description
5
- * of its function.
4
+ * A tooltip can be used to display a descriptive text for any element.
5
+ * The displayed content must be a brief and supplemental string of text,
6
+ * identifying the element or describing its function for the user,
7
+ * helping them better understand unfamiliar objects that aren't described
8
+ * directly in the UI.
6
9
  *
7
- * In order to display the tooltip, the tooltip element and the owner element
8
- * that it should describe must be within the same document or document
9
- * fragment. A good practice is to just render them next to each other like so:
10
+ * ## Interaction
11
+ * The tooltip appears after a slight delay, when the element is hovered;
12
+ * and disappears as soon as the cursor leaves the element.
13
+ * Therefore, users cannot interact with the tip, but if the trigger element
14
+ * itself is interactive, it will remain interactible even with a tooltip bound
15
+ * to it.
16
+ *
17
+ * :::note
18
+ * In order to display the tooltip, the tooltip element and its trigger element
19
+ * must be within the same document or document fragment.
20
+ * A good practice is to just place them next to each other like below:
10
21
  *
11
22
  * ```html
12
23
  * <limel-button icon="search" id="tooltip-example" />
13
24
  * <limel-tooltip label="Search" elementId="tooltip-example" />
14
25
  * ```
26
+ * :::
27
+ *
28
+ * ## Usage
29
+ * - Keep in mind that tooltips can be distracting, and can be perceived as an interruption.
30
+ * Use them only when they add significant value.
31
+ * - A good tip is concise, helpful, and informative.
32
+ * Don't explain the obvious or simply repeat what is already on the screen.
33
+ * When used correctly, supplemental info of a tooltip helps to [declutter the UI](/#/DesignGuidelines/decluttering.md/).
34
+ * - If the tip is essential to the primary tasks that the user is performing,
35
+ * such as warnings or important notes, include the information directly in the
36
+ * interface instead.
37
+ * - When a component offers a helper text (e.g. [Input field](/#/component/limel-input-field/)),
38
+ * use that, not a tooltip.
39
+ * - Make sure to use the tooltip on an element that users naturally and
40
+ * effortlessly recognize can be hovered.
15
41
  *
16
42
  * @exampleComponent limel-example-tooltip
43
+ * @private
17
44
  */
18
45
  export class Tooltip {
19
46
  constructor() {
@@ -1,4 +1,4 @@
1
- import { h } from './index-dc421a6e.js';
1
+ import { h } from './index-2316f345.js';
2
2
 
3
3
  const CheckboxTemplate = (props) => {
4
4
  return (h("div", { class: "mdc-form-field " },