@threadlabs/looma 0.1.23 → 0.1.24
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/chunk-HNFCGIBP.js +8 -0
- package/dist/{chunk-GDMQKT5F.js → chunk-IMHSPETJ.js} +32 -30
- package/dist/chunk-NB6DBRXQ.js +323 -0
- package/dist/cjs/controlled-state-BFya8rAX.js +9 -0
- package/dist/cjs/icons-BAdjrnhS.js +680 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/looma.cjs.js +1 -1
- package/dist/cjs/ui-affordance-scope.cjs.entry.js +1 -1
- package/dist/cjs/ui-avatar-group.cjs.entry.js +9 -17
- package/dist/cjs/ui-avatar.cjs.entry.js +2 -2
- package/dist/cjs/ui-badge.cjs.entry.js +2 -2
- package/dist/cjs/ui-button.cjs.entry.js +1 -1
- package/dist/cjs/ui-callout.cjs.entry.js +27 -0
- package/dist/cjs/ui-checkbox.cjs.entry.js +13 -7
- package/dist/cjs/ui-chip.cjs.entry.js +19 -0
- package/dist/cjs/ui-combobox.cjs.entry.js +3 -3
- package/dist/cjs/ui-context-menu.cjs.entry.js +1 -1
- package/dist/cjs/ui-dialog.cjs.entry.js +44 -8
- package/dist/cjs/ui-disclosure.cjs.entry.js +9 -6
- package/dist/cjs/ui-floating-action-button.cjs.entry.js +1 -1
- package/dist/cjs/ui-form-field.cjs.entry.js +59 -4
- package/dist/cjs/ui-icon-button.cjs.entry.js +1 -1
- package/dist/cjs/ui-input.cjs.entry.js +1 -1
- package/dist/cjs/ui-menu-item.cjs.entry.js +2 -2
- package/dist/cjs/ui-menu.cjs.entry.js +14 -9
- package/dist/cjs/ui-popover.cjs.entry.js +10 -7
- package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/ui-radio.cjs.entry.js +16 -7
- package/dist/cjs/ui-search-result-row.cjs.entry.js +1 -1
- package/dist/cjs/ui-search-shell.cjs.entry.js +1 -1
- package/dist/cjs/ui-select.cjs.entry.js +1 -1
- package/dist/cjs/ui-switch.cjs.entry.js +19 -10
- package/dist/cjs/ui-tabs.cjs.entry.js +10 -9
- package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
- package/dist/cjs/ui-toast-region.cjs.entry.js +30 -19
- package/dist/cjs/ui-tooltip.cjs.entry.js +12 -8
- package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
- package/dist/cjs/ui-tree-item.cjs.entry.js +54 -617
- package/dist/cjs/ui-tree.cjs.entry.js +123 -11
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/ui-affordance-scope/ui-affordance-scope.js +1 -1
- package/dist/collection/components/ui-avatar/ui-avatar.css +4 -4
- package/dist/collection/components/ui-avatar/ui-avatar.js +1 -1
- package/dist/collection/components/ui-avatar-group/ui-avatar-group.css +2 -2
- package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +8 -16
- package/dist/collection/components/ui-badge/ui-badge.css +64 -48
- package/dist/collection/components/ui-badge/ui-badge.js +1 -1
- package/dist/collection/components/ui-button/ui-button.js +1 -1
- package/dist/collection/components/ui-callout/ui-callout.css +74 -0
- package/dist/collection/components/ui-callout/ui-callout.js +59 -0
- package/dist/collection/components/ui-checkbox/ui-checkbox.js +16 -11
- package/dist/collection/components/ui-chip/ui-chip.css +43 -0
- package/dist/collection/components/ui-chip/ui-chip.js +45 -0
- package/dist/collection/components/ui-combobox/ui-combobox.js +3 -3
- package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
- package/dist/collection/components/ui-dialog/ui-dialog.js +49 -13
- package/dist/collection/components/ui-disclosure/ui-disclosure.js +12 -10
- package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
- package/dist/collection/components/ui-form-field/ui-form-field.js +59 -4
- package/dist/collection/components/ui-icon-button/ui-icon-button.js +1 -1
- package/dist/collection/components/ui-input/ui-input.js +1 -1
- package/dist/collection/components/ui-menu/ui-menu.css +12 -23
- package/dist/collection/components/ui-menu/ui-menu.js +16 -12
- package/dist/collection/components/ui-menu-item/ui-menu-item.css +9 -3
- package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
- package/dist/collection/components/ui-popover/ui-popover.css +14 -5
- package/dist/collection/components/ui-popover/ui-popover.js +12 -10
- package/dist/collection/components/ui-radio/ui-radio.js +24 -11
- package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
- package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
- package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
- package/dist/collection/components/ui-select/ui-select.js +1 -1
- package/dist/collection/components/ui-switch/ui-switch.js +22 -14
- package/dist/collection/components/ui-tabs/ui-tabs.js +13 -13
- package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
- package/dist/collection/components/ui-toast-region/ui-toast-region.js +30 -19
- package/dist/collection/components/ui-tooltip/ui-tooltip.css +16 -7
- package/dist/collection/components/ui-tooltip/ui-tooltip.js +14 -11
- package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
- package/dist/collection/components/ui-tree/ui-tree.css +2 -1
- package/dist/collection/components/ui-tree/ui-tree.js +122 -10
- package/dist/collection/components/ui-tree-item/ui-tree-item.js +61 -44
- package/dist/collection/icons.js +6 -1
- package/dist/collection/utils/controlled-state.js +4 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +1 -1
- package/dist/components/p-Bk55QiUK.js +1 -0
- package/dist/components/p-BnGhGgTH.js +1 -0
- package/dist/components/p-CoFximGM.js +13 -0
- package/dist/components/p-DIGcRYAW.js +1 -0
- package/dist/components/ui-affordance-scope.js +1 -1
- package/dist/components/ui-avatar-group.js +1 -1
- package/dist/components/ui-avatar.js +1 -1
- package/dist/components/ui-badge.js +1 -1
- package/dist/components/ui-button.js +1 -1
- package/dist/components/ui-callout.d.ts +11 -0
- package/dist/components/ui-callout.js +1 -0
- package/dist/components/ui-checkbox.js +1 -1
- package/dist/components/ui-chip.d.ts +11 -0
- package/dist/components/ui-chip.js +1 -0
- package/dist/components/ui-combobox.js +1 -1
- package/dist/components/ui-context-menu.js +1 -1
- package/dist/components/ui-dialog.js +1 -1
- package/dist/components/ui-disclosure.js +1 -1
- package/dist/components/ui-floating-action-button.js +1 -1
- package/dist/components/ui-form-field.js +1 -1
- package/dist/components/ui-icon-button.js +1 -1
- package/dist/components/ui-input.js +1 -1
- package/dist/components/ui-menu-item.js +1 -1
- package/dist/components/ui-menu.js +1 -1
- package/dist/components/ui-popover.js +1 -1
- package/dist/components/ui-radio-group.js +1 -1
- package/dist/components/ui-radio.js +1 -1
- package/dist/components/ui-search-result-row.js +1 -1
- package/dist/components/ui-search-shell.js +1 -1
- package/dist/components/ui-select.js +1 -1
- package/dist/components/ui-switch.js +1 -1
- package/dist/components/ui-tabs.js +1 -1
- package/dist/components/ui-textarea.js +1 -1
- package/dist/components/ui-toast-region.js +1 -1
- package/dist/components/ui-tooltip.js +1 -1
- package/dist/components/ui-top-bar.js +1 -1
- package/dist/components/ui-tree-item.js +1 -13
- package/dist/components/ui-tree.js +1 -1
- package/dist/esm/controlled-state-BnGhGgTH.js +6 -0
- package/dist/esm/icons-CoFximGM.js +678 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/looma.js +1 -1
- package/dist/esm/ui-affordance-scope.entry.js +1 -1
- package/dist/esm/ui-avatar-group.entry.js +9 -17
- package/dist/esm/ui-avatar.entry.js +2 -2
- package/dist/esm/ui-badge.entry.js +2 -2
- package/dist/esm/ui-button.entry.js +1 -1
- package/dist/esm/ui-callout.entry.js +25 -0
- package/dist/esm/ui-checkbox.entry.js +13 -7
- package/dist/esm/ui-chip.entry.js +17 -0
- package/dist/esm/ui-combobox.entry.js +3 -3
- package/dist/esm/ui-context-menu.entry.js +1 -1
- package/dist/esm/ui-dialog.entry.js +44 -8
- package/dist/esm/ui-disclosure.entry.js +9 -6
- package/dist/esm/ui-floating-action-button.entry.js +1 -1
- package/dist/esm/ui-form-field.entry.js +59 -4
- package/dist/esm/ui-icon-button.entry.js +1 -1
- package/dist/esm/ui-input.entry.js +1 -1
- package/dist/esm/ui-menu-item.entry.js +2 -2
- package/dist/esm/ui-menu.entry.js +14 -9
- package/dist/esm/ui-popover.entry.js +10 -7
- package/dist/esm/ui-radio-group.entry.js +1 -1
- package/dist/esm/ui-radio.entry.js +16 -7
- package/dist/esm/ui-search-result-row.entry.js +1 -1
- package/dist/esm/ui-search-shell.entry.js +1 -1
- package/dist/esm/ui-select.entry.js +1 -1
- package/dist/esm/ui-switch.entry.js +19 -10
- package/dist/esm/ui-tabs.entry.js +10 -9
- package/dist/esm/ui-textarea.entry.js +1 -1
- package/dist/esm/ui-toast-region.entry.js +30 -19
- package/dist/esm/ui-tooltip.entry.js +12 -8
- package/dist/esm/ui-top-bar.entry.js +1 -1
- package/dist/esm/ui-tree-item.entry.js +54 -617
- package/dist/esm/ui-tree.entry.js +123 -11
- package/dist/index.cjs +1224 -842
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +12 -2
- package/dist/looma/looma.esm.js +1 -1
- package/dist/looma/p-03f44c45.entry.js +1 -0
- package/dist/looma/p-08f80207.entry.js +1 -0
- package/dist/looma/{p-f74e5546.entry.js → p-13f8195a.entry.js} +1 -1
- package/dist/looma/{p-5a87b59d.entry.js → p-25e18ad6.entry.js} +1 -1
- package/dist/looma/p-2c03fa73.entry.js +1 -0
- package/dist/looma/{p-ed368426.entry.js → p-314d5c7c.entry.js} +1 -1
- package/dist/looma/{p-5da09f47.entry.js → p-3ef2a21b.entry.js} +1 -1
- package/dist/looma/{p-f0487ff3.entry.js → p-5a900d89.entry.js} +1 -1
- package/dist/looma/p-5fdcee1d.entry.js +1 -0
- package/dist/looma/{p-13347631.entry.js → p-672e3d16.entry.js} +1 -1
- package/dist/looma/{p-582973b5.entry.js → p-68430534.entry.js} +1 -1
- package/dist/looma/{p-add36e74.entry.js → p-72338f53.entry.js} +1 -1
- package/dist/looma/{p-a90d2821.entry.js → p-7ab661ec.entry.js} +1 -1
- package/dist/looma/p-7c4a225f.entry.js +1 -0
- package/dist/looma/p-82f2fa3d.entry.js +1 -0
- package/dist/looma/p-839faf55.entry.js +1 -0
- package/dist/looma/{p-7e0bb7f6.entry.js → p-8e254bc4.entry.js} +1 -1
- package/dist/looma/p-8e6b1001.entry.js +1 -0
- package/dist/looma/p-920656cf.entry.js +1 -0
- package/dist/looma/{p-40fe7fee.entry.js → p-97e8cb0e.entry.js} +1 -1
- package/dist/looma/p-9d2662ca.entry.js +1 -0
- package/dist/looma/p-9e1c4020.entry.js +1 -0
- package/dist/looma/p-BnGhGgTH.js +1 -0
- package/dist/looma/p-CoFximGM.js +13 -0
- package/dist/looma/{p-8b8840b8.entry.js → p-a63e2561.entry.js} +1 -1
- package/dist/looma/p-add67e4c.entry.js +1 -0
- package/dist/looma/p-b63f6d4f.entry.js +1 -0
- package/dist/looma/p-bd00d4e8.entry.js +1 -0
- package/dist/looma/p-cc915913.entry.js +1 -0
- package/dist/looma/p-cfba8f7c.entry.js +1 -0
- package/dist/looma/p-d56571a2.entry.js +1 -0
- package/dist/looma/{p-69a5557b.entry.js → p-e0f241ab.entry.js} +1 -1
- package/dist/looma/p-f1750fd7.entry.js +1 -0
- package/dist/looma/p-fd1e4d22.entry.js +1 -0
- package/dist/types/components/ui-avatar-group/ui-avatar-group.d.ts +1 -2
- package/dist/types/components/ui-callout/ui-callout.d.ts +6 -0
- package/dist/types/components/ui-checkbox/ui-checkbox.d.ts +2 -1
- package/dist/types/components/ui-chip/ui-chip.d.ts +6 -0
- package/dist/types/components/ui-dialog/ui-dialog.d.ts +7 -1
- package/dist/types/components/ui-disclosure/ui-disclosure.d.ts +2 -1
- package/dist/types/components/ui-form-field/ui-form-field.d.ts +8 -0
- package/dist/types/components/ui-menu/ui-menu.d.ts +2 -1
- package/dist/types/components/ui-popover/ui-popover.d.ts +2 -1
- package/dist/types/components/ui-radio/ui-radio.d.ts +4 -1
- package/dist/types/components/ui-switch/ui-switch.d.ts +2 -1
- package/dist/types/components/ui-tabs/ui-tabs.d.ts +2 -1
- package/dist/types/components/ui-toast-region/ui-toast-region.d.ts +3 -1
- package/dist/types/components/ui-tooltip/ui-tooltip.d.ts +2 -1
- package/dist/types/components/ui-tree/ui-tree.d.ts +12 -0
- package/dist/types/components/ui-tree-item/ui-tree-item.d.ts +11 -7
- package/dist/types/components.d.ts +110 -47
- package/dist/types/icons.d.ts +5 -0
- package/dist/types/utils/controlled-state.d.ts +4 -0
- package/dist/{ui-affordance-scope.entry-VO4C2MZX.js → ui-affordance-scope.entry-3TUZ6GLW.js} +2 -2
- package/dist/ui-avatar-group.entry-XGJKN25W.js +51 -0
- package/dist/{ui-avatar.entry-T6FU6ZYM.js → ui-avatar.entry-SN3G44HW.js} +3 -3
- package/dist/ui-badge.entry-B6WDCWJX.js +22 -0
- package/dist/{ui-button.entry-7UXMUGHN.js → ui-button.entry-AZYUELLV.js} +2 -2
- package/dist/ui-callout.entry-QRPWRMPC.js +32 -0
- package/dist/{ui-checkbox.entry-DMZJB3RE.js → ui-checkbox.entry-OB6GFC4M.js} +17 -8
- package/dist/ui-chip.entry-XSNPJXX3.js +22 -0
- package/dist/{ui-combobox.entry-ZCTPXEES.js → ui-combobox.entry-IIMMUJF7.js} +5 -5
- package/dist/{ui-context-menu.entry-2WMCBGCP.js → ui-context-menu.entry-AIULIE5Y.js} +5 -5
- package/dist/{ui-dialog.entry-WO23XOSW.js → ui-dialog.entry-QSYWYHLY.js} +50 -12
- package/dist/{ui-disclosure.entry-USX7OUEW.js → ui-disclosure.entry-3BJEYU3U.js} +13 -7
- package/dist/{ui-floating-action-button.entry-MXDIN7MV.js → ui-floating-action-button.entry-JEVNV6FI.js} +2 -2
- package/dist/ui-form-field.entry-PKSY7UU4.js +120 -0
- package/dist/{ui-icon-button.entry-MJUNXHBU.js → ui-icon-button.entry-TPX7BE7R.js} +2 -2
- package/dist/{ui-input.entry-AWG63YIG.js → ui-input.entry-6NCLNW4E.js} +2 -2
- package/dist/ui-menu-item.entry-KA2K3PKV.js +22 -0
- package/dist/{ui-menu.entry-IT3GW5TL.js → ui-menu.entry-7GDO5L2T.js} +22 -14
- package/dist/{ui-popover.entry-ZQQB4N6E.js → ui-popover.entry-FR6YRNK6.js} +17 -11
- package/dist/{ui-radio-group.entry-V7PCTS7I.js → ui-radio-group.entry-7QHXQSNO.js} +2 -2
- package/dist/{ui-radio.entry-JYH6TQBI.js → ui-radio.entry-YNMXKLDW.js} +20 -8
- package/dist/{ui-search-result-row.entry-JBNYXXUN.js → ui-search-result-row.entry-AHVVAAIO.js} +2 -2
- package/dist/{ui-search-shell.entry-TEAWE76O.js → ui-search-shell.entry-CNBEAMEZ.js} +2 -2
- package/dist/{ui-select.entry-F3A6TE2U.js → ui-select.entry-TUY6TCTC.js} +2 -2
- package/dist/{ui-switch.entry-MJIICMP2.js → ui-switch.entry-26LFI7B5.js} +23 -11
- package/dist/{ui-tabs.entry-6REFIUHV.js → ui-tabs.entry-LXB62RJJ.js} +14 -10
- package/dist/{ui-textarea.entry-OJTXCED7.js → ui-textarea.entry-JYGMGPX2.js} +2 -2
- package/dist/{ui-toast-region.entry-NOFXLKPS.js → ui-toast-region.entry-TOW4KZLZ.js} +32 -23
- package/dist/{ui-tooltip.entry-COWTWVHX.js → ui-tooltip.entry-SKFNYXPH.js} +19 -12
- package/dist/{ui-top-bar.entry-PIAWXJNV.js → ui-top-bar.entry-S3YP52EA.js} +2 -2
- package/dist/ui-tree-item.entry-LWYIPYLC.js +145 -0
- package/dist/{ui-tree.entry-XYI3ZFAZ.js → ui-tree.entry-LXKUQFRU.js} +114 -12
- package/editor/{chunk-QCOYOVQL.js → chunk-B5WVJOPV.js} +113 -97
- package/editor/extensions/index.d.ts +14 -6
- package/editor/extensions/index.js +1 -1
- package/editor/index.js +1 -1
- package/editor.css +37 -20
- package/package.json +1 -1
- package/styles.css +10 -0
- package/tokens.css +3 -0
- package/vue/{chunk-JLW23USW.js → chunk-D4AJULDE.js} +28 -16
- package/vue/editor/index.d.ts +5 -15
- package/vue/editor/index.js +1 -1
- package/vue/index.d.ts +325 -115
- package/vue/index.js +5 -1
- package/dist/components/p-CaietZcq.js +0 -1
- package/dist/components/p-DHd18bK7.js +0 -1
- package/dist/looma/p-14c081cf.entry.js +0 -1
- package/dist/looma/p-25366205.entry.js +0 -1
- package/dist/looma/p-2e3aa869.entry.js +0 -1
- package/dist/looma/p-446cda76.entry.js +0 -1
- package/dist/looma/p-4fc1b005.entry.js +0 -13
- package/dist/looma/p-6a8a4736.entry.js +0 -1
- package/dist/looma/p-6bf4038b.entry.js +0 -1
- package/dist/looma/p-8204fee6.entry.js +0 -1
- package/dist/looma/p-8238e0dc.entry.js +0 -1
- package/dist/looma/p-99d88efb.entry.js +0 -1
- package/dist/looma/p-a27669b1.entry.js +0 -1
- package/dist/looma/p-a6ee76b7.entry.js +0 -1
- package/dist/looma/p-b6398a6b.entry.js +0 -1
- package/dist/looma/p-d50faaff.entry.js +0 -1
- package/dist/looma/p-d77278ce.entry.js +0 -1
- package/dist/looma/p-d9ec13b7.entry.js +0 -1
- package/dist/looma/p-ecf8005f.entry.js +0 -1
- package/dist/ui-avatar-group.entry-TAXJRIIU.js +0 -59
- package/dist/ui-badge.entry-MZFYNBMJ.js +0 -22
- package/dist/ui-form-field.entry-7ZCMEHPY.js +0 -67
- package/dist/ui-menu-item.entry-HFTWG62N.js +0 -22
- package/dist/ui-tree-item.entry-BSEWNL2O.js +0 -389
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
dispatchDetail
|
|
3
|
-
} from "./chunk-UL7UIUJZ.js";
|
|
4
1
|
import {
|
|
5
2
|
closeOverlay,
|
|
6
3
|
openOverlay
|
|
@@ -8,16 +5,23 @@ import {
|
|
|
8
5
|
import {
|
|
9
6
|
createAnchoredSurface
|
|
10
7
|
} from "./chunk-YHXJC5M5.js";
|
|
8
|
+
import {
|
|
9
|
+
controlledOrDefault,
|
|
10
|
+
isControlled
|
|
11
|
+
} from "./chunk-HNFCGIBP.js";
|
|
12
|
+
import {
|
|
13
|
+
dispatchDetail
|
|
14
|
+
} from "./chunk-UL7UIUJZ.js";
|
|
11
15
|
import {
|
|
12
16
|
Host,
|
|
13
17
|
createEvent,
|
|
14
18
|
getElement,
|
|
15
19
|
h,
|
|
16
20
|
registerInstance
|
|
17
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-IMHSPETJ.js";
|
|
18
22
|
|
|
19
23
|
// dist/esm/ui-tooltip.entry.js
|
|
20
|
-
var uiTooltipCss = () => `:host{position:fixed;inset:auto;margin:0;display:inline-block;
|
|
24
|
+
var uiTooltipCss = () => `:host{position:fixed;inset:auto;margin:0;display:inline-block;box-sizing:border-box;padding:0;border:0;border-radius:0;background:transparent;opacity:0;transform:translateY(4px);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease), transform var(--ui-motion-fast) var(--ui-motion-ease), display var(--ui-motion-fast) allow-discrete, overlay var(--ui-motion-fast) allow-discrete}.tooltip__surface{box-sizing:border-box;border:1px solid var(--ui-border-default);border-radius:var(--ui-radius-2);background:var(--ui-surface-elevated);color:var(--ui-text-primary);padding:var(--ui-space-2) var(--ui-space-3);font-size:var(--ui-font-size-sm);box-shadow:var(--ui-shadow-md)}:host(:popover-open){opacity:1;transform:translateY(0)}@starting-style{:host(:popover-open){opacity:0;transform:translateY(4px)}}:host([hidden]){display:none !important}@media (prefers-reduced-motion: reduce){:host{transition:none}}`;
|
|
21
25
|
var UITooltip = class {
|
|
22
26
|
constructor(hostRef) {
|
|
23
27
|
registerInstance(this, hostRef);
|
|
@@ -28,7 +32,8 @@ var UITooltip = class {
|
|
|
28
32
|
return getElement(this);
|
|
29
33
|
}
|
|
30
34
|
for = "";
|
|
31
|
-
open
|
|
35
|
+
/** Controlled open state. Omit it to use defaultOpen and local interaction state. */
|
|
36
|
+
open;
|
|
32
37
|
defaultOpen = false;
|
|
33
38
|
placement = "top-start";
|
|
34
39
|
/** Pointer hover intent delay in milliseconds. Keyboard focus is immediate. */
|
|
@@ -49,7 +54,8 @@ var UITooltip = class {
|
|
|
49
54
|
hideTimer = null;
|
|
50
55
|
syncFromProp() {
|
|
51
56
|
this.clearTimers();
|
|
52
|
-
|
|
57
|
+
if (isControlled(this.open))
|
|
58
|
+
this.internalOpen = this.open;
|
|
53
59
|
}
|
|
54
60
|
resetSurface() {
|
|
55
61
|
this.syncTrigger();
|
|
@@ -75,8 +81,7 @@ var UITooltip = class {
|
|
|
75
81
|
componentDidLoad() {
|
|
76
82
|
if (!this.host.id)
|
|
77
83
|
this.host.id = this.overlayId;
|
|
78
|
-
this.
|
|
79
|
-
this.internalOpen = this.internalOpen || this.defaultOpen;
|
|
84
|
+
this.internalOpen = controlledOrDefault(this.open, this.defaultOpen);
|
|
80
85
|
this.syncTrigger();
|
|
81
86
|
this.setupSurface();
|
|
82
87
|
this.host.addEventListener("pointerenter", this.onSurfaceEnter);
|
|
@@ -159,7 +164,8 @@ var UITooltip = class {
|
|
|
159
164
|
setInteractionOpen(nextOpen, trigger) {
|
|
160
165
|
if (this.internalOpen === nextOpen)
|
|
161
166
|
return;
|
|
162
|
-
this.
|
|
167
|
+
if (!isControlled(this.open))
|
|
168
|
+
this.internalOpen = nextOpen;
|
|
163
169
|
dispatchDetail(this.host, nextOpen ? "open" : "close", {
|
|
164
170
|
open: nextOpen,
|
|
165
171
|
reason: "action",
|
|
@@ -216,7 +222,8 @@ var UITooltip = class {
|
|
|
216
222
|
if (reason === "escape" || reason === "light-dismiss" && this.toggleOnClick) {
|
|
217
223
|
this.pinned = false;
|
|
218
224
|
this.clearTimers();
|
|
219
|
-
this.
|
|
225
|
+
if (!isControlled(this.open))
|
|
226
|
+
this.internalOpen = false;
|
|
220
227
|
dispatchDetail(this.host, "close", {
|
|
221
228
|
open: false,
|
|
222
229
|
reason,
|
|
@@ -225,7 +232,7 @@ var UITooltip = class {
|
|
|
225
232
|
}
|
|
226
233
|
}
|
|
227
234
|
render() {
|
|
228
|
-
return h(Host, { key: "
|
|
235
|
+
return h(Host, { key: "ce34c51bc3a9c9f7f31b7f0d329175df0cee1ab3", role: "tooltip", hidden: !this.internalOpen, "data-open": this.internalOpen ? "" : void 0 }, h("div", { key: "e5bb2bcb146fe8ec3b4e9a6abb550961181e3c06", class: "tooltip__surface" }, h("slot", { key: "bdb71bfcb0f72c212cbb5c64fb69510fdded4afb" })));
|
|
229
236
|
}
|
|
230
237
|
static get watchers() {
|
|
231
238
|
return {
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
getElement,
|
|
4
4
|
h,
|
|
5
5
|
registerInstance
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IMHSPETJ.js";
|
|
7
7
|
|
|
8
8
|
// dist/esm/ui-top-bar.entry.js
|
|
9
9
|
var uiTopBarCss = () => `:host{position:sticky;inset-block-start:0;z-index:var(--ui-top-bar-z-index, 100);display:block}.top-bar{min-block-size:calc(var(--ui-top-bar-height, 56px) + env(safe-area-inset-top));display:flex;align-items:center;gap:var(--ui-top-bar-gap, var(--ui-space-3, 0.75rem));padding-block-start:env(safe-area-inset-top);padding-inline-start:max( var(--ui-top-bar-padding-inline, var(--ui-space-4, 1rem)), env(safe-area-inset-left) );padding-inline-end:max( var(--ui-top-bar-padding-inline, var(--ui-space-4, 1rem)), env(safe-area-inset-right) );background:var(--ui-top-bar-bg, var(--ui-surface, #ffffff));border-block-end:1px solid var(--ui-top-bar-border, var(--ui-border, #e5e7eb))}.top-bar__leading,.top-bar__search,.top-bar__actions{display:flex;align-items:center;flex-shrink:0}.top-bar__actions{gap:var(--ui-top-bar-actions-gap, var(--ui-space-1, 0.25rem))}.top-bar__title{min-inline-size:0;flex:1}[hidden]{display:none}@media (min-width: 768px){:host{display:none}}`;
|
|
@@ -40,7 +40,7 @@ var UITopBar = class {
|
|
|
40
40
|
this.hasActions = slotHasContent(this.actionsSlot);
|
|
41
41
|
};
|
|
42
42
|
render() {
|
|
43
|
-
return h(Host, { key: "
|
|
43
|
+
return h(Host, { key: "b92aa4e03475b3e623212a1e98f45d5532860b51" }, h("header", { key: "a3552708b0e424e762e100ee55fc6bfac4cd830a", class: "top-bar", part: "base" }, h("div", { key: "4c8a9e3a04ff23a615bf09e368f4212dd5b38157", class: "top-bar__leading", hidden: !this.hasLeading }, h("slot", { key: "64ecc99672b8fd37305810e0776a24bf87ea6f08", name: "leading", ref: (el) => this.leadingSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "37fc003aba2b87f7c8c0e654cd6810d7f231f365", class: "top-bar__title" }, h("slot", { key: "e6c901c15852e83340ca8ad1e264fd5e35445e84" })), h("div", { key: "37b1ac319367eeded4182ada401a31e0b9c2555a", class: "top-bar__search", hidden: !this.hasSearch }, h("slot", { key: "0a8b5ef500dd843909bb35a1133be548411f3b71", name: "search", ref: (el) => this.searchSlot = el, onSlotchange: this.syncSlots })), h("div", { key: "7e5054a3ed6ecfe8d9d8b1b36992843aa0fb62eb", class: "top-bar__actions", hidden: !this.hasActions }, h("slot", { key: "19fe59c5ba4da7f0ceda764948f1288bfaa2a41d", name: "actions", ref: (el) => this.actionsSlot = el, onSlotchange: this.syncSlots }))));
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
UITopBar.style = uiTopBarCss();
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loomaIconMarkup
|
|
3
|
+
} from "./chunk-NB6DBRXQ.js";
|
|
4
|
+
import {
|
|
5
|
+
dispatchDetail,
|
|
6
|
+
eventToTrigger
|
|
7
|
+
} from "./chunk-UL7UIUJZ.js";
|
|
8
|
+
import {
|
|
9
|
+
Host,
|
|
10
|
+
getElement,
|
|
11
|
+
h,
|
|
12
|
+
registerInstance
|
|
13
|
+
} from "./chunk-IMHSPETJ.js";
|
|
14
|
+
|
|
15
|
+
// dist/esm/ui-tree-item.entry.js
|
|
16
|
+
var uiTreeItemCss = () => `:host{--ui-tree-indent:16px;--ui-tree-row-min-height:32px;--ui-tree-drop-color:var(--ui-accent-solid);position:relative;display:block;min-inline-size:0;margin-inline-start:calc(var(--ui-tree-item-depth, 0) * var(--ui-tree-indent))}.row{position:relative;display:grid;grid-template-columns:20px auto minmax(0, 1fr) auto;align-items:center;min-block-size:var(--ui-tree-row-min-height);min-inline-size:0;font-size:var(--ui-tree-font-size, var(--ui-font-size-ui, 0.9375rem));border-radius:var(--ui-radius-md);color:var(--ui-text-secondary);transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease), opacity var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), min-block-size var(--ui-motion-base) var(--ui-motion-ease)}.row:hover,:host([data-selected]) .row,.row:focus-within{color:var(--ui-text-primary);background:var(--ui-surface-muted)}:host([data-disabled]) .row{opacity:0.55}:host([data-dragging]) .row{opacity:0.42}:host(:focus){outline:none}:host(:focus-visible) .row{box-shadow:0 0 0 2px var(--ui-focus-ring)}:host([data-drop-position='inside']) .row{background:var(--ui-accent-subtle);box-shadow:inset 0 0 0 1px var(--ui-tree-drop-color)}.disclosure,.disclosure-spacer{grid-column:1;grid-row:1;inline-size:20px;block-size:28px}.disclosure{display:grid;place-items:center;padding:0;color:var(--ui-text-muted);background:transparent;border:0;border-radius:var(--ui-radius-sm);cursor:pointer}.disclosure:hover{color:var(--ui-text-primary);background:var(--ui-surface-elevated)}.disclosure-icon{display:block;inline-size:14px;block-size:14px;transform:rotate(-90deg);transition:transform var(--ui-motion-fast) var(--ui-motion-ease)}.disclosure-icon--expanded{transform:rotate(0deg)}.disclosure-icon :is(svg),.drag-handle :is(svg){display:block;inline-size:100%;block-size:100%}.leading{display:none}.leading:has(*){display:inline-grid;place-items:center;grid-column:2;grid-row:1;inline-size:16px;block-size:16px;margin-inline-start:var(--ui-space-1)}.label{grid-column:3;grid-row:1;min-inline-size:0;padding:var(--ui-space-1) var(--ui-space-2)}.actions{grid-column:4;grid-row:1;display:inline-flex;align-items:center;min-inline-size:0}.drag-handle{position:absolute;z-index:2;inset-block-start:50%;inset-inline-start:-22px;inline-size:20px;block-size:32px;display:grid;place-items:center;padding:7px 3px;color:var(--ui-text-muted);background:var(--ui-surface-elevated);border:1px solid transparent;border-radius:var(--ui-radius-sm);cursor:grab;opacity:0;pointer-events:none;transform:translateY(-50%);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease)}.row:hover .drag-handle,.drag-handle:focus-visible,:host([data-dragging]) .drag-handle{opacity:1;pointer-events:auto}.drag-handle:active{cursor:grabbing}.drop-indicator{position:absolute;z-index:3;inset-inline:1px;display:none;block-size:2px;border-radius:999px;background:var(--ui-tree-drop-color);pointer-events:none}.drop-indicator::before,.drop-indicator::after{content:'';position:absolute;inset-block-start:50%;inline-size:7px;block-size:7px;border:2px solid var(--ui-tree-drop-color);border-radius:999px;background:var(--ui-surface-elevated);transform:translateY(-50%)}.drop-indicator::before{inset-inline-start:-1px}.drop-indicator::after{inset-inline-end:-1px}:host([data-drop-position='before']) .row-drop-indicator{display:block;inset-block-start:-1px}:host([data-drop-position='after']) .subtree-drop-indicator{display:block;inset-block-end:-1px}.children[hidden]{display:none}:host-context(html[data-ui-input-modality='touch']){--ui-tree-row-min-height:44px}:host-context(html[data-ui-input-modality='touch']) .drag-handle{display:none}@media (prefers-reduced-motion: reduce){.row,.disclosure-icon,.drag-handle{transition:none}}`;
|
|
17
|
+
var UITreeItem = class {
|
|
18
|
+
constructor(hostRef) {
|
|
19
|
+
registerInstance(this, hostRef);
|
|
20
|
+
}
|
|
21
|
+
get host() {
|
|
22
|
+
return getElement(this);
|
|
23
|
+
}
|
|
24
|
+
/** Stable application identifier emitted by tree interaction events. */
|
|
25
|
+
itemId = "";
|
|
26
|
+
/** Accessible name used by the disclosure and drag handle. */
|
|
27
|
+
label = "";
|
|
28
|
+
/** Application hierarchy depth override used for drop constraints. Defaults to structural nesting. */
|
|
29
|
+
dropDepth;
|
|
30
|
+
/** Virtualized-tree descendant-depth override for the tree's max-depth drop constraint. */
|
|
31
|
+
subtreeDepth;
|
|
32
|
+
/** Whether this item accepts children and exposes disclosure behavior. */
|
|
33
|
+
container = false;
|
|
34
|
+
/** Whether this item participates in pointer drag and drop. */
|
|
35
|
+
sortable = false;
|
|
36
|
+
/** Application-defined kind used to reject incompatible sibling drops. */
|
|
37
|
+
dragType = "item";
|
|
38
|
+
/** Application-defined parent/list identity included with reorder events. */
|
|
39
|
+
dropScope = "";
|
|
40
|
+
/** Comma-separated drag kinds accepted as children. Empty accepts every kind. */
|
|
41
|
+
accepts = "";
|
|
42
|
+
/** Controlled expansion value. When omitted, `default-expanded` initializes uncontrolled state. */
|
|
43
|
+
expanded;
|
|
44
|
+
/** Initial uncontrolled expansion value. */
|
|
45
|
+
defaultExpanded = false;
|
|
46
|
+
selected = false;
|
|
47
|
+
disabled = false;
|
|
48
|
+
internalExpanded = false;
|
|
49
|
+
structuralLevel = 1;
|
|
50
|
+
tabStop = false;
|
|
51
|
+
syncExpandedFromProp() {
|
|
52
|
+
if (this.expanded !== void 0)
|
|
53
|
+
this.internalExpanded = this.expanded;
|
|
54
|
+
}
|
|
55
|
+
componentWillLoad() {
|
|
56
|
+
this.internalExpanded = this.expanded ?? this.defaultExpanded;
|
|
57
|
+
this.updateStructuralLevel();
|
|
58
|
+
}
|
|
59
|
+
connectedCallback() {
|
|
60
|
+
this.host.addEventListener("ui-tree-auto-expand", this.onAutoExpand);
|
|
61
|
+
this.host.addEventListener("ui-tree-structure-sync", this.updateStructuralLevel);
|
|
62
|
+
this.host.addEventListener("ui-tree-roving-tab-stop", this.onRovingTabStop);
|
|
63
|
+
this.host.addEventListener("ui-tree-request-expanded", this.onExpansionRequest);
|
|
64
|
+
}
|
|
65
|
+
disconnectedCallback() {
|
|
66
|
+
this.host.removeEventListener("ui-tree-auto-expand", this.onAutoExpand);
|
|
67
|
+
this.host.removeEventListener("ui-tree-structure-sync", this.updateStructuralLevel);
|
|
68
|
+
this.host.removeEventListener("ui-tree-roving-tab-stop", this.onRovingTabStop);
|
|
69
|
+
this.host.removeEventListener("ui-tree-request-expanded", this.onExpansionRequest);
|
|
70
|
+
}
|
|
71
|
+
updateStructuralLevel = () => {
|
|
72
|
+
const tree = this.host.closest("ui-tree");
|
|
73
|
+
let ancestor = this.host.parentElement?.closest("ui-tree-item") ?? null;
|
|
74
|
+
let level = 1;
|
|
75
|
+
while (ancestor && tree?.contains(ancestor)) {
|
|
76
|
+
level += 1;
|
|
77
|
+
ancestor = ancestor.parentElement?.closest("ui-tree-item") ?? null;
|
|
78
|
+
}
|
|
79
|
+
if (this.structuralLevel !== level)
|
|
80
|
+
this.structuralLevel = level;
|
|
81
|
+
};
|
|
82
|
+
setExpanded(expanded, trigger) {
|
|
83
|
+
const current = this.isExpanded();
|
|
84
|
+
if (!this.container || this.disabled || current === expanded)
|
|
85
|
+
return;
|
|
86
|
+
if (this.expanded === void 0)
|
|
87
|
+
this.internalExpanded = expanded;
|
|
88
|
+
dispatchDetail(this.host, "expand", { id: this.itemId, expanded, trigger });
|
|
89
|
+
this.host.dispatchEvent(new CustomEvent("ui-tree-expansion-change"));
|
|
90
|
+
}
|
|
91
|
+
isExpanded() {
|
|
92
|
+
return this.expanded ?? this.internalExpanded;
|
|
93
|
+
}
|
|
94
|
+
onAutoExpand = () => {
|
|
95
|
+
this.setExpanded(true, "pointer");
|
|
96
|
+
};
|
|
97
|
+
onRovingTabStop = (event) => {
|
|
98
|
+
this.tabStop = Boolean(event.detail?.active) && !this.disabled;
|
|
99
|
+
};
|
|
100
|
+
onExpansionRequest = (event) => {
|
|
101
|
+
const detail = event.detail;
|
|
102
|
+
if (typeof detail?.expanded === "boolean")
|
|
103
|
+
this.setExpanded(detail.expanded, detail.trigger ?? "keyboard");
|
|
104
|
+
};
|
|
105
|
+
onDisclosureClick = (event) => {
|
|
106
|
+
event.stopPropagation();
|
|
107
|
+
this.setExpanded(!this.isExpanded(), eventToTrigger(event));
|
|
108
|
+
};
|
|
109
|
+
onDisclosureKeydown = (event) => {
|
|
110
|
+
if (event.key !== "ArrowRight" && event.key !== "ArrowLeft")
|
|
111
|
+
return;
|
|
112
|
+
event.preventDefault();
|
|
113
|
+
event.stopPropagation();
|
|
114
|
+
this.setExpanded(event.key === "ArrowRight", "keyboard");
|
|
115
|
+
};
|
|
116
|
+
onRowClick = (event) => {
|
|
117
|
+
if (!this.container || this.disabled)
|
|
118
|
+
return;
|
|
119
|
+
const path = event.composedPath();
|
|
120
|
+
const interactive = path.some((node) => node instanceof HTMLElement && (node.matches('a, button, input, select, textarea, [role="button"], [role="link"]') || node.getAttribute("slot") === "actions"));
|
|
121
|
+
if (!interactive)
|
|
122
|
+
this.setExpanded(!this.isExpanded(), eventToTrigger(event));
|
|
123
|
+
};
|
|
124
|
+
render() {
|
|
125
|
+
const level = this.structuralLevel;
|
|
126
|
+
const expanded = this.isExpanded();
|
|
127
|
+
const disclosureLabel = `${expanded ? "Collapse" : "Expand"} ${this.label || "item"}`;
|
|
128
|
+
const dragLabel = `Drag ${this.label || "item"} to reorder`;
|
|
129
|
+
return h(Host, { key: "36ad9eac3e0fe2a606e63294891b1c0697034b46", role: "treeitem", "aria-label": this.label || void 0, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : void 0, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? "true" : void 0, "data-container": this.container ? "" : void 0, "data-selected": this.selected ? "" : void 0, "data-disabled": this.disabled ? "" : void 0, "data-drag-type": this.dragType || "item", "data-drop-scope": this.dropScope || void 0, "data-accepts": this.accepts || void 0, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
|
|
130
|
+
"--ui-tree-item-depth": String(level - 1),
|
|
131
|
+
"margin-inline-start": level > 1 ? "var(--ui-tree-indent, 16px)" : "0px"
|
|
132
|
+
} }, h("div", { key: "e92f5bc73accef3b348559ea144e0b769c98c721", class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, h("span", { innerHTML: loomaIconMarkup("grip-vertical") })) : null, this.container ? h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, h("span", { class: { "disclosure-icon": true, "disclosure-icon--expanded": expanded }, innerHTML: loomaIconMarkup("chevron-down") })) : h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), h("span", { key: "dd2d0550d6846d0a4f80a4108968bfc32c18658f", class: "leading", part: "leading" }, h("slot", { key: "622d449a338dce57bc2e64aaf776471e8d3ce1b4", name: "leading" })), h("span", { key: "29c3e6ace4838ab941ada2547356288358faaeb2", class: "label", part: "label" }, h("slot", { key: "f1594c11fa0b9fbe8a3c20df6edce19421cab148" })), h("span", { key: "e4a6408f86b58a325145e713d116fc09322bb0d3", class: "actions", part: "actions" }, h("slot", { key: "ff3afaf1089426e19ee1fc39c6567c3d40ca4272", name: "actions" })), h("span", { key: "efcf23f7aad6c4353fa24bfe2a81001122335f72", class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, h("slot", { name: "children" })) : null, h("span", { key: "21bfc8a6ad6e487cd044b5a3cbd7e8f900f2d1e1", class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" }));
|
|
133
|
+
}
|
|
134
|
+
static get watchers() {
|
|
135
|
+
return {
|
|
136
|
+
"expanded": [{
|
|
137
|
+
"syncExpandedFromProp": 0
|
|
138
|
+
}]
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
UITreeItem.style = uiTreeItemCss();
|
|
143
|
+
export {
|
|
144
|
+
UITreeItem as ui_tree_item
|
|
145
|
+
};
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getElement,
|
|
7
7
|
h,
|
|
8
8
|
registerInstance
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IMHSPETJ.js";
|
|
10
10
|
|
|
11
11
|
// dist/esm/ui-tree.entry.js
|
|
12
12
|
function classifyDropPosition(rect, clientY, acceptsChildren) {
|
|
@@ -52,7 +52,7 @@ function createHoverIntent(delay, onIntent) {
|
|
|
52
52
|
destroy: cancel
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
var uiTreeCss = () => `:host{--ui-tree-indent:16px;display:block;min-inline-size:0;padding-inline-start:var(--ui-tree-gutter
|
|
55
|
+
var uiTreeCss = () => `:host{--ui-tree-indent:16px;--ui-tree-gutter:0px;display:block;min-inline-size:0;padding-inline-start:var(--ui-tree-gutter)}::slotted(ui-tree-item){--ui-tree-indent:inherit}`;
|
|
56
56
|
var UITree = class {
|
|
57
57
|
constructor(hostRef) {
|
|
58
58
|
registerInstance(this, hostRef);
|
|
@@ -71,6 +71,8 @@ var UITree = class {
|
|
|
71
71
|
rejectedPosition = null;
|
|
72
72
|
rejection = null;
|
|
73
73
|
hoverIntent = null;
|
|
74
|
+
structureObserver = null;
|
|
75
|
+
tabStop = null;
|
|
74
76
|
componentDidLoad() {
|
|
75
77
|
this.hoverIntent = createHoverIntent(this.hoverExpandDelay, this.expandTarget);
|
|
76
78
|
this.host.addEventListener("dragstart", this.onDragStart);
|
|
@@ -81,6 +83,11 @@ var UITree = class {
|
|
|
81
83
|
this.host.addEventListener("drop", this.onDrop);
|
|
82
84
|
this.host.addEventListener("dragend", this.onDragEnd);
|
|
83
85
|
this.host.addEventListener("keydown", this.onKeyDown);
|
|
86
|
+
this.host.addEventListener("focusin", this.onFocusIn);
|
|
87
|
+
this.host.addEventListener("ui-tree-expansion-change", this.onExpansionChange);
|
|
88
|
+
this.syncStructuralLevels();
|
|
89
|
+
this.structureObserver = new MutationObserver(this.syncStructuralLevels);
|
|
90
|
+
this.structureObserver.observe(this.host, { childList: true, subtree: true });
|
|
84
91
|
}
|
|
85
92
|
disconnectedCallback() {
|
|
86
93
|
this.hoverIntent?.destroy();
|
|
@@ -92,10 +99,40 @@ var UITree = class {
|
|
|
92
99
|
this.host.removeEventListener("drop", this.onDrop);
|
|
93
100
|
this.host.removeEventListener("dragend", this.onDragEnd);
|
|
94
101
|
this.host.removeEventListener("keydown", this.onKeyDown);
|
|
102
|
+
this.host.removeEventListener("focusin", this.onFocusIn);
|
|
103
|
+
this.host.removeEventListener("ui-tree-expansion-change", this.onExpansionChange);
|
|
104
|
+
this.structureObserver?.disconnect();
|
|
105
|
+
this.structureObserver = null;
|
|
106
|
+
}
|
|
107
|
+
syncStructuralLevels = () => {
|
|
108
|
+
for (const item of Array.from(this.host.querySelectorAll("ui-tree-item"))) {
|
|
109
|
+
item.dispatchEvent(new CustomEvent("ui-tree-structure-sync"));
|
|
110
|
+
}
|
|
111
|
+
this.syncTabStop();
|
|
112
|
+
};
|
|
113
|
+
syncTabStop(preferred) {
|
|
114
|
+
const items = this.visibleItems();
|
|
115
|
+
const next = preferred && items.includes(preferred) ? preferred : this.tabStop && items.includes(this.tabStop) ? this.tabStop : items[0] ?? null;
|
|
116
|
+
this.tabStop = next;
|
|
117
|
+
for (const item of items) {
|
|
118
|
+
item.dispatchEvent(new CustomEvent("ui-tree-roving-tab-stop", {
|
|
119
|
+
detail: { active: item === next }
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
95
122
|
}
|
|
96
123
|
itemFromEvent(event) {
|
|
97
124
|
return event.composedPath().find((node) => node instanceof HTMLElement && node.localName === "ui-tree-item") ?? null;
|
|
98
125
|
}
|
|
126
|
+
eventTargetsInteractiveContent(event) {
|
|
127
|
+
for (const node of event.composedPath()) {
|
|
128
|
+
if (node instanceof HTMLElement && node.localName === "ui-tree-item")
|
|
129
|
+
break;
|
|
130
|
+
if (node instanceof HTMLElement && node.matches('a, button, input, select, textarea, [role="button"], [role="link"]')) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
99
136
|
itemId(item) {
|
|
100
137
|
return item.itemId || item.getAttribute("item-id") || "";
|
|
101
138
|
}
|
|
@@ -139,9 +176,23 @@ var UITree = class {
|
|
|
139
176
|
const dropDepth = item.getAttribute("drop-depth");
|
|
140
177
|
if (dropDepth !== null)
|
|
141
178
|
return Number(dropDepth);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
179
|
+
return Number(item.getAttribute("aria-level")) || 1;
|
|
180
|
+
}
|
|
181
|
+
subtreeDepth(item) {
|
|
182
|
+
if (item.subtreeDepth !== void 0)
|
|
183
|
+
return Math.max(0, Math.floor(item.subtreeDepth));
|
|
184
|
+
const override = item.getAttribute("subtree-depth");
|
|
185
|
+
if (override !== null)
|
|
186
|
+
return Math.max(0, Math.floor(Number(override)));
|
|
187
|
+
return Array.from(item.querySelectorAll("ui-tree-item")).reduce((deepest, descendant) => {
|
|
188
|
+
let nesting = 0;
|
|
189
|
+
let ancestor = descendant.parentElement?.closest("ui-tree-item") ?? null;
|
|
190
|
+
while (ancestor && ancestor !== item) {
|
|
191
|
+
nesting += 1;
|
|
192
|
+
ancestor = ancestor.parentElement?.closest("ui-tree-item") ?? null;
|
|
193
|
+
}
|
|
194
|
+
return ancestor === item ? Math.max(deepest, nesting + 1) : deepest;
|
|
195
|
+
}, 0);
|
|
145
196
|
}
|
|
146
197
|
dropRejection(source, target, position) {
|
|
147
198
|
if (source.contains(target))
|
|
@@ -156,9 +207,9 @@ var UITree = class {
|
|
|
156
207
|
return { reason: "incompatible" };
|
|
157
208
|
}
|
|
158
209
|
const maxDepth = Math.max(0, Math.floor(this.maxDepth));
|
|
159
|
-
if (maxDepth > 0
|
|
210
|
+
if (maxDepth > 0) {
|
|
160
211
|
const targetDepth = Math.max(0, Math.floor(this.constraintDepth(target)));
|
|
161
|
-
const subtreeDepth =
|
|
212
|
+
const subtreeDepth = this.subtreeDepth(source);
|
|
162
213
|
const resultingDepth = targetDepth + (position === "inside" ? 1 : 0) + subtreeDepth;
|
|
163
214
|
if (resultingDepth > maxDepth)
|
|
164
215
|
return { reason: "max-depth", maxDepth, resultingDepth };
|
|
@@ -344,7 +395,35 @@ var UITree = class {
|
|
|
344
395
|
visibleItems() {
|
|
345
396
|
return Array.from(this.host.querySelectorAll("ui-tree-item")).filter((item) => item.getClientRects().length > 0 && !item.hasAttribute("disabled"));
|
|
346
397
|
}
|
|
398
|
+
parentItem(item) {
|
|
399
|
+
const parent = item.parentElement?.closest("ui-tree-item") ?? null;
|
|
400
|
+
return parent && this.host.contains(parent) ? parent : null;
|
|
401
|
+
}
|
|
402
|
+
firstVisibleChild(item, items) {
|
|
403
|
+
return items.find((candidate) => this.parentItem(candidate) === item) ?? null;
|
|
404
|
+
}
|
|
405
|
+
focusItem(item) {
|
|
406
|
+
this.syncTabStop(item);
|
|
407
|
+
item.focus();
|
|
408
|
+
}
|
|
409
|
+
requestExpansion(item, expanded) {
|
|
410
|
+
item.dispatchEvent(new CustomEvent("ui-tree-request-expanded", {
|
|
411
|
+
detail: { expanded, trigger: "keyboard" }
|
|
412
|
+
}));
|
|
413
|
+
}
|
|
414
|
+
onFocusIn = (event) => {
|
|
415
|
+
if (this.eventTargetsInteractiveContent(event))
|
|
416
|
+
return;
|
|
417
|
+
const item = this.itemFromEvent(event);
|
|
418
|
+
if (item)
|
|
419
|
+
this.syncTabStop(item);
|
|
420
|
+
};
|
|
421
|
+
onExpansionChange = () => {
|
|
422
|
+
requestAnimationFrame(() => this.syncTabStop());
|
|
423
|
+
};
|
|
347
424
|
onKeyDown = (event) => {
|
|
425
|
+
if (this.eventTargetsInteractiveContent(event))
|
|
426
|
+
return;
|
|
348
427
|
const current = this.itemFromEvent(event);
|
|
349
428
|
if (!current)
|
|
350
429
|
return;
|
|
@@ -352,14 +431,37 @@ var UITree = class {
|
|
|
352
431
|
const index = items.indexOf(current);
|
|
353
432
|
if (index < 0)
|
|
354
433
|
return;
|
|
355
|
-
const next = event.key === "ArrowDown" ? items[index + 1] : event.key === "ArrowUp" ? items[index - 1] : null;
|
|
356
|
-
if (
|
|
434
|
+
const next = event.key === "ArrowDown" ? items[index + 1] : event.key === "ArrowUp" ? items[index - 1] : event.key === "Home" ? items[0] : event.key === "End" ? items.at(-1) : null;
|
|
435
|
+
if (next) {
|
|
436
|
+
event.preventDefault();
|
|
437
|
+
this.focusItem(next);
|
|
357
438
|
return;
|
|
358
|
-
|
|
359
|
-
|
|
439
|
+
}
|
|
440
|
+
if (event.key === "ArrowLeft") {
|
|
441
|
+
if (current.getAttribute("aria-expanded") === "true") {
|
|
442
|
+
event.preventDefault();
|
|
443
|
+
this.requestExpansion(current, false);
|
|
444
|
+
} else if (this.parentItem(current)) {
|
|
445
|
+
event.preventDefault();
|
|
446
|
+
this.focusItem(this.parentItem(current));
|
|
447
|
+
}
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
if (event.key === "ArrowRight") {
|
|
451
|
+
if (current.getAttribute("aria-expanded") === "false") {
|
|
452
|
+
event.preventDefault();
|
|
453
|
+
this.requestExpansion(current, true);
|
|
454
|
+
} else if (current.getAttribute("aria-expanded") === "true") {
|
|
455
|
+
const child = this.firstVisibleChild(current, items);
|
|
456
|
+
if (child) {
|
|
457
|
+
event.preventDefault();
|
|
458
|
+
this.focusItem(child);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
360
462
|
};
|
|
361
463
|
render() {
|
|
362
|
-
return h(Host, { key: "
|
|
464
|
+
return h(Host, { key: "549c09abc67dc60b16bf2d6b7d6346f214e9d6ae", role: "tree", "aria-label": this.label || "Tree" }, h("slot", { key: "fea59bde97611bf384e32ce4fb2b3eec9aca784f" }));
|
|
363
465
|
}
|
|
364
466
|
};
|
|
365
467
|
UITree.style = uiTreeCss();
|