@editora/ui-core 0.1.25 → 0.2.0
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/README.md +124 -0
- package/dist/accordion.cjs.js +13 -12
- package/dist/accordion.esm.js +13 -12
- package/dist/alert-dialog.cjs.js +76 -45
- package/dist/alert-dialog.esm.js +179 -135
- package/dist/alert.cjs.js +41 -32
- package/dist/alert.esm.js +79 -70
- package/dist/animated-beam.cjs.js +42 -50
- package/dist/animated-beam.esm.js +47 -55
- package/dist/animated-list.cjs.js +11 -27
- package/dist/animated-list.esm.js +12 -28
- package/dist/animated-text.cjs.js +4 -4
- package/dist/animated-text.esm.js +4 -4
- package/dist/app-header.cjs.js +5 -5
- package/dist/app-header.esm.js +6 -6
- package/dist/aspect-ratio.cjs.js +10 -12
- package/dist/aspect-ratio.esm.js +11 -13
- package/dist/avatar.cjs.js +13 -17
- package/dist/avatar.esm.js +13 -17
- package/dist/badge.cjs.js +27 -22
- package/dist/badge.esm.js +32 -27
- package/dist/block-controls.cjs.js +11 -12
- package/dist/block-controls.esm.js +8 -9
- package/dist/box.cjs.js +2 -3
- package/dist/box.esm.js +2 -3
- package/dist/breadcrumb.cjs.js +12 -18
- package/dist/breadcrumb.esm.js +11 -17
- package/dist/button.cjs.js +1 -1
- package/dist/button.esm.js +1 -1
- package/dist/{calendar-B3PUKHQm.mjs → calendar-DmxiZrR7.mjs} +126 -117
- package/dist/{calendar-D-mXMgqc.js → calendar-o273O28D.js} +53 -44
- package/dist/calendar.cjs.js +1 -1
- package/dist/calendar.esm.js +1 -1
- package/dist/card.cjs.js +6 -7
- package/dist/card.esm.js +5 -6
- package/dist/chart.cjs.js +52 -52
- package/dist/chart.esm.js +95 -95
- package/dist/checkbox.cjs.js +19 -15
- package/dist/checkbox.esm.js +19 -15
- package/dist/collapsible.cjs.js +7 -11
- package/dist/collapsible.esm.js +7 -11
- package/dist/color-picker.cjs.js +36 -17
- package/dist/color-picker.esm.js +132 -113
- package/dist/combobox.cjs.js +57 -54
- package/dist/combobox.esm.js +62 -58
- package/dist/command-palette.cjs.js +1 -0
- package/dist/command-palette.esm.js +1 -0
- package/dist/command.cjs.js +32 -14
- package/dist/command.esm.js +46 -28
- package/dist/components/date-time-utils.d.ts.map +1 -1
- package/dist/components/ui-accordion.d.ts.map +1 -1
- package/dist/components/ui-alert-dialog.d.ts +2 -0
- package/dist/components/ui-alert-dialog.d.ts.map +1 -1
- package/dist/components/ui-alert.d.ts.map +1 -1
- package/dist/components/ui-animated-beam.d.ts.map +1 -1
- package/dist/components/ui-animated-list.d.ts.map +1 -1
- package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui-avatar.d.ts.map +1 -1
- package/dist/components/ui-badge.d.ts.map +1 -1
- package/dist/components/ui-block-controls.d.ts.map +1 -1
- package/dist/components/ui-box.d.ts.map +1 -1
- package/dist/components/ui-breadcrumb.d.ts.map +1 -1
- package/dist/components/ui-button.d.ts.map +1 -1
- package/dist/components/ui-calendar.d.ts.map +1 -1
- package/dist/components/ui-card.d.ts.map +1 -1
- package/dist/components/ui-checkbox.d.ts.map +1 -1
- package/dist/components/ui-collapsible.d.ts.map +1 -1
- package/dist/components/ui-color-picker.d.ts.map +1 -1
- package/dist/components/ui-combobox.d.ts.map +1 -1
- package/dist/components/ui-command-palette.d.ts.map +1 -1
- package/dist/components/ui-command.d.ts.map +1 -1
- package/dist/components/ui-container.d.ts.map +1 -1
- package/dist/components/ui-context-menu.d.ts.map +1 -1
- package/dist/components/ui-data-table.d.ts +7 -0
- package/dist/components/ui-data-table.d.ts.map +1 -1
- package/dist/components/ui-date-picker.d.ts.map +1 -1
- package/dist/components/ui-date-range-picker.d.ts.map +1 -1
- package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
- package/dist/components/ui-date-time-picker.d.ts.map +1 -1
- package/dist/components/ui-dialog.d.ts +2 -0
- package/dist/components/ui-dialog.d.ts.map +1 -1
- package/dist/components/ui-dock.d.ts.map +1 -1
- package/dist/components/ui-drawer.d.ts.map +1 -1
- package/dist/components/ui-dropdown.d.ts.map +1 -1
- package/dist/components/ui-empty-state.d.ts.map +1 -1
- package/dist/components/ui-field.d.ts.map +1 -1
- package/dist/components/ui-fieldset.d.ts.map +1 -1
- package/dist/components/ui-file-upload.d.ts.map +1 -1
- package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
- package/dist/components/ui-form.d.ts.map +1 -1
- package/dist/components/ui-icon-cloud.d.ts.map +1 -1
- package/dist/components/ui-inline-edit.d.ts.map +1 -1
- package/dist/components/ui-input.d.ts.map +1 -1
- package/dist/components/ui-marquee.d.ts.map +1 -1
- package/dist/components/ui-menu.d.ts.map +1 -1
- package/dist/components/ui-menubar.d.ts.map +1 -1
- package/dist/components/ui-meter.d.ts.map +1 -1
- package/dist/components/ui-multi-select.d.ts.map +1 -1
- package/dist/components/ui-number-field.d.ts.map +1 -1
- package/dist/components/ui-orbiter.d.ts.map +1 -1
- package/dist/components/ui-pagination.d.ts.map +1 -1
- package/dist/components/ui-password-field.d.ts.map +1 -1
- package/dist/components/ui-pin-input.d.ts.map +1 -1
- package/dist/components/ui-popover.d.ts.map +1 -1
- package/dist/components/ui-progress.d.ts.map +1 -1
- package/dist/components/ui-radio-group.d.ts.map +1 -1
- package/dist/components/ui-radio.d.ts.map +1 -1
- package/dist/components/ui-rating.d.ts +1 -0
- package/dist/components/ui-rating.d.ts.map +1 -1
- package/dist/components/ui-scroll-area.d.ts.map +1 -1
- package/dist/components/ui-section.d.ts.map +1 -1
- package/dist/components/ui-select.d.ts.map +1 -1
- package/dist/components/ui-selection-popup.d.ts.map +1 -1
- package/dist/components/ui-slider.d.ts.map +1 -1
- package/dist/components/ui-sortable.d.ts.map +1 -1
- package/dist/components/ui-spinning-text.d.ts.map +1 -1
- package/dist/components/ui-split-button.d.ts.map +1 -1
- package/dist/components/ui-splitter.d.ts.map +1 -1
- package/dist/components/ui-stepper.d.ts.map +1 -1
- package/dist/components/ui-switch.d.ts.map +1 -1
- package/dist/components/ui-tabs.d.ts.map +1 -1
- package/dist/components/ui-tags-input.d.ts.map +1 -1
- package/dist/components/ui-textarea.d.ts.map +1 -1
- package/dist/components/ui-time-picker.d.ts.map +1 -1
- package/dist/components/ui-toggle-group.d.ts +2 -0
- package/dist/components/ui-toggle-group.d.ts.map +1 -1
- package/dist/components/ui-toggle.d.ts.map +1 -1
- package/dist/components/ui-toolbar.d.ts +2 -0
- package/dist/components/ui-toolbar.d.ts.map +1 -1
- package/dist/components/ui-tooltip.d.ts.map +1 -1
- package/dist/components/ui-transfer-list.d.ts.map +1 -1
- package/dist/components/ui-tree-item.d.ts.map +1 -1
- package/dist/components/ui-tree.d.ts.map +1 -1
- package/dist/components/ui-wizard.d.ts.map +1 -1
- package/dist/container.cjs.js +6 -12
- package/dist/container.esm.js +8 -14
- package/dist/context-menu.cjs.js +8 -8
- package/dist/context-menu.esm.js +42 -41
- package/dist/data-table.cjs.js +18 -15
- package/dist/data-table.esm.js +207 -187
- package/dist/date-field.cjs.js +8 -8
- package/dist/date-field.esm.js +7 -7
- package/dist/date-picker.cjs.js +27 -18
- package/dist/date-picker.esm.js +57 -48
- package/dist/date-range-picker.cjs.js +22 -17
- package/dist/date-range-picker.esm.js +31 -26
- package/dist/date-range-time-picker.cjs.js +26 -19
- package/dist/date-range-time-picker.esm.js +23 -16
- package/dist/date-time-picker.cjs.js +23 -16
- package/dist/date-time-picker.esm.js +88 -81
- package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-B4hAkt36.mjs} +75 -68
- package/dist/date-time-utils-DdigV4hs.js +1 -0
- package/dist/dialog.cjs.js +57 -41
- package/dist/dialog.esm.js +84 -51
- package/dist/dock.cjs.js +16 -30
- package/dist/dock.esm.js +26 -40
- package/dist/drawer.cjs.js +8 -12
- package/dist/drawer.esm.js +6 -10
- package/dist/dropdown.cjs.js +8 -6
- package/dist/dropdown.esm.js +33 -30
- package/dist/empty-state.cjs.js +17 -15
- package/dist/empty-state.esm.js +13 -11
- package/dist/field.cjs.js +22 -13
- package/dist/field.esm.js +54 -45
- package/dist/fieldset.cjs.js +18 -11
- package/dist/fieldset.esm.js +20 -13
- package/dist/file-upload.cjs.js +77 -35
- package/dist/file-upload.esm.js +152 -110
- package/dist/floating-toolbar.cjs.js +6 -7
- package/dist/floating-toolbar.esm.js +8 -9
- package/dist/form.cjs.js +20 -23
- package/dist/form.esm.js +20 -23
- package/dist/gantt.cjs.js +6 -6
- package/dist/gantt.esm.js +6 -6
- package/dist/hover-card.cjs.js +7 -7
- package/dist/hover-card.esm.js +7 -7
- package/dist/icon-cloud.cjs.js +19 -36
- package/dist/icon-cloud.esm.js +41 -58
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +108 -104
- package/dist/inline-edit.cjs.js +47 -19
- package/dist/inline-edit.esm.js +66 -38
- package/dist/input.cjs.js +44 -37
- package/dist/input.esm.js +59 -52
- package/dist/layout.cjs.js +3 -3
- package/dist/layout.esm.js +3 -3
- package/dist/marquee.cjs.js +7 -10
- package/dist/marquee.esm.js +7 -10
- package/dist/menu.cjs.js +8 -24
- package/dist/menu.esm.js +52 -72
- package/dist/menubar.cjs.js +9 -31
- package/dist/menubar.esm.js +127 -153
- package/dist/meter.cjs.js +4 -9
- package/dist/meter.esm.js +6 -11
- package/dist/multi-select.cjs.js +48 -35
- package/dist/multi-select.esm.js +67 -53
- package/dist/navigation-menu.cjs.js +10 -10
- package/dist/navigation-menu.esm.js +33 -33
- package/dist/number-field.cjs.js +27 -16
- package/dist/number-field.esm.js +36 -25
- package/dist/odometer.cjs.js +5 -5
- package/dist/odometer.esm.js +3 -3
- package/dist/orbiter.cjs.js +11 -28
- package/dist/orbiter.esm.js +28 -45
- package/dist/overlay-motion-B56x1GoY.js +49 -0
- package/dist/overlay-motion-BX3dPLay.mjs +120 -0
- package/dist/pagination.cjs.js +28 -25
- package/dist/pagination.esm.js +54 -51
- package/dist/password-field.cjs.js +38 -33
- package/dist/password-field.esm.js +62 -57
- package/dist/pin-input.cjs.js +17 -13
- package/dist/pin-input.esm.js +23 -19
- package/dist/plugin-panel.cjs.js +1 -1
- package/dist/plugin-panel.esm.js +1 -1
- package/dist/popover.cjs.js +16 -28
- package/dist/popover.esm.js +29 -45
- package/dist/portal-DeaM1tYY.mjs +121 -0
- package/dist/portal-XbYR3m_q.js +1 -0
- package/dist/portal.d.ts +3 -1
- package/dist/portal.d.ts.map +1 -1
- package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
- package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
- package/dist/positioner.cjs.js +1 -1
- package/dist/positioner.esm.js +1 -1
- package/dist/primitives/overlay-motion.d.ts +47 -0
- package/dist/primitives/overlay-motion.d.ts.map +1 -0
- package/dist/primitives/positioner.d.ts.map +1 -1
- package/dist/progress.cjs.js +11 -16
- package/dist/progress.esm.js +37 -42
- package/dist/quick-actions.cjs.js +13 -13
- package/dist/quick-actions.esm.js +11 -11
- package/dist/radio-group.cjs.js +50 -26
- package/dist/radio-group.esm.js +53 -29
- package/dist/radio.cjs.js +15 -12
- package/dist/radio.esm.js +15 -12
- package/dist/rating.cjs.js +11 -15
- package/dist/rating.esm.js +48 -50
- package/dist/{runtime-CFnK53iC.mjs → runtime-CQM6wZOc.mjs} +498 -514
- package/dist/runtime-DxCl0A5q.js +5 -0
- package/dist/runtime.cjs.js +1 -1
- package/dist/runtime.d.ts +3 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.esm.js +36 -32
- package/dist/scroll-area.cjs.js +3 -4
- package/dist/scroll-area.esm.js +3 -4
- package/dist/section.cjs.js +2 -4
- package/dist/section.esm.js +2 -4
- package/dist/select.cjs.js +40 -73
- package/dist/select.esm.js +55 -87
- package/dist/selection-popup.cjs.js +3 -4
- package/dist/selection-popup.esm.js +3 -4
- package/dist/semantic-tokens.d.ts +17 -0
- package/dist/semantic-tokens.d.ts.map +1 -0
- package/dist/sidebar.cjs.js +22 -22
- package/dist/sidebar.esm.js +25 -25
- package/dist/skeleton.cjs.js +2 -2
- package/dist/skeleton.esm.js +2 -2
- package/dist/slider.cjs.js +22 -26
- package/dist/slider.esm.js +25 -29
- package/dist/sortable.cjs.js +4 -5
- package/dist/sortable.esm.js +4 -5
- package/dist/spinning-text.cjs.js +4 -13
- package/dist/spinning-text.esm.js +4 -13
- package/dist/split-button.cjs.js +5 -5
- package/dist/split-button.esm.js +15 -14
- package/dist/splitter.cjs.js +52 -10
- package/dist/splitter.esm.js +55 -13
- package/dist/stepper.cjs.js +31 -65
- package/dist/stepper.esm.js +32 -66
- package/dist/switch.cjs.js +20 -22
- package/dist/switch.esm.js +20 -22
- package/dist/table.cjs.js +5 -5
- package/dist/table.esm.js +20 -20
- package/dist/tabs.cjs.js +91 -21
- package/dist/tabs.esm.js +182 -112
- package/dist/tags-input.cjs.js +41 -15
- package/dist/tags-input.esm.js +73 -47
- package/dist/textarea.cjs.js +32 -33
- package/dist/textarea.esm.js +38 -39
- package/dist/theme.d.ts +25 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/time-field.cjs.js +7 -7
- package/dist/time-field.esm.js +6 -6
- package/dist/time-picker.cjs.js +16 -13
- package/dist/time-picker.esm.js +27 -24
- package/dist/timeline.cjs.js +10 -10
- package/dist/timeline.esm.js +7 -7
- package/dist/toggle-group.cjs.js +13 -13
- package/dist/toggle-group.esm.js +66 -61
- package/dist/toggle.cjs.js +52 -34
- package/dist/toggle.esm.js +80 -62
- package/dist/toolbar.cjs.js +14 -14
- package/dist/toolbar.esm.js +41 -33
- package/dist/tooltip.cjs.js +3 -3
- package/dist/tooltip.esm.js +39 -33
- package/dist/transfer-list.cjs.js +28 -29
- package/dist/transfer-list.esm.js +28 -29
- package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
- package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
- package/dist/tree-item.cjs.js +9 -8
- package/dist/tree-item.esm.js +13 -12
- package/dist/tree.cjs.js +1 -1
- package/dist/tree.esm.js +1 -1
- package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
- package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
- package/dist/wizard.cjs.js +39 -36
- package/dist/wizard.esm.js +39 -36
- package/package.json +1 -1
- package/dist/date-time-utils-y3AvNvGe.js +0 -1
- package/dist/portal-DgpQ3Jo1.js +0 -1
- package/dist/portal-bR42gHvG.mjs +0 -118
- package/dist/runtime-DwE-tizc.js +0 -1
package/dist/toggle.esm.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { E as l } from "./ElementBase-BeZT54Hj.mjs";
|
|
2
2
|
const g = `
|
|
3
3
|
:host {
|
|
4
|
-
--ui-toggle-radius:
|
|
5
|
-
--ui-toggle-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
|
|
6
|
-
--ui-toggle-bg:
|
|
7
|
-
--ui-toggle-color: var(--ui-color-text, #0f172a);
|
|
4
|
+
--ui-toggle-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
5
|
+
--ui-toggle-border: var(--ui-color-line, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
|
|
6
|
+
--ui-toggle-bg: transparent;
|
|
7
|
+
--ui-toggle-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
8
8
|
--ui-toggle-active-bg: var(--ui-color-primary, #2563eb);
|
|
9
|
-
--ui-toggle-
|
|
10
|
-
--ui-toggle-active-
|
|
9
|
+
--ui-toggle-pressed-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent));
|
|
10
|
+
--ui-toggle-active-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
11
|
+
--ui-toggle-active-border: var(--ui-color-accent-line, color-mix(in srgb, var(--ui-toggle-active-bg) 40%, transparent));
|
|
11
12
|
--ui-toggle-muted: var(--ui-color-muted, #526175);
|
|
12
13
|
--ui-toggle-focus: var(--ui-color-focus-ring, #2563eb);
|
|
13
14
|
--ui-toggle-shadow:
|
|
14
15
|
none;
|
|
15
|
-
--ui-toggle-padding-x: 12px;
|
|
16
|
-
--ui-toggle-padding-y:
|
|
17
|
-
--ui-toggle-height:
|
|
16
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-2, 12px) - 1px);
|
|
17
|
+
--ui-toggle-padding-y: 0px;
|
|
18
|
+
--ui-toggle-height: var(--ui-control-height-2, 32px);
|
|
19
|
+
--ui-toggle-font-size: var(--ui-control-font-size-2, 14px);
|
|
18
20
|
--ui-toggle-gap: 8px;
|
|
19
21
|
|
|
20
22
|
color-scheme: light dark;
|
|
@@ -24,6 +26,7 @@ const g = `
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
.control {
|
|
29
|
+
box-sizing: border-box;
|
|
27
30
|
min-inline-size: 0;
|
|
28
31
|
min-block-size: var(--ui-toggle-height);
|
|
29
32
|
display: inline-flex;
|
|
@@ -40,7 +43,7 @@ const g = `
|
|
|
40
43
|
user-select: none;
|
|
41
44
|
outline: none;
|
|
42
45
|
text-decoration: none;
|
|
43
|
-
font: 600
|
|
46
|
+
font: 600 var(--ui-toggle-font-size)/1 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
44
47
|
letter-spacing: 0.01em;
|
|
45
48
|
transition:
|
|
46
49
|
background-color 150ms ease,
|
|
@@ -51,29 +54,27 @@ const g = `
|
|
|
51
54
|
}
|
|
52
55
|
|
|
53
56
|
.control:hover {
|
|
54
|
-
background: color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg));
|
|
55
|
-
border-color: color-mix(in srgb, var(--ui-toggle-active-bg) 30%, var(--ui-toggle-border));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.control:active {
|
|
59
|
-
transform: translateY(0.5px);
|
|
57
|
+
background: var(--ui-color-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg)));
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
:host(:focus-visible) .control {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
var(--ui-toggle-shadow);
|
|
61
|
+
outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-toggle-focus));
|
|
62
|
+
outline-offset: var(--ui-ring-offset, 2px);
|
|
66
63
|
}
|
|
67
64
|
|
|
68
65
|
:host([pressed]) .control,
|
|
69
66
|
.control[aria-pressed="true"] {
|
|
70
|
-
background: var(--ui-toggle-
|
|
67
|
+
background: var(--ui-toggle-pressed-bg);
|
|
71
68
|
border-color: var(--ui-toggle-active-border);
|
|
72
69
|
color: var(--ui-toggle-active-color);
|
|
73
70
|
}
|
|
74
71
|
|
|
75
72
|
:host([pressed]) .control:hover {
|
|
76
|
-
background: color-
|
|
73
|
+
background: var(--ui-color-accent-fill-hover, var(--ui-toggle-pressed-bg));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.icon:empty {
|
|
77
|
+
display: none !important;
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
.icon {
|
|
@@ -107,17 +108,17 @@ const g = `
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
:host([size="sm"]) {
|
|
110
|
-
--ui-toggle-padding-x:
|
|
111
|
-
--ui-toggle-
|
|
112
|
-
--ui-toggle-
|
|
113
|
-
--ui-toggle-radius:
|
|
111
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
|
|
112
|
+
--ui-toggle-height: var(--ui-control-height-1, 24px);
|
|
113
|
+
--ui-toggle-font-size: var(--ui-control-font-size-1, 12px);
|
|
114
|
+
--ui-toggle-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
:host([size="lg"]) {
|
|
117
|
-
--ui-toggle-padding-x:
|
|
118
|
-
--ui-toggle-
|
|
119
|
-
--ui-toggle-
|
|
120
|
-
--ui-toggle-radius:
|
|
118
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
|
|
119
|
+
--ui-toggle-height: var(--ui-control-height-3, 40px);
|
|
120
|
+
--ui-toggle-font-size: var(--ui-control-font-size-3, 16px);
|
|
121
|
+
--ui-toggle-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
|
|
121
122
|
}
|
|
122
123
|
|
|
123
124
|
:host([shape="square"]) {
|
|
@@ -160,6 +161,14 @@ const g = `
|
|
|
160
161
|
background: transparent;
|
|
161
162
|
}
|
|
162
163
|
|
|
164
|
+
/* A tone tints the pressed state in its own colour (the default soft fill is the theme accent). */
|
|
165
|
+
:host([tone="success"]),
|
|
166
|
+
:host([tone="warning"]),
|
|
167
|
+
:host([tone="danger"]) {
|
|
168
|
+
--ui-toggle-pressed-bg: color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent);
|
|
169
|
+
--ui-toggle-active-border: color-mix(in srgb, var(--ui-toggle-active-bg) 44%, transparent);
|
|
170
|
+
}
|
|
171
|
+
|
|
163
172
|
:host([tone="success"]) {
|
|
164
173
|
--ui-toggle-active-bg: var(--ui-color-success, #15803d);
|
|
165
174
|
}
|
|
@@ -172,7 +181,16 @@ const g = `
|
|
|
172
181
|
--ui-toggle-active-bg: var(--ui-color-danger, #dc2626);
|
|
173
182
|
}
|
|
174
183
|
|
|
175
|
-
/* The contrast variant draws dark text on
|
|
184
|
+
/* The contrast variant draws dark text on a solid light pressed fill (not the soft theme tint). */
|
|
185
|
+
:host([variant="contrast"]) {
|
|
186
|
+
--ui-toggle-pressed-bg: var(--ui-toggle-active-bg);
|
|
187
|
+
--ui-toggle-active-border: var(--ui-toggle-active-bg);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
:host([variant="contrast"][pressed]) .control:hover {
|
|
191
|
+
background: color-mix(in srgb, var(--ui-toggle-active-bg) 86%, #ffffff);
|
|
192
|
+
}
|
|
193
|
+
|
|
176
194
|
:host([variant="contrast"][tone="success"]) { --ui-toggle-active-bg: #86efac; }
|
|
177
195
|
:host([variant="contrast"][tone="warning"]) { --ui-toggle-active-bg: #fcd34d; }
|
|
178
196
|
:host([variant="contrast"][tone="danger"]) { --ui-toggle-active-bg: #fca5a5; }
|
|
@@ -224,13 +242,13 @@ const g = `
|
|
|
224
242
|
--ui-toggle-shadow: none;
|
|
225
243
|
}
|
|
226
244
|
}
|
|
227
|
-
`,
|
|
245
|
+
`, n = /* @__PURE__ */ new Set(["icon-on", "icon-off", "aria-label"]);
|
|
228
246
|
function c(o) {
|
|
229
247
|
if (o == null) return !1;
|
|
230
|
-
const
|
|
231
|
-
return
|
|
248
|
+
const t = String(o).toLowerCase();
|
|
249
|
+
return t !== "false" && t !== "0" && t !== "off";
|
|
232
250
|
}
|
|
233
|
-
function
|
|
251
|
+
function a(o) {
|
|
234
252
|
return String(o).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
235
253
|
}
|
|
236
254
|
class u extends l {
|
|
@@ -263,10 +281,10 @@ class u extends l {
|
|
|
263
281
|
disconnectedCallback() {
|
|
264
282
|
this.root.removeEventListener("click", this._onClick), this.root.removeEventListener("keydown", this._onKeyDown), super.disconnectedCallback();
|
|
265
283
|
}
|
|
266
|
-
attributeChangedCallback(
|
|
267
|
-
if (
|
|
268
|
-
if (
|
|
269
|
-
super.attributeChangedCallback(
|
|
284
|
+
attributeChangedCallback(t, e, i) {
|
|
285
|
+
if (e !== i) {
|
|
286
|
+
if (n.has(t)) {
|
|
287
|
+
super.attributeChangedCallback(t, e, i);
|
|
270
288
|
return;
|
|
271
289
|
}
|
|
272
290
|
this._syncAria();
|
|
@@ -275,25 +293,25 @@ class u extends l {
|
|
|
275
293
|
get pressed() {
|
|
276
294
|
return this.hasAttribute("pressed");
|
|
277
295
|
}
|
|
278
|
-
set pressed(
|
|
279
|
-
|
|
296
|
+
set pressed(t) {
|
|
297
|
+
t ? this.setAttribute("pressed", "") : this.removeAttribute("pressed");
|
|
280
298
|
}
|
|
281
299
|
get disabled() {
|
|
282
300
|
return this.hasAttribute("disabled") || this.hasAttribute("loading");
|
|
283
301
|
}
|
|
284
|
-
set disabled(
|
|
285
|
-
|
|
302
|
+
set disabled(t) {
|
|
303
|
+
t ? this.setAttribute("disabled", "") : this.removeAttribute("disabled");
|
|
286
304
|
}
|
|
287
|
-
toggle(
|
|
305
|
+
toggle(t) {
|
|
288
306
|
if (this.disabled) return;
|
|
289
|
-
const
|
|
290
|
-
if (
|
|
307
|
+
const e = typeof t == "boolean" ? t : !this.pressed;
|
|
308
|
+
if (e === this.pressed) {
|
|
291
309
|
this._syncAria();
|
|
292
310
|
return;
|
|
293
311
|
}
|
|
294
|
-
this.pressed =
|
|
312
|
+
this.pressed = e, this._syncAria();
|
|
295
313
|
const i = {
|
|
296
|
-
pressed:
|
|
314
|
+
pressed: e,
|
|
297
315
|
value: this.getAttribute("value") || "",
|
|
298
316
|
name: this.getAttribute("name") || "",
|
|
299
317
|
required: c(this.getAttribute("required"))
|
|
@@ -301,42 +319,42 @@ class u extends l {
|
|
|
301
319
|
this.dispatchEvent(new CustomEvent("input", { detail: i, bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("change", { detail: i, bubbles: !0, composed: !0 }));
|
|
302
320
|
}
|
|
303
321
|
_syncAria() {
|
|
304
|
-
const
|
|
305
|
-
this.hasAttribute("data-group-item") ? this.hasAttribute("aria-pressed") && this.removeAttribute("aria-pressed") : (this.setAttribute("role", "button"), this.setAttribute("aria-pressed",
|
|
322
|
+
const t = this.pressed, e = this.disabled, i = this.hasAttribute("loading");
|
|
323
|
+
this.hasAttribute("data-group-item") ? this.hasAttribute("aria-pressed") && this.removeAttribute("aria-pressed") : (this.setAttribute("role", "button"), this.setAttribute("aria-pressed", t ? "true" : "false")), this.setAttribute("aria-disabled", e ? "true" : "false"), this.setAttribute("aria-busy", i ? "true" : "false");
|
|
306
324
|
const r = this.getAttribute("tabindex");
|
|
307
|
-
if (
|
|
325
|
+
if (e)
|
|
308
326
|
this.hasAttribute("data-ui-prev-tabindex") || this.setAttribute("data-ui-prev-tabindex", r ?? ""), r !== "-1" && this.setAttribute("tabindex", "-1");
|
|
309
327
|
else {
|
|
310
328
|
const s = this.getAttribute("data-ui-prev-tabindex");
|
|
311
329
|
s != null ? (s ? this.setAttribute("tabindex", s) : this.removeAttribute("tabindex"), this.removeAttribute("data-ui-prev-tabindex")) : r == null && this.setAttribute("tabindex", "0");
|
|
312
330
|
}
|
|
313
|
-
this._control && this._control.toggleAttribute("data-disabled",
|
|
331
|
+
this._control && this._control.toggleAttribute("data-disabled", e);
|
|
314
332
|
}
|
|
315
|
-
_onClick(
|
|
316
|
-
const
|
|
317
|
-
|
|
333
|
+
_onClick(t) {
|
|
334
|
+
const e = t.target;
|
|
335
|
+
e && e.closest(".control") && this.toggle();
|
|
318
336
|
}
|
|
319
|
-
_onKeyDown(
|
|
320
|
-
this.disabled || (
|
|
337
|
+
_onKeyDown(t) {
|
|
338
|
+
this.disabled || (t.key === " " || t.key === "Enter") && (t.preventDefault(), this.toggle());
|
|
321
339
|
}
|
|
322
340
|
render() {
|
|
323
341
|
this.pressed;
|
|
324
|
-
const
|
|
342
|
+
const t = this.disabled, e = this.getAttribute("icon-on") || "", i = this.getAttribute("icon-off") || "";
|
|
325
343
|
this.getAttribute("aria-label"), this.setContent(`
|
|
326
344
|
<style>${g}</style>
|
|
327
345
|
<span
|
|
328
346
|
class="control"
|
|
329
347
|
part="control"
|
|
330
|
-
${
|
|
348
|
+
${t ? "data-disabled" : ""}
|
|
331
349
|
>
|
|
332
|
-
<span class="icon icon-off" part="icon-off" aria-hidden="true">${
|
|
333
|
-
<span class="icon icon-on" part="icon-on" aria-hidden="true">${
|
|
350
|
+
<span class="icon icon-off" part="icon-off" aria-hidden="true">${a(i)}</span>
|
|
351
|
+
<span class="icon icon-on" part="icon-on" aria-hidden="true">${a(e)}</span>
|
|
334
352
|
<span class="label" part="label"><slot></slot></span>
|
|
335
353
|
</span>
|
|
336
354
|
`), this._control = this.root.querySelector(".control"), this._syncAria();
|
|
337
355
|
}
|
|
338
|
-
shouldRenderOnAttributeChange(
|
|
339
|
-
return
|
|
356
|
+
shouldRenderOnAttributeChange(t, e, i) {
|
|
357
|
+
return n.has(t);
|
|
340
358
|
}
|
|
341
359
|
}
|
|
342
360
|
typeof customElements < "u" && !customElements.get("ui-toggle") && customElements.define("ui-toggle", u);
|
package/dist/toolbar.cjs.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("./ElementBase-DxbvhLJs.js"),i=require("./roving-focus-group-BdJ_4Njm.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("./ElementBase-DxbvhLJs.js"),i=require("./roving-focus-group-BdJ_4Njm.js"),c=`
|
|
2
2
|
:host {
|
|
3
3
|
--ui-toolbar-gap: 8px;
|
|
4
|
-
--ui-toolbar-padding:
|
|
5
|
-
--ui-toolbar-radius:
|
|
6
|
-
--ui-toolbar-bg: color-
|
|
7
|
-
--ui-toolbar-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
|
|
4
|
+
--ui-toolbar-padding: 4px;
|
|
5
|
+
--ui-toolbar-radius: calc(var(--ui-radius, 6px) + 2px);
|
|
6
|
+
--ui-toolbar-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
|
|
7
|
+
--ui-toolbar-border: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
|
|
8
8
|
--ui-toolbar-shadow:
|
|
9
9
|
none;
|
|
10
10
|
|
|
@@ -73,15 +73,15 @@
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
:host([size="sm"]) {
|
|
76
|
-
--ui-toolbar-gap:
|
|
77
|
-
--ui-toolbar-padding:
|
|
78
|
-
--ui-toolbar-radius:
|
|
76
|
+
--ui-toolbar-gap: 4px;
|
|
77
|
+
--ui-toolbar-padding: 2px;
|
|
78
|
+
--ui-toolbar-radius: var(--ui-radius, 6px);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
:host([size="lg"]) {
|
|
82
|
-
--ui-toolbar-gap:
|
|
83
|
-
--ui-toolbar-padding:
|
|
84
|
-
--ui-toolbar-radius:
|
|
82
|
+
--ui-toolbar-gap: 6px;
|
|
83
|
+
--ui-toolbar-padding: 6px;
|
|
84
|
+
--ui-toolbar-radius: calc(var(--ui-radius, 6px) + 4px);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
:host([density="compact"]) {
|
|
@@ -118,9 +118,9 @@
|
|
|
118
118
|
--ui-toolbar-shadow: none;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
`;function
|
|
122
|
-
<style>${
|
|
123
|
-
<div class="toolbar" part="toolbar" role="toolbar" aria-label="${
|
|
121
|
+
`;function b(s){if(!(s instanceof HTMLElement)||s.hasAttribute("disabled")||s.getAttribute("aria-disabled")==="true")return!1;const t=s.tagName.toLowerCase();return!!(["button","input","select","textarea","a"].includes(t)||s.hasAttribute("tabindex")||t.startsWith("ui-"))}class l extends u.ElementBase{static get observedAttributes(){return["orientation","headless","variant","size","density","wrap","loop","aria-label"]}constructor(){super(),this._onKeyDown=this._onKeyDown.bind(this)}connectedCallback(){super.connectedCallback(),this.root.addEventListener("keydown",this._onKeyDown),queueMicrotask(()=>this._syncRovingState())}disconnectedCallback(){this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}_focusables(){const t=this.root.querySelector("slot");if(!t)return[];const o=t.assignedElements({flatten:!0}),r=[],e=n=>{b(n)&&r.push(n)};o.forEach(n=>{e(n),n.querySelectorAll('button, [tabindex], a[href], input:not([type="hidden"]), select, textarea, ui-button, ui-toggle, ui-input, ui-select').forEach(e)});const a=new Set;return r.filter(n=>a.has(n)?!1:(a.add(n),!0))}_moveFocus(t,o){const r=this._focusables();if(r.length<2)return;const e=r.indexOf(t);if(e<0)return;const a=i.moveRovingFocusIndex(r,e,o,{wrap:this.hasAttribute("loop")||!this.hasAttribute("no-loop"),fallbackIndex:i.resolveRovingFocusIndex(r,{activeIndex:e,getDisabled:()=>!1}),getDisabled:()=>!1});if(a<0)return;const n=r[a];i.syncRovingTabStops(r,n,{activeAttribute:null}),i.focusRovingItem(n)}_inheritToggleVariant(){const t=this.getAttribute("variant")==="contrast";this.querySelectorAll("ui-toggle").forEach(o=>{t&&!o.hasAttribute("variant")?(o.setAttribute("variant","contrast"),o.setAttribute("data-inherited-variant","")):!t&&o.hasAttribute("data-inherited-variant")&&(o.removeAttribute("variant"),o.removeAttribute("data-inherited-variant"))})}_syncRovingState(){this._inheritToggleVariant();const t=this._focusables();if(!t.length)return;const o=t.find(r=>r===document.activeElement)||t[i.resolveRovingFocusIndex(t,{getDisabled:()=>!1})];i.syncRovingTabStops(t,o||null,{activeAttribute:null})}_onKeyDown(t){const o=t.target;if(!o)return;const r=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal";if(r==="horizontal"&&t.key==="ArrowRight"||r==="vertical"&&t.key==="ArrowDown"){t.preventDefault(),this._moveFocus(o,1);return}if(r==="horizontal"&&t.key==="ArrowLeft"||r==="vertical"&&t.key==="ArrowUp"){t.preventDefault(),this._moveFocus(o,-1);return}if(t.key==="Home"){const e=this._focusables();if(!e.length)return;t.preventDefault();const a=i.getRovingFocusBoundaryIndex(e,"first",()=>!1);if(a<0)return;i.syncRovingTabStops(e,e[a],{activeAttribute:null}),i.focusRovingItem(e[a]);return}if(t.key==="End"){const e=this._focusables();if(!e.length)return;t.preventDefault();const a=i.getRovingFocusBoundaryIndex(e,"last",()=>!1);if(a<0)return;i.syncRovingTabStops(e,e[a],{activeAttribute:null}),i.focusRovingItem(e[a])}}shouldRenderOnAttributeChange(t,o,r){return!0}render(){const t=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",o=this.getAttribute("aria-label")||"Toolbar";this.setContent(`
|
|
122
|
+
<style>${c}</style>
|
|
123
|
+
<div class="toolbar" part="toolbar" role="toolbar" aria-label="${o}" aria-orientation="${t}">
|
|
124
124
|
<slot></slot>
|
|
125
125
|
</div>
|
|
126
126
|
`),queueMicrotask(()=>this._syncRovingState())}}typeof customElements<"u"&&!customElements.get("ui-toolbar")&&customElements.define("ui-toolbar",l);exports.UIToolbar=l;
|
package/dist/toolbar.esm.js
CHANGED
|
@@ -3,10 +3,10 @@ import { m as d, r as u, s, f as l, g as b } from "./roving-focus-group-Dbm1Jko_
|
|
|
3
3
|
const f = `
|
|
4
4
|
:host {
|
|
5
5
|
--ui-toolbar-gap: 8px;
|
|
6
|
-
--ui-toolbar-padding:
|
|
7
|
-
--ui-toolbar-radius:
|
|
8
|
-
--ui-toolbar-bg: color-
|
|
9
|
-
--ui-toolbar-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
|
|
6
|
+
--ui-toolbar-padding: 4px;
|
|
7
|
+
--ui-toolbar-radius: calc(var(--ui-radius, 6px) + 2px);
|
|
8
|
+
--ui-toolbar-bg: var(--color-panel-solid, var(--ui-color-surface, #ffffff));
|
|
9
|
+
--ui-toolbar-border: var(--ui-color-line-subtle, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
|
|
10
10
|
--ui-toolbar-shadow:
|
|
11
11
|
none;
|
|
12
12
|
|
|
@@ -75,15 +75,15 @@ const f = `
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
:host([size="sm"]) {
|
|
78
|
-
--ui-toolbar-gap:
|
|
79
|
-
--ui-toolbar-padding:
|
|
80
|
-
--ui-toolbar-radius:
|
|
78
|
+
--ui-toolbar-gap: 4px;
|
|
79
|
+
--ui-toolbar-padding: 2px;
|
|
80
|
+
--ui-toolbar-radius: var(--ui-radius, 6px);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
:host([size="lg"]) {
|
|
84
|
-
--ui-toolbar-gap:
|
|
85
|
-
--ui-toolbar-padding:
|
|
86
|
-
--ui-toolbar-radius:
|
|
84
|
+
--ui-toolbar-gap: 6px;
|
|
85
|
+
--ui-toolbar-padding: 6px;
|
|
86
|
+
--ui-toolbar-radius: calc(var(--ui-radius, 6px) + 4px);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
:host([density="compact"]) {
|
|
@@ -151,73 +151,81 @@ class h extends c {
|
|
|
151
151
|
_focusables() {
|
|
152
152
|
const t = this.root.querySelector("slot");
|
|
153
153
|
if (!t) return [];
|
|
154
|
-
const
|
|
154
|
+
const r = t.assignedElements({ flatten: !0 }), e = [], o = (i) => {
|
|
155
155
|
p(i) && e.push(i);
|
|
156
156
|
};
|
|
157
|
-
|
|
157
|
+
r.forEach((i) => {
|
|
158
158
|
o(i), i.querySelectorAll('button, [tabindex], a[href], input:not([type="hidden"]), select, textarea, ui-button, ui-toggle, ui-input, ui-select').forEach(o);
|
|
159
159
|
});
|
|
160
|
-
const
|
|
161
|
-
return e.filter((i) =>
|
|
160
|
+
const a = /* @__PURE__ */ new Set();
|
|
161
|
+
return e.filter((i) => a.has(i) ? !1 : (a.add(i), !0));
|
|
162
162
|
}
|
|
163
|
-
_moveFocus(t,
|
|
163
|
+
_moveFocus(t, r) {
|
|
164
164
|
const e = this._focusables();
|
|
165
165
|
if (e.length < 2) return;
|
|
166
166
|
const o = e.indexOf(t);
|
|
167
167
|
if (o < 0) return;
|
|
168
|
-
const
|
|
168
|
+
const a = d(e, o, r, {
|
|
169
169
|
wrap: this.hasAttribute("loop") || !this.hasAttribute("no-loop"),
|
|
170
170
|
fallbackIndex: u(e, { activeIndex: o, getDisabled: () => !1 }),
|
|
171
171
|
getDisabled: () => !1
|
|
172
172
|
});
|
|
173
|
-
if (
|
|
174
|
-
const i = e[
|
|
173
|
+
if (a < 0) return;
|
|
174
|
+
const i = e[a];
|
|
175
175
|
s(e, i, { activeAttribute: null }), l(i);
|
|
176
176
|
}
|
|
177
|
+
/** A contrast toolbar is a dark surface: its toggles that set no variant of their own follow it. */
|
|
178
|
+
_inheritToggleVariant() {
|
|
179
|
+
const t = this.getAttribute("variant") === "contrast";
|
|
180
|
+
this.querySelectorAll("ui-toggle").forEach((r) => {
|
|
181
|
+
t && !r.hasAttribute("variant") ? (r.setAttribute("variant", "contrast"), r.setAttribute("data-inherited-variant", "")) : !t && r.hasAttribute("data-inherited-variant") && (r.removeAttribute("variant"), r.removeAttribute("data-inherited-variant"));
|
|
182
|
+
});
|
|
183
|
+
}
|
|
177
184
|
_syncRovingState() {
|
|
185
|
+
this._inheritToggleVariant();
|
|
178
186
|
const t = this._focusables();
|
|
179
187
|
if (!t.length) return;
|
|
180
|
-
const
|
|
181
|
-
s(t,
|
|
188
|
+
const r = t.find((e) => e === document.activeElement) || t[u(t, { getDisabled: () => !1 })];
|
|
189
|
+
s(t, r || null, { activeAttribute: null });
|
|
182
190
|
}
|
|
183
191
|
_onKeyDown(t) {
|
|
184
|
-
const
|
|
185
|
-
if (!
|
|
192
|
+
const r = t.target;
|
|
193
|
+
if (!r) return;
|
|
186
194
|
const e = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal";
|
|
187
195
|
if (e === "horizontal" && t.key === "ArrowRight" || e === "vertical" && t.key === "ArrowDown") {
|
|
188
|
-
t.preventDefault(), this._moveFocus(
|
|
196
|
+
t.preventDefault(), this._moveFocus(r, 1);
|
|
189
197
|
return;
|
|
190
198
|
}
|
|
191
199
|
if (e === "horizontal" && t.key === "ArrowLeft" || e === "vertical" && t.key === "ArrowUp") {
|
|
192
|
-
t.preventDefault(), this._moveFocus(
|
|
200
|
+
t.preventDefault(), this._moveFocus(r, -1);
|
|
193
201
|
return;
|
|
194
202
|
}
|
|
195
203
|
if (t.key === "Home") {
|
|
196
204
|
const o = this._focusables();
|
|
197
205
|
if (!o.length) return;
|
|
198
206
|
t.preventDefault();
|
|
199
|
-
const
|
|
200
|
-
if (
|
|
201
|
-
s(o, o[
|
|
207
|
+
const a = b(o, "first", () => !1);
|
|
208
|
+
if (a < 0) return;
|
|
209
|
+
s(o, o[a], { activeAttribute: null }), l(o[a]);
|
|
202
210
|
return;
|
|
203
211
|
}
|
|
204
212
|
if (t.key === "End") {
|
|
205
213
|
const o = this._focusables();
|
|
206
214
|
if (!o.length) return;
|
|
207
215
|
t.preventDefault();
|
|
208
|
-
const
|
|
209
|
-
if (
|
|
210
|
-
s(o, o[
|
|
216
|
+
const a = b(o, "last", () => !1);
|
|
217
|
+
if (a < 0) return;
|
|
218
|
+
s(o, o[a], { activeAttribute: null }), l(o[a]);
|
|
211
219
|
}
|
|
212
220
|
}
|
|
213
|
-
shouldRenderOnAttributeChange(t,
|
|
221
|
+
shouldRenderOnAttributeChange(t, r, e) {
|
|
214
222
|
return !0;
|
|
215
223
|
}
|
|
216
224
|
render() {
|
|
217
|
-
const t = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal",
|
|
225
|
+
const t = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal", r = this.getAttribute("aria-label") || "Toolbar";
|
|
218
226
|
this.setContent(`
|
|
219
227
|
<style>${f}</style>
|
|
220
|
-
<div class="toolbar" part="toolbar" role="toolbar" aria-label="${
|
|
228
|
+
<div class="toolbar" part="toolbar" role="toolbar" aria-label="${r}" aria-orientation="${t}">
|
|
221
229
|
<slot></slot>
|
|
222
230
|
</div>
|
|
223
231
|
`), queueMicrotask(() => this._syncRovingState());
|
package/dist/tooltip.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const w=require("./ElementBase-DxbvhLJs.js"),y=require("./portal-XbYR3m_q.js"),d=require("./overlay-motion-B56x1GoY.js"),m=140,A=120,_=`
|
|
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%);
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
letter-spacing: 0.01em;
|
|
24
24
|
opacity: 0;
|
|
25
25
|
transform: translate3d(0, 4px, 0) scale(0.98);
|
|
26
|
-
transition: opacity ${
|
|
26
|
+
transition: opacity ${m}ms ease, transform ${m}ms ease;
|
|
27
27
|
z-index: 3000;
|
|
28
28
|
will-change: transform, opacity;
|
|
29
29
|
}
|
|
@@ -156,4 +156,4 @@
|
|
|
156
156
|
forced-color-adjust: none;
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
`;function
|
|
159
|
+
`;function f(i){if(i==null)return!1;const t=String(i).toLowerCase();return t!=="false"&&t!=="0"&&t!=="off"}function l(i,t){const e=Number(i);return Number.isFinite(e)?e:t}function b(i){return i==="top"||i==="right"||i==="bottom"||i==="left"?i:"top"}function T(i){const t=(i||"hover focus").trim().toLowerCase();return t?new Set(t.split(/[\s,]+/).filter(Boolean)):new Set(["hover","focus"])}function u(i){return f(i)}class v extends w.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=T(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:l(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:l(this.getAttribute("close-delay"),120);this._closeTimer=setTimeout(()=>{if(u(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=_,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,u(this.getAttribute("interactive"))&&this._scheduleHide()}_renderPortalContent(){const t=this._ensurePortalEl(),e=this.getAttribute("text")||this.getAttribute("aria-label")||"",o=b(this.getAttribute("placement")),r=this.getAttribute("variant")||"default",g=this.getAttribute("size")||"md",x=this.getAttribute("tone")||"default",h=!this.hasAttribute("arrow")||f(this.getAttribute("arrow")),E=u(this.getAttribute("interactive")),c=this.hasAttribute("headless"),n=t.querySelector("style[data-ui-tooltip-style]");if(!c&&!n){const s=document.createElement("style");s.setAttribute("data-ui-tooltip-style",""),s.textContent=_,t.prepend(s)}else c&&n&&n.remove();t.setAttribute("data-variant",r),t.setAttribute("data-size",g),t.setAttribute("data-tone",x),t.setAttribute("data-placement",o),t.setAttribute("data-interactive",E?"true":"false");const p=t.querySelector(".tooltip-content");p&&(p.textContent=e);const a=t.querySelector(".arrow");if(h&&!a){const s=document.createElement("div");s.className="arrow",t.appendChild(s)}!h&&a&&a.remove()}_reposition(){if(!this._portalEl)return;this._cleanup&&(this._cleanup(),this._cleanup=null);const t=b(this.getAttribute("placement")),e=l(this.getAttribute("offset"),8);this._cleanup=y.showPortalFor(this,this._portalEl,{placement:t,offset:e,shift:!0,flip:!0}),this._portalEl.getAttribute("data-state")==="open"&&d.liftToTopLayer(this._portalEl)}_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._portalEl.setAttribute("data-state","open"),d.liftToTopLayer(this._portalEl),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({remove:!1}),this._cleanup=null);const e=this._portalEl;if(e){e.classList.remove("show"),e.classList.add("closing"),e.setAttribute("data-state","closed");const r=typeof getComputedStyle=="function"?parseFloat(getComputedStyle(e).transitionDuration||"0"):0;t||!(r>0)?this._removePortal():this._exitTimer=setTimeout(()=>{this._removePortal(),this._exitTimer=null},A)}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",v);exports.UITooltip=v;
|