@editora/ui-core 0.1.25 → 0.2.1
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 +132 -0
- package/dist/accordion.cjs.js +13 -12
- package/dist/accordion.esm.js +13 -12
- package/dist/alert-dialog.cjs.js +92 -53
- package/dist/alert-dialog.esm.js +211 -159
- package/dist/alert.cjs.js +42 -33
- package/dist/alert.esm.js +80 -71
- 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 +9 -9
- package/dist/animated-text.esm.js +9 -9
- package/dist/app-header.cjs.js +17 -12
- package/dist/app-header.esm.js +18 -13
- package/dist/aspect-ratio.cjs.js +10 -12
- package/dist/aspect-ratio.esm.js +11 -13
- package/dist/avatar.cjs.js +16 -20
- package/dist/avatar.esm.js +16 -20
- 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-D-mXMgqc.js → calendar-CzpWDxLc.js} +56 -46
- package/dist/{calendar-B3PUKHQm.mjs → calendar-DkSDFg33.mjs} +127 -117
- 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 +58 -52
- package/dist/chart.esm.js +101 -95
- package/dist/checkbox.cjs.js +19 -15
- package/dist/checkbox.esm.js +19 -15
- package/dist/collapsible.cjs.js +9 -13
- package/dist/collapsible.esm.js +9 -13
- package/dist/color-picker.cjs.js +38 -19
- package/dist/color-picker.esm.js +134 -115
- package/dist/combobox.cjs.js +60 -57
- package/dist/combobox.esm.js +96 -92
- 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-app-header.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-chart.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-gantt.d.ts.map +1 -1
- package/dist/components/ui-hover-card.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-sidebar.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 +21 -18
- package/dist/data-table.esm.js +210 -190
- package/dist/date-field.cjs.js +9 -9
- package/dist/date-field.esm.js +19 -19
- package/dist/date-picker.cjs.js +29 -20
- package/dist/date-picker.esm.js +59 -50
- package/dist/date-range-picker.cjs.js +24 -19
- package/dist/date-range-picker.esm.js +86 -81
- package/dist/date-range-time-picker.cjs.js +27 -20
- package/dist/date-range-time-picker.esm.js +24 -17
- package/dist/date-time-picker.cjs.js +24 -17
- package/dist/date-time-picker.esm.js +89 -82
- package/dist/date-time-utils-C-4eHTyy.js +1 -0
- package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-zAx4ghvC.mjs} +75 -68
- package/dist/description.cjs.js +4 -4
- package/dist/description.esm.js +4 -4
- package/dist/dialog.cjs.js +59 -43
- package/dist/dialog.esm.js +86 -53
- package/dist/direction-provider.cjs.js +1 -1
- package/dist/direction-provider.esm.js +1 -1
- 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-error.cjs.js +1 -1
- package/dist/field-error.esm.js +7 -7
- package/dist/field.cjs.js +23 -14
- package/dist/field.esm.js +30 -21
- package/dist/fieldset.cjs.js +16 -9
- package/dist/fieldset.esm.js +19 -12
- package/dist/file-upload.cjs.js +79 -37
- package/dist/file-upload.esm.js +154 -112
- package/dist/flex.cjs.js +2 -2
- package/dist/flex.esm.js +8 -8
- package/dist/floating-toolbar.cjs.js +6 -7
- package/dist/floating-toolbar.esm.js +8 -9
- package/dist/form.cjs.js +24 -27
- package/dist/form.esm.js +24 -27
- package/dist/gantt.cjs.js +13 -11
- package/dist/gantt.esm.js +13 -11
- package/dist/grid.cjs.js +1 -1
- package/dist/grid.esm.js +1 -1
- package/dist/hover-card.cjs.js +8 -8
- package/dist/hover-card.esm.js +18 -15
- 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 +50 -22
- package/dist/inline-edit.esm.js +77 -49
- package/dist/input.cjs.js +45 -38
- package/dist/input.esm.js +60 -53
- package/dist/label.cjs.js +6 -6
- package/dist/label.esm.js +6 -6
- 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/masonry-grid.cjs.js +2 -2
- package/dist/masonry-grid.esm.js +11 -11
- package/dist/{menu-item-styles-IGSFLAHu.mjs → menu-item-styles-CdqxPUuw.mjs} +15 -15
- package/dist/{menu-item-styles-B4onAr4C.js → menu-item-styles-DUdyjQ7i.js} +10 -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 +53 -40
- package/dist/multi-select.esm.js +87 -73
- package/dist/navigation-menu.cjs.js +10 -10
- package/dist/navigation-menu.esm.js +33 -33
- package/dist/number-field.cjs.js +28 -17
- package/dist/number-field.esm.js +37 -26
- package/dist/number-ticker.cjs.js +4 -4
- package/dist/number-ticker.esm.js +10 -10
- package/dist/odometer.cjs.js +9 -9
- package/dist/odometer.esm.js +17 -17
- 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 +39 -34
- package/dist/password-field.esm.js +63 -58
- package/dist/pin-input.cjs.js +18 -14
- package/dist/pin-input.esm.js +24 -20
- package/dist/placement-grid.cjs.js +1 -1
- package/dist/placement-grid.esm.js +1 -1
- 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.cjs.js +1 -1
- package/dist/portal.d.ts +3 -1
- package/dist/portal.d.ts.map +1 -1
- package/dist/portal.esm.js +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/presence.cjs.js +1 -1
- package/dist/presence.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 +14 -14
- package/dist/quick-actions.esm.js +12 -12
- package/dist/radio-group.cjs.js +50 -26
- package/dist/radio-group.esm.js +53 -29
- package/dist/radio.cjs.js +16 -13
- package/dist/radio.esm.js +16 -13
- package/dist/rating.cjs.js +11 -15
- package/dist/rating.esm.js +48 -50
- package/dist/{runtime-CFnK53iC.mjs → runtime-BRT7E4A8.mjs} +563 -531
- package/dist/runtime-CXw4SGV9.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 +42 -75
- package/dist/select.esm.js +57 -89
- 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/separator.cjs.js +6 -6
- package/dist/separator.esm.js +7 -7
- package/dist/sidebar.cjs.js +29 -28
- package/dist/sidebar.esm.js +32 -31
- 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/slot.cjs.js +1 -1
- package/dist/slot.esm.js +1 -1
- package/dist/sortable.cjs.js +10 -11
- package/dist/sortable.esm.js +10 -11
- package/dist/spinning-text.cjs.js +4 -13
- package/dist/spinning-text.esm.js +4 -13
- package/dist/split-button.cjs.js +7 -7
- package/dist/split-button.esm.js +17 -16
- 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 +101 -26
- package/dist/tabs.esm.js +187 -112
- package/dist/tags-input.cjs.js +43 -17
- package/dist/tags-input.esm.js +75 -49
- package/dist/textarea.cjs.js +34 -35
- package/dist/textarea.esm.js +50 -51
- package/dist/theme.d.ts +25 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/time-field.cjs.js +8 -8
- package/dist/time-field.esm.js +29 -29
- package/dist/time-picker.cjs.js +17 -14
- package/dist/time-picker.esm.js +28 -25
- package/dist/timeline.cjs.js +10 -10
- package/dist/timeline.esm.js +7 -7
- package/dist/toast.cjs.js +2 -2
- package/dist/toast.esm.js +2 -2
- 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 +37 -38
- package/dist/transfer-list.esm.js +32 -33
- 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 +51 -39
- package/dist/wizard.esm.js +51 -39
- 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/pagination.cjs.js
CHANGED
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
:host {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
max-width: 100%;
|
|
5
|
-
--ui-pagination-gap:
|
|
6
|
-
--ui-pagination-radius:
|
|
7
|
-
--ui-pagination-bg:
|
|
8
|
-
--ui-pagination-item-bg:
|
|
9
|
-
--ui-pagination-item-bg-hover: color-mix(in srgb, var(--ui-color-primary, #2563eb) 12%, transparent);
|
|
5
|
+
--ui-pagination-gap: 2px;
|
|
6
|
+
--ui-pagination-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
7
|
+
--ui-pagination-bg: transparent;
|
|
8
|
+
--ui-pagination-item-bg: transparent;
|
|
9
|
+
--ui-pagination-item-bg-hover: var(--ui-color-fill, color-mix(in srgb, var(--ui-color-primary, #2563eb) 12%, transparent));
|
|
10
10
|
--ui-pagination-active-bg: var(--ui-color-primary, #2563eb);
|
|
11
|
-
--ui-pagination-active-color: #ffffff;
|
|
12
|
-
--ui-pagination-border:
|
|
13
|
-
--ui-pagination-color: var(--ui-color-text, #0f172a);
|
|
14
|
-
--ui-pagination-muted: var(--ui-color-muted, #526175);
|
|
15
|
-
--ui-pagination-
|
|
16
|
-
--ui-pagination-
|
|
11
|
+
--ui-pagination-active-color: var(--ui-color-foreground-on-primary, #ffffff);
|
|
12
|
+
--ui-pagination-border: transparent;
|
|
13
|
+
--ui-pagination-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
14
|
+
--ui-pagination-muted: var(--ui-color-text-secondary, var(--ui-color-muted, #526175));
|
|
15
|
+
--ui-pagination-h: var(--ui-control-height-2, 32px);
|
|
16
|
+
--ui-pagination-padding: 0 8px;
|
|
17
|
+
--ui-pagination-font-size: var(--ui-control-font-size-2, 14px);
|
|
17
18
|
--ui-pagination-shadow: none;
|
|
18
19
|
color-scheme: light dark;
|
|
19
20
|
}
|
|
@@ -24,9 +25,9 @@
|
|
|
24
25
|
flex-wrap: wrap;
|
|
25
26
|
align-items: center;
|
|
26
27
|
gap: var(--ui-pagination-gap);
|
|
27
|
-
padding:
|
|
28
|
-
border:
|
|
29
|
-
border-radius:
|
|
28
|
+
padding: 0;
|
|
29
|
+
border: 0;
|
|
30
|
+
border-radius: var(--ui-pagination-radius);
|
|
30
31
|
background: var(--ui-pagination-bg);
|
|
31
32
|
box-shadow: var(--ui-pagination-shadow);
|
|
32
33
|
}
|
|
@@ -45,22 +46,22 @@
|
|
|
45
46
|
background: var(--ui-pagination-item-bg);
|
|
46
47
|
color: var(--ui-pagination-color);
|
|
47
48
|
font-size: var(--ui-pagination-font-size);
|
|
48
|
-
font-weight:
|
|
49
|
+
font-weight: 500;
|
|
49
50
|
line-height: 1.2;
|
|
50
51
|
box-sizing: border-box;
|
|
51
|
-
min-width:
|
|
52
|
+
min-width: var(--ui-pagination-h);
|
|
53
|
+
min-height: var(--ui-pagination-h);
|
|
52
54
|
cursor: pointer;
|
|
53
55
|
transition: border-color 130ms ease, background-color 130ms ease, color 130ms ease, transform 130ms ease;
|
|
54
56
|
}
|
|
55
57
|
|
|
56
58
|
button:hover:not(:disabled) {
|
|
57
59
|
background: var(--ui-pagination-item-bg-hover);
|
|
58
|
-
border-color: color-mix(in srgb, var(--ui-color-primary, #2563eb) 34%, var(--ui-pagination-border));
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
button:focus-visible {
|
|
62
|
-
outline: 2px solid var(--ui-color-focus-ring, #2563eb);
|
|
63
|
-
outline-offset:
|
|
63
|
+
outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
|
|
64
|
+
outline-offset: var(--ui-ring-offset, 2px);
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
button[aria-current="page"] {
|
|
@@ -77,15 +78,17 @@
|
|
|
77
78
|
:host([size="sm"]) {
|
|
78
79
|
--ui-pagination-gap: 4px;
|
|
79
80
|
--ui-pagination-radius: 8px;
|
|
80
|
-
--ui-pagination-
|
|
81
|
-
--ui-pagination-
|
|
81
|
+
--ui-pagination-h: var(--ui-control-height-1, 24px);
|
|
82
|
+
--ui-pagination-padding: 0 6px;
|
|
83
|
+
--ui-pagination-font-size: var(--ui-control-font-size-1, 12px);
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
:host([size="lg"]) {
|
|
85
87
|
--ui-pagination-gap: 8px;
|
|
86
88
|
--ui-pagination-radius: 12px;
|
|
87
|
-
--ui-pagination-
|
|
88
|
-
--ui-pagination-
|
|
89
|
+
--ui-pagination-h: var(--ui-control-height-3, 40px);
|
|
90
|
+
--ui-pagination-padding: 0 12px;
|
|
91
|
+
--ui-pagination-font-size: var(--ui-control-font-size-3, 16px);
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
:host([variant="classic"]) .pagination {
|
|
@@ -193,9 +196,9 @@
|
|
|
193
196
|
--ui-pagination-shadow: none;
|
|
194
197
|
}
|
|
195
198
|
}
|
|
196
|
-
`;class e extends r.ElementBase{constructor(){super(),this._page=1,this._count=1,this._headless=!1,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["page","count","headless","variant","size","aria-label"]}get page(){return this._page}set page(t){this.goToPage(t)}get count(){return this._count}set count(t){const
|
|
199
|
+
`;class e extends r.ElementBase{constructor(){super(),this._page=1,this._count=1,this._headless=!1,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["page","count","headless","variant","size","aria-label"]}get page(){return this._page}set page(t){this.goToPage(t)}get count(){return this._count}set count(t){const i=Math.max(1,Number(t)||1);this.setAttribute("count",String(i)),this._page>i&&this.setAttribute("page",String(i))}attributeChangedCallback(t,i,a){(t==="page"||t==="count"||t==="headless")&&(this._page=Math.max(1,Number(this.getAttribute("page"))||1),this._count=Math.max(1,Number(this.getAttribute("count"))||1),this._headless=this.hasAttribute("headless"),this._page>this._count&&(this._page=this._count)),this.requestRender()}render(){if(this._headless){this.setContent("");return}let t="";t+=`<button type="button" data-page="1" aria-label="First" ${this._page===1?"disabled":""}>«</button>`,t+=`<button type="button" data-page="${this._page-1}" aria-label="Previous" ${this._page===1?"disabled":""}>‹</button>`;const i=this._getPageRange(this._page,this._count);i[0]>1&&(t+='<button type="button" data-page="1">1</button>',i[0]>2&&(t+='<span class="ellipsis" aria-hidden="true">…</span>'));for(let n=i[0];n<=i[1];n++)t+=`<button type="button" data-page="${n}" ${n===this._page?'aria-current="page"':""}>${n}</button>`;i[1]<this._count&&(i[1]<this._count-1&&(t+='<span class="ellipsis" aria-hidden="true">…</span>'),t+=`<button type="button" data-page="${this._count}">${this._count}</button>`),t+=`<button type="button" data-page="${this._page+1}" aria-label="Next" ${this._page===this._count?"disabled":""}>›</button>`,t+=`<button type="button" data-page="${this._count}" aria-label="Last" ${this._page===this._count?"disabled":""}>»</button>`,this.setContent(`
|
|
197
200
|
<style>${s}</style>
|
|
198
201
|
<nav class="pagination" role="navigation" aria-label="${this.getAttribute("aria-label")||"Pagination"}" tabindex="0">
|
|
199
202
|
${t}
|
|
200
203
|
</nav>
|
|
201
|
-
`);const
|
|
204
|
+
`);const a=this.root.querySelector(".pagination");a&&(a.removeEventListener("click",this._onClick),a.addEventListener("click",this._onClick),a.removeEventListener("keydown",this._onKeyDown),a.addEventListener("keydown",this._onKeyDown))}goToPage(t){const i=Math.max(1,Math.min(this._count,Number(t)||1));i!==this._page&&this._applyPageChange(i)}nextPage(){this.goToPage(this._page+1)}prevPage(){this.goToPage(this._page-1)}firstPage(){this.goToPage(1)}lastPage(){this.goToPage(this._count)}focusCurrent(){this.root.querySelector('button[aria-current="page"]')?.focus()}_getPageRange(t,i){return i<=5?[1,i]:t<=3?[1,5]:t>=i-2?[i-4,i]:[t-2,t+2]}_onClick(t){const i=t.target.closest("button[data-page]");if(!i||i.hasAttribute("disabled"))return;const a=Number(i.getAttribute("data-page"));isNaN(a)||a<1||a>this._count||a===this._page||this._applyPageChange(a)}_onKeyDown(t){const i=this.root.querySelector(".pagination");if(!i)return;const a=Array.from(i.querySelectorAll("button:not(:disabled)")),n=this.root.activeElement;let o=a.indexOf(n);t.key==="ArrowRight"||t.key==="ArrowDown"?(o=(o+1)%a.length,a[o].focus(),t.preventDefault()):t.key==="ArrowLeft"||t.key==="ArrowUp"?(o=(o-1+a.length)%a.length,a[o].focus(),t.preventDefault()):t.key==="Home"?(a[0].focus(),t.preventDefault()):t.key==="End"&&(a[a.length-1].focus(),t.preventDefault())}_applyPageChange(t){const i=this._page,a=Math.max(1,Math.min(this._count,Number(t)||1));if(a===i)return;const n=a===1&&i!==1?"first":a===this._count&&i!==this._count?"last":a===i-1?"prev":a===i+1?"next":"change";this.setAttribute("page",String(a));const o={page:a,previousPage:i,count:this._count,reason:n};this.dispatchEvent(new CustomEvent(n,{detail:o,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:o,bubbles:!0,composed:!0}))}}typeof customElements<"u"&&!customElements.get("ui-pagination")&&customElements.define("ui-pagination",e);exports.UIPagination=e;
|
package/dist/pagination.esm.js
CHANGED
|
@@ -3,18 +3,19 @@ const r = `
|
|
|
3
3
|
:host {
|
|
4
4
|
display: inline-flex;
|
|
5
5
|
max-width: 100%;
|
|
6
|
-
--ui-pagination-gap:
|
|
7
|
-
--ui-pagination-radius:
|
|
8
|
-
--ui-pagination-bg:
|
|
9
|
-
--ui-pagination-item-bg:
|
|
10
|
-
--ui-pagination-item-bg-hover: color-mix(in srgb, var(--ui-color-primary, #2563eb) 12%, transparent);
|
|
6
|
+
--ui-pagination-gap: 2px;
|
|
7
|
+
--ui-pagination-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
8
|
+
--ui-pagination-bg: transparent;
|
|
9
|
+
--ui-pagination-item-bg: transparent;
|
|
10
|
+
--ui-pagination-item-bg-hover: var(--ui-color-fill, color-mix(in srgb, var(--ui-color-primary, #2563eb) 12%, transparent));
|
|
11
11
|
--ui-pagination-active-bg: var(--ui-color-primary, #2563eb);
|
|
12
|
-
--ui-pagination-active-color: #ffffff;
|
|
13
|
-
--ui-pagination-border:
|
|
14
|
-
--ui-pagination-color: var(--ui-color-text, #0f172a);
|
|
15
|
-
--ui-pagination-muted: var(--ui-color-muted, #526175);
|
|
16
|
-
--ui-pagination-
|
|
17
|
-
--ui-pagination-
|
|
12
|
+
--ui-pagination-active-color: var(--ui-color-foreground-on-primary, #ffffff);
|
|
13
|
+
--ui-pagination-border: transparent;
|
|
14
|
+
--ui-pagination-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
15
|
+
--ui-pagination-muted: var(--ui-color-text-secondary, var(--ui-color-muted, #526175));
|
|
16
|
+
--ui-pagination-h: var(--ui-control-height-2, 32px);
|
|
17
|
+
--ui-pagination-padding: 0 8px;
|
|
18
|
+
--ui-pagination-font-size: var(--ui-control-font-size-2, 14px);
|
|
18
19
|
--ui-pagination-shadow: none;
|
|
19
20
|
color-scheme: light dark;
|
|
20
21
|
}
|
|
@@ -25,9 +26,9 @@ const r = `
|
|
|
25
26
|
flex-wrap: wrap;
|
|
26
27
|
align-items: center;
|
|
27
28
|
gap: var(--ui-pagination-gap);
|
|
28
|
-
padding:
|
|
29
|
-
border:
|
|
30
|
-
border-radius:
|
|
29
|
+
padding: 0;
|
|
30
|
+
border: 0;
|
|
31
|
+
border-radius: var(--ui-pagination-radius);
|
|
31
32
|
background: var(--ui-pagination-bg);
|
|
32
33
|
box-shadow: var(--ui-pagination-shadow);
|
|
33
34
|
}
|
|
@@ -46,22 +47,22 @@ const r = `
|
|
|
46
47
|
background: var(--ui-pagination-item-bg);
|
|
47
48
|
color: var(--ui-pagination-color);
|
|
48
49
|
font-size: var(--ui-pagination-font-size);
|
|
49
|
-
font-weight:
|
|
50
|
+
font-weight: 500;
|
|
50
51
|
line-height: 1.2;
|
|
51
52
|
box-sizing: border-box;
|
|
52
|
-
min-width:
|
|
53
|
+
min-width: var(--ui-pagination-h);
|
|
54
|
+
min-height: var(--ui-pagination-h);
|
|
53
55
|
cursor: pointer;
|
|
54
56
|
transition: border-color 130ms ease, background-color 130ms ease, color 130ms ease, transform 130ms ease;
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
button:hover:not(:disabled) {
|
|
58
60
|
background: var(--ui-pagination-item-bg-hover);
|
|
59
|
-
border-color: color-mix(in srgb, var(--ui-color-primary, #2563eb) 34%, var(--ui-pagination-border));
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
button:focus-visible {
|
|
63
|
-
outline: 2px solid var(--ui-color-focus-ring, #2563eb);
|
|
64
|
-
outline-offset:
|
|
64
|
+
outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-color-focus-ring, #2563eb));
|
|
65
|
+
outline-offset: var(--ui-ring-offset, 2px);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
button[aria-current="page"] {
|
|
@@ -78,15 +79,17 @@ const r = `
|
|
|
78
79
|
:host([size="sm"]) {
|
|
79
80
|
--ui-pagination-gap: 4px;
|
|
80
81
|
--ui-pagination-radius: 8px;
|
|
81
|
-
--ui-pagination-
|
|
82
|
-
--ui-pagination-
|
|
82
|
+
--ui-pagination-h: var(--ui-control-height-1, 24px);
|
|
83
|
+
--ui-pagination-padding: 0 6px;
|
|
84
|
+
--ui-pagination-font-size: var(--ui-control-font-size-1, 12px);
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
:host([size="lg"]) {
|
|
86
88
|
--ui-pagination-gap: 8px;
|
|
87
89
|
--ui-pagination-radius: 12px;
|
|
88
|
-
--ui-pagination-
|
|
89
|
-
--ui-pagination-
|
|
90
|
+
--ui-pagination-h: var(--ui-control-height-3, 40px);
|
|
91
|
+
--ui-pagination-padding: 0 12px;
|
|
92
|
+
--ui-pagination-font-size: var(--ui-control-font-size-3, 16px);
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
:host([variant="classic"]) .pagination {
|
|
@@ -212,10 +215,10 @@ class s extends e {
|
|
|
212
215
|
return this._count;
|
|
213
216
|
}
|
|
214
217
|
set count(t) {
|
|
215
|
-
const
|
|
216
|
-
this.setAttribute("count", String(
|
|
218
|
+
const i = Math.max(1, Number(t) || 1);
|
|
219
|
+
this.setAttribute("count", String(i)), this._page > i && this.setAttribute("page", String(i));
|
|
217
220
|
}
|
|
218
|
-
attributeChangedCallback(t,
|
|
221
|
+
attributeChangedCallback(t, i, a) {
|
|
219
222
|
(t === "page" || t === "count" || t === "headless") && (this._page = Math.max(1, Number(this.getAttribute("page")) || 1), this._count = Math.max(1, Number(this.getAttribute("count")) || 1), this._headless = this.hasAttribute("headless"), this._page > this._count && (this._page = this._count)), this.requestRender();
|
|
220
223
|
}
|
|
221
224
|
render() {
|
|
@@ -225,22 +228,22 @@ class s extends e {
|
|
|
225
228
|
}
|
|
226
229
|
let t = "";
|
|
227
230
|
t += `<button type="button" data-page="1" aria-label="First" ${this._page === 1 ? "disabled" : ""}>«</button>`, t += `<button type="button" data-page="${this._page - 1}" aria-label="Previous" ${this._page === 1 ? "disabled" : ""}>‹</button>`;
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
for (let n =
|
|
231
|
+
const i = this._getPageRange(this._page, this._count);
|
|
232
|
+
i[0] > 1 && (t += '<button type="button" data-page="1">1</button>', i[0] > 2 && (t += '<span class="ellipsis" aria-hidden="true">…</span>'));
|
|
233
|
+
for (let n = i[0]; n <= i[1]; n++)
|
|
231
234
|
t += `<button type="button" data-page="${n}" ${n === this._page ? 'aria-current="page"' : ""}>${n}</button>`;
|
|
232
|
-
|
|
235
|
+
i[1] < this._count && (i[1] < this._count - 1 && (t += '<span class="ellipsis" aria-hidden="true">…</span>'), t += `<button type="button" data-page="${this._count}">${this._count}</button>`), t += `<button type="button" data-page="${this._page + 1}" aria-label="Next" ${this._page === this._count ? "disabled" : ""}>›</button>`, t += `<button type="button" data-page="${this._count}" aria-label="Last" ${this._page === this._count ? "disabled" : ""}>»</button>`, this.setContent(`
|
|
233
236
|
<style>${r}</style>
|
|
234
237
|
<nav class="pagination" role="navigation" aria-label="${this.getAttribute("aria-label") || "Pagination"}" tabindex="0">
|
|
235
238
|
${t}
|
|
236
239
|
</nav>
|
|
237
240
|
`);
|
|
238
|
-
const
|
|
239
|
-
|
|
241
|
+
const a = this.root.querySelector(".pagination");
|
|
242
|
+
a && (a.removeEventListener("click", this._onClick), a.addEventListener("click", this._onClick), a.removeEventListener("keydown", this._onKeyDown), a.addEventListener("keydown", this._onKeyDown));
|
|
240
243
|
}
|
|
241
244
|
goToPage(t) {
|
|
242
|
-
const
|
|
243
|
-
|
|
245
|
+
const i = Math.max(1, Math.min(this._count, Number(t) || 1));
|
|
246
|
+
i !== this._page && this._applyPageChange(i);
|
|
244
247
|
}
|
|
245
248
|
nextPage() {
|
|
246
249
|
this.goToPage(this._page + 1);
|
|
@@ -257,30 +260,30 @@ class s extends e {
|
|
|
257
260
|
focusCurrent() {
|
|
258
261
|
this.root.querySelector('button[aria-current="page"]')?.focus();
|
|
259
262
|
}
|
|
260
|
-
_getPageRange(t,
|
|
261
|
-
return
|
|
263
|
+
_getPageRange(t, i) {
|
|
264
|
+
return i <= 5 ? [1, i] : t <= 3 ? [1, 5] : t >= i - 2 ? [i - 4, i] : [t - 2, t + 2];
|
|
262
265
|
}
|
|
263
266
|
_onClick(t) {
|
|
264
|
-
const
|
|
265
|
-
if (!
|
|
266
|
-
const
|
|
267
|
-
isNaN(
|
|
267
|
+
const i = t.target.closest("button[data-page]");
|
|
268
|
+
if (!i || i.hasAttribute("disabled")) return;
|
|
269
|
+
const a = Number(i.getAttribute("data-page"));
|
|
270
|
+
isNaN(a) || a < 1 || a > this._count || a === this._page || this._applyPageChange(a);
|
|
268
271
|
}
|
|
269
272
|
_onKeyDown(t) {
|
|
270
|
-
const
|
|
271
|
-
if (!
|
|
272
|
-
const
|
|
273
|
-
let o =
|
|
274
|
-
t.key === "ArrowRight" || t.key === "ArrowDown" ? (o = (o + 1) %
|
|
273
|
+
const i = this.root.querySelector(".pagination");
|
|
274
|
+
if (!i) return;
|
|
275
|
+
const a = Array.from(i.querySelectorAll("button:not(:disabled)")), n = this.root.activeElement;
|
|
276
|
+
let o = a.indexOf(n);
|
|
277
|
+
t.key === "ArrowRight" || t.key === "ArrowDown" ? (o = (o + 1) % a.length, a[o].focus(), t.preventDefault()) : t.key === "ArrowLeft" || t.key === "ArrowUp" ? (o = (o - 1 + a.length) % a.length, a[o].focus(), t.preventDefault()) : t.key === "Home" ? (a[0].focus(), t.preventDefault()) : t.key === "End" && (a[a.length - 1].focus(), t.preventDefault());
|
|
275
278
|
}
|
|
276
279
|
_applyPageChange(t) {
|
|
277
|
-
const
|
|
278
|
-
if (
|
|
279
|
-
const n =
|
|
280
|
-
this.setAttribute("page", String(
|
|
280
|
+
const i = this._page, a = Math.max(1, Math.min(this._count, Number(t) || 1));
|
|
281
|
+
if (a === i) return;
|
|
282
|
+
const n = a === 1 && i !== 1 ? "first" : a === this._count && i !== this._count ? "last" : a === i - 1 ? "prev" : a === i + 1 ? "next" : "change";
|
|
283
|
+
this.setAttribute("page", String(a));
|
|
281
284
|
const o = {
|
|
282
|
-
page:
|
|
283
|
-
previousPage:
|
|
285
|
+
page: a,
|
|
286
|
+
previousPage: i,
|
|
284
287
|
count: this._count,
|
|
285
288
|
reason: n
|
|
286
289
|
};
|
|
@@ -15,20 +15,23 @@
|
|
|
15
15
|
</svg>
|
|
16
16
|
`,M=`
|
|
17
17
|
:host {
|
|
18
|
-
--ui-input-
|
|
19
|
-
--ui-input-
|
|
18
|
+
--ui-input-action-size: 24px;
|
|
19
|
+
--ui-input-padding: var(--ui-padding, 0);
|
|
20
|
+
--ui-input-pad-x: calc(var(--ui-control-padding-inline-2, 12px) - 1px);
|
|
21
|
+
--ui-input-font-size: var(--ui-control-font-size-2, 14px);
|
|
22
|
+
--ui-input-border-color: var(--ui-color-line, var(--ui-color-border, var(--ui-border-color, #cbd5e1)));
|
|
20
23
|
--ui-input-border-width: 1px;
|
|
21
24
|
--ui-input-border-style: solid;
|
|
22
25
|
--ui-input-border: var(--ui-input-border-width) var(--ui-input-border-style) var(--ui-input-border-color);
|
|
23
|
-
--ui-input-border-radius: var(--ui-radius,
|
|
24
|
-
--ui-input-min-height: var(--ui-min-height,
|
|
26
|
+
--ui-input-border-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
27
|
+
--ui-input-min-height: var(--ui-min-height, var(--base-input-height-md, var(--ui-control-height-2, 32px)));
|
|
25
28
|
--ui-input-width: 100%;
|
|
26
29
|
--ui-input-bg: var(--ui-color-surface, var(--ui-surface, #ffffff));
|
|
27
30
|
--ui-input-color: var(--ui-color-text, var(--ui-text, #0f172a));
|
|
28
31
|
--ui-label-color: var(--ui-color-muted, var(--ui-muted, #526175));
|
|
29
32
|
--ui-description-color: var(--ui-color-muted, var(--ui-muted, #526175));
|
|
30
33
|
--ui-input-focus-ring: var(--ui-color-focus-ring, var(--ui-focus-ring, #2563eb));
|
|
31
|
-
--ui-input-error: var(--ui-color-danger, var(--ui-error, #dc2626));
|
|
34
|
+
--ui-input-error: var(--ui-color-danger-text, var(--ui-color-danger, var(--ui-error, #dc2626)));
|
|
32
35
|
--ui-input-success: var(--ui-color-success, var(--ui-success, #15803d));
|
|
33
36
|
--ui-input-warning: var(--ui-color-warning, var(--ui-warning, #b45309));
|
|
34
37
|
--ui-input-accent: var(--ui-color-primary, var(--ui-primary, #2563eb));
|
|
@@ -36,7 +39,7 @@
|
|
|
36
39
|
--ui-input-gap: 8px;
|
|
37
40
|
--ui-input-meta-gap: 4px;
|
|
38
41
|
--ui-input-shell-gap: 8px;
|
|
39
|
-
--ui-input-placeholder: color-mix(in srgb, var(--ui-input-color)
|
|
42
|
+
--ui-input-placeholder: var(--ui-color-placeholder, color-mix(in srgb, var(--ui-input-color) 62%, transparent));
|
|
40
43
|
--ui-password-field-strength-gap: 8px;
|
|
41
44
|
--ui-password-field-track-bg: color-mix(in srgb, var(--ui-color-text, #0f172a) 10%, transparent);
|
|
42
45
|
--ui-password-field-strength-weak: var(--ui-color-danger, #dc2626);
|
|
@@ -115,7 +118,7 @@
|
|
|
115
118
|
gap: var(--ui-input-shell-gap);
|
|
116
119
|
box-sizing: border-box;
|
|
117
120
|
min-block-size: var(--ui-input-min-height);
|
|
118
|
-
padding-inline:
|
|
121
|
+
padding-inline: var(--ui-input-pad-x);
|
|
119
122
|
border: var(--ui-input-border);
|
|
120
123
|
border-radius: var(--ui-input-border-radius);
|
|
121
124
|
background: var(--ui-input-bg);
|
|
@@ -124,8 +127,13 @@
|
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
.shell:focus-within {
|
|
127
|
-
border-color:
|
|
128
|
-
|
|
130
|
+
border-color: var(--ui-ring-color, var(--ui-input-focus-ring));
|
|
131
|
+
outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-input-focus-ring));
|
|
132
|
+
outline-offset: -1px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.shell:hover:not(:focus-within) {
|
|
136
|
+
border-color: var(--ui-color-line-strong, var(--ui-input-border-color));
|
|
129
137
|
}
|
|
130
138
|
|
|
131
139
|
.prefix,
|
|
@@ -189,7 +197,7 @@
|
|
|
189
197
|
border: none;
|
|
190
198
|
background: transparent;
|
|
191
199
|
color: inherit;
|
|
192
|
-
font: 500
|
|
200
|
+
font: 500 var(--ui-input-font-size)/1.4 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
193
201
|
padding: var(--ui-input-padding);
|
|
194
202
|
min-block-size: calc(var(--ui-input-min-height) - 2px);
|
|
195
203
|
margin: 0;
|
|
@@ -213,8 +221,9 @@
|
|
|
213
221
|
border: none;
|
|
214
222
|
outline: none;
|
|
215
223
|
cursor: pointer;
|
|
216
|
-
inline-size:
|
|
217
|
-
block-size:
|
|
224
|
+
inline-size: var(--ui-input-action-size);
|
|
225
|
+
block-size: var(--ui-input-action-size);
|
|
226
|
+
margin-block: var(--ui-input-action-bleed, 0px);
|
|
218
227
|
border-radius: 8px;
|
|
219
228
|
display: inline-grid;
|
|
220
229
|
place-items: center;
|
|
@@ -252,7 +261,6 @@
|
|
|
252
261
|
}
|
|
253
262
|
|
|
254
263
|
.toggle-btn:hover {
|
|
255
|
-
transform: translateY(-1px);
|
|
256
264
|
}
|
|
257
265
|
|
|
258
266
|
.clear-btn:focus-visible,
|
|
@@ -366,30 +374,27 @@
|
|
|
366
374
|
pointer-events: none;
|
|
367
375
|
}
|
|
368
376
|
|
|
369
|
-
|
|
377
|
+
:host([size="sm"]),
|
|
370
378
|
:host([size="1"]) {
|
|
371
|
-
--ui-input-min-height:
|
|
372
|
-
--ui-input-
|
|
379
|
+
--ui-input-min-height: var(--ui-min-height, var(--base-input-height-sm, var(--ui-control-height-1, 24px)));
|
|
380
|
+
--ui-input-pad-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
|
|
381
|
+
--ui-input-font-size: var(--ui-control-font-size-1, 12px);
|
|
382
|
+
--ui-input-border-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
|
|
383
|
+
--ui-input-action-size: 24px;
|
|
384
|
+
--ui-input-action-bleed: -1px;
|
|
373
385
|
--ui-input-shell-gap: 6px;
|
|
374
386
|
}
|
|
375
387
|
|
|
376
|
-
:host([size="sm"]) input,
|
|
377
|
-
:host([size="1"]) input {
|
|
378
|
-
font-size: 12px;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
388
|
:host([size="lg"]),
|
|
382
389
|
:host([size="3"]) {
|
|
383
|
-
--ui-input-min-height:
|
|
384
|
-
--ui-input-
|
|
390
|
+
--ui-input-min-height: var(--ui-min-height, var(--base-input-height-lg, var(--ui-control-height-3, 40px)));
|
|
391
|
+
--ui-input-pad-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
|
|
392
|
+
--ui-input-font-size: var(--ui-control-font-size-3, 16px);
|
|
393
|
+
--ui-input-border-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
|
|
394
|
+
--ui-input-action-size: 28px;
|
|
385
395
|
--ui-input-shell-gap: 10px;
|
|
386
396
|
}
|
|
387
397
|
|
|
388
|
-
:host([size="lg"]) input,
|
|
389
|
-
:host([size="3"]) input {
|
|
390
|
-
font-size: 16px;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
398
|
:host([variant="classic"]),
|
|
394
399
|
:host([variant="outlined"]) {
|
|
395
400
|
--ui-input-bg: var(--ui-color-surface, var(--ui-surface, #ffffff));
|
|
@@ -491,7 +496,7 @@
|
|
|
491
496
|
}
|
|
492
497
|
|
|
493
498
|
:host([validation="error"]) .shell {
|
|
494
|
-
box-shadow: 0 0 0
|
|
499
|
+
box-shadow: 0 0 0 1px var(--ui-input-error);
|
|
495
500
|
}
|
|
496
501
|
|
|
497
502
|
:host([radius="none"]) {
|
|
@@ -573,13 +578,13 @@
|
|
|
573
578
|
box-shadow: none;
|
|
574
579
|
}
|
|
575
580
|
}
|
|
576
|
-
`,I=["value","placeholder","disabled","clearable","debounce","validation","size","minlength","maxlength","readonly","autofocus","counter","floating-label","name","required","pattern","autocomplete","spellcheck","variant","tone","density","shape","color","radius","label","description","data-error"];function u(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function g(o){if(!o)return!1;const t=o.assignedNodes({flatten:!0});return t.length?t.some(e=>e.nodeType===Node.TEXT_NODE?!!e.textContent?.trim():e.nodeType===Node.ELEMENT_NODE):!1}function c(o,t){const e=o.getAttribute(t);if(e==null)return!1;const i=String(e).trim().toLowerCase();return i!=="false"&&i!=="0"}function U(o){return o==="none"||o==="large"||o==="full"}function L(o){let t=0;switch(o.length>=8&&(t+=1),/[a-z]/.test(o)&&/[A-Z]/.test(o)&&(t+=1),/\d/.test(o)&&(t+=1),(/[^A-Za-z0-9]/.test(o)||o.length>=14)&&(t+=1),Math.max(1,Math.min(4,t||1))){case 1:return{score:1,label:"Weak",caption:"Use more characters and mix case, numbers, or symbols."};case 2:return{score:2,label:"Fair",caption:"Add numbers or symbols to reduce guessability."};case 3:return{score:3,label:"Good",caption:"Solid baseline. Longer passphrases are even better."};default:return{score:4,label:"Strong",caption:"Strong password shape for production accounts."}}}class
|
|
581
|
+
`,I=["value","placeholder","disabled","clearable","debounce","validation","size","minlength","maxlength","readonly","autofocus","counter","floating-label","name","required","pattern","autocomplete","spellcheck","variant","tone","density","shape","color","radius","label","description","data-error"];function u(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function g(o){if(!o)return!1;const t=o.assignedNodes({flatten:!0});return t.length?t.some(e=>e.nodeType===Node.TEXT_NODE?!!e.textContent?.trim():e.nodeType===Node.ELEMENT_NODE):!1}function c(o,t){const e=o.getAttribute(t);if(e==null)return!1;const i=String(e).trim().toLowerCase();return i!=="false"&&i!=="0"}function U(o){return o==="none"||o==="large"||o==="full"}function L(o){let t=0;switch(o.length>=8&&(t+=1),/[a-z]/.test(o)&&/[A-Z]/.test(o)&&(t+=1),/\d/.test(o)&&(t+=1),(/[^A-Za-z0-9]/.test(o)||o.length>=14)&&(t+=1),Math.max(1,Math.min(4,t||1))){case 1:return{score:1,label:"Weak",caption:"Use more characters and mix case, numbers, or symbols."};case 2:return{score:2,label:"Fair",caption:"Add numbers or symbols to reduce guessability."};case 3:return{score:3,label:"Good",caption:"Solid baseline. Longer passphrases are even better."};default:return{score:4,label:"Strong",caption:"Strong password shape for production accounts."}}}class z extends q.ElementBase{constructor(){super(),this._input=null,this._clearBtn=null,this._toggleBtn=null,this._debounceTimer=null,this._formUnregister=null,this._uid=Math.random().toString(36).slice(2,9),this._autofocusApplied=!1,this._revealed=!1,this._lastStrengthKey="",this.strengthEvaluator=null,this._onNativeInput=this._onNativeInput.bind(this),this._onNativeChange=this._onNativeChange.bind(this),this._onClearClick=this._onClearClick.bind(this),this._onToggleClick=this._onToggleClick.bind(this),this._onSlotChange=this._onSlotChange.bind(this)}static get observedAttributes(){return[...I,"aria-label","aria-description","aria-describedby","show-strength","revealable"]}get value(){return this.getAttribute("value")||""}set value(t){t?this.setAttribute("value",t):this.removeAttribute("value")}get revealed(){return this._revealed}connectedCallback(){super.connectedCallback(),this.root.addEventListener("slotchange",this._onSlotChange),this._registerWithForm()}disconnectedCallback(){this.root.removeEventListener("slotchange",this._onSlotChange),this._detachListeners(),this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null),this._formUnregister&&(this._formUnregister(),this._formUnregister=null),this._autofocusApplied=!1,super.disconnectedCallback()}attributeChangedCallback(t,e,i){if(e!==i&&(t==="name"&&this.isConnected&&this._registerWithForm(),t==="autofocus"&&!this.hasAttribute("autofocus")&&(this._autofocusApplied=!1),!(!this.isConnected||!this._input))){if(t==="value"){this._syncInputValue(this.value),this._syncStrengthUi();return}this._syncUi(),t==="autofocus"&&this.hasAttribute("autofocus")&&!this._autofocusApplied&&(this._autofocusApplied=!0,queueMicrotask(()=>{if(this.isConnected)try{this._input?.focus({preventScroll:!0})}catch{this._input?.focus()}}))}}shouldRenderOnAttributeChange(){return!1}focus(t){if(this._input){this._input.focus(t);return}super.focus(t)}blur(){this._input?.blur()}select(){this._input?.select()}toggleVisibility(t){if(c(this,"disabled")||this.hasAttribute("readonly")||this.getAttribute("revealable")==="false")return;const e=typeof t=="boolean"?t:!this._revealed;if(e===this._revealed)return;const i=this._input?.selectionStart??null,r=this._input?.selectionEnd??null;this._revealed=e,this._syncToggleUi(),this.dispatchEvent(new CustomEvent("visibility-change",{detail:{revealed:this._revealed},bubbles:!0,composed:!0})),queueMicrotask(()=>{const s=this._input;if(s){try{s.focus({preventScroll:!0})}catch{s.focus()}if(i!=null&&r!=null&&typeof s.setSelectionRange=="function")try{s.setSelectionRange(i,r)}catch{}}})}render(){const t=this.value,e=this.getAttribute("label")||"",i=this.getAttribute("description")||"",r=this.getAttribute("data-error")||"",s=this.getAttribute("placeholder")||"",n=this.hasAttribute("required")?'<span class="required" aria-hidden="true">*</span>':"",a=this.hasAttribute("floating-label");this.setContent(`
|
|
577
582
|
<style>${M}</style>
|
|
578
583
|
<div class="root" part="root">
|
|
579
584
|
<div class="meta" part="meta">
|
|
580
585
|
<label class="label" id="${this._uid}-label" part="label">
|
|
581
586
|
<slot name="label">${u(e)}</slot>
|
|
582
|
-
${
|
|
587
|
+
${n}
|
|
583
588
|
</label>
|
|
584
589
|
<p class="description" id="${this._uid}-description" part="description">
|
|
585
590
|
<slot name="description">${u(i)}</slot>
|
|
@@ -594,9 +599,9 @@
|
|
|
594
599
|
part="input"
|
|
595
600
|
type="password"
|
|
596
601
|
value="${u(t)}"
|
|
597
|
-
placeholder="${u(
|
|
602
|
+
placeholder="${u(s)}"
|
|
598
603
|
/>
|
|
599
|
-
${a?`<span class="floating-label" part="floating-label">${u(e||
|
|
604
|
+
${a?`<span class="floating-label" part="floating-label">${u(e||s||"Password")}</span>`:""}
|
|
600
605
|
</div>
|
|
601
606
|
|
|
602
607
|
<div class="actions" part="actions">
|
|
@@ -623,4 +628,4 @@
|
|
|
623
628
|
</div>
|
|
624
629
|
</div>
|
|
625
630
|
</div>
|
|
626
|
-
`),this._detachListeners(),this._input=this.root.querySelector("input"),this._clearBtn=this.root.querySelector(".clear-btn"),this._toggleBtn=this.root.querySelector(".toggle-btn"),this._input?.addEventListener("input",this._onNativeInput),this._input?.addEventListener("change",this._onNativeChange),this._clearBtn?.addEventListener("click",this._onClearClick),this._toggleBtn?.addEventListener("click",this._onToggleClick),this._syncUi()}_detachListeners(){this._input?.removeEventListener("input",this._onNativeInput),this._input?.removeEventListener("change",this._onNativeChange),this._clearBtn?.removeEventListener("click",this._onClearClick),this._toggleBtn?.removeEventListener("click",this._onToggleClick),this._clearBtn=null,this._toggleBtn=null}_syncHostTokens(){const t=this.getAttribute("color");t?this.style.setProperty("--ui-input-accent",t):this.style.removeProperty("--ui-input-accent");const e=this.getAttribute("radius")||"";e&&!U(e)?this.style.setProperty("--ui-input-border-radius",e):this.style.removeProperty("--ui-input-border-radius")}_syncControlAttrs(){if(this._syncHostTokens(),!this._input)return;const t=c(this,"disabled"),e=this.hasAttribute("required"),i=this.hasAttribute("readonly"),r=this.getAttribute("maxlength")||"",
|
|
631
|
+
`),this._detachListeners(),this._input=this.root.querySelector("input"),this._clearBtn=this.root.querySelector(".clear-btn"),this._toggleBtn=this.root.querySelector(".toggle-btn"),this._input?.addEventListener("input",this._onNativeInput),this._input?.addEventListener("change",this._onNativeChange),this._clearBtn?.addEventListener("click",this._onClearClick),this._toggleBtn?.addEventListener("click",this._onToggleClick),this._syncUi()}_detachListeners(){this._input?.removeEventListener("input",this._onNativeInput),this._input?.removeEventListener("change",this._onNativeChange),this._clearBtn?.removeEventListener("click",this._onClearClick),this._toggleBtn?.removeEventListener("click",this._onToggleClick),this._clearBtn=null,this._toggleBtn=null}_syncHostTokens(){const t=this.getAttribute("color");t?this.style.setProperty("--ui-input-accent",t):this.style.removeProperty("--ui-input-accent");const e=this.getAttribute("radius")||"";e&&!U(e)?this.style.setProperty("--ui-input-border-radius",e):this.style.removeProperty("--ui-input-border-radius")}_syncControlAttrs(){if(this._syncHostTokens(),!this._input)return;const t=c(this,"disabled"),e=this.hasAttribute("required"),i=this.hasAttribute("readonly"),r=this.getAttribute("maxlength")||"",s=this.getAttribute("minlength")||"",n=this.getAttribute("pattern")||"",a=this.getAttribute("autocomplete")||"current-password",l=this.getAttribute("spellcheck")||"",h=this.getAttribute("placeholder")||"",d=this.getAttribute("name")||"";this._input.disabled=t,this._input.required=e,this._input.readOnly=i,this._input.placeholder=h,this._input.name=d,this._input.type=this._revealed?"text":"password",this._input.setAttribute("autocomplete",a),n?this._input.setAttribute("pattern",n):this._input.removeAttribute("pattern"),l?this._input.setAttribute("spellcheck",l):this._input.removeAttribute("spellcheck"),r&&Number.isFinite(Number(r))?this._input.setAttribute("maxlength",r):this._input.removeAttribute("maxlength"),s&&Number.isFinite(Number(s))?this._input.setAttribute("minlength",s):this._input.removeAttribute("minlength")}_syncInputValue(t){this._input&&this._input.value!==t&&(this._input.value=t);const e=this.root.querySelector(".shell");e&&e.setAttribute("data-has-value",t?"true":"false"),this._clearBtn&&(c(this,"clearable")&&t.length>0&&!c(this,"disabled")&&!this.hasAttribute("readonly")?this._clearBtn.removeAttribute("hidden"):this._clearBtn.setAttribute("hidden",""));const i=this.root.querySelector(".counter");if(i&&this.hasAttribute("counter")){const r=this.getAttribute("maxlength");i.textContent=r?`${t.length}/${r}`:String(t.length)}else i&&(i.textContent="")}_syncToggleUi(){if(!this._toggleBtn||!this._input)return;this._input.type=this._revealed?"text":"password";const t=this.getAttribute("revealable")!=="false",e=c(this,"disabled")||this.hasAttribute("readonly");this._toggleBtn.hidden=!t,this._toggleBtn.disabled=e,this._toggleBtn.setAttribute("aria-pressed",this._revealed?"true":"false"),this._toggleBtn.setAttribute("aria-label",this._revealed?"Hide password":"Show password");const i=this._revealed?"revealed":"hidden";this._toggleBtn.dataset.iconState!==i&&(this._toggleBtn.dataset.iconState=i,this._toggleBtn.innerHTML=this._revealed?N:C)}_syncStrengthUi(){const t=this.root.querySelector(".strength"),e=this.root.querySelector(".strength-label"),i=this.root.querySelector(".strength-caption");if(!t||!e||!i)return;const r=this.value,s=this.hasAttribute("show-strength")&&r.length>0;if(t.hidden=!s,!s){delete t.dataset.score,e.textContent="",i.textContent="",this._lastStrengthKey="";return}const n=(this.strengthEvaluator||L)(r);t.dataset.score=String(n.score),e.textContent=n.label,i.textContent=n.caption;const a=`${r}|${n.score}|${n.label}|${n.caption}`;a!==this._lastStrengthKey&&(this._lastStrengthKey=a,this.dispatchEvent(new CustomEvent("strength-change",{detail:{value:r,score:n.score,label:n.label,caption:n.caption},bubbles:!0,composed:!0})))}_syncDerivedState(){const t=this.root.querySelector('slot[name="label"]'),e=this.root.querySelector('slot[name="description"]'),i=this.root.querySelector('slot[name="error"]'),r=this.root.querySelector('slot[name="prefix"]'),s=this.root.querySelector('slot[name="suffix"]'),n=(this.getAttribute("label")||"").trim(),a=(this.getAttribute("description")||"").trim(),l=(this.getAttribute("data-error")||"").trim(),h=!!n||g(t),d=!!a||g(e),b=!!l||g(i),E=g(r),T=g(s),v=this.root.querySelector(".label"),m=this.root.querySelector(".description"),x=this.root.querySelector(".prefix"),_=this.root.querySelector(".suffix-slot"),y=this.root.querySelector(".meta"),w=this.root.querySelector(".footer"),A=this.root.querySelector(".error"),k=this.root.querySelector(".counter");p.syncSlotFallbackText(t,n),p.syncSlotFallbackText(e,a),p.syncSlotFallbackText(i,l),v&&v.toggleAttribute("hidden",!h),m&&m.toggleAttribute("hidden",!d),x&&x.toggleAttribute("hidden",!E),_&&_.toggleAttribute("hidden",!T),y&&y.toggleAttribute("hidden",!h&&!d);const S=this.hasAttribute("counter");if(k&&k.toggleAttribute("hidden",!S),A&&A.toggleAttribute("hidden",!b),w&&w.toggleAttribute("hidden",!b&&!S),!this._input)return;p.syncControlName(this._input,this,h?`${this._uid}-label`:null);const f=[];d&&f.push(`${this._uid}-description`),b&&f.push(`${this._uid}-error`),p.syncControlDescription(this._input,this,this._uid,f),this.getAttribute("validation")==="error"||!!l?this._input.setAttribute("aria-invalid","true"):this._input.removeAttribute("aria-invalid"),this.hasAttribute("required")?this._input.setAttribute("aria-required","true"):this._input.removeAttribute("aria-required")}_syncUi(){this._syncControlAttrs(),this._syncInputValue(this.value),this._syncDerivedState(),this._syncToggleUi(),this._syncStrengthUi(),this.hasAttribute("autofocus")&&!this._autofocusApplied&&(this._autofocusApplied=!0,queueMicrotask(()=>{if(this.isConnected)try{this._input?.focus({preventScroll:!0})}catch{this._input?.focus()}}))}_emitValueEvent(t,e){this.dispatchEvent(new CustomEvent(t,{detail:{value:e},bubbles:!0,composed:!0}))}_registerWithForm(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null);try{const r=this.getRootNode().host?.closest?.("ui-form")||null||this.closest("ui-form"),s=this.getAttribute("name");r&&typeof r.registerField=="function"&&s&&(this._formUnregister=r.registerField(s,{name:s,getValue:()=>this.value,setValue:n=>{this.value=String(n??"")},validate:async()=>this._input?{valid:this._input.checkValidity(),message:this._input.validationMessage||void 0}:{valid:!0},setError:n=>{n?(this.setAttribute("validation","error"),this.setAttribute("data-error",n)):(this.removeAttribute("validation"),this.removeAttribute("data-error")),this._syncUi()}}))}catch{}}_onSlotChange(){this._syncDerivedState()}_onNativeInput(t){const e=t.target.value;this.getAttribute("value")!==e?e?this.setAttribute("value",e):this.removeAttribute("value"):(this._syncInputValue(e),this._syncStrengthUi()),this._emitValueEvent("input",e);const i=Number(this.getAttribute("debounce")||0);i>0?(this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(()=>{this._emitValueEvent("debounced-input",e),this._debounceTimer=null},i)):this._emitValueEvent("debounced-input",e)}_onNativeChange(t){const e=t.target.value;this._emitValueEvent("change",e)}_onClearClick(t){if(t.preventDefault(),!(c(this,"disabled")||this.hasAttribute("readonly"))&&this._input){this.value="",this._input.value="",this._input.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this._input.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0}));try{this._input.focus({preventScroll:!0})}catch{this._input.focus()}}}_onToggleClick(t){t.preventDefault(),t.stopPropagation(),this.toggleVisibility()}}typeof customElements<"u"&&!customElements.get("ui-password-field")&&customElements.define("ui-password-field",z);exports.UIPasswordField=z;
|