@limetech/lime-elements 35.1.0-next.9 → 36.0.0-next.11

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 (107) hide show
  1. package/dist/cjs/lime-elements.cjs.js +1 -1
  2. package/dist/cjs/limel-button.cjs.entry.js +32 -16
  3. package/dist/cjs/limel-chip-set.cjs.entry.js +8 -5
  4. package/dist/cjs/{limel-color-picker-palette_2.cjs.entry.js → limel-color-picker-palette.cjs.entry.js} +0 -112
  5. package/dist/cjs/limel-color-picker.cjs.entry.js +1 -1
  6. package/dist/cjs/limel-date-picker.cjs.entry.js +6 -3
  7. package/dist/cjs/limel-dock-button.cjs.entry.js +84 -0
  8. package/dist/cjs/limel-dock.cjs.entry.js +103 -0
  9. package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +3 -9
  10. package/dist/cjs/limel-form.cjs.entry.js +3 -0
  11. package/dist/cjs/limel-icon-button.cjs.entry.js +2 -35
  12. package/dist/cjs/{limel-list_3.cjs.entry.js → limel-list_2.cjs.entry.js} +2 -1990
  13. package/dist/cjs/limel-menu.cjs.entry.js +2 -2
  14. package/dist/cjs/limel-picker.cjs.entry.js +1 -1
  15. package/dist/cjs/limel-popover_4.cjs.entry.js +239 -0
  16. package/dist/cjs/limel-portal.cjs.entry.js +2024 -0
  17. package/dist/cjs/limel-select.cjs.entry.js +2 -2
  18. package/dist/cjs/loader.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +2 -0
  20. package/dist/collection/components/button/button.css +40 -4
  21. package/dist/collection/components/button/button.js +56 -20
  22. package/dist/collection/components/chip-set/chip-set.css +7 -0
  23. package/dist/collection/components/chip-set/chip-set.js +27 -4
  24. package/dist/collection/components/color-picker/color-picker.js +1 -1
  25. package/dist/collection/components/date-picker/date-picker.css +6 -1
  26. package/dist/collection/components/date-picker/date-picker.js +4 -4
  27. package/dist/collection/components/date-picker/pickers/MonthPicker.js +1 -3
  28. package/dist/collection/components/date-picker/pickers/QuarterPicker.js +1 -3
  29. package/dist/collection/components/date-picker/pickers/YearPicker.js +1 -3
  30. package/dist/collection/components/dock/dock-button/dock-button.css +71 -0
  31. package/dist/collection/components/dock/dock-button/dock-button.js +183 -0
  32. package/dist/collection/components/dock/dock.css +107 -0
  33. package/dist/collection/components/dock/dock.js +280 -0
  34. package/dist/collection/components/dock/dock.types.js +1 -0
  35. package/dist/collection/components/form/templates/common.js +3 -0
  36. package/dist/collection/components/icon-button/icon-button.css +21 -20
  37. package/dist/collection/components/icon-button/icon-button.js +2 -52
  38. package/dist/collection/components/list/list-renderer.js +2 -2
  39. package/dist/collection/components/menu/menu.js +6 -6
  40. package/dist/collection/components/picker/picker.js +1 -1
  41. package/dist/collection/components/popover/popover.js +23 -1
  42. package/dist/collection/components/portal/portal.js +39 -9
  43. package/dist/collection/components/select/select.template.js +2 -2
  44. package/dist/collection/components/tooltip/tooltip.js +1 -1
  45. package/dist/esm/lime-elements.js +1 -1
  46. package/dist/esm/limel-button.entry.js +33 -17
  47. package/dist/esm/limel-chip-set.entry.js +8 -5
  48. package/dist/esm/{limel-color-picker-palette_2.entry.js → limel-color-picker-palette.entry.js} +2 -113
  49. package/dist/esm/limel-color-picker.entry.js +1 -1
  50. package/dist/esm/limel-date-picker.entry.js +6 -3
  51. package/dist/esm/limel-dock-button.entry.js +80 -0
  52. package/dist/esm/limel-dock.entry.js +99 -0
  53. package/dist/esm/limel-flatpickr-adapter.entry.js +3 -9
  54. package/dist/esm/limel-form.entry.js +3 -0
  55. package/dist/esm/limel-icon-button.entry.js +2 -35
  56. package/dist/esm/{limel-list_3.entry.js → limel-list_2.entry.js} +3 -1990
  57. package/dist/esm/limel-menu.entry.js +2 -2
  58. package/dist/esm/limel-picker.entry.js +1 -1
  59. package/dist/esm/limel-popover_4.entry.js +232 -0
  60. package/dist/esm/limel-portal.entry.js +2020 -0
  61. package/dist/esm/limel-select.entry.js +2 -2
  62. package/dist/esm/loader.js +1 -1
  63. package/dist/lime-elements/lime-elements.esm.js +1 -1
  64. package/dist/lime-elements/p-009de50e.entry.js +1 -0
  65. package/dist/lime-elements/p-19f72dab.entry.js +1 -0
  66. package/dist/lime-elements/p-1dfccbc5.entry.js +1 -0
  67. package/dist/lime-elements/p-5ad60e14.entry.js +126 -0
  68. package/dist/lime-elements/p-64f068a8.entry.js +1 -0
  69. package/dist/lime-elements/p-6b1bc80f.entry.js +1 -0
  70. package/dist/lime-elements/p-75152d89.entry.js +1 -0
  71. package/dist/lime-elements/{p-6d50aa71.entry.js → p-7e571ec6.entry.js} +1 -1
  72. package/dist/lime-elements/p-93cd2268.entry.js +1 -0
  73. package/dist/lime-elements/p-995bbd2a.entry.js +1 -0
  74. package/dist/lime-elements/p-a43e4844.entry.js +1 -0
  75. package/dist/lime-elements/p-b0b4e46f.entry.js +37 -0
  76. package/dist/lime-elements/p-bd098a11.entry.js +1 -0
  77. package/dist/lime-elements/p-c3f04c6d.entry.js +1 -0
  78. package/dist/lime-elements/p-f0e872b6.entry.js +16 -0
  79. package/dist/types/components/button/button.d.ts +10 -3
  80. package/dist/types/components/chip-set/chip-set.d.ts +7 -0
  81. package/dist/types/components/dock/dock-button/dock-button.d.ts +44 -0
  82. package/dist/types/components/dock/dock.d.ts +79 -0
  83. package/dist/types/components/dock/dock.types.d.ts +53 -0
  84. package/dist/types/components/icon-button/icon-button.d.ts +0 -11
  85. package/dist/types/components/menu/menu.d.ts +2 -2
  86. package/dist/types/components/menu/menu.types.d.ts +1 -1
  87. package/dist/types/components/popover/popover.d.ts +5 -0
  88. package/dist/types/components/portal/portal.d.ts +2 -0
  89. package/dist/types/components.d.ts +145 -6
  90. package/dist/types/interface.d.ts +1 -0
  91. package/package.json +2 -3
  92. package/dist/cjs/limel-popover-surface.cjs.entry.js +0 -32
  93. package/dist/cjs/limel-tooltip_2.cjs.entry.js +0 -102
  94. package/dist/esm/limel-popover-surface.entry.js +0 -28
  95. package/dist/esm/limel-tooltip_2.entry.js +0 -97
  96. package/dist/lime-elements/p-2754e134.entry.js +0 -1
  97. package/dist/lime-elements/p-36ecbd03.entry.js +0 -1
  98. package/dist/lime-elements/p-404e1465.entry.js +0 -1
  99. package/dist/lime-elements/p-4d5a874a.entry.js +0 -1
  100. package/dist/lime-elements/p-5908c21d.entry.js +0 -1
  101. package/dist/lime-elements/p-705334c1.entry.js +0 -1
  102. package/dist/lime-elements/p-84f933f7.entry.js +0 -16
  103. package/dist/lime-elements/p-bd8c9384.entry.js +0 -1
  104. package/dist/lime-elements/p-d1ee4501.entry.js +0 -37
  105. package/dist/lime-elements/p-e80dd2ff.entry.js +0 -1
  106. package/dist/lime-elements/p-e83dddcd.entry.js +0 -126
  107. package/dist/lime-elements/p-eb13837f.entry.js +0 -1
