@editora/ui-core 0.1.19 → 0.1.20
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/{ElementBase-1b301e7f.js → ElementBase-EV6mVBUV.js} +1 -1
- package/dist/{ElementBase-909688f3.mjs → ElementBase-YlTLMsGk.mjs} +3 -3
- package/dist/accordion.cjs.js +3 -3
- package/dist/accordion.esm.js +39 -62
- package/dist/alert-dialog.cjs.js +19 -19
- package/dist/alert-dialog.esm.js +69 -87
- package/dist/alert.cjs.js +1 -1
- package/dist/alert.esm.js +4 -7
- package/dist/anchor.cjs.js +2 -2
- package/dist/anchor.esm.js +3 -3
- package/dist/animated-beam.cjs.js +83 -83
- package/dist/animated-beam.esm.js +250 -277
- package/dist/animated-list.cjs.js +4 -4
- package/dist/animated-list.esm.js +47 -61
- package/dist/animated-text.cjs.js +2 -2
- package/dist/animated-text.esm.js +13 -24
- package/dist/app-header.cjs.js +3 -3
- package/dist/app-header.esm.js +11 -13
- package/dist/aspect-ratio.cjs.js +1 -1
- package/dist/aspect-ratio.esm.js +4 -7
- package/dist/avatar.cjs.js +1 -1
- package/dist/avatar.esm.js +7 -13
- package/dist/badge.cjs.js +1 -1
- package/dist/badge.esm.js +4 -7
- package/dist/block-controls.cjs.js +2 -2
- package/dist/block-controls.esm.js +19 -35
- package/dist/box.cjs.js +1 -1
- package/dist/box.esm.js +8 -15
- package/dist/breadcrumb.cjs.js +2 -2
- package/dist/breadcrumb.esm.js +20 -37
- package/dist/button.cjs.js +1 -521
- package/dist/button.esm.js +2 -671
- package/dist/{calendar-2c11b824.mjs → calendar-DLY4acgn.mjs} +293 -342
- package/dist/{calendar-a8735e40.js → calendar-Dkof-FTK.js} +25 -25
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.esm.js +8 -9
- package/dist/card.cjs.js +4 -4
- package/dist/card.esm.js +13 -19
- package/dist/chart.cjs.js +64 -64
- package/dist/chart.esm.js +223 -254
- package/dist/checkbox.cjs.js +1 -1
- package/dist/checkbox.esm.js +2 -3
- package/dist/collapsible.cjs.js +1 -1
- package/dist/collapsible.esm.js +5 -9
- package/dist/{collection-a1aac0c6.mjs → collection-C7URGjEI.mjs} +8 -14
- package/dist/collection.cjs.js +1 -1
- package/dist/collection.esm.js +4 -7
- package/dist/color-picker.cjs.js +9 -9
- package/dist/color-picker.esm.js +189 -252
- package/dist/combobox.cjs.js +13 -13
- package/dist/combobox.esm.js +93 -126
- package/dist/command-palette.cjs.js +3 -3
- package/dist/command-palette.esm.js +19 -30
- package/dist/command.cjs.js +4 -4
- package/dist/command.esm.js +41 -53
- package/dist/components/ui-orbiter.d.ts.map +1 -1
- package/dist/components/ui-skeleton.d.ts.map +1 -1
- package/dist/components/ui-split-button.d.ts +1 -0
- package/dist/components/ui-split-button.d.ts.map +1 -1
- package/dist/components/ui-time-picker.d.ts.map +1 -1
- package/dist/container.cjs.js +2 -2
- package/dist/container.esm.js +2 -3
- package/dist/context-menu.cjs.js +8 -8
- package/dist/context-menu.esm.js +157 -219
- package/dist/control-group.cjs.js +1 -1
- package/dist/control-group.esm.js +2 -3
- package/dist/data-table.cjs.js +4 -4
- package/dist/data-table.esm.js +299 -381
- package/dist/date-field.cjs.js +3 -3
- package/dist/date-field.esm.js +68 -80
- package/dist/date-picker.cjs.js +9 -9
- package/dist/date-picker.esm.js +69 -97
- package/dist/date-range-picker.cjs.js +3 -3
- package/dist/date-range-picker.esm.js +32 -56
- package/dist/date-range-time-picker.cjs.js +9 -9
- package/dist/date-range-time-picker.esm.js +111 -140
- package/dist/date-time-picker.cjs.js +4 -4
- package/dist/date-time-picker.esm.js +112 -144
- package/dist/date-time-utils-Dmost5Ee.js +1 -0
- package/dist/date-time-utils-y1N2gvG2.mjs +268 -0
- package/dist/description.cjs.js +1 -1
- package/dist/description.esm.js +3 -5
- package/dist/dialog.cjs.js +12 -12
- package/dist/dialog.esm.js +44 -63
- package/dist/direction-provider.cjs.js +1 -1
- package/dist/direction-provider.esm.js +2 -3
- package/dist/{dismissable-layer-9c7e6b58.mjs → dismissable-layer-BmPIoK80.mjs} +29 -33
- package/dist/dismissable-layer-DNfrKA20.js +1 -0
- package/dist/dismissable-layer.cjs.js +2 -2
- package/dist/dismissable-layer.esm.js +4 -6
- package/dist/dock.cjs.js +5 -5
- package/dist/dock.esm.js +134 -155
- package/dist/drawer.cjs.js +2 -2
- package/dist/drawer.esm.js +18 -35
- package/dist/dropdown.cjs.js +2 -2
- package/dist/dropdown.esm.js +119 -149
- package/dist/dropzone.cjs.js +1 -1
- package/dist/dropzone.esm.js +0 -1
- package/dist/empty-state.cjs.js +1 -1
- package/dist/empty-state.esm.js +1 -1
- package/dist/field-error.cjs.js +1 -1
- package/dist/field-error.esm.js +3 -5
- package/dist/field.cjs.js +5 -5
- package/dist/field.esm.js +27 -34
- package/dist/fieldset.cjs.js +4 -4
- package/dist/fieldset.esm.js +19 -24
- package/dist/file-upload.cjs.js +4 -4
- package/dist/file-upload.esm.js +69 -93
- package/dist/flex.cjs.js +1 -1
- package/dist/flex.esm.js +5 -9
- package/dist/floating-toolbar.cjs.js +4 -4
- package/dist/floating-toolbar.esm.js +60 -85
- package/dist/focus-scope-Bwug2gDv.js +1 -0
- package/dist/{focus-scope-103833ee.mjs → focus-scope-CmEsG5UZ.mjs} +39 -48
- package/dist/focus-scope.cjs.js +2 -2
- package/dist/focus-scope.esm.js +15 -20
- package/dist/form.cjs.js +2 -2
- package/dist/form.esm.js +26 -53
- package/dist/gantt.cjs.js +43 -43
- package/dist/gantt.esm.js +295 -322
- package/dist/grid.cjs.js +1 -1
- package/dist/grid.esm.js +5 -9
- package/dist/hover-card.cjs.js +4 -4
- package/dist/hover-card.esm.js +22 -28
- package/dist/icon-cloud.cjs.js +7 -7
- package/dist/icon-cloud.esm.js +48 -62
- package/dist/icon.cjs.js +1 -1
- package/dist/icon.esm.js +2 -4
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +378 -390
- package/dist/inline-edit.cjs.js +11 -11
- package/dist/inline-edit.esm.js +32 -36
- package/dist/input.cjs.js +17 -17
- package/dist/input.esm.js +50 -63
- package/dist/label.cjs.js +2 -2
- package/dist/label.esm.js +8 -17
- package/dist/layout.cjs.js +2 -2
- package/dist/layout.esm.js +20 -26
- package/dist/listbox-B6QgECax.js +46 -0
- package/dist/listbox-DJamVeFj.mjs +200 -0
- package/dist/listbox.cjs.js +1 -1
- package/dist/listbox.esm.js +2 -4
- package/dist/marquee.cjs.js +5 -5
- package/dist/marquee.esm.js +33 -50
- package/dist/masonry-grid.cjs.js +1 -1
- package/dist/masonry-grid.esm.js +5 -9
- package/dist/menu.cjs.js +3 -3
- package/dist/menu.esm.js +106 -126
- package/dist/menubar.cjs.js +5 -5
- package/dist/menubar.esm.js +118 -164
- package/dist/meter.cjs.js +2 -2
- package/dist/meter.esm.js +4 -4
- package/dist/multi-select.cjs.js +4 -4
- package/dist/multi-select.esm.js +120 -140
- package/dist/navigation-menu.cjs.js +4 -4
- package/dist/navigation-menu.esm.js +44 -55
- package/dist/number-field.cjs.js +2 -2
- package/dist/number-field.esm.js +73 -98
- package/dist/number-ticker.cjs.js +3 -3
- package/dist/number-ticker.esm.js +22 -43
- package/dist/odometer.cjs.js +1 -1
- package/dist/odometer.esm.js +5 -9
- package/dist/orbiter.cjs.js +13 -13
- package/dist/orbiter.esm.js +79 -90
- package/dist/{overlayManager-5bbd4dc3.mjs → overlayManager-BJjU1VA8.mjs} +4 -5
- package/dist/{overlayManager-0eda4e08.js → overlayManager-CSy3fJmJ.js} +1 -1
- package/dist/pagination.cjs.js +2 -2
- package/dist/pagination.esm.js +14 -18
- package/dist/{panel-group-a376cc5e.mjs → panel-group-8sVNnGxg.mjs} +24 -46
- package/dist/panel-group-CaD0_KQf.js +36 -0
- package/dist/panel-group.cjs.js +1 -1
- package/dist/panel-group.esm.js +2 -5
- package/dist/panel.cjs.js +4 -4
- package/dist/panel.esm.js +8 -10
- package/dist/password-field.cjs.js +9 -9
- package/dist/password-field.esm.js +62 -82
- package/dist/pin-input.cjs.js +3 -3
- package/dist/pin-input.esm.js +33 -39
- package/dist/placement-grid.cjs.js +4 -4
- package/dist/placement-grid.esm.js +108 -131
- package/dist/plugin-panel.cjs.js +7 -7
- package/dist/plugin-panel.esm.js +13 -15
- package/dist/popover.cjs.js +2 -2
- package/dist/popover.esm.js +21 -31
- package/dist/portal-DgpQ3Jo1.js +1 -0
- package/dist/{portal-fe73e5cc.mjs → portal-bR42gHvG.mjs} +43 -48
- package/dist/portal.cjs.js +2 -2
- package/dist/portal.esm.js +10 -19
- package/dist/{positioner-e9770c66.mjs → positioner-D0VGxtYU.mjs} +189 -209
- package/dist/positioner-D_fqyx_j.js +1 -0
- package/dist/positioner.cjs.js +2 -2
- package/dist/positioner.esm.js +11 -18
- package/dist/presence.cjs.js +1 -1
- package/dist/presence.esm.js +7 -13
- package/dist/progress.cjs.js +1 -1
- package/dist/progress.esm.js +5 -9
- package/dist/quick-actions.cjs.js +6 -6
- package/dist/quick-actions.esm.js +52 -62
- package/dist/radio-group.cjs.js +13 -13
- package/dist/radio-group.esm.js +39 -51
- package/dist/radio.cjs.js +1 -1
- package/dist/radio.esm.js +5 -9
- package/dist/rating.cjs.js +1 -1
- package/dist/rating.esm.js +12 -23
- package/dist/{roving-focus-group-4350c9a7.mjs → roving-focus-group-Dbm1Jko_.mjs} +3 -6
- package/dist/roving-focus-group.cjs.js +1 -1
- package/dist/roving-focus-group.esm.js +3 -5
- package/dist/runtime-CTaOSmBj.js +1 -0
- package/dist/{runtime-161f68a2.mjs → runtime-D1gFh1fS.mjs} +338 -366
- package/dist/runtime.cjs.js +1 -1
- package/dist/runtime.esm.js +6 -6
- package/dist/scroll-area.cjs.js +3 -3
- package/dist/scroll-area.esm.js +38 -46
- package/dist/{scroll-lock-31da444f.mjs → scroll-lock-LfqXXqsu.mjs} +5 -9
- package/dist/section.cjs.js +1 -1
- package/dist/section.esm.js +1 -1
- package/dist/select.cjs.js +7 -7
- package/dist/select.esm.js +67 -97
- package/dist/selection-popup.cjs.js +1 -1
- package/dist/selection-popup.esm.js +8 -15
- package/dist/separator.cjs.js +1 -1
- package/dist/separator.esm.js +1 -1
- package/dist/sidebar.cjs.js +18 -18
- package/dist/sidebar.esm.js +117 -139
- package/dist/skeleton.cjs.js +11 -11
- package/dist/skeleton.esm.js +27 -24
- package/dist/slider.cjs.js +1 -1
- package/dist/slider.esm.js +6 -11
- package/dist/slot.cjs.js +4 -4
- package/dist/slot.esm.js +16 -19
- package/dist/sortable.cjs.js +45 -45
- package/dist/sortable.esm.js +421 -524
- package/dist/spinning-text.cjs.js +12 -12
- package/dist/spinning-text.esm.js +80 -92
- package/dist/split-button.cjs.js +4 -4
- package/dist/split-button.esm.js +77 -62
- package/dist/splitter.cjs.js +1 -1
- package/dist/splitter.esm.js +1 -1
- package/dist/stepper.cjs.js +8 -8
- package/dist/stepper.esm.js +32 -52
- package/dist/switch.cjs.js +7 -7
- package/dist/switch.esm.js +23 -31
- package/dist/table.cjs.js +2 -2
- package/dist/table.esm.js +46 -56
- package/dist/tabs.cjs.js +3 -3
- package/dist/tabs.esm.js +35 -55
- package/dist/tags-input.cjs.js +4 -4
- package/dist/tags-input.esm.js +45 -62
- package/dist/textarea.cjs.js +6 -6
- package/dist/textarea.esm.js +32 -41
- package/dist/time-field.cjs.js +4 -4
- package/dist/time-field.esm.js +70 -84
- package/dist/time-picker.cjs.js +22 -22
- package/dist/time-picker.esm.js +88 -110
- package/dist/timeline.cjs.js +1 -1
- package/dist/timeline.esm.js +3 -5
- package/dist/toast.cjs.js +2 -2
- package/dist/toast.esm.js +33 -47
- package/dist/toggle-group.cjs.js +6 -6
- package/dist/toggle-group.esm.js +85 -105
- package/dist/toggle.cjs.js +1 -1
- package/dist/toggle.esm.js +3 -5
- package/dist/toolbar.cjs.js +1 -1
- package/dist/toolbar.esm.js +13 -24
- package/dist/tooltip.cjs.js +2 -2
- package/dist/tooltip.esm.js +31 -42
- package/dist/transfer-list.cjs.js +19 -19
- package/dist/transfer-list.esm.js +98 -111
- package/dist/{tree-dcd74a4a.mjs → tree-B3kE8ESs.mjs} +55 -62
- package/dist/tree-Dx_kv_ih.js +39 -0
- package/dist/tree-item.cjs.js +2 -2
- package/dist/tree-item.esm.js +2 -3
- package/dist/tree.cjs.js +1 -1
- package/dist/tree.esm.js +2 -5
- package/dist/ui-button-Q0GNNWKC.mjs +665 -0
- package/dist/ui-button-rXQOS9QJ.js +521 -0
- package/dist/{icon-9e9da03b.js → ui-icon-BzVNC_lr.js} +4 -4
- package/dist/{icon-e2a85cc1.mjs → ui-icon-YI6lyuqU.mjs} +58 -65
- package/dist/visually-hidden.cjs.js +1 -1
- package/dist/visually-hidden.esm.js +1 -1
- package/dist/wizard.cjs.js +14 -14
- package/dist/wizard.esm.js +85 -105
- package/package.json +2 -2
- package/dist/date-time-utils-66480de4.js +0 -1
- package/dist/date-time-utils-a2c7af25.mjs +0 -307
- package/dist/dismissable-layer-193e3bed.js +0 -1
- package/dist/focus-scope-2b12b4e7.js +0 -1
- package/dist/listbox-308789a0.mjs +0 -210
- package/dist/listbox-ef2f708e.js +0 -46
- package/dist/panel-group-40254cdd.js +0 -36
- package/dist/portal-c69756c0.js +0 -1
- package/dist/positioner-33529bb8.js +0 -1
- package/dist/runtime-3f13807b.js +0 -1
- package/dist/tree-0a7a8d05.js +0 -39
- /package/dist/{collection-a2969ad2.js → collection-qv8A8rq4.js} +0 -0
- /package/dist/{menu-item-styles-27fdbac4.mjs → menu-item-styles-CZiPwPwl.mjs} +0 -0
- /package/dist/{menu-item-styles-83ad1e22.js → menu-item-styles-CbNUEwP2.js} +0 -0
- /package/dist/{roving-focus-group-5c059bf9.js → roving-focus-group-BdJ_4Njm.js} +0 -0
- /package/dist/{scroll-lock-d7b0df21.js → scroll-lock-BX6e3Ced.js} +0 -0
package/dist/toolbar.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as c } from "./ElementBase-
|
|
2
|
-
import { m as d, r as u, s, f as l, g as b } from "./roving-focus-group-
|
|
1
|
+
import { E as c } from "./ElementBase-YlTLMsGk.mjs";
|
|
2
|
+
import { m as d, r as u, s, f as l, g as b } from "./roving-focus-group-Dbm1Jko_.mjs";
|
|
3
3
|
const f = `
|
|
4
4
|
:host {
|
|
5
5
|
--ui-toolbar-gap: 8px;
|
|
@@ -122,8 +122,7 @@ const f = `
|
|
|
122
122
|
}
|
|
123
123
|
`;
|
|
124
124
|
function p(n) {
|
|
125
|
-
if (!(n instanceof HTMLElement) || n.hasAttribute("disabled") || n.getAttribute("aria-disabled") === "true")
|
|
126
|
-
return !1;
|
|
125
|
+
if (!(n instanceof HTMLElement) || n.hasAttribute("disabled") || n.getAttribute("aria-disabled") === "true") return !1;
|
|
127
126
|
const t = n.tagName.toLowerCase();
|
|
128
127
|
return !!(["button", "input", "select", "textarea", "a"].includes(t) || n.hasAttribute("tabindex") || t.startsWith("ui-"));
|
|
129
128
|
}
|
|
@@ -151,8 +150,7 @@ class h extends c {
|
|
|
151
150
|
}
|
|
152
151
|
_focusables() {
|
|
153
152
|
const t = this.root.querySelector("slot");
|
|
154
|
-
if (!t)
|
|
155
|
-
return [];
|
|
153
|
+
if (!t) return [];
|
|
156
154
|
const a = t.assignedElements({ flatten: !0 }), e = [], o = (i) => {
|
|
157
155
|
p(i) && e.push(i);
|
|
158
156
|
};
|
|
@@ -164,32 +162,27 @@ class h extends c {
|
|
|
164
162
|
}
|
|
165
163
|
_moveFocus(t, a) {
|
|
166
164
|
const e = this._focusables();
|
|
167
|
-
if (e.length < 2)
|
|
168
|
-
return;
|
|
165
|
+
if (e.length < 2) return;
|
|
169
166
|
const o = e.indexOf(t);
|
|
170
|
-
if (o < 0)
|
|
171
|
-
return;
|
|
167
|
+
if (o < 0) return;
|
|
172
168
|
const r = d(e, o, a, {
|
|
173
169
|
wrap: this.hasAttribute("loop") || !this.hasAttribute("no-loop"),
|
|
174
170
|
fallbackIndex: u(e, { activeIndex: o, getDisabled: () => !1 }),
|
|
175
171
|
getDisabled: () => !1
|
|
176
172
|
});
|
|
177
|
-
if (r < 0)
|
|
178
|
-
return;
|
|
173
|
+
if (r < 0) return;
|
|
179
174
|
const i = e[r];
|
|
180
175
|
s(e, i, { activeAttribute: null }), l(i);
|
|
181
176
|
}
|
|
182
177
|
_syncRovingState() {
|
|
183
178
|
const t = this._focusables();
|
|
184
|
-
if (!t.length)
|
|
185
|
-
return;
|
|
179
|
+
if (!t.length) return;
|
|
186
180
|
const a = t.find((e) => e === document.activeElement) || t[u(t, { getDisabled: () => !1 })];
|
|
187
181
|
s(t, a || null, { activeAttribute: null });
|
|
188
182
|
}
|
|
189
183
|
_onKeyDown(t) {
|
|
190
184
|
const a = t.target;
|
|
191
|
-
if (!a)
|
|
192
|
-
return;
|
|
185
|
+
if (!a) return;
|
|
193
186
|
const e = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal";
|
|
194
187
|
if (e === "horizontal" && t.key === "ArrowRight" || e === "vertical" && t.key === "ArrowDown") {
|
|
195
188
|
t.preventDefault(), this._moveFocus(a, 1);
|
|
@@ -201,23 +194,19 @@ class h extends c {
|
|
|
201
194
|
}
|
|
202
195
|
if (t.key === "Home") {
|
|
203
196
|
const o = this._focusables();
|
|
204
|
-
if (!o.length)
|
|
205
|
-
return;
|
|
197
|
+
if (!o.length) return;
|
|
206
198
|
t.preventDefault();
|
|
207
199
|
const r = b(o, "first", () => !1);
|
|
208
|
-
if (r < 0)
|
|
209
|
-
return;
|
|
200
|
+
if (r < 0) return;
|
|
210
201
|
s(o, o[r], { activeAttribute: null }), l(o[r]);
|
|
211
202
|
return;
|
|
212
203
|
}
|
|
213
204
|
if (t.key === "End") {
|
|
214
205
|
const o = this._focusables();
|
|
215
|
-
if (!o.length)
|
|
216
|
-
return;
|
|
206
|
+
if (!o.length) return;
|
|
217
207
|
t.preventDefault();
|
|
218
208
|
const r = b(o, "last", () => !1);
|
|
219
|
-
if (r < 0)
|
|
220
|
-
return;
|
|
209
|
+
if (r < 0) return;
|
|
221
210
|
s(o, o[r], { activeAttribute: null }), l(o[r]);
|
|
222
211
|
}
|
|
223
212
|
}
|
package/dist/tooltip.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const E=require("./ElementBase-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const E=require("./ElementBase-EV6mVBUV.js"),w=require("./portal-DgpQ3Jo1.js"),d=140,y=120,m=`
|
|
2
2
|
.tooltip {
|
|
3
3
|
color-scheme: light dark;
|
|
4
4
|
--ui-tooltip-bg: color-mix(in srgb, var(--ui-color-text, #0f172a) 92%, #0b1220 8%);
|
|
@@ -156,4 +156,4 @@
|
|
|
156
156
|
forced-color-adjust: none;
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
`;function b(
|
|
159
|
+
`;function b(i){if(i==null)return!1;const t=String(i).toLowerCase();return t!=="false"&&t!=="0"&&t!=="off"}function a(i,t){const e=Number(i);return Number.isFinite(e)?e:t}function _(i){return i==="top"||i==="right"||i==="bottom"||i==="left"?i:"top"}function A(i){const t=(i||"hover focus").trim().toLowerCase();return t?new Set(t.split(/[\s,]+/).filter(Boolean)):new Set(["hover","focus"])}function l(i){return b(i)}class f extends E.ElementBase{constructor(){super(),this._portalEl=null,this._cleanup=null,this._id=`ui-tooltip-${Math.random().toString(36).slice(2,9)}`,this._isOpen=!1,this._syncingOpenAttr=!1,this._openTimer=null,this._closeTimer=null,this._exitTimer=null,this._pointerInsidePortal=!1,this._onMouseEnter=this._onMouseEnter.bind(this),this._onMouseLeave=this._onMouseLeave.bind(this),this._onFocusIn=this._onFocusIn.bind(this),this._onFocusOut=this._onFocusOut.bind(this),this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onPortalMouseEnter=this._handlePortalMouseEnter.bind(this),this._onPortalMouseLeave=this._handlePortalMouseLeave.bind(this),this._onDocumentPointerDown=this._handleDocumentPointerDown.bind(this)}static get observedAttributes(){return["text","placement","open","disabled","headless","variant","size","tone","delay","close-delay","trigger","offset","interactive","arrow","aria-label"]}connectedCallback(){super.connectedCallback(),this.addEventListener("mouseenter",this._onMouseEnter),this.addEventListener("mouseleave",this._onMouseLeave),this.addEventListener("focusin",this._onFocusIn),this.addEventListener("focusout",this._onFocusOut),this.addEventListener("click",this._onClick),this.addEventListener("keydown",this._onKeyDown),this.hasAttribute("open")&&this._scheduleShow(0)}disconnectedCallback(){this.removeEventListener("mouseenter",this._onMouseEnter),this.removeEventListener("mouseleave",this._onMouseLeave),this.removeEventListener("focusin",this._onFocusIn),this.removeEventListener("focusout",this._onFocusOut),this.removeEventListener("click",this._onClick),this.removeEventListener("keydown",this._onKeyDown),this._clearTimers(),this.hide(!0),super.disconnectedCallback()}attributeChangedCallback(t,e,o){if(e!==o){if(t==="open"&&!this._syncingOpenAttr){this.hasAttribute("open")?this._scheduleShow(0):this._scheduleHide(0);return}if(t==="disabled"&&this.hasAttribute("disabled")){this.hide();return}if((t==="text"||t==="aria-label")&&this._isOpen&&!(this.getAttribute("text")||this.getAttribute("aria-label")||"").trim()){this.hide();return}if(this._isOpen&&["text","placement","variant","size","tone","headless","offset","arrow","aria-label","interactive"].includes(t)){this._renderPortalContent(),this._reposition();return}}}_clearTimers(){this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),this._exitTimer&&(clearTimeout(this._exitTimer),this._exitTimer=null)}_triggerEnabled(t){const e=A(this.getAttribute("trigger"));return e.has("manual")?t==="manual":e.has(t)}_scheduleShow(t){if(this.hasAttribute("disabled"))return;this._clearTimers();const e=typeof t=="number"?t:a(this.getAttribute("delay"),250);this._openTimer=setTimeout(()=>{this.show(),this._openTimer=null},Math.max(0,e))}_scheduleHide(t){this._clearTimers();const e=typeof t=="number"?t:a(this.getAttribute("close-delay"),120);this._closeTimer=setTimeout(()=>{if(l(this.getAttribute("interactive"))&&this._pointerInsidePortal){this._closeTimer=null;return}this.hide(),this._closeTimer=null},Math.max(0,e))}_ensurePortalEl(){if(this._portalEl)return this._portalEl;const t=document.createElement("div");if(t.className="tooltip",t.id=this._id,t.setAttribute("role","tooltip"),!this.hasAttribute("headless")){const o=document.createElement("style");o.setAttribute("data-ui-tooltip-style",""),o.textContent=m,t.appendChild(o)}const e=document.createElement("div");return e.className="tooltip-content",t.appendChild(e),t.addEventListener("mouseenter",this._onPortalMouseEnter),t.addEventListener("mouseleave",this._onPortalMouseLeave),this._portalEl=t,t}_handlePortalMouseEnter(){this._pointerInsidePortal=!0,this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null)}_handlePortalMouseLeave(){this._pointerInsidePortal=!1,l(this.getAttribute("interactive"))&&this._scheduleHide()}_renderPortalContent(){const t=this._ensurePortalEl(),e=this.getAttribute("text")||this.getAttribute("aria-label")||"",o=_(this.getAttribute("placement")),u=this.getAttribute("variant")||"default",v=this.getAttribute("size")||"md",g=this.getAttribute("tone")||"default",h=!this.hasAttribute("arrow")||b(this.getAttribute("arrow")),x=l(this.getAttribute("interactive")),c=this.hasAttribute("headless"),r=t.querySelector("style[data-ui-tooltip-style]");if(!c&&!r){const s=document.createElement("style");s.setAttribute("data-ui-tooltip-style",""),s.textContent=m,t.prepend(s)}else c&&r&&r.remove();t.setAttribute("data-variant",u),t.setAttribute("data-size",v),t.setAttribute("data-tone",g),t.setAttribute("data-placement",o),t.setAttribute("data-interactive",x?"true":"false");const p=t.querySelector(".tooltip-content");p&&(p.textContent=e);const n=t.querySelector(".arrow");if(h&&!n){const s=document.createElement("div");s.className="arrow",t.appendChild(s)}!h&&n&&n.remove()}_reposition(){if(!this._portalEl)return;this._cleanup&&(this._cleanup(),this._cleanup=null);const t=_(this.getAttribute("placement")),e=a(this.getAttribute("offset"),8);this._cleanup=w.showPortalFor(this,this._portalEl,{placement:t,offset:e,shift:!0,flip:!0})}_syncOpenAttr(t){this._syncingOpenAttr=!0;try{t?this.hasAttribute("open")||this.setAttribute("open",""):this.hasAttribute("open")&&this.removeAttribute("open")}finally{this._syncingOpenAttr=!1}}show(){if(this.hasAttribute("disabled")||!(this.getAttribute("text")||this.getAttribute("aria-label")||"").trim())return;this._clearTimers(),this._renderPortalContent(),this._reposition(),this._portalEl&&(this._portalEl.classList.remove("closing"),this._portalEl.classList.add("show"),this.setAttribute("aria-describedby",this._id)),this._bindDocumentDismiss();const e=this._isOpen;this._isOpen=!0,this._syncOpenAttr(!0),e||(this.dispatchEvent(new CustomEvent("open",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:{open:!0},bubbles:!0,composed:!0})))}hide(t=!1){this._clearTimers(),this._unbindDocumentDismiss(),this._cleanup&&(this._cleanup(),this._cleanup=null);const e=this._portalEl;e&&(e.classList.remove("show"),e.classList.add("closing"),t?this._removePortal():this._exitTimer=setTimeout(()=>{this._removePortal(),this._exitTimer=null},y)),this._pointerInsidePortal=!1,this.removeAttribute("aria-describedby");const o=this._isOpen;this._isOpen=!1,this._syncOpenAttr(!1),o&&(this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:{open:!1},bubbles:!0,composed:!0})))}_removePortal(){this._portalEl&&(this._portalEl.removeEventListener("mouseenter",this._onPortalMouseEnter),this._portalEl.removeEventListener("mouseleave",this._onPortalMouseLeave),this._portalEl.parentElement&&this._portalEl.parentElement.removeChild(this._portalEl),this._portalEl=null)}_bindDocumentDismiss(){this._triggerEnabled("click")&&document.addEventListener("pointerdown",this._onDocumentPointerDown)}_unbindDocumentDismiss(){document.removeEventListener("pointerdown",this._onDocumentPointerDown)}_handleDocumentPointerDown(t){if(!this._isOpen)return;const e=t.target;e&&(this.contains(e)||this._portalEl?.contains(e)||this.hide())}shouldRenderOnAttributeChange(t,e,o){return!1}_onMouseEnter(){this._triggerEnabled("hover")&&this._scheduleShow()}_onMouseLeave(){this._triggerEnabled("hover")&&this._scheduleHide()}_onFocusIn(){this._triggerEnabled("focus")&&this._scheduleShow(0)}_onFocusOut(t){if(!this._triggerEnabled("focus"))return;const e=t.relatedTarget;e&&this.contains(e)||e&&this._portalEl?.contains(e)||this._scheduleHide(0)}_onClick(){this._triggerEnabled("click")&&(this._isOpen?this.hide():this._scheduleShow(0))}_onKeyDown(t){t.key==="Escape"&&this._isOpen&&(t.preventDefault(),this.hide())}render(){this.setContent("<slot></slot>")}}typeof customElements<"u"&&!customElements.get("ui-tooltip")&&customElements.define("ui-tooltip",f);exports.UITooltip=f;
|
package/dist/tooltip.esm.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { E as x } from "./ElementBase-
|
|
2
|
-
import { s as E } from "./portal-
|
|
3
|
-
import "./positioner-e9770c66.mjs";
|
|
1
|
+
import { E as x } from "./ElementBase-YlTLMsGk.mjs";
|
|
2
|
+
import { s as E } from "./portal-bR42gHvG.mjs";
|
|
4
3
|
const d = 140, w = 120, m = `
|
|
5
4
|
.tooltip {
|
|
6
5
|
color-scheme: light dark;
|
|
@@ -160,25 +159,24 @@ const d = 140, w = 120, m = `
|
|
|
160
159
|
}
|
|
161
160
|
}
|
|
162
161
|
`;
|
|
163
|
-
function b(
|
|
164
|
-
if (
|
|
165
|
-
|
|
166
|
-
const t = String(o).toLowerCase();
|
|
162
|
+
function b(i) {
|
|
163
|
+
if (i == null) return !1;
|
|
164
|
+
const t = String(i).toLowerCase();
|
|
167
165
|
return t !== "false" && t !== "0" && t !== "off";
|
|
168
166
|
}
|
|
169
|
-
function a(
|
|
170
|
-
const e = Number(
|
|
167
|
+
function a(i, t) {
|
|
168
|
+
const e = Number(i);
|
|
171
169
|
return Number.isFinite(e) ? e : t;
|
|
172
170
|
}
|
|
173
|
-
function _(
|
|
174
|
-
return
|
|
171
|
+
function _(i) {
|
|
172
|
+
return i === "top" || i === "right" || i === "bottom" || i === "left" ? i : "top";
|
|
175
173
|
}
|
|
176
|
-
function A(
|
|
177
|
-
const t = (
|
|
174
|
+
function A(i) {
|
|
175
|
+
const t = (i || "hover focus").trim().toLowerCase();
|
|
178
176
|
return t ? new Set(t.split(/[\s,]+/).filter(Boolean)) : /* @__PURE__ */ new Set(["hover", "focus"]);
|
|
179
177
|
}
|
|
180
|
-
function l(
|
|
181
|
-
return b(
|
|
178
|
+
function l(i) {
|
|
179
|
+
return b(i);
|
|
182
180
|
}
|
|
183
181
|
class y extends x {
|
|
184
182
|
constructor() {
|
|
@@ -209,8 +207,8 @@ class y extends x {
|
|
|
209
207
|
disconnectedCallback() {
|
|
210
208
|
this.removeEventListener("mouseenter", this._onMouseEnter), this.removeEventListener("mouseleave", this._onMouseLeave), this.removeEventListener("focusin", this._onFocusIn), this.removeEventListener("focusout", this._onFocusOut), this.removeEventListener("click", this._onClick), this.removeEventListener("keydown", this._onKeyDown), this._clearTimers(), this.hide(!0), super.disconnectedCallback();
|
|
211
209
|
}
|
|
212
|
-
attributeChangedCallback(t, e,
|
|
213
|
-
if (e !==
|
|
210
|
+
attributeChangedCallback(t, e, o) {
|
|
211
|
+
if (e !== o) {
|
|
214
212
|
if (t === "open" && !this._syncingOpenAttr) {
|
|
215
213
|
this.hasAttribute("open") ? this._scheduleShow(0) : this._scheduleHide(0);
|
|
216
214
|
return;
|
|
@@ -237,8 +235,7 @@ class y extends x {
|
|
|
237
235
|
return e.has("manual") ? t === "manual" : e.has(t);
|
|
238
236
|
}
|
|
239
237
|
_scheduleShow(t) {
|
|
240
|
-
if (this.hasAttribute("disabled"))
|
|
241
|
-
return;
|
|
238
|
+
if (this.hasAttribute("disabled")) return;
|
|
242
239
|
this._clearTimers();
|
|
243
240
|
const e = typeof t == "number" ? t : a(this.getAttribute("delay"), 250);
|
|
244
241
|
this._openTimer = setTimeout(() => {
|
|
@@ -257,12 +254,11 @@ class y extends x {
|
|
|
257
254
|
}, Math.max(0, e));
|
|
258
255
|
}
|
|
259
256
|
_ensurePortalEl() {
|
|
260
|
-
if (this._portalEl)
|
|
261
|
-
return this._portalEl;
|
|
257
|
+
if (this._portalEl) return this._portalEl;
|
|
262
258
|
const t = document.createElement("div");
|
|
263
259
|
if (t.className = "tooltip", t.id = this._id, t.setAttribute("role", "tooltip"), !this.hasAttribute("headless")) {
|
|
264
|
-
const
|
|
265
|
-
|
|
260
|
+
const o = document.createElement("style");
|
|
261
|
+
o.setAttribute("data-ui-tooltip-style", ""), o.textContent = m, t.appendChild(o);
|
|
266
262
|
}
|
|
267
263
|
const e = document.createElement("div");
|
|
268
264
|
return e.className = "tooltip-content", t.appendChild(e), t.addEventListener("mouseenter", this._onPortalMouseEnter), t.addEventListener("mouseleave", this._onPortalMouseLeave), this._portalEl = t, t;
|
|
@@ -274,13 +270,12 @@ class y extends x {
|
|
|
274
270
|
this._pointerInsidePortal = !1, l(this.getAttribute("interactive")) && this._scheduleHide();
|
|
275
271
|
}
|
|
276
272
|
_renderPortalContent() {
|
|
277
|
-
const t = this._ensurePortalEl(), e = this.getAttribute("text") || this.getAttribute("aria-label") || "",
|
|
273
|
+
const t = this._ensurePortalEl(), e = this.getAttribute("text") || this.getAttribute("aria-label") || "", o = _(this.getAttribute("placement")), u = this.getAttribute("variant") || "default", f = this.getAttribute("size") || "md", v = this.getAttribute("tone") || "default", h = !this.hasAttribute("arrow") || b(this.getAttribute("arrow")), g = l(this.getAttribute("interactive")), c = this.hasAttribute("headless"), r = t.querySelector("style[data-ui-tooltip-style]");
|
|
278
274
|
if (!c && !r) {
|
|
279
275
|
const s = document.createElement("style");
|
|
280
276
|
s.setAttribute("data-ui-tooltip-style", ""), s.textContent = m, t.prepend(s);
|
|
281
|
-
} else
|
|
282
|
-
|
|
283
|
-
t.setAttribute("data-variant", u), t.setAttribute("data-size", f), t.setAttribute("data-tone", v), t.setAttribute("data-placement", i), t.setAttribute("data-interactive", g ? "true" : "false");
|
|
277
|
+
} else c && r && r.remove();
|
|
278
|
+
t.setAttribute("data-variant", u), t.setAttribute("data-size", f), t.setAttribute("data-tone", v), t.setAttribute("data-placement", o), t.setAttribute("data-interactive", g ? "true" : "false");
|
|
284
279
|
const p = t.querySelector(".tooltip-content");
|
|
285
280
|
p && (p.textContent = e);
|
|
286
281
|
const n = t.querySelector(".arrow");
|
|
@@ -291,8 +286,7 @@ class y extends x {
|
|
|
291
286
|
!h && n && n.remove();
|
|
292
287
|
}
|
|
293
288
|
_reposition() {
|
|
294
|
-
if (!this._portalEl)
|
|
295
|
-
return;
|
|
289
|
+
if (!this._portalEl) return;
|
|
296
290
|
this._cleanup && (this._cleanup(), this._cleanup = null);
|
|
297
291
|
const t = _(this.getAttribute("placement")), e = a(this.getAttribute("offset"), 8);
|
|
298
292
|
this._cleanup = E(this, this._portalEl, {
|
|
@@ -311,8 +305,7 @@ class y extends x {
|
|
|
311
305
|
}
|
|
312
306
|
}
|
|
313
307
|
show() {
|
|
314
|
-
if (this.hasAttribute("disabled") || !(this.getAttribute("text") || this.getAttribute("aria-label") || "").trim())
|
|
315
|
-
return;
|
|
308
|
+
if (this.hasAttribute("disabled") || !(this.getAttribute("text") || this.getAttribute("aria-label") || "").trim()) return;
|
|
316
309
|
this._clearTimers(), this._renderPortalContent(), this._reposition(), this._portalEl && (this._portalEl.classList.remove("closing"), this._portalEl.classList.add("show"), this.setAttribute("aria-describedby", this._id)), this._bindDocumentDismiss();
|
|
317
310
|
const e = this._isOpen;
|
|
318
311
|
this._isOpen = !0, this._syncOpenAttr(!0), e || (this.dispatchEvent(new CustomEvent("open", { bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("change", { detail: { open: !0 }, bubbles: !0, composed: !0 })));
|
|
@@ -323,8 +316,8 @@ class y extends x {
|
|
|
323
316
|
e && (e.classList.remove("show"), e.classList.add("closing"), t ? this._removePortal() : this._exitTimer = setTimeout(() => {
|
|
324
317
|
this._removePortal(), this._exitTimer = null;
|
|
325
318
|
}, w)), this._pointerInsidePortal = !1, this.removeAttribute("aria-describedby");
|
|
326
|
-
const
|
|
327
|
-
this._isOpen = !1, this._syncOpenAttr(!1),
|
|
319
|
+
const o = this._isOpen;
|
|
320
|
+
this._isOpen = !1, this._syncOpenAttr(!1), o && (this.dispatchEvent(new CustomEvent("close", { bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("change", { detail: { open: !1 }, bubbles: !0, composed: !0 })));
|
|
328
321
|
}
|
|
329
322
|
_removePortal() {
|
|
330
323
|
this._portalEl && (this._portalEl.removeEventListener("mouseenter", this._onPortalMouseEnter), this._portalEl.removeEventListener("mouseleave", this._onPortalMouseLeave), this._portalEl.parentElement && this._portalEl.parentElement.removeChild(this._portalEl), this._portalEl = null);
|
|
@@ -336,13 +329,11 @@ class y extends x {
|
|
|
336
329
|
document.removeEventListener("pointerdown", this._onDocumentPointerDown);
|
|
337
330
|
}
|
|
338
331
|
_handleDocumentPointerDown(t) {
|
|
339
|
-
|
|
340
|
-
if (!this._isOpen)
|
|
341
|
-
return;
|
|
332
|
+
if (!this._isOpen) return;
|
|
342
333
|
const e = t.target;
|
|
343
|
-
e && (this.contains(e) ||
|
|
334
|
+
e && (this.contains(e) || this._portalEl?.contains(e) || this.hide());
|
|
344
335
|
}
|
|
345
|
-
shouldRenderOnAttributeChange(t, e,
|
|
336
|
+
shouldRenderOnAttributeChange(t, e, o) {
|
|
346
337
|
return !1;
|
|
347
338
|
}
|
|
348
339
|
_onMouseEnter() {
|
|
@@ -355,11 +346,9 @@ class y extends x {
|
|
|
355
346
|
this._triggerEnabled("focus") && this._scheduleShow(0);
|
|
356
347
|
}
|
|
357
348
|
_onFocusOut(t) {
|
|
358
|
-
|
|
359
|
-
if (!this._triggerEnabled("focus"))
|
|
360
|
-
return;
|
|
349
|
+
if (!this._triggerEnabled("focus")) return;
|
|
361
350
|
const e = t.relatedTarget;
|
|
362
|
-
e && this.contains(e) || e &&
|
|
351
|
+
e && this.contains(e) || e && this._portalEl?.contains(e) || this._scheduleHide(0);
|
|
363
352
|
}
|
|
364
353
|
_onClick() {
|
|
365
354
|
this._triggerEnabled("click") && (this._isOpen ? this.hide() : this._scheduleShow(0));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const q=require("./ElementBase-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const q=require("./ElementBase-EV6mVBUV.js"),U=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-transfer-accent: var(--ui-color-primary, #2563eb);
|
|
4
4
|
--ui-transfer-text: var(--ui-color-text, #0f172a);
|
|
@@ -656,7 +656,7 @@
|
|
|
656
656
|
min-inline-size: 0;
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
|
-
`;function l(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function
|
|
659
|
+
`;function l(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function x(n){if(!n)return[];try{const e=JSON.parse(n);if(!Array.isArray(e))return[];const t=[];return e.forEach(r=>{if(!r||typeof r!="object")return;const a={value:String(r.value??""),label:String(r.label??r.value??""),disabled:!!r.disabled};r.description&&(a.description=String(r.description)),a.value&&t.push(a)}),t}catch{return[]}}function z(n){if(!n)return[];try{const e=JSON.parse(n);return Array.isArray(e)?e.map(t=>String(t)):[]}catch{return[]}}function y(n,e){return new Set(Array.from(n).filter(t=>e.has(t)))}function R(n){return n==="tick"||n==="none"?n:"checkbox"}function p(n,e){return n==null?e:n===""||n==="true"||n==="1"||n==="yes"?!0:n==="false"||n==="0"||n==="no"?!1:e}function _(n){return`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="${n==="right"?"M9 6l6 6-6 6":"M15 6l-6 6 6 6"}"/></svg>`}class k extends q.ElementBase{constructor(){super(...arguments),this._options=[],this._value=[],this._selectedAvailable=new Set,this._selectedChosen=new Set,this._formUnregister=null,this._suppressValueAttr=!1,this._delegatedListenersAttached=!1,this._handleRootClick=e=>{const t=e.target;if(!t)return;const r=t.closest(".move-btn");if(r&&this.root.contains(r)){this._move(r.getAttribute("data-action"));return}const a=t.closest(".item");a&&this.root.contains(a)&&this._toggleItem(a)},this._handleRootKeyDown=e=>{const t=e.target;if(!t)return;const r=t.closest(".item");r&&this.root.contains(r)&&this._onItemKeyDown(e,r)}}static get observedAttributes(){return["options","value","label","description","error","name","disabled","variant","tone","size","radius","elevation","available-label","selected-label","available-empty-label","selected-empty-label","selection-indicator","add-action-label","remove-action-label","show-action-labels","show-action-counts","show-panel-counts"]}get value(){return[...this._value]}set value(e){this._applyValue(e,"api")}connectedCallback(){super.connectedCallback(),this._attachDelegatedListeners(),this._registerWithForm()}disconnectedCallback(){this._formUnregister&&this._formUnregister(),this._detachDelegatedListeners(),super.disconnectedCallback()}attributeChangedCallback(e,t,r){t!==r&&(e==="options"&&(this._options=x(r)),e==="value"&&!this._suppressValueAttr&&(this._value=z(r)),e==="name"&&this.isConnected&&this._registerWithForm(),e==="disabled"&&(this._selectedAvailable.clear(),this._selectedChosen.clear()),this.isConnected&&this.requestRender())}render(){this._options.length||(this._options=x(this.getAttribute("options"))),!this._value.length&&this.getAttribute("value")&&(this._value=z(this.getAttribute("value")));const e=new Set(this._value),t=this._options.filter(i=>!e.has(i.value)),r=this._options.filter(i=>e.has(i.value)),a=new Set(t.map(i=>i.value)),o=new Set(r.map(i=>i.value));this._selectedAvailable=y(this._selectedAvailable,a),this._selectedChosen=y(this._selectedChosen,o);const s=this.getAttribute("label")||"",c=this.getAttribute("description")||"",u=this.getAttribute("error")||"",w=this.getAttribute("available-label")||"Available",A=this.getAttribute("selected-label")||"Selected",$=this.getAttribute("available-empty-label")||"No items available to add.",S=this.getAttribute("selected-empty-label")||"No items selected yet.",C=R(this.getAttribute("selection-indicator")),L=this.getAttribute("add-action-label")||"Add selected",E=this.getAttribute("remove-action-label")||"Remove selected",d=p(this.getAttribute("show-action-labels"),!0),f=p(this.getAttribute("show-action-counts"),!0),b=p(this.getAttribute("show-panel-counts"),!0),h=this.getAttribute("radius"),I=h?` style="--ui-transfer-panel-radius:${l(h)};"`:"",m=()=>C==="none"?"":'<span class="indicator" part="indicator" aria-hidden="true"><span class="indicator-box"><span class="indicator-mark">✓</span></span></span>',g=i=>d?`<span class="move-btn-text">${l(i)}</span>`:"",v=i=>f?`<span class="move-btn-count">${i}</span>`:"",V=t.length?t.map(i=>`<div
|
|
660
660
|
class="item"
|
|
661
661
|
part="item available-item"
|
|
662
662
|
role="option"
|
|
@@ -667,12 +667,12 @@
|
|
|
667
667
|
aria-disabled="${i.disabled?"true":"false"}"
|
|
668
668
|
tabindex="${i.disabled?"-1":"0"}"
|
|
669
669
|
>
|
|
670
|
-
${
|
|
670
|
+
${m()}
|
|
671
671
|
<div class="item-copy">
|
|
672
672
|
<span class="item-title">${l(i.label)}</span>
|
|
673
673
|
${i.description?`<span class="item-description">${l(i.description)}</span>`:""}
|
|
674
674
|
</div>
|
|
675
|
-
</div>`).join(""):`<div class="empty" part="empty">${l($)}</div>`,D=
|
|
675
|
+
</div>`).join(""):`<div class="empty" part="empty">${l($)}</div>`,D=r.length?r.map(i=>`<div
|
|
676
676
|
class="item"
|
|
677
677
|
part="item selected-item"
|
|
678
678
|
role="option"
|
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
aria-disabled="${i.disabled?"true":"false"}"
|
|
684
684
|
tabindex="${i.disabled?"-1":"0"}"
|
|
685
685
|
>
|
|
686
|
-
${
|
|
686
|
+
${m()}
|
|
687
687
|
<div class="item-copy">
|
|
688
688
|
<span class="item-title">${l(i.label)}</span>
|
|
689
689
|
${i.description?`<span class="item-description">${l(i.description)}</span>`:""}
|
|
@@ -697,8 +697,8 @@
|
|
|
697
697
|
<section class="panel" part="panel panel-available">
|
|
698
698
|
<div class="panel-header" part="panel-header">
|
|
699
699
|
<div class="panel-heading">
|
|
700
|
-
<div class="panel-title">${l(
|
|
701
|
-
${
|
|
700
|
+
<div class="panel-title">${l(w)}</div>
|
|
701
|
+
${b?`<span class="panel-count" part="count">${t.length}</span>`:""}
|
|
702
702
|
</div>
|
|
703
703
|
<div class="panel-help">Choose entries to move into the selected list.</div>
|
|
704
704
|
</div>
|
|
@@ -706,29 +706,29 @@
|
|
|
706
706
|
<div class="summary" part="summary">${t.length} available</div>
|
|
707
707
|
</section>
|
|
708
708
|
<div class="actions" part="actions">
|
|
709
|
-
<button class="move-btn" part="action-button action-add" data-compact="${!
|
|
710
|
-
<span class="move-btn-icon" aria-hidden="true">${
|
|
711
|
-
${
|
|
712
|
-
${
|
|
709
|
+
<button class="move-btn" part="action-button action-add" data-compact="${!d&&!f}" data-action="add" type="button"${this._selectedAvailable.size?"":" disabled"}>
|
|
710
|
+
<span class="move-btn-icon" aria-hidden="true">${_("right")}</span>
|
|
711
|
+
${g(L)}
|
|
712
|
+
${v(this._selectedAvailable.size||0)}
|
|
713
713
|
</button>
|
|
714
|
-
<button class="move-btn" part="action-button action-remove" data-compact="${!
|
|
715
|
-
<span class="move-btn-icon" aria-hidden="true">${
|
|
716
|
-
${
|
|
717
|
-
${
|
|
714
|
+
<button class="move-btn" part="action-button action-remove" data-compact="${!d&&!f}" data-action="remove" type="button"${this._selectedChosen.size?"":" disabled"}>
|
|
715
|
+
<span class="move-btn-icon" aria-hidden="true">${_("left")}</span>
|
|
716
|
+
${g(E)}
|
|
717
|
+
${v(this._selectedChosen.size||0)}
|
|
718
718
|
</button>
|
|
719
719
|
</div>
|
|
720
720
|
<section class="panel" part="panel panel-selected">
|
|
721
721
|
<div class="panel-header" part="panel-header">
|
|
722
722
|
<div class="panel-heading">
|
|
723
|
-
<div class="panel-title">${l(
|
|
724
|
-
${
|
|
723
|
+
<div class="panel-title">${l(A)}</div>
|
|
724
|
+
${b?`<span class="panel-count" part="count">${r.length}</span>`:""}
|
|
725
725
|
</div>
|
|
726
726
|
<div class="panel-help">Use the remove action to send items back.</div>
|
|
727
727
|
</div>
|
|
728
728
|
<div class="list" part="list selected-list" data-list="chosen" role="listbox" aria-multiselectable="true">${D}</div>
|
|
729
|
-
<div class="summary" part="summary">${
|
|
729
|
+
<div class="summary" part="summary">${r.length} selected</div>
|
|
730
730
|
</section>
|
|
731
731
|
</div>
|
|
732
732
|
${u?`<p class="error" part="error">${l(u)}</p>`:""}
|
|
733
733
|
</div>
|
|
734
|
-
`)}_toggleItem(
|
|
734
|
+
`)}_toggleItem(e){if(this.hasAttribute("disabled"))return;const t=e.getAttribute("data-side"),r=e.getAttribute("data-value")||"";if(!r)return;const a=t==="chosen"?this._selectedChosen:this._selectedAvailable;a.has(r)?a.delete(r):a.add(r),e.setAttribute("data-selected",a.has(r)?"true":"false"),e.setAttribute("aria-selected",a.has(r)?"true":"false"),this._syncActionButtons()}_onItemKeyDown(e,t){const r=t.getAttribute("data-side");if(!r)return;if(e.key==="Enter"||e.key===" "){e.preventDefault(),this._toggleItem(t);return}if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;e.preventDefault();const a=this.root.querySelector(`[data-list="${r}"]`),o=Array.from(a?.querySelectorAll('.item[tabindex="0"]')||[]);if(!o.length)return;const s=o.indexOf(t);if(e.key==="Home"){o[0]?.focus();return}if(e.key==="End"){o[o.length-1]?.focus();return}const c=e.key==="ArrowDown"?Math.min(o.length-1,s+1):Math.max(0,s-1);o[c]?.focus()}_move(e){if(!this.hasAttribute("disabled")){if(e==="add"){const t=[...this._value,...Array.from(this._selectedAvailable).filter(r=>!this._value.includes(r))];this._selectedAvailable.clear(),this._applyValue(t,"transfer-right");return}if(e==="remove"){const t=new Set(this._selectedChosen),r=this._value.filter(a=>!t.has(a));this._selectedChosen.clear(),this._applyValue(r,"transfer-left")}}}_attachDelegatedListeners(){this._delegatedListenersAttached||(this.root.addEventListener("click",this._handleRootClick),this.root.addEventListener("keydown",this._handleRootKeyDown),this._delegatedListenersAttached=!0)}_detachDelegatedListeners(){this._delegatedListenersAttached&&(this.root.removeEventListener("click",this._handleRootClick),this.root.removeEventListener("keydown",this._handleRootKeyDown),this._delegatedListenersAttached=!1)}_applyValue(e,t){const r=new Set(this._options.map(s=>s.value)),a=Array.from(new Set(e.filter(s=>s&&(r.size===0||r.has(s))))),o=[...this._value];this._value=a,this._suppressValueAttr=!0;try{a.length?this.setAttribute("value",JSON.stringify(a)):this.removeAttribute("value")}finally{this._suppressValueAttr=!1}a.length>0&&this.removeAttribute("invalid"),this.requestRender(),this.dispatchEvent(new CustomEvent("change",{detail:{value:[...this._value],previousValue:o,selectedItems:this._options.filter(s=>this._value.includes(s.value)),source:t},bubbles:!0,composed:!0}))}_syncActionButtons(){const e=this.root.querySelector('[data-action="add"]'),t=this.root.querySelector('[data-action="remove"]');if(e){e.disabled=this._selectedAvailable.size===0;const r=e.querySelector(".move-btn-count");r&&(r.textContent=String(this._selectedAvailable.size))}if(t){t.disabled=this._selectedChosen.size===0;const r=t.querySelector(".move-btn-count");r&&(r.textContent=String(this._selectedChosen.size))}}_registerWithForm(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null);try{const a=this.getRootNode().host?.closest?.("ui-form")||null||this.closest("ui-form"),o=this.getAttribute("name");a&&typeof a.registerField=="function"&&o&&(this._formUnregister=a.registerField(o,{name:o,getValue:()=>[...this._value],setValue:s=>{const c=Array.isArray(s)?s.map(u=>String(u)):[];this._applyValue(c,"api")},validate:async()=>({valid:!this.hasAttribute("required")||this._value.length>0,message:"Select at least one item."}),setError:s=>{s?(this.setAttribute("error",s),this.setAttribute("invalid","")):(this.removeAttribute("error"),this.removeAttribute("invalid")),this.requestRender()}}))}catch{}}}typeof customElements<"u"&&!customElements.get("ui-transfer-list")&&customElements.define("ui-transfer-list",k);exports.UITransferList=k;
|