@editora/ui-core 0.1.24 → 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 +339 -5
- 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/gantt-schedule.d.ts +79 -0
- package/dist/components/gantt-schedule.d.ts.map +1 -0
- 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-gantt.d.ts +186 -2
- package/dist/components/ui-gantt.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 +525 -110
- package/dist/gantt.esm.js +1882 -377
- 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-group.cjs.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),d=require("./roving-focus-group-BdJ_4Njm.js"),y=`
|
|
2
2
|
:host {
|
|
3
|
-
--ui-toggle-group-gap:
|
|
4
|
-
--ui-toggle-group-padding:
|
|
5
|
-
--ui-toggle-group-radius:
|
|
6
|
-
--ui-toggle-group-bg:
|
|
7
|
-
--ui-toggle-group-border:
|
|
3
|
+
--ui-toggle-group-gap: 4px;
|
|
4
|
+
--ui-toggle-group-padding: 0px;
|
|
5
|
+
--ui-toggle-group-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
6
|
+
--ui-toggle-group-bg: transparent;
|
|
7
|
+
--ui-toggle-group-border: transparent;
|
|
8
8
|
--ui-toggle-group-shadow:
|
|
9
9
|
none;
|
|
10
10
|
|
|
@@ -54,15 +54,15 @@
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
:host([size="sm"]) {
|
|
57
|
-
--ui-toggle-group-gap:
|
|
58
|
-
--ui-toggle-group-padding:
|
|
59
|
-
--ui-toggle-group-radius:
|
|
57
|
+
--ui-toggle-group-gap: 4px;
|
|
58
|
+
--ui-toggle-group-padding: 0px;
|
|
59
|
+
--ui-toggle-group-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
:host([size="lg"]) {
|
|
63
|
-
--ui-toggle-group-gap:
|
|
64
|
-
--ui-toggle-group-padding:
|
|
65
|
-
--ui-toggle-group-radius:
|
|
63
|
+
--ui-toggle-group-gap: 4px;
|
|
64
|
+
--ui-toggle-group-padding: 0px;
|
|
65
|
+
--ui-toggle-group-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
:host([density="compact"]) {
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
--ui-toggle-group-shadow: none;
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
`,_=new Set(["multiple","orientation","aria-label","required","disabled"]);function x(u){return String(u).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function S(u){try{return JSON.parse(u)}catch{return}}function w(u,t){if(!t)return u||"";if(!u)return[];const e=S(u);return Array.isArray(e)?Array.from(new Set(e.map(i=>String(i)).filter(Boolean))):u.includes(",")?Array.from(new Set(u.split(",").map(i=>i.trim()).filter(Boolean))):[u]}function f(u,t){return t?JSON.stringify(Array.isArray(u)?u:[String(u)]):String(u||"")}class v extends A.ElementBase{constructor(){super(),this._observer=null,this._isSyncing=!1,this._focusIndex=-1,this._onToggleEvent=this._onToggleEvent.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["value","multiple","disabled","headless","orientation","variant","size","density","shape","elevation","allow-empty","required","activation","aria-label"]}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onToggleEvent),this.addEventListener("keydown",this._onKeyDown),this._observer=new MutationObserver(t=>{this._isSyncing||(t.forEach(e=>{e.type!=="childList"||e.removedNodes.length===0||e.removedNodes.forEach(i=>this._clearGroupFlagsFromNode(i))}),this._syncChildren())}),this._observer.observe(this,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeFilter:["value","data-value","disabled","pressed","data-disabled"]}),this._syncChildren()}attributeChangedCallback(t,e,i){if(e!==i){if(_.has(t)){if(!this.root.querySelector(".group")){this.requestRender();return}this._syncGroupA11y()}this._syncChildren()}}disconnectedCallback(){this.removeEventListener("change",this._onToggleEvent),this.removeEventListener("keydown",this._onKeyDown),this._toggles().forEach(t=>this._clearGroupFlags(t)),this._observer&&(this._observer.disconnect(),this._observer=null),super.disconnectedCallback()}get multiple(){return this.hasAttribute("multiple")}set multiple(t){t?this.setAttribute("multiple",""):this.removeAttribute("multiple")}get value(){return w(this.getAttribute("value"),this.multiple)}set value(t){const e=f(t,this.multiple);if(!this.multiple&&!e){this.hasAttribute("value")&&this.removeAttribute("value"),this._syncChildren();return}this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncChildren()}_toggles(){return Array.from(this.querySelectorAll("ui-toggle"))}_toggleValue(t,e){return t.getAttribute("value")||t.getAttribute("data-value")||t.textContent?.trim()||String(e)}_clearGroupFlags(t){t.hasAttribute("data-group-item")&&t.removeAttribute("data-group-item"),t.hasAttribute("data-group-disabled")&&t.removeAttribute("data-group-disabled"),t.hasAttribute("role")&&t.removeAttribute("role"),t.hasAttribute("aria-checked")&&t.removeAttribute("aria-checked"),t._syncAria?.()}_clearGroupFlagsFromNode(t){if(!(t instanceof HTMLElement))return;t.matches("ui-toggle")&&this._clearGroupFlags(t),Array.from(t.querySelectorAll("ui-toggle")).forEach(i=>this._clearGroupFlags(i))}_selectedSet(){const t=this.value;return Array.isArray(t)?new Set(t.map(e=>String(e))):t?new Set([String(t)]):new Set}_setGroupValue(t,e=!0){const i=f(t,this.multiple),n=this.getAttribute("value")||"";if(!this.multiple&&!i&&!n||n===i){this._syncChildren();return}if(!this.multiple&&!i?this.removeAttribute("value"):this.setAttribute("value",i),this._syncChildren(),!e)return;const r={value:this.multiple?Array.isArray(t)?t:[String(t)]:String(t||""),values:this.multiple?Array.isArray(t)?t:[String(t)]:t?[String(t)]:[],multiple:this.multiple};this.dispatchEvent(new CustomEvent("input",{detail:r,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:r,bubbles:!0,composed:!0}))}_syncChildren(){const t=this._toggles(),e=this.hasAttribute("disabled"),i=this._selectedSet(),n=this.multiple,r=(
|
|
118
|
+
`,_=new Set(["multiple","orientation","aria-label","required","disabled"]);function x(u){return String(u).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function S(u){try{return JSON.parse(u)}catch{return}}function w(u,t){if(!t)return u||"";if(!u)return[];const e=S(u);return Array.isArray(e)?Array.from(new Set(e.map(i=>String(i)).filter(Boolean))):u.includes(",")?Array.from(new Set(u.split(",").map(i=>i.trim()).filter(Boolean))):[u]}function f(u,t){return t?JSON.stringify(Array.isArray(u)?u:[String(u)]):String(u||"")}class v extends A.ElementBase{constructor(){super(),this._observer=null,this._isSyncing=!1,this._focusIndex=-1,this._onToggleEvent=this._onToggleEvent.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["value","multiple","disabled","headless","orientation","variant","size","density","shape","elevation","allow-empty","required","activation","aria-label"]}connectedCallback(){super.connectedCallback(),this.addEventListener("change",this._onToggleEvent),this.addEventListener("keydown",this._onKeyDown),this._observer=new MutationObserver(t=>{this._isSyncing||(t.forEach(e=>{e.type!=="childList"||e.removedNodes.length===0||e.removedNodes.forEach(i=>this._clearGroupFlagsFromNode(i))}),this._syncChildren())}),this._observer.observe(this,{childList:!0,subtree:!0,attributes:!0,characterData:!0,attributeFilter:["value","data-value","disabled","pressed","data-disabled"]}),this._syncChildren()}attributeChangedCallback(t,e,i){if(e!==i){if(_.has(t)){if(!this.root.querySelector(".group")){this.requestRender();return}this._syncGroupA11y()}this._syncChildren()}}disconnectedCallback(){this.removeEventListener("change",this._onToggleEvent),this.removeEventListener("keydown",this._onKeyDown),this._toggles().forEach(t=>this._clearGroupFlags(t)),this._observer&&(this._observer.disconnect(),this._observer=null),super.disconnectedCallback()}get multiple(){return this.hasAttribute("multiple")}set multiple(t){t?this.setAttribute("multiple",""):this.removeAttribute("multiple")}get value(){return w(this.getAttribute("value"),this.multiple)}set value(t){const e=f(t,this.multiple);if(!this.multiple&&!e){this.hasAttribute("value")&&this.removeAttribute("value"),this._syncChildren();return}this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncChildren()}_toggles(){return Array.from(this.querySelectorAll("ui-toggle"))}_toggleValue(t,e){return t.getAttribute("value")||t.getAttribute("data-value")||t.textContent?.trim()||String(e)}_clearGroupFlags(t){t.hasAttribute("data-group-item")&&t.removeAttribute("data-group-item"),t.hasAttribute("data-group-disabled")&&t.removeAttribute("data-group-disabled"),t.hasAttribute("role")&&t.removeAttribute("role"),t.hasAttribute("aria-checked")&&t.removeAttribute("aria-checked"),t._syncAria?.()}_clearGroupFlagsFromNode(t){if(!(t instanceof HTMLElement))return;t.matches("ui-toggle")&&this._clearGroupFlags(t),Array.from(t.querySelectorAll("ui-toggle")).forEach(i=>this._clearGroupFlags(i))}_selectedSet(){const t=this.value;return Array.isArray(t)?new Set(t.map(e=>String(e))):t?new Set([String(t)]):new Set}_setGroupValue(t,e=!0){const i=f(t,this.multiple),n=this.getAttribute("value")||"";if(!this.multiple&&!i&&!n||n===i){this._syncChildren();return}if(!this.multiple&&!i?this.removeAttribute("value"):this.setAttribute("value",i),this._syncChildren(),!e)return;const r={value:this.multiple?Array.isArray(t)?t:[String(t)]:String(t||""),values:this.multiple?Array.isArray(t)?t:[String(t)]:t?[String(t)]:[],multiple:this.multiple};this.dispatchEvent(new CustomEvent("input",{detail:r,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:r,bubbles:!0,composed:!0}))}_inheritVariant(t){const e=this.getAttribute("variant")==="contrast";e&&!t.hasAttribute("variant")?(t.setAttribute("variant","contrast"),t.setAttribute("data-inherited-variant","")):!e&&t.hasAttribute("data-inherited-variant")&&(t.removeAttribute("variant"),t.removeAttribute("data-inherited-variant"))}_syncChildren(){const t=this._toggles(),e=this.hasAttribute("disabled"),i=this._selectedSet(),n=this.multiple,r=(g,s,o)=>{const a=g.hasAttribute(s);o&&!a&&g.setAttribute(s,""),!o&&a&&g.removeAttribute(s)},h=(g,s,o)=>{g.getAttribute(s)!==o&&g.setAttribute(s,o)};let c=-1,l=-1;this._isSyncing=!0;try{t.forEach((s,o)=>{const a=this._toggleValue(s,o),p=s.hasAttribute("data-disabled")||s.getAttribute("aria-disabled")==="true",m=e||p;r(s,"data-group-item",!0),this._inheritVariant(s),m?(r(s,"disabled",!0),r(s,"data-group-disabled",e&&!p)):s.hasAttribute("data-group-disabled")&&(r(s,"disabled",!1),r(s,"data-group-disabled",!1));const b=i.has(a);r(s,"pressed",b),h(s,"role",n?"checkbox":"radio"),h(s,"aria-checked",b?"true":"false"),b&&l<0&&(l=o),!s.hasAttribute("disabled")&&c<0&&(c=o)});const g=d.resolveRovingFocusIndex(t,{activeIndex:this._focusIndex,selectedIndex:l>=0?l:c,getDisabled:s=>s.hasAttribute("disabled")});this._focusIndex=g,d.syncRovingTabStops(t,t[g]||null,{activeAttribute:null})}finally{this._isSyncing=!1}}_onToggleEvent(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle"||this.hasAttribute("disabled"))return;const n=this._toggles().indexOf(e);if(n<0)return;const r=this._toggleValue(e,n),h=t.detail?.pressed??e.hasAttribute("pressed");if(this._focusIndex=n,this.multiple){const l=this._selectedSet();h?l.add(r):l.delete(r),this._setGroupValue(Array.from(l),!0);return}const c=this.hasAttribute("allow-empty")&&!this.hasAttribute("required");if(h){this._setGroupValue(r,!0);return}if(c)this._setGroupValue("",!0);else{const l=String(this.value||"");this._setGroupValue(l||r,!1)}}_onKeyDown(t){const e=t.target;if(!e||e.tagName.toLowerCase()!=="ui-toggle")return;const i=this.getAttribute("orientation")==="vertical"?"vertical":"horizontal",n=this.getAttribute("activation")==="manual"?"manual":"auto",r=this._toggles().filter(o=>!o.hasAttribute("disabled"));if(r.length<2)return;const h=r.indexOf(e);if(h<0)return;const c=this._isHorizontalRtl(),l=o=>{const a=d.moveRovingFocusIndex(r,h,o,{wrap:!0,fallbackIndex:d.resolveRovingFocusIndex(r,{activeIndex:h,getDisabled:()=>!1}),getDisabled:()=>!1});if(a<0)return;const p=r[a];this._focusIndex=this._toggles().indexOf(p),d.syncRovingTabStops(r,p,{activeAttribute:null}),d.focusRovingItem(p),n==="auto"&&p.toggle?.(!0)},g=i==="horizontal"&&(t.key==="ArrowRight"&&!c||t.key==="ArrowLeft"&&c)||i==="vertical"&&t.key==="ArrowDown",s=i==="horizontal"&&(t.key==="ArrowLeft"&&!c||t.key==="ArrowRight"&&c)||i==="vertical"&&t.key==="ArrowUp";if(g){t.preventDefault(),l(1);return}if(s){t.preventDefault(),l(-1);return}if(t.key==="Home"){t.preventDefault();const o=d.getRovingFocusBoundaryIndex(r,"first",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),d.syncRovingTabStops(r,a,{activeAttribute:null}),d.focusRovingItem(a),n==="auto"&&a.toggle?.(!0);return}if(t.key==="End"){t.preventDefault();const o=d.getRovingFocusBoundaryIndex(r,"last",()=>!1);if(o<0)return;const a=r[o];this._focusIndex=this._toggles().indexOf(a),d.syncRovingTabStops(r,a,{activeAttribute:null}),d.focusRovingItem(a),n==="auto"&&a.toggle?.(!0)}}render(){const t=this.multiple?"group":"radiogroup";this.getAttribute("orientation");const e=this.getAttribute("aria-label")||"Toggle group",i=this.hasAttribute("required"),n=this.hasAttribute("disabled");this.setContent(`
|
|
119
119
|
<style>${y}</style>
|
|
120
120
|
<div
|
|
121
121
|
class="group"
|
package/dist/toggle-group.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { E as _ } from "./ElementBase-BeZT54Hj.mjs";
|
|
2
|
-
import { r as
|
|
2
|
+
import { r as v, s as p, g as m, f, m as x } from "./roving-focus-group-Dbm1Jko_.mjs";
|
|
3
3
|
const w = `
|
|
4
4
|
:host {
|
|
5
|
-
--ui-toggle-group-gap:
|
|
6
|
-
--ui-toggle-group-padding:
|
|
7
|
-
--ui-toggle-group-radius:
|
|
8
|
-
--ui-toggle-group-bg:
|
|
9
|
-
--ui-toggle-group-border:
|
|
5
|
+
--ui-toggle-group-gap: 4px;
|
|
6
|
+
--ui-toggle-group-padding: 0px;
|
|
7
|
+
--ui-toggle-group-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
8
|
+
--ui-toggle-group-bg: transparent;
|
|
9
|
+
--ui-toggle-group-border: transparent;
|
|
10
10
|
--ui-toggle-group-shadow:
|
|
11
11
|
none;
|
|
12
12
|
|
|
@@ -56,15 +56,15 @@ const w = `
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
:host([size="sm"]) {
|
|
59
|
-
--ui-toggle-group-gap:
|
|
60
|
-
--ui-toggle-group-padding:
|
|
61
|
-
--ui-toggle-group-radius:
|
|
59
|
+
--ui-toggle-group-gap: 4px;
|
|
60
|
+
--ui-toggle-group-padding: 0px;
|
|
61
|
+
--ui-toggle-group-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
:host([size="lg"]) {
|
|
65
|
-
--ui-toggle-group-gap:
|
|
66
|
-
--ui-toggle-group-padding:
|
|
67
|
-
--ui-toggle-group-radius:
|
|
65
|
+
--ui-toggle-group-gap: 4px;
|
|
66
|
+
--ui-toggle-group-padding: 0px;
|
|
67
|
+
--ui-toggle-group-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
:host([density="compact"]) {
|
|
@@ -222,8 +222,8 @@ class k extends _ {
|
|
|
222
222
|
return Array.isArray(t) ? new Set(t.map((e) => String(e))) : t ? /* @__PURE__ */ new Set([String(t)]) : /* @__PURE__ */ new Set();
|
|
223
223
|
}
|
|
224
224
|
_setGroupValue(t, e = !0) {
|
|
225
|
-
const i = A(t, this.multiple),
|
|
226
|
-
if (!this.multiple && !i && !
|
|
225
|
+
const i = A(t, this.multiple), n = this.getAttribute("value") || "";
|
|
226
|
+
if (!this.multiple && !i && !n || n === i) {
|
|
227
227
|
this._syncChildren();
|
|
228
228
|
return;
|
|
229
229
|
}
|
|
@@ -235,28 +235,33 @@ class k extends _ {
|
|
|
235
235
|
};
|
|
236
236
|
this.dispatchEvent(new CustomEvent("input", { detail: r, bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("change", { detail: r, bubbles: !0, composed: !0 }));
|
|
237
237
|
}
|
|
238
|
+
/** A contrast group is a dark surface: its toggles that set no variant of their own follow it. */
|
|
239
|
+
_inheritVariant(t) {
|
|
240
|
+
const e = this.getAttribute("variant") === "contrast";
|
|
241
|
+
e && !t.hasAttribute("variant") ? (t.setAttribute("variant", "contrast"), t.setAttribute("data-inherited-variant", "")) : !e && t.hasAttribute("data-inherited-variant") && (t.removeAttribute("variant"), t.removeAttribute("data-inherited-variant"));
|
|
242
|
+
}
|
|
238
243
|
_syncChildren() {
|
|
239
|
-
const t = this._toggles(), e = this.hasAttribute("disabled"), i = this._selectedSet(),
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
}, c = (
|
|
243
|
-
|
|
244
|
+
const t = this._toggles(), e = this.hasAttribute("disabled"), i = this._selectedSet(), n = this.multiple, r = (d, s, a) => {
|
|
245
|
+
const o = d.hasAttribute(s);
|
|
246
|
+
a && !o && d.setAttribute(s, ""), !a && o && d.removeAttribute(s);
|
|
247
|
+
}, c = (d, s, a) => {
|
|
248
|
+
d.getAttribute(s) !== a && d.setAttribute(s, a);
|
|
244
249
|
};
|
|
245
|
-
let
|
|
250
|
+
let g = -1, l = -1;
|
|
246
251
|
this._isSyncing = !0;
|
|
247
252
|
try {
|
|
248
|
-
t.forEach((s,
|
|
249
|
-
const
|
|
250
|
-
r(s, "data-group-item", !0), y ? (r(s, "disabled", !0), r(s, "data-group-disabled", e && !h)) : s.hasAttribute("data-group-disabled") && (r(s, "disabled", !1), r(s, "data-group-disabled", !1));
|
|
251
|
-
const b = i.has(
|
|
252
|
-
r(s, "pressed", b), c(s, "role",
|
|
253
|
+
t.forEach((s, a) => {
|
|
254
|
+
const o = this._toggleValue(s, a), h = s.hasAttribute("data-disabled") || s.getAttribute("aria-disabled") === "true", y = e || h;
|
|
255
|
+
r(s, "data-group-item", !0), this._inheritVariant(s), y ? (r(s, "disabled", !0), r(s, "data-group-disabled", e && !h)) : s.hasAttribute("data-group-disabled") && (r(s, "disabled", !1), r(s, "data-group-disabled", !1));
|
|
256
|
+
const b = i.has(o);
|
|
257
|
+
r(s, "pressed", b), c(s, "role", n ? "checkbox" : "radio"), c(s, "aria-checked", b ? "true" : "false"), b && l < 0 && (l = a), !s.hasAttribute("disabled") && g < 0 && (g = a);
|
|
253
258
|
});
|
|
254
|
-
const
|
|
259
|
+
const d = v(t, {
|
|
255
260
|
activeIndex: this._focusIndex,
|
|
256
|
-
selectedIndex:
|
|
261
|
+
selectedIndex: l >= 0 ? l : g,
|
|
257
262
|
getDisabled: (s) => s.hasAttribute("disabled")
|
|
258
263
|
});
|
|
259
|
-
this._focusIndex =
|
|
264
|
+
this._focusIndex = d, p(t, t[d] || null, { activeAttribute: null });
|
|
260
265
|
} finally {
|
|
261
266
|
this._isSyncing = !1;
|
|
262
267
|
}
|
|
@@ -264,70 +269,70 @@ class k extends _ {
|
|
|
264
269
|
_onToggleEvent(t) {
|
|
265
270
|
const e = t.target;
|
|
266
271
|
if (!e || e.tagName.toLowerCase() !== "ui-toggle" || this.hasAttribute("disabled")) return;
|
|
267
|
-
const
|
|
268
|
-
if (
|
|
269
|
-
const r = this._toggleValue(e,
|
|
270
|
-
if (this._focusIndex =
|
|
271
|
-
const
|
|
272
|
-
c ?
|
|
272
|
+
const n = this._toggles().indexOf(e);
|
|
273
|
+
if (n < 0) return;
|
|
274
|
+
const r = this._toggleValue(e, n), c = t.detail?.pressed ?? e.hasAttribute("pressed");
|
|
275
|
+
if (this._focusIndex = n, this.multiple) {
|
|
276
|
+
const l = this._selectedSet();
|
|
277
|
+
c ? l.add(r) : l.delete(r), this._setGroupValue(Array.from(l), !0);
|
|
273
278
|
return;
|
|
274
279
|
}
|
|
275
|
-
const
|
|
280
|
+
const g = this.hasAttribute("allow-empty") && !this.hasAttribute("required");
|
|
276
281
|
if (c) {
|
|
277
282
|
this._setGroupValue(r, !0);
|
|
278
283
|
return;
|
|
279
284
|
}
|
|
280
|
-
if (
|
|
285
|
+
if (g) this._setGroupValue("", !0);
|
|
281
286
|
else {
|
|
282
|
-
const
|
|
283
|
-
this._setGroupValue(
|
|
287
|
+
const l = String(this.value || "");
|
|
288
|
+
this._setGroupValue(l || r, !1);
|
|
284
289
|
}
|
|
285
290
|
}
|
|
286
291
|
_onKeyDown(t) {
|
|
287
292
|
const e = t.target;
|
|
288
293
|
if (!e || e.tagName.toLowerCase() !== "ui-toggle") return;
|
|
289
|
-
const i = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal",
|
|
294
|
+
const i = this.getAttribute("orientation") === "vertical" ? "vertical" : "horizontal", n = this.getAttribute("activation") === "manual" ? "manual" : "auto", r = this._toggles().filter((a) => !a.hasAttribute("disabled"));
|
|
290
295
|
if (r.length < 2) return;
|
|
291
296
|
const c = r.indexOf(e);
|
|
292
297
|
if (c < 0) return;
|
|
293
|
-
const
|
|
294
|
-
const
|
|
298
|
+
const g = this._isHorizontalRtl(), l = (a) => {
|
|
299
|
+
const o = x(r, c, a, {
|
|
295
300
|
wrap: !0,
|
|
296
|
-
fallbackIndex:
|
|
301
|
+
fallbackIndex: v(r, { activeIndex: c, getDisabled: () => !1 }),
|
|
297
302
|
getDisabled: () => !1
|
|
298
303
|
});
|
|
299
|
-
if (
|
|
300
|
-
const h = r[
|
|
301
|
-
this._focusIndex = this._toggles().indexOf(h), p(r, h, { activeAttribute: null }), f(h),
|
|
302
|
-
},
|
|
303
|
-
if (
|
|
304
|
-
t.preventDefault(),
|
|
304
|
+
if (o < 0) return;
|
|
305
|
+
const h = r[o];
|
|
306
|
+
this._focusIndex = this._toggles().indexOf(h), p(r, h, { activeAttribute: null }), f(h), n === "auto" && h.toggle?.(!0);
|
|
307
|
+
}, d = i === "horizontal" && (t.key === "ArrowRight" && !g || t.key === "ArrowLeft" && g) || i === "vertical" && t.key === "ArrowDown", s = i === "horizontal" && (t.key === "ArrowLeft" && !g || t.key === "ArrowRight" && g) || i === "vertical" && t.key === "ArrowUp";
|
|
308
|
+
if (d) {
|
|
309
|
+
t.preventDefault(), l(1);
|
|
305
310
|
return;
|
|
306
311
|
}
|
|
307
312
|
if (s) {
|
|
308
|
-
t.preventDefault(),
|
|
313
|
+
t.preventDefault(), l(-1);
|
|
309
314
|
return;
|
|
310
315
|
}
|
|
311
316
|
if (t.key === "Home") {
|
|
312
317
|
t.preventDefault();
|
|
313
|
-
const
|
|
314
|
-
if (
|
|
315
|
-
const
|
|
316
|
-
this._focusIndex = this._toggles().indexOf(
|
|
318
|
+
const a = m(r, "first", () => !1);
|
|
319
|
+
if (a < 0) return;
|
|
320
|
+
const o = r[a];
|
|
321
|
+
this._focusIndex = this._toggles().indexOf(o), p(r, o, { activeAttribute: null }), f(o), n === "auto" && o.toggle?.(!0);
|
|
317
322
|
return;
|
|
318
323
|
}
|
|
319
324
|
if (t.key === "End") {
|
|
320
325
|
t.preventDefault();
|
|
321
|
-
const
|
|
322
|
-
if (
|
|
323
|
-
const
|
|
324
|
-
this._focusIndex = this._toggles().indexOf(
|
|
326
|
+
const a = m(r, "last", () => !1);
|
|
327
|
+
if (a < 0) return;
|
|
328
|
+
const o = r[a];
|
|
329
|
+
this._focusIndex = this._toggles().indexOf(o), p(r, o, { activeAttribute: null }), f(o), n === "auto" && o.toggle?.(!0);
|
|
325
330
|
}
|
|
326
331
|
}
|
|
327
332
|
render() {
|
|
328
333
|
const t = this.multiple ? "group" : "radiogroup";
|
|
329
334
|
this.getAttribute("orientation");
|
|
330
|
-
const e = this.getAttribute("aria-label") || "Toggle group", i = this.hasAttribute("required"),
|
|
335
|
+
const e = this.getAttribute("aria-label") || "Toggle group", i = this.hasAttribute("required"), n = this.hasAttribute("disabled");
|
|
331
336
|
this.setContent(`
|
|
332
337
|
<style>${w}</style>
|
|
333
338
|
<div
|
|
@@ -335,7 +340,7 @@ class k extends _ {
|
|
|
335
340
|
part="group"
|
|
336
341
|
role="${t}"
|
|
337
342
|
aria-label="${E(e)}"
|
|
338
|
-
aria-disabled="${
|
|
343
|
+
aria-disabled="${n ? "true" : "false"}"
|
|
339
344
|
aria-required="${i ? "true" : "false"}"
|
|
340
345
|
>
|
|
341
346
|
<slot></slot>
|
|
@@ -347,8 +352,8 @@ class k extends _ {
|
|
|
347
352
|
if (!t) return;
|
|
348
353
|
const e = this.multiple ? "group" : "radiogroup";
|
|
349
354
|
this.getAttribute("orientation");
|
|
350
|
-
const i = this.getAttribute("aria-label") || "Toggle group",
|
|
351
|
-
t.getAttribute("role") !== e && t.setAttribute("role", e), t.getAttribute("aria-label") !== i && t.setAttribute("aria-label", i), t.removeAttribute("aria-orientation"), t.setAttribute("aria-disabled", r ? "true" : "false"), t.setAttribute("aria-required",
|
|
355
|
+
const i = this.getAttribute("aria-label") || "Toggle group", n = this.hasAttribute("required"), r = this.hasAttribute("disabled");
|
|
356
|
+
t.getAttribute("role") !== e && t.setAttribute("role", e), t.getAttribute("aria-label") !== i && t.setAttribute("aria-label", i), t.removeAttribute("aria-orientation"), t.setAttribute("aria-disabled", r ? "true" : "false"), t.setAttribute("aria-required", n ? "true" : "false");
|
|
352
357
|
}
|
|
353
358
|
_isHorizontalRtl() {
|
|
354
359
|
if (this.getAttribute("orientation") === "vertical") return !1;
|
package/dist/toggle.cjs.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("./ElementBase-DxbvhLJs.js"),c=`
|
|
2
2
|
:host {
|
|
3
|
-
--ui-toggle-radius:
|
|
4
|
-
--ui-toggle-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
|
|
5
|
-
--ui-toggle-bg:
|
|
6
|
-
--ui-toggle-color: var(--ui-color-text, #0f172a);
|
|
3
|
+
--ui-toggle-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
|
|
4
|
+
--ui-toggle-border: var(--ui-color-line, color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent));
|
|
5
|
+
--ui-toggle-bg: transparent;
|
|
6
|
+
--ui-toggle-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
7
7
|
--ui-toggle-active-bg: var(--ui-color-primary, #2563eb);
|
|
8
|
-
--ui-toggle-
|
|
9
|
-
--ui-toggle-active-
|
|
8
|
+
--ui-toggle-pressed-bg: var(--ui-color-accent-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent));
|
|
9
|
+
--ui-toggle-active-color: var(--ui-color-text-strong, var(--ui-color-text, #0f172a));
|
|
10
|
+
--ui-toggle-active-border: var(--ui-color-accent-line, color-mix(in srgb, var(--ui-toggle-active-bg) 40%, transparent));
|
|
10
11
|
--ui-toggle-muted: var(--ui-color-muted, #526175);
|
|
11
12
|
--ui-toggle-focus: var(--ui-color-focus-ring, #2563eb);
|
|
12
13
|
--ui-toggle-shadow:
|
|
13
14
|
none;
|
|
14
|
-
--ui-toggle-padding-x: 12px;
|
|
15
|
-
--ui-toggle-padding-y:
|
|
16
|
-
--ui-toggle-height:
|
|
15
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-2, 12px) - 1px);
|
|
16
|
+
--ui-toggle-padding-y: 0px;
|
|
17
|
+
--ui-toggle-height: var(--ui-control-height-2, 32px);
|
|
18
|
+
--ui-toggle-font-size: var(--ui-control-font-size-2, 14px);
|
|
17
19
|
--ui-toggle-gap: 8px;
|
|
18
20
|
|
|
19
21
|
color-scheme: light dark;
|
|
@@ -23,6 +25,7 @@
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
.control {
|
|
28
|
+
box-sizing: border-box;
|
|
26
29
|
min-inline-size: 0;
|
|
27
30
|
min-block-size: var(--ui-toggle-height);
|
|
28
31
|
display: inline-flex;
|
|
@@ -39,7 +42,7 @@
|
|
|
39
42
|
user-select: none;
|
|
40
43
|
outline: none;
|
|
41
44
|
text-decoration: none;
|
|
42
|
-
font: 600
|
|
45
|
+
font: 600 var(--ui-toggle-font-size)/1 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
43
46
|
letter-spacing: 0.01em;
|
|
44
47
|
transition:
|
|
45
48
|
background-color 150ms ease,
|
|
@@ -50,29 +53,27 @@
|
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
.control:hover {
|
|
53
|
-
background: color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg));
|
|
54
|
-
border-color: color-mix(in srgb, var(--ui-toggle-active-bg) 30%, var(--ui-toggle-border));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.control:active {
|
|
58
|
-
transform: translateY(0.5px);
|
|
56
|
+
background: var(--ui-color-fill, color-mix(in srgb, var(--ui-toggle-active-bg) 8%, var(--ui-toggle-bg)));
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
:host(:focus-visible) .control {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var(--ui-toggle-shadow);
|
|
60
|
+
outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-toggle-focus));
|
|
61
|
+
outline-offset: var(--ui-ring-offset, 2px);
|
|
65
62
|
}
|
|
66
63
|
|
|
67
64
|
:host([pressed]) .control,
|
|
68
65
|
.control[aria-pressed="true"] {
|
|
69
|
-
background: var(--ui-toggle-
|
|
66
|
+
background: var(--ui-toggle-pressed-bg);
|
|
70
67
|
border-color: var(--ui-toggle-active-border);
|
|
71
68
|
color: var(--ui-toggle-active-color);
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
:host([pressed]) .control:hover {
|
|
75
|
-
background: color-
|
|
72
|
+
background: var(--ui-color-accent-fill-hover, var(--ui-toggle-pressed-bg));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.icon:empty {
|
|
76
|
+
display: none !important;
|
|
76
77
|
}
|
|
77
78
|
|
|
78
79
|
.icon {
|
|
@@ -106,17 +107,17 @@
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
:host([size="sm"]) {
|
|
109
|
-
--ui-toggle-padding-x:
|
|
110
|
-
--ui-toggle-
|
|
111
|
-
--ui-toggle-
|
|
112
|
-
--ui-toggle-radius:
|
|
110
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
|
|
111
|
+
--ui-toggle-height: var(--ui-control-height-1, 24px);
|
|
112
|
+
--ui-toggle-font-size: var(--ui-control-font-size-1, 12px);
|
|
113
|
+
--ui-toggle-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
:host([size="lg"]) {
|
|
116
|
-
--ui-toggle-padding-x:
|
|
117
|
-
--ui-toggle-
|
|
118
|
-
--ui-toggle-
|
|
119
|
-
--ui-toggle-radius:
|
|
117
|
+
--ui-toggle-padding-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
|
|
118
|
+
--ui-toggle-height: var(--ui-control-height-3, 40px);
|
|
119
|
+
--ui-toggle-font-size: var(--ui-control-font-size-3, 16px);
|
|
120
|
+
--ui-toggle-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
:host([shape="square"]) {
|
|
@@ -159,6 +160,14 @@
|
|
|
159
160
|
background: transparent;
|
|
160
161
|
}
|
|
161
162
|
|
|
163
|
+
/* A tone tints the pressed state in its own colour (the default soft fill is the theme accent). */
|
|
164
|
+
:host([tone="success"]),
|
|
165
|
+
:host([tone="warning"]),
|
|
166
|
+
:host([tone="danger"]) {
|
|
167
|
+
--ui-toggle-pressed-bg: color-mix(in srgb, var(--ui-toggle-active-bg) 16%, transparent);
|
|
168
|
+
--ui-toggle-active-border: color-mix(in srgb, var(--ui-toggle-active-bg) 44%, transparent);
|
|
169
|
+
}
|
|
170
|
+
|
|
162
171
|
:host([tone="success"]) {
|
|
163
172
|
--ui-toggle-active-bg: var(--ui-color-success, #15803d);
|
|
164
173
|
}
|
|
@@ -171,7 +180,16 @@
|
|
|
171
180
|
--ui-toggle-active-bg: var(--ui-color-danger, #dc2626);
|
|
172
181
|
}
|
|
173
182
|
|
|
174
|
-
/* The contrast variant draws dark text on
|
|
183
|
+
/* The contrast variant draws dark text on a solid light pressed fill (not the soft theme tint). */
|
|
184
|
+
:host([variant="contrast"]) {
|
|
185
|
+
--ui-toggle-pressed-bg: var(--ui-toggle-active-bg);
|
|
186
|
+
--ui-toggle-active-border: var(--ui-toggle-active-bg);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
:host([variant="contrast"][pressed]) .control:hover {
|
|
190
|
+
background: color-mix(in srgb, var(--ui-toggle-active-bg) 86%, #ffffff);
|
|
191
|
+
}
|
|
192
|
+
|
|
175
193
|
:host([variant="contrast"][tone="success"]) { --ui-toggle-active-bg: #86efac; }
|
|
176
194
|
:host([variant="contrast"][tone="warning"]) { --ui-toggle-active-bg: #fcd34d; }
|
|
177
195
|
:host([variant="contrast"][tone="danger"]) { --ui-toggle-active-bg: #fca5a5; }
|
|
@@ -223,15 +241,15 @@
|
|
|
223
241
|
--ui-toggle-shadow: none;
|
|
224
242
|
}
|
|
225
243
|
}
|
|
226
|
-
`,
|
|
244
|
+
`,n=new Set(["icon-on","icon-off","aria-label"]);function u(o){if(o==null)return!1;const e=String(o).toLowerCase();return e!=="false"&&e!=="0"&&e!=="off"}function a(o){return String(o).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}class l extends g.ElementBase{constructor(){super(),this._control=null,this._onClick=this._onClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}static get observedAttributes(){return["pressed","disabled","loading","headless","size","variant","tone","shape","elevation","name","value","required","icon-on","icon-off","aria-label","tabindex"]}connectedCallback(){super.connectedCallback(),this.root.addEventListener("click",this._onClick),this.root.addEventListener("keydown",this._onKeyDown),this._syncAria()}disconnectedCallback(){this.root.removeEventListener("click",this._onClick),this.root.removeEventListener("keydown",this._onKeyDown),super.disconnectedCallback()}attributeChangedCallback(e,t,i){if(t!==i){if(n.has(e)){super.attributeChangedCallback(e,t,i);return}this._syncAria()}}get pressed(){return this.hasAttribute("pressed")}set pressed(e){e?this.setAttribute("pressed",""):this.removeAttribute("pressed")}get disabled(){return this.hasAttribute("disabled")||this.hasAttribute("loading")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}toggle(e){if(this.disabled)return;const t=typeof e=="boolean"?e:!this.pressed;if(t===this.pressed){this._syncAria();return}this.pressed=t,this._syncAria();const i={pressed:t,value:this.getAttribute("value")||"",name:this.getAttribute("name")||"",required:u(this.getAttribute("required"))};this.dispatchEvent(new CustomEvent("input",{detail:i,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:i,bubbles:!0,composed:!0}))}_syncAria(){const e=this.pressed,t=this.disabled,i=this.hasAttribute("loading");this.hasAttribute("data-group-item")?this.hasAttribute("aria-pressed")&&this.removeAttribute("aria-pressed"):(this.setAttribute("role","button"),this.setAttribute("aria-pressed",e?"true":"false")),this.setAttribute("aria-disabled",t?"true":"false"),this.setAttribute("aria-busy",i?"true":"false");const r=this.getAttribute("tabindex");if(t)this.hasAttribute("data-ui-prev-tabindex")||this.setAttribute("data-ui-prev-tabindex",r??""),r!=="-1"&&this.setAttribute("tabindex","-1");else{const s=this.getAttribute("data-ui-prev-tabindex");s!=null?(s?this.setAttribute("tabindex",s):this.removeAttribute("tabindex"),this.removeAttribute("data-ui-prev-tabindex")):r==null&&this.setAttribute("tabindex","0")}this._control&&this._control.toggleAttribute("data-disabled",t)}_onClick(e){const t=e.target;t&&t.closest(".control")&&this.toggle()}_onKeyDown(e){this.disabled||(e.key===" "||e.key==="Enter")&&(e.preventDefault(),this.toggle())}render(){this.pressed;const e=this.disabled,t=this.getAttribute("icon-on")||"",i=this.getAttribute("icon-off")||"";this.getAttribute("aria-label"),this.setContent(`
|
|
227
245
|
<style>${c}</style>
|
|
228
246
|
<span
|
|
229
247
|
class="control"
|
|
230
248
|
part="control"
|
|
231
249
|
${e?"data-disabled":""}
|
|
232
250
|
>
|
|
233
|
-
<span class="icon icon-off" part="icon-off" aria-hidden="true">${
|
|
234
|
-
<span class="icon icon-on" part="icon-on" aria-hidden="true">${
|
|
251
|
+
<span class="icon icon-off" part="icon-off" aria-hidden="true">${a(i)}</span>
|
|
252
|
+
<span class="icon icon-on" part="icon-on" aria-hidden="true">${a(t)}</span>
|
|
235
253
|
<span class="label" part="label"><slot></slot></span>
|
|
236
254
|
</span>
|
|
237
|
-
`),this._control=this.root.querySelector(".control"),this._syncAria()}shouldRenderOnAttributeChange(e,t,i){return
|
|
255
|
+
`),this._control=this.root.querySelector(".control"),this._syncAria()}shouldRenderOnAttributeChange(e,t,i){return n.has(e)}}typeof customElements<"u"&&!customElements.get("ui-toggle")&&customElements.define("ui-toggle",l);exports.UIToggle=l;
|