@@ -23,9 +23,9 @@ const Menu = class {
23
23
  */
24
24
  this.disabled = false;
25
25
  /**
26
- * Decides if the menu should open right or left.
26
+ * Decides the menu's location in relation to its trigger
27
27
  */
28
- this.openDirection = 'right';
28
+ this.openDirection = 'bottom-start';
29
29
  /**
30
30
  * Sets the open state of the menu.
31
31
  */
@@ -316,7 +316,7 @@ const Picker = class {
316
316
  props.maxItems = 1;
317
317
  }
318
318
  return [
319
- h("limel-chip-set", Object.assign({ type: "input", label: this.label, helperText: this.helperText, leadingIcon: this.leadingIcon, value: this.chips, disabled: this.disabled, delimiter: this.renderDelimiter(), readonly: this.readonly, required: this.required, searchLabel: this.searchLabel, onInput: this.handleTextInput, onKeyDown: this.handleInputKeyDown, onChange: this.handleChange, onInteract: this.handleInteract, onStartEdit: this.handleInputFieldFocus, onStopEdit: this.handleStopEditAndBlur, emptyInputOnBlur: false, clearAllButton: this.multiple }, props)),
319
+ h("limel-chip-set", Object.assign({ type: "input", inputType: "search", label: this.label, helperText: this.helperText, leadingIcon: this.leadingIcon, value: this.chips, disabled: this.disabled, delimiter: this.renderDelimiter(), readonly: this.readonly, required: this.required, searchLabel: this.searchLabel, onInput: this.handleTextInput, onKeyDown: this.handleInputKeyDown, onChange: this.handleChange, onInteract: this.handleInteract, onStartEdit: this.handleInputFieldFocus, onStopEdit: this.handleStopEditAndBlur, emptyInputOnBlur: false, clearAllButton: this.multiple }, props)),
320
320
  this.renderDropdown(),
321
321
  ];
322
322
  }
@@ -0,0 +1,232 @@
1
+ import { r as registerInstance, c as createEvent, h, g as getElement } from './index-11cd0b60.js';
2
+ import { c as createRandomString } from './random-string-2246b81e.js';
3
+ import { b as ESCAPE } from './keycodes-9f971b46.js';
4
+ import { z as zipObject } from './zipObject-2bb1968e.js';
5
+ import './_assignValue-fb2bf80a.js';
6
+ import './_defineProperty-2105cb48.js';
7
+ import './_getNative-93d6bfe9.js';
8
+ import './eq-c1c7f528.js';
9
+ import './isObject-c74e273c.js';
10
+
11
+ /**
12
+ * Check if an element is a descendant of another
13
+ *
14
+ * If the child element is a descendant of a limel-portal, this function will
15
+ * go back through the portal and check the original tree recursively
16
+ *
17
+ * @param {HTMLElement} element the parent element
18
+ * @param {HTMLElement} child the child element to check
19
+ * @returns {boolean} `true` if child is a descendant of element, taking
20
+ * portals into account
21
+ */
22
+ function portalContains(element, child) {
23
+ var _a;
24
+ if (element.contains(child) || ((_a = element.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(child))) {
25
+ return true;
26
+ }
27
+ const parent = findParent(child);
28
+ if (!parent) {
29
+ return false;
30
+ }
31
+ return portalContains(element, parent);
32
+ }
33
+ function findParent(element) {
34
+ const portal = element.closest('.limel-portal--container');
35
+ if (portal) {
36
+ return portal.portalSource;
37
+ }
38
+ const rootNode = element.getRootNode();
39
+ return rootNode.host;
40
+ }
41
+
42
+ const popoverCss = ".trigger-anchor{display:inline-block;position:relative}";
43
+
44
+ const Popover = class {
45
+ constructor(hostRef) {
46
+ registerInstance(this, hostRef);
47
+ this.close = createEvent(this, "close", 7);
48
+ /**
49
+ * True if the content within the popover should be visible
50
+ */
51
+ this.open = false;
52
+ this.handleGlobalKeyPress = (event) => {
53
+ if (event.key !== ESCAPE) {
54
+ return;
55
+ }
56
+ event.stopPropagation();
57
+ event.preventDefault();
58
+ this.close.emit();
59
+ };
60
+ this.portalId = createRandomString();
61
+ this.globalClickListener = this.globalClickListener.bind(this);
62
+ }
63
+ watchOpen() {
64
+ this.setupGlobalHandlers();
65
+ }
66
+ componentWillLoad() {
67
+ this.setupGlobalHandlers();
68
+ }
69
+ setupGlobalHandlers() {
70
+ if (this.open) {
71
+ document.addEventListener('click', this.globalClickListener, {
72
+ capture: true,
73
+ });
74
+ document.addEventListener('keyup', this.handleGlobalKeyPress);
75
+ }
76
+ else {
77
+ document.removeEventListener('click', this.globalClickListener);
78
+ document.removeEventListener('keyup', this.handleGlobalKeyPress);
79
+ }
80
+ }
81
+ render() {
82
+ const cssProperties = this.getCssProperties();
83
+ const popoverZIndex = getComputedStyle(this.host).getPropertyValue('--popover-z-index');
84
+ return (h("div", { class: "trigger-anchor" }, h("slot", { name: "trigger" }), h("limel-portal", { visible: this.open, containerId: this.portalId, containerStyle: { 'z-index': popoverZIndex }, openDirection: this.openDirection }, h("limel-popover-surface", { contentCollection: this.host.children, style: cssProperties }))));
85
+ }
86
+ globalClickListener(event) {
87
+ const element = event.target;
88
+ const clickedInside = portalContains(this.host, element);
89
+ if (this.open && !clickedInside) {
90
+ event.stopPropagation();
91
+ event.preventDefault();
92
+ this.close.emit();
93
+ }
94
+ }
95
+ getCssProperties() {
96
+ const propertyNames = [
97
+ '--popover-surface-width',
98
+ '--popover-body-background-color',
99
+ '--popover-border-radius',
100
+ ];
101
+ const style = getComputedStyle(this.host);
102
+ const values = propertyNames.map((property) => {
103
+ return style.getPropertyValue(property);
104
+ });
105
+ return zipObject(propertyNames, values);
106
+ }
107
+ get host() { return getElement(this); }
108
+ static get watchers() { return {
109
+ "open": ["watchOpen"]
110
+ }; }
111
+ };
112
+ Popover.style = popoverCss;
113
+
114
+ const popoverSurfaceCss = ".limel-popover-surface{position:relative;display:flex;flex-direction:column;width:var(--popover-surface-width, auto);max-height:calc(100vh - 2rem);max-width:calc(100vw - 2rem);margin:0 0.25rem;border-radius:var(--popover-border-radius, 0.75rem);box-shadow:var(--shadow-depth-16);backdrop-filter:blur(0.3125rem);-webkit-backdrop-filter:blur(0.3125rem)}.limel-popover-surface:after{transition:opacity 0.4s ease;pointer-events:none;content:\"\";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:0.75;border-radius:var(--popover-border-radius, 0.75rem);background-color:var(--popover-body-background-color, rgb(var(--contrast-100)))}.limel-popover-surface:focus,.limel-popover-surface:focus-within{outline:none}.limel-popover-surface:focus:after,.limel-popover-surface:focus-within:after{opacity:1}.limel-popover-surface:focus-visible{box-shadow:var(--shadow-depth-16-focused)}";
115
+
116
+ const PopoverSurface = class {
117
+ constructor(hostRef) {
118
+ registerInstance(this, hostRef);
119
+ }
120
+ componentDidLoad() {
121
+ this.appendElement();
122
+ }
123
+ render() {
124
+ return h("div", { class: "limel-popover-surface", tabindex: "0" });
125
+ }
126
+ appendElement() {
127
+ const portalContainer = this.host.shadowRoot.querySelector('.limel-popover-surface');
128
+ Array.from(this.contentCollection).forEach((child) => {
129
+ if (child.slot === 'trigger') {
130
+ return;
131
+ }
132
+ portalContainer.appendChild(child);
133
+ });
134
+ }
135
+ get host() { return getElement(this); }
136
+ };
137
+ PopoverSurface.style = popoverSurfaceCss;
138
+
139
+ const tooltipCss = ".trigger-anchor{position:relative}";
140
+
141
+ const DEFAULT_MAX_LENGTH = 50;
142
+ const Tooltip = class {
143
+ constructor(hostRef) {
144
+ registerInstance(this, hostRef);
145
+ /**
146
+ * The maximum amount of characters before rendering 'label' and
147
+ * 'helperLabel' in two rows.
148
+ */
149
+ this.maxlength = DEFAULT_MAX_LENGTH;
150
+ this.showTooltip = () => {
151
+ const tooltipDelay = 500;
152
+ this.showTooltipTimeoutHandle = window.setTimeout(() => {
153
+ this.open = true;
154
+ }, tooltipDelay);
155
+ };
156
+ this.hideTooltip = () => {
157
+ clearTimeout(this.showTooltipTimeoutHandle);
158
+ this.open = false;
159
+ };
160
+ this.portalId = createRandomString();
161
+ this.tooltipId = createRandomString();
162
+ }
163
+ connectedCallback() {
164
+ this.setOwnerAriaLabel();
165
+ this.addListeners();
166
+ }
167
+ disconnectedCallback() {
168
+ this.removeListeners();
169
+ }
170
+ render() {
171
+ const tooltipZIndex = getComputedStyle(this.host).getPropertyValue('--tooltip-z-index');
172
+ return (h("div", { class: "trigger-anchor" }, h("limel-portal", { openDirection: "bottom-start", visible: this.open, containerId: this.portalId, containerStyle: {
173
+ 'z-index': tooltipZIndex,
174
+ 'pointer-events': 'none',
175
+ } }, h("limel-tooltip-content", { label: this.label, helperLabel: this.helperLabel, maxlength: this.maxlength, role: "tooltip", "aria-hidden": !this.open, id: this.tooltipId }))));
176
+ }
177
+ setOwnerAriaLabel() {
178
+ const owner = this.getOwnerElement();
179
+ owner === null || owner === void 0 ? void 0 : owner.setAttribute('aria-describedby', this.tooltipId);
180
+ }
181
+ addListeners() {
182
+ const owner = this.getOwnerElement();
183
+ owner === null || owner === void 0 ? void 0 : owner.addEventListener('mouseover', this.showTooltip);
184
+ owner === null || owner === void 0 ? void 0 : owner.addEventListener('mouseout', this.hideTooltip);
185
+ owner === null || owner === void 0 ? void 0 : owner.addEventListener('click', this.hideTooltip);
186
+ }
187
+ removeListeners() {
188
+ const owner = this.getOwnerElement();
189
+ owner === null || owner === void 0 ? void 0 : owner.removeEventListener('mouseover', this.showTooltip);
190
+ owner === null || owner === void 0 ? void 0 : owner.removeEventListener('mouseout', this.hideTooltip);
191
+ owner === null || owner === void 0 ? void 0 : owner.removeEventListener('click', this.hideTooltip);
192
+ }
193
+ getOwnerElement() {
194
+ var _a;
195
+ let element = this.host;
196
+ do {
197
+ element = element.parentNode;
198
+ } while (element &&
199
+ element.nodeType !== Node.DOCUMENT_FRAGMENT_NODE &&
200
+ element.nodeType !== Node.DOCUMENT_NODE);
201
+ return (_a = element) === null || _a === void 0 ? void 0 : _a.getElementById(this.elementId);
202
+ }
203
+ get host() { return getElement(this); }
204
+ };
205
+ Tooltip.style = tooltipCss;
206
+
207
+ const tooltipContentCss = ":host{animation:display-tooltip 0.2s ease;display:flex;border-radius:0.25rem;padding:0.25rem 0.5rem;background-color:rgb(var(--contrast-1300));box-shadow:var(--shadow-depth-16)}text{font-size:0.875rem;line-height:1.25;display:flex;column-gap:1rem}text.has-column-layout{display:table-cell;width:fit-content;max-width:min(var(--tooltip-max-width-of-text), 80vw)}text.has-column-layout .label{padding-bottom:0.5rem}text.has-column-layout .helper-label{padding-bottom:0.25rem}.label{color:rgb(var(--contrast-200))}.helper-label{color:rgb(var(--contrast-800))}.helper-label:empty{display:none}@keyframes display-tooltip{0%{opacity:0;transform:translate3d(0, 0, 0) scale(0.94)}100%{opacity:1;transform:translate3d(0, 0, 0) scale(1)}}";
208
+
209
+ const TooltipContent = class {
210
+ constructor(hostRef) {
211
+ registerInstance(this, hostRef);
212
+ }
213
+ render() {
214
+ let isLabelsTextLong = false;
215
+ if (this.helperLabel && this.maxlength) {
216
+ isLabelsTextLong =
217
+ this.label.length + this.helperLabel.length > this.maxlength;
218
+ }
219
+ const props = {};
220
+ if (this.maxlength) {
221
+ props.style = {
222
+ '--tooltip-max-width-of-text': `${this.maxlength}` + 'ch',
223
+ };
224
+ }
225
+ return [
226
+ h("text", Object.assign({ class: { 'has-column-layout': isLabelsTextLong } }, props), h("div", { class: "label" }, this.label), h("div", { class: "helper-label" }, this.helperLabel)),
227
+ ];
228
+ }
229
+ };
230
+ TooltipContent.style = tooltipContentCss;
231
+
232
+ export { Popover as limel_popover, PopoverSurface as limel_popover_surface, Tooltip as limel_tooltip, TooltipContent as limel_tooltip_content };