@ecopages/radiant-ui 0.1.0-rc.7 → 0.1.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 +11 -3
- package/dist/components/ui/alert/alert.d.ts +2 -4
- package/dist/components/ui/alert/alert.script.d.ts +25 -15
- package/dist/components/ui/autocomplete/autocomplete.css +1 -2
- package/dist/components/ui/autocomplete/autocomplete.d.ts +8 -3
- package/dist/components/ui/autocomplete/autocomplete.script.d.ts +29 -4
- package/dist/components/ui/avatar/avatar.css +10 -8
- package/dist/components/ui/avatar/avatar.d.ts +3 -1
- package/dist/components/ui/breadcrumb/breadcrumb.d.ts +11 -11
- package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +10 -10
- package/dist/components/ui/calendar/calendar.css +10 -5
- package/dist/components/ui/calendar/calendar.script.d.ts +24 -21
- package/dist/components/ui/calendar/index.js +1 -1
- package/dist/components/ui/calendar/index.js.map +3 -3
- package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
- package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
- package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
- package/dist/components/ui/carousel/carousel.css +71 -18
- package/dist/components/ui/carousel/carousel.d.ts +8 -4
- package/dist/components/ui/carousel/carousel.script.d.ts +73 -40
- package/dist/components/ui/carousel/index.js +1 -1
- package/dist/components/ui/carousel/index.js.map +4 -4
- package/dist/components/ui/checkbox/checkbox.d.ts +11 -0
- package/dist/components/ui/checkbox/checkbox.script.d.ts +31 -8
- package/dist/components/ui/checkbox/index.js +1 -1
- package/dist/components/ui/checkbox/index.js.map +4 -4
- package/dist/components/ui/checkbox-group/checkbox-group.d.ts +4 -2
- package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +39 -20
- package/dist/components/ui/checkbox-group/index.js +1 -1
- package/dist/components/ui/checkbox-group/index.js.map +4 -4
- package/dist/components/ui/combobox/combobox.css +9 -1
- package/dist/components/ui/combobox/combobox.d.ts +12 -4
- package/dist/components/ui/combobox/combobox.script.d.ts +74 -25
- package/dist/components/ui/combobox/index.d.ts +2 -2
- package/dist/components/ui/combobox/index.js +1 -1
- package/dist/components/ui/combobox/index.js.map +4 -4
- package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +6 -2
- package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +35 -4
- package/dist/components/ui/cycle-toggle/index.js +1 -1
- package/dist/components/ui/cycle-toggle/index.js.map +3 -3
- package/dist/components/ui/date-field/date-field.css +13 -17
- package/dist/components/ui/date-field/date-field.d.ts +10 -8
- package/dist/components/ui/date-field/date-field.script.d.ts +35 -52
- package/dist/components/ui/date-field/index.js +1 -1
- package/dist/components/ui/date-field/index.js.map +4 -4
- package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
- package/dist/components/ui/date-input/date-input.css +50 -0
- package/dist/components/ui/date-input/date-input.d.ts +8 -0
- package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
- package/dist/components/ui/date-input/index.d.ts +2 -0
- package/dist/components/ui/date-input/index.js +2 -0
- package/dist/components/ui/date-input/index.js.map +7 -0
- package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
- package/dist/components/ui/date-range-picker/date-range-picker.d.ts +11 -9
- package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +42 -51
- package/dist/components/ui/date-range-picker/index.js +1 -1
- package/dist/components/ui/date-range-picker/index.js.map +4 -4
- package/dist/components/ui/dialog/dialog.css +18 -14
- package/dist/components/ui/dialog/dialog.d.ts +6 -0
- package/dist/components/ui/dialog/dialog.script.d.ts +43 -10
- package/dist/components/ui/dialog/index.js +1 -1
- package/dist/components/ui/dialog/index.js.map +4 -4
- package/dist/components/ui/disclosure/disclosure-group.script.d.ts +19 -3
- package/dist/components/ui/disclosure/disclosure.css +3 -6
- package/dist/components/ui/disclosure/disclosure.d.ts +23 -7
- package/dist/components/ui/disclosure/disclosure.script.d.ts +31 -7
- package/dist/components/ui/disclosure/index.d.ts +1 -1
- package/dist/components/ui/disclosure/index.js +1 -1
- package/dist/components/ui/disclosure/index.js.map +4 -4
- package/dist/components/ui/field/field-description.d.ts +1 -0
- package/dist/components/ui/field/field-error.d.ts +2 -2
- package/dist/components/ui/field/field.d.ts +4 -4
- package/dist/components/ui/field/field.script.d.ts +54 -24
- package/dist/components/ui/field/index.js +1 -1
- package/dist/components/ui/field/index.js.map +4 -4
- package/dist/components/ui/form/control-protocol.d.ts +38 -1
- package/dist/components/ui/form/form-context.d.ts +3 -0
- package/dist/components/ui/form/form.d.ts +6 -0
- package/dist/components/ui/form/form.script.d.ts +29 -12
- package/dist/components/ui/form/index.d.ts +2 -1
- package/dist/components/ui/form/index.js +1 -1
- package/dist/components/ui/form/index.js.map +4 -4
- package/dist/components/ui/grid/grid.d.ts +4 -3
- package/dist/components/ui/grid/grid.script.d.ts +19 -11
- package/dist/components/ui/hover-card/hover-card.css +12 -101
- package/dist/components/ui/hover-card/hover-card.d.ts +7 -2
- package/dist/components/ui/hover-card/hover-card.script.d.ts +36 -5
- package/dist/components/ui/hover-card/index.js +1 -1
- package/dist/components/ui/hover-card/index.js.map +4 -4
- package/dist/components/ui/input/index.js +1 -1
- package/dist/components/ui/input/index.js.map +4 -4
- package/dist/components/ui/input/input.css +1 -1
- package/dist/components/ui/knob/index.js +1 -1
- package/dist/components/ui/knob/index.js.map +3 -3
- package/dist/components/ui/knob/knob.css +6 -1
- package/dist/components/ui/knob/knob.d.ts +4 -4
- package/dist/components/ui/knob/knob.script.d.ts +55 -20
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/label/index.js.map +4 -4
- package/dist/components/ui/label/label.d.ts +2 -1
- package/dist/components/ui/listbox/index.d.ts +2 -2
- package/dist/components/ui/listbox/index.js +1 -1
- package/dist/components/ui/listbox/index.js.map +4 -4
- package/dist/components/ui/listbox/listbox.css +14 -0
- package/dist/components/ui/listbox/listbox.d.ts +16 -2
- package/dist/components/ui/listbox/listbox.script.d.ts +55 -12
- package/dist/components/ui/menu-button/index.js +1 -1
- package/dist/components/ui/menu-button/index.js.map +4 -4
- package/dist/components/ui/menu-button/menu-button.d.ts +2 -2
- package/dist/components/ui/menu-button/menu-button.script.d.ts +30 -27
- package/dist/components/ui/menubar/index.js +1 -1
- package/dist/components/ui/menubar/index.js.map +4 -4
- package/dist/components/ui/menubar/menubar.script.d.ts +41 -15
- package/dist/components/ui/meter/index.js +1 -1
- package/dist/components/ui/meter/index.js.map +3 -3
- package/dist/components/ui/meter/meter.css +27 -2
- package/dist/components/ui/meter/meter.script.d.ts +19 -14
- package/dist/components/ui/navigation-menu/index.d.ts +1 -1
- package/dist/components/ui/navigation-menu/index.js +1 -1
- package/dist/components/ui/navigation-menu/index.js.map +4 -4
- package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts +34 -5
- package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +93 -12
- package/dist/components/ui/number-field/index.js +1 -1
- package/dist/components/ui/number-field/index.js.map +4 -4
- package/dist/components/ui/number-field/number-field.css +1 -1
- package/dist/components/ui/number-field/number-field.d.ts +8 -19
- package/dist/components/ui/number-field/number-field.script.d.ts +30 -9
- package/dist/components/ui/pagination/index.d.ts +1 -1
- package/dist/components/ui/pagination/index.js +1 -1
- package/dist/components/ui/pagination/index.js.map +3 -3
- package/dist/components/ui/pagination/pagination.css +50 -13
- package/dist/components/ui/pagination/pagination.d.ts +33 -9
- package/dist/components/ui/pagination/pagination.script.d.ts +29 -9
- package/dist/components/ui/popover/index.js +1 -1
- package/dist/components/ui/popover/index.js.map +4 -4
- package/dist/components/ui/popover/popover.d.ts +17 -1
- package/dist/components/ui/popover/popover.script.d.ts +57 -9
- package/dist/components/ui/radio-group/index.js +1 -1
- package/dist/components/ui/radio-group/index.js.map +4 -4
- package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group/radio-group.script.d.ts +35 -16
- package/dist/components/ui/select/index.d.ts +2 -2
- package/dist/components/ui/select/index.js +1 -1
- package/dist/components/ui/select/index.js.map +4 -4
- package/dist/components/ui/select/select.css +8 -6
- package/dist/components/ui/select/select.d.ts +18 -9
- package/dist/components/ui/select/select.script.d.ts +74 -26
- package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
- package/dist/components/ui/shared/control-toggle.css +8 -4
- package/dist/components/ui/shared/field-label.d.ts +5 -0
- package/dist/components/ui/shared/listbox-host-controller.d.ts +41 -0
- package/dist/components/ui/shared/listbox-option.d.ts +4 -0
- package/dist/components/ui/shared/multi-value.d.ts +23 -1
- package/dist/components/ui/shared/numeric-range.d.ts +8 -0
- package/dist/components/ui/shared/popover.css +10 -99
- package/dist/components/ui/sidebar/index.d.ts +2 -1
- package/dist/components/ui/sidebar/index.js +1 -1
- package/dist/components/ui/sidebar/index.js.map +4 -4
- package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
- package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +52 -31
- package/dist/components/ui/sidebar/sidebar.css +67 -61
- package/dist/components/ui/sidebar/sidebar.d.ts +9 -4
- package/dist/components/ui/sidebar/sidebar.script.d.ts +42 -20
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/slider/index.js.map +4 -4
- package/dist/components/ui/slider/slider.css +5 -5
- package/dist/components/ui/slider/slider.d.ts +20 -10
- package/dist/components/ui/slider/slider.script.d.ts +103 -27
- package/dist/components/ui/switch/index.js +1 -1
- package/dist/components/ui/switch/index.js.map +4 -4
- package/dist/components/ui/switch/switch.css +28 -22
- package/dist/components/ui/switch/switch.d.ts +13 -0
- package/dist/components/ui/switch/switch.script.d.ts +34 -8
- package/dist/components/ui/table/index.js +1 -1
- package/dist/components/ui/table/index.js.map +4 -4
- package/dist/components/ui/table/table.d.ts +9 -7
- package/dist/components/ui/table/table.script.d.ts +55 -12
- package/dist/components/ui/tabs/tabs.css +18 -12
- package/dist/components/ui/tabs/tabs.d.ts +7 -4
- package/dist/components/ui/tabs/tabs.script.d.ts +39 -9
- package/dist/components/ui/tag-group/index.js +1 -1
- package/dist/components/ui/tag-group/index.js.map +4 -4
- package/dist/components/ui/tag-group/tag-group.d.ts +19 -7
- package/dist/components/ui/tag-group/tag-group.script.d.ts +58 -10
- package/dist/components/ui/textarea/index.js +1 -1
- package/dist/components/ui/textarea/index.js.map +4 -4
- package/dist/components/ui/textarea/textarea.css +1 -1
- package/dist/components/ui/toast/index.js +1 -1
- package/dist/components/ui/toast/index.js.map +4 -4
- package/dist/components/ui/toast/toast.css +35 -32
- package/dist/components/ui/toast/toast.script.d.ts +17 -31
- package/dist/components/ui/toast/toaster.script.d.ts +24 -12
- package/dist/components/ui/toc/toc.script.d.ts +19 -8
- package/dist/components/ui/toolbar/toolbar.d.ts +5 -0
- package/dist/components/ui/toolbar/toolbar.script.d.ts +24 -4
- package/dist/components/ui/tooltip/index.js +1 -1
- package/dist/components/ui/tooltip/index.js.map +4 -4
- package/dist/components/ui/tooltip/tooltip.css +14 -94
- package/dist/components/ui/tooltip/tooltip.d.ts +7 -0
- package/dist/components/ui/tooltip/tooltip.script.d.ts +36 -6
- package/dist/components/ui/tree/tree.d.ts +4 -3
- package/dist/components/ui/tree/tree.script.d.ts +28 -15
- package/dist/components/ui/treegrid/treegrid.d.ts +5 -3
- package/dist/components/ui/treegrid/treegrid.script.d.ts +33 -14
- package/dist/components/ui/window-splitter/index.d.ts +1 -1
- package/dist/components/ui/window-splitter/index.js +1 -1
- package/dist/components/ui/window-splitter/index.js.map +3 -3
- package/dist/components/ui/window-splitter/window-splitter.d.ts +10 -1
- package/dist/components/ui/window-splitter/window-splitter.script.d.ts +26 -8
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/lib/icons/check.d.ts +3 -0
- package/dist/lib/icons/chevron-down.d.ts +0 -1
- package/dist/lib/icons/index.d.ts +2 -0
- package/dist/lib/icons/x.d.ts +5 -0
- package/dist/lib/intl-date/index.d.ts +4 -2
- package/dist/lib/intl-date/segment-editing.d.ts +34 -0
- package/dist/lib/intl-date/segments.d.ts +26 -4
- package/dist/lib/non-empty.d.ts +6 -0
- package/dist/lib/unique-id.d.ts +11 -0
- package/dist/lib/viewport/breakpoints.d.ts +6 -0
- package/dist/lib/viewport/mobile-layout.d.ts +15 -0
- package/dist/styles/primitives.css +14 -11
- package/dist/styles/radiant-ui-core.css +10 -0
- package/dist/styles/radiant-ui.css +40 -11
- package/dist/styles/style-dependencies.json +38 -13
- package/dist/styles/styles.css +485 -252
- package/dist/styles/tailwind.css +40 -101
- package/dist/styles/tokens/presets/colors/aurora.css +2 -0
- package/dist/styles/tokens/presets/colors/basalt.css +2 -0
- package/dist/styles/tokens/presets/colors/ember.css +2 -0
- package/dist/styles/tokens/presets/colors/glacier.css +2 -0
- package/dist/styles/tokens/semantic.css +1 -0
- package/dist/styles/tokens/system.css +11 -3
- package/dist/styles/tokens/typography/default.css +8 -0
- package/package.json +27 -13
|
@@ -17,25 +17,28 @@ export type RuiTabPanelProps = Omit<JsxElementProps<HTMLDivElement>, 'id' | 'hid
|
|
|
17
17
|
hidden?: boolean;
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
|
-
* Tab strip container.
|
|
20
|
+
* Tab strip container. Stamps `[role="tablist"]`.
|
|
21
21
|
*
|
|
22
22
|
* @cssclass rui-tabs__list - `role="tablist"` strip.
|
|
23
|
+
*
|
|
24
|
+
* @remarks Set `aria-label` here, or `label` on `RuiTabs`, for the tab list name.
|
|
23
25
|
*/
|
|
24
26
|
export declare function RuiTabList({ children, class: className, ...props }: RuiTabListProps): import("@ecopages/jsx").JsxRenderable;
|
|
25
27
|
/**
|
|
26
|
-
* Tab control. `
|
|
28
|
+
* Tab control. Stamps `[role="tab"]` with `data-tab-value` and `id="tab-{id}"`.
|
|
27
29
|
*
|
|
28
30
|
* @cssclass rui-tabs__tab - `role="tab"` button; underline/border per `variant`.
|
|
29
31
|
*/
|
|
30
32
|
export declare function RuiTab({ id, children, class: className, disabled, selected, ...props }: RuiTabProps): import("@ecopages/jsx").JsxRenderable;
|
|
31
33
|
/**
|
|
32
|
-
* Groups tab panels below the tab list.
|
|
34
|
+
* Groups tab panels below the tab list. Presentation wrapper only; no role target.
|
|
33
35
|
*
|
|
34
36
|
* @cssclass rui-tabs__panels - Panel group.
|
|
35
37
|
*/
|
|
36
38
|
export declare function RuiTabPanels({ children, class: className, ...props }: RuiTabPanelsProps): import("@ecopages/jsx").JsxRenderable;
|
|
37
39
|
/**
|
|
38
|
-
* Tab panel paired with a `RuiTab` by `id`.
|
|
40
|
+
* Tab panel paired with a `RuiTab` by `id`. Stamps `[role="tabpanel"]` with
|
|
41
|
+
* `data-tab-value` and `id="panel-{id}"`.
|
|
39
42
|
*
|
|
40
43
|
* @cssclass rui-tabs__panel - `role="tabpanel"`; hidden when not selected.
|
|
41
44
|
*/
|
|
@@ -21,20 +21,50 @@ export type RuiTabsChangeDetail = {
|
|
|
21
21
|
value: string;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
|
-
* `<rui-tabs>` — layered sections
|
|
24
|
+
* `<rui-tabs>` — layered sections with one visible panel at a time.
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
26
|
+
* The custom element is a behavior host: it does not render tab chrome. Import
|
|
27
|
+
* the script and place light-DOM children that match the contract below, or use
|
|
28
|
+
* `RuiTabList`, `RuiTab`, `RuiTabPanels`, and `RuiTabPanel`, which stamp the
|
|
29
|
+
* same targets.
|
|
28
30
|
*
|
|
29
|
-
*
|
|
30
|
-
* Re-syncs when light-DOM children are replaced (e.g. a parent host re-renders the
|
|
31
|
-
* tab list). Observes `childList` only so attribute updates from sync itself do not loop.
|
|
31
|
+
* ## Light-DOM contract
|
|
32
32
|
*
|
|
33
|
-
*
|
|
33
|
+
* Required:
|
|
34
|
+
* - `[role="tablist"]` — tab strip. Host sets `aria-label` from `label` when the
|
|
35
|
+
* tablist has no `aria-label`.
|
|
36
|
+
* - `[role="tab"]` — tab control. Host sets `aria-selected` and `tabIndex`.
|
|
37
|
+
* - `[role="tabpanel"]` — panel region. Host sets `hidden`; sets `tabIndex` when
|
|
38
|
+
* not already present.
|
|
39
|
+
*
|
|
40
|
+
* Per tab / panel:
|
|
41
|
+
* - `data-tab-value` — identity matched against `value`. Falls back to `id` with
|
|
42
|
+
* `tab-` / `panel-` prefixes stripped.
|
|
43
|
+
*
|
|
44
|
+
* Author `aria-label` on the tablist (preferred over `label` on the host) and
|
|
45
|
+
* `aria-disabled="true"` on a tab to block activation. Do not set `aria-selected`,
|
|
46
|
+
* `tabIndex`, or `hidden` on panels — the host owns those after `resync()`.
|
|
47
|
+
*
|
|
48
|
+
* Nested hosts: none.
|
|
34
49
|
*
|
|
50
|
+
* @see https://www.w3.org/WAI/ARIA/apg/patterns/tabs/
|
|
35
51
|
* @element rui-tabs
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
52
|
+
* @attr {('ghost'|'boxed')} variant - Visual treatment. Default: `boxed`.
|
|
53
|
+
* @attr {string} value - Selected tab id. Default: `''` (first tab).
|
|
54
|
+
* @attr {string} label - Accessible name for the tab list when `[role="tablist"]` has no `aria-label`.
|
|
55
|
+
* @attr {boolean} automatic - When `true`, focusing a tab activates it. Default: `true`.
|
|
56
|
+
* @fires rui-change - Emitted when the selected tab changes; `detail.value` is the tab id.
|
|
57
|
+
*
|
|
58
|
+
* @cssprop --rui-tabs-radius - Boxed card corner radius. Default: `--radius-container`.
|
|
59
|
+
* @cssprop --rui-tabs-indicator-width - Selected-tab underline thickness. Default: `2px`.
|
|
60
|
+
* @cssprop --rui-tabs-indicator-color - Selected-tab underline. Default: `--primary`.
|
|
61
|
+
* @cssprop --rui-tabs-tab-padding-x - Tab inline padding. Default: `--space-control-x`.
|
|
62
|
+
* @cssprop --rui-tabs-tab-padding-y - Tab block padding. Default: `--space-control-y`.
|
|
63
|
+
* @cssprop --rui-tabs-panel-padding - Panel padding. Default: `--space-inset`.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* `resync()` re-applies tablist labeling and selected/hidden state from `value`.
|
|
67
|
+
* Observes `childList` so replaced children (e.g. parent re-render) stay in sync.
|
|
38
68
|
*/
|
|
39
69
|
export declare class RuiTabs extends RadiantElement {
|
|
40
70
|
variant: RuiTabsVariant;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{RadiantElement as Ve,customElement as Je,event as Ie,onEvent as W,onUpdated as Qe,prop as M,state as We}from"@ecopages/radiant";function Be(t,e){t.forEach((i,a)=>{let u=a===e?0:-1;i.tabIndex!==u&&(i.tabIndex=u)})}function qe(t,e){if(!t.length)return null;let i=Math.max(0,Math.min(t.length-1,e));return Be(t,i),t[i]?.focus(),t[i]??null}function Ge(t,e){return t==="Home"?"first":t==="End"?"last":e==="horizontal"?t==="ArrowRight"?"next":t==="ArrowLeft"?"prev":null:t==="ArrowDown"?"next":t==="ArrowUp"?"prev":null}function oe(t){let{items:e,current:i,key:a,orientation:u="horizontal",wrap:p=!0}=t;if(!e.length||!i)return{handled:!1};let c=e.indexOf(i);if(c<0)return{handled:!1};let r=Ge(a,u);if(!r)return{handled:!1};let b=c;r==="first"?b=0:r==="last"?b=e.length-1:r==="next"?b=p?(c+1)%e.length:Math.min(e.length-1,c+1):b=p?(c-1+e.length)%e.length:Math.max(0,c-1);let S=qe(e,b);return S?{handled:!0,index:b,item:S}:{handled:!1}}function le(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function Q(t){return t.join(",")}var ue,ce,de,ge,he,fe,me,pe,be,ve,ye,Te,_e,xe,we,Ee,Se,Ae;function $e(t,e,i,a,u,p){var c,r,b,S,L,q,R,X=Symbol.metadata||Symbol.for("Symbol.metadata"),Y=Object.defineProperty,G=Object.create,Z=[G(null),G(null)],H=e.length;function j(n,v,h){return function(s,o){v&&(o=s,s=t);for(var y=0;y<n.length;y++)o=n[y].apply(s,h?[o]:[]);return h?o:s}}function x(n,v,h,s){if(typeof n!="function"&&(s||n!==void 0))throw new TypeError(v+" must "+(h||"be")+" a function"+(s?"":" or undefined"));return n}function P(n,v,h,s,o,y,E,f,T,_,N){function $(d){if(!N(d))throw new TypeError("Attempted to access private element on non-instance")}var K=[].concat(v[0]),ee=v[3],O=!E,V=o===1,te=o===3,ie=o===4,D=o===2;function C(d,A,ne){return function(z,se){return A&&(se=z,z=n),ne&&ne(z),l[d].call(z,se)}}if(!O){var l={},U=[],w=te?"get":ie||V?"set":"value";if(T?(_||V?l={get:Re(function(){return ee(this)},s,"get"),set:function(d){v[4](this,d)}}:l[w]=ee,_||Re(l[w],s,D?"":w)):_||(l=Object.getOwnPropertyDescriptor(n,s)),!_&&!T){if((r=Z[+f][s])&&(r^o)!==7)throw Error("Decorating two elements with the same name ("+l[w].name+") is not supported yet");Z[+f][s]=o<3?1:o}}for(var g=n,k=K.length-1;k>=0;k-=h?2:1){var ae=x(K[k],"A decorator","be",!0),re=h?K[k-1]:void 0,J={},I={kind:["field","accessor","method","getter","setter","class"][o],name:s,metadata:c,addInitializer:function(d,A){if(d.v)throw new TypeError("attempted to call addInitializer after decoration was finished");x(A,"An initializer","be",!0),y.push(A)}.bind(null,J)};if(O)r=ae.call(re,g,I),J.v=1,x(r,"class decorators","return")&&(g=r);else if(I.static=f,I.private=T,r=I.access={has:T?N.bind():function(d){return s in d}},ie||(r.get=T?D?function(d){return $(d),l.value}:C("get",0,$):function(d){return d[s]}),D||te||(r.set=T?C("set",0,$):function(d,A){d[s]=A}),g=ae.call(re,V?{get:l.get,set:l.set}:l[w],I),J.v=1,V){if(typeof g=="object"&&g)(r=x(g.get,"accessor.get"))&&(l.get=r),(r=x(g.set,"accessor.set"))&&(l.set=r),(r=x(g.init,"accessor.init"))&&U.unshift(r);else if(g!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else x(g,(_?"field":"method")+" decorators","return")&&(_?U.unshift(g):l[w]=g)}return o<2&&E.push(j(U,f,1),j(y,f,0)),_||O||(T?V?E.splice(-1,0,C("get",f),C("set",f)):E.push(D?l[w]:x.call.bind(l[w])):Y(n,s,l)),g}function F(n){return Y(n,X,{configurable:!0,enumerable:!0,value:c})}return p!==void 0&&(c=p[X]),c=G(c??null),L=[],q=function(n){n&&L.push(j(n))},R=function(n,v){for(var h=0;h<i.length;h++){var s=i[h],o=s[1],y=7&o;if((8&o)==n&&!y==v){var E=s[2],f=!!s[3],T=16&o;P(n?t:t.prototype,s,T,f?"#"+E:Ke(E),y,y<2?[]:n?S=S||[]:b=b||[],L,!!n,f,v,n&&f?function(_){return Ue(_)===t}:u)}}},R(8,0),R(0,0),R(8,1),R(0,1),q(b),q(S),r=L,H||F(t),{e:r,get c(){var n=[];return H&&[F(t=P(t,[e],a,t.name,5,n)),j(n,1)]}}}function Ke(t){var e=Oe(t,"string");return typeof e=="symbol"?e:e+""}function Oe(t,e){if(typeof t!="object"||!t)return t;var i=t[Symbol.toPrimitive];if(i!==void 0){var a=i.call(t,e||"default");if(typeof a!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Re(t,e,i){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:i?i+" "+e:e})}catch{}return t}function Ue(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var Le,Me=class extends Ve{static{({e:[de,ge,he,fe,me,pe,be,ve,ye,Te,_e,xe,we,Ee,Se,Ae,ue],c:[Le,ce]}=$e(this,[Je("rui-tag-group")],[[M({type:String,reflect:!0,defaultValue:""}),0,"value"],[M({type:String,defaultValue:""}),0,"label"],[M({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[M({type:String,attribute:"selection-mode",defaultValue:"multiple"}),0,"selectionMode"],[M({type:Boolean,reflect:!0,defaultValue:!1}),0,"embedded"],[Ie({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[Ie({name:"rui-remove",bubbles:!0,composed:!0}),0,"removeEvent"],[We,0,"managedItems"],[Qe(["value","label","disabled","selectionMode","embedded","managedItems"]),2,"onPropsUpdated"],[W({selector:"[data-tag]",type:"click"}),2,"onTagClick"],[W({selector:"[data-tag-remove]",type:"click"}),2,"onRemoveClick"],[W({selector:"[data-tag]",type:"keydown"}),2,"onTagKeydown"]],0,void 0,Ve))}constructor(...e){super(...e),Ae(this)}value=(ue(this),de(this));label=(ge(this),he(this));disabled=(fe(this),me(this));selectionMode=(pe(this),be(this));embedded=(ve(this),ye(this));changeEvent=(Te(this),_e(this));removeEvent=(xe(this),we(this));uid=(Ee(this),Math.random().toString(36).slice(2,9));managedItems=Se(this,[]);isMultiple(){return this.selectionMode==="multiple"}getSelectedValues(){return this.value?le(this.value):[]}setSelectedValues(e){this.value=Q(e)}getList(){let e=this.querySelector("[data-rui-managed-list]");return e||this.querySelector("[data-tag-list]")}getTags(){let e=this.getList();return e?Array.from(e.querySelectorAll("[data-tag]")):[]}getVisibleTags(){return this.getTags().filter(e=>!e.hidden&&e.getAttribute("aria-disabled")!=="true")}getTagValue(e){return e.getAttribute("data-value")||e.textContent?.trim()||""}getTagLabel(e){return e.getAttribute("data-label")||e.textContent?.trim()||""}ensureTagIds(){this.getTags().forEach((e,i)=>{e.id||(e.id=`rui-tag-${this.uid}-${i}`)})}syncList(){let e=this.getList();e&&(e.id||(e.id=`rui-tag-list-${this.uid}`),e.setAttribute("role","list"),e.setAttribute("aria-label",this.label||"Tags"),this.disabled?e.setAttribute("aria-disabled","true"):e.removeAttribute("aria-disabled"))}syncTags(){let e=new Set(this.getSelectedValues());this.getTags().forEach((a,u)=>{a.setAttribute("role","listitem");let p=this.getTagValue(a),c=e.has(p);a.setAttribute("aria-selected",String(c)),a.tabIndex=u===0?0:-1;let r=a.querySelector("[data-tag-remove]");r&&(r.type="button",r.tabIndex=-1,r.setAttribute("aria-label",`Remove ${this.getTagLabel(a)}`))})}selectTag(e){if(this.disabled||this.embedded||e.getAttribute("aria-disabled")==="true")return;let i=this.getTagValue(e);if(this.isMultiple()){let a=new Set(this.getSelectedValues());a.has(i)?a.delete(i):a.add(i),this.setSelectedValues([...a])}else this.value=i;this.syncTags(),this.changeEvent.emit({value:this.value})}removeTag(e){let i=this.getTagValue(e),a=new Set(this.getSelectedValues());a.delete(i),this.setSelectedValues([...a]),this.syncTags(),this.removeEvent.emit({value:i}),this.changeEvent.emit({value:this.value})}initialize(){this.ensureTagIds(),this.syncList(),this.syncTags()}onConnected(){this.initialize()}onPropsUpdated(){this.syncManagedList(),this.syncList(),this.syncTags()}resync(){this.ensureTagIds(),this.syncList(),this.syncTags()}setItems(e){this.managedItems=e,this.value=Q(e.map(i=>i.value))}createManagedTag(e){let i=document.createElement("span");i.setAttribute("data-tag",""),i.setAttribute("data-value",e.value),i.setAttribute("data-label",e.label),i.className="rui-tag",i.textContent=e.label;let a=document.createElement("button");a.type="button",a.setAttribute("data-tag-remove",""),a.className="rui-tag__remove",a.setAttribute("aria-label",`Remove ${e.label}`);let u=document.createElement("span");return u.setAttribute("aria-hidden","true"),u.textContent="\xD7",a.append(u),i.append(a),i}syncManagedList(){let e=this.querySelector('[data-ref="root"]');if(!e)return;let i=e.querySelector("[data-rui-managed-list]");if(this.managedItems.length===0){i?.remove();return}i||(i=document.createElement("div"),i.setAttribute("data-tag-list",""),i.setAttribute("data-rui-managed-list",""),i.className="rui-tag-group__list",e.appendChild(i)),i.replaceChildren(...this.managedItems.map(a=>this.createManagedTag(a))),this.ensureTagIds(),this.syncList(),this.syncTags()}onTagClick(e){let i=e.target;if(i.closest("[data-tag-remove]"))return;let a=i.closest("[data-tag]");a&&this.contains(a)&&this.selectTag(a)}onRemoveClick(e){e.stopPropagation();let a=e.target.closest("[data-tag]");a&&this.contains(a)&&this.removeTag(a)}onTagKeydown(e){let i=this.getVisibleTags(),a=e.target.closest("[data-tag]");if(!a)return;if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.embedded||this.selectTag(a);return}if(e.key==="Backspace"||e.key==="Delete"){a.querySelector("[data-tag-remove]")&&(e.preventDefault(),this.removeTag(a));return}oe({items:i,current:a,key:e.key,orientation:"horizontal"}).handled&&e.preventDefault()}static{ce()}};import{jsx as m,jsxs as Xe}from"@ecopages/jsx/jsx-runtime";function je(t,e){return e===void 0||t?.label!==void 0?t:{...t,label:e}}function B(...t){return t.filter(Boolean).join(" ")}function Ce({children:t,class:e,...i}){return m("div",{...i,"data-tag-list":!0,class:B("rui-tag-group__list",e),children:t})}function ke({value:t,label:e,children:i,class:a,disabled:u,...p}){return Xe("span",{...p,"data-tag":!0,"data-value":t,"data-label":e,class:B("rui-tag",a),"aria-disabled":u?"true":void 0,children:[i,m(ze,{})]})}function ze({children:t,class:e,aria:i,...a}){return m("button",{...a,aria:je(i,"Remove"),type:"button","data-tag-remove":!0,class:B("rui-tag__remove",e),children:t??m("span",{"aria-hidden":"true",children:"\xD7"})})}function De({children:t}){return m("div",{class:"rui-tag-group","data-ref":"root",children:t})}function Ye({tags:t,children:e,...i}){return t!=null?m("rui-tag-group",{...i,children:m(De,{children:m(Ce,{children:t.map(a=>m(ke,{value:a.value,label:typeof a.label=="string"?a.label:void 0,disabled:a.disabled,children:a.label}))})})}):m("rui-tag-group",{...i,children:m(De,{children:e})})}export{ke as RuiTag,Ye as RuiTagGroup,Le as RuiTagGroupElement,Ce as RuiTagList,ze as RuiTagRemove};
|
|
1
|
+
import{RadiantElement as qt,customElement as re,event as zt,onEvent as P,onUpdated as ie,prop as C,state as ne}from"@ecopages/radiant";import{jsx as ut,jsxs as Kt}from"@ecopages/jsx/jsx-runtime";function R(...e){return e.filter(Boolean).join(" ")}var lt="http://www.w3.org/2000/svg";function N({class:e,size:t="sm",...r}){return Kt("svg",{...r,class:R("rui-icon",t==="md"&&"rui-icon--md",e),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[ut("path",{d:"m18 6-12 12"}),ut("path",{d:"m6 6 12 12"})]})}function ct(){let e=document.createElementNS(lt,"svg");e.setAttribute("class","rui-icon"),e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("fill","none"),e.setAttribute("stroke","currentColor"),e.setAttribute("stroke-width","2"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-linejoin","round"),e.setAttribute("aria-hidden","true");for(let t of["m18 6-12 12","m6 6 12 12"]){let r=document.createElementNS(lt,"path");r.setAttribute("d",t),e.append(r)}return e}function Nt(e,t){e.forEach((r,i)=>{let s=i===t?0:-1;r.tabIndex!==s&&(r.tabIndex=s)})}function Pt(e,t){if(!e.length)return null;let r=Math.max(0,Math.min(e.length-1,t));return Nt(e,r),e[r]?.focus(),e[r]??null}function Zt(e,t){return e==="Home"?"first":e==="End"?"last":t==="horizontal"?e==="ArrowRight"?"next":e==="ArrowLeft"?"prev":null:e==="ArrowDown"?"next":e==="ArrowUp"?"prev":null}function dt(e){let{items:t,current:r,key:i,orientation:s="horizontal",wrap:p=!0}=e;if(!t.length||!r)return{handled:!1};let l=t.indexOf(r);if(l<0)return{handled:!1};let n=Zt(i,s);if(!n)return{handled:!1};let b=l;n==="first"?b=0:n==="last"?b=t.length-1:n==="next"?b=p?(l+1)%t.length:Math.min(t.length-1,l+1):b=p?(l-1+t.length)%t.length:Math.max(0,l-1);let S=Pt(t,b);return S?{handled:!0,index:b,item:S}:{handled:!1}}var Jt=/^[A-Za-z][A-Za-z0-9_-]*$/;function ft(e){return Jt.test(e)}function Qt(e){let t=e.trim();if(ft(t))return t;let r=`rui-${t}`;return t&&ft(r)?r:"rui"}function mt(e){let t=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),r=>r.toString(16).padStart(2,"0")).join("");return`${Qt(e)}-${t}`}function gt(e){return e?pt(e.split(",")):[]}function Wt(e){return e.join(",")}var Yt={fromAttribute:e=>gt(e),toAttribute:e=>e.length>0?Wt(e):null,fromProperty:e=>Array.isArray(e)?pt(e.map(String)):typeof e=="string"?gt(e):[]},ht={type:Array,reflect:!0,transform:Yt};function pt(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))]}var bt,vt,yt,xt,_t,Tt,At,wt,St,It,Rt,Et,Vt,jt,Ct,Mt,kt,Lt;function Ft(e,t,r,i,s,p){var l,n,b,S,M,B,E,J=Symbol.metadata||Symbol.for("Symbol.metadata"),Q=Object.defineProperty,U=Object.create,W=[U(null),U(null)],Y=t.length;function k(a,v,m){return function(o,u){v&&(u=o,o=e);for(var y=0;y<a.length;y++)u=a[y].apply(o,m?[u]:[]);return m?u:o}}function T(a,v,m,o){if(typeof a!="function"&&(o||a!==void 0))throw new TypeError(v+" must "+(m||"be")+" a function"+(o?"":" or undefined"));return a}function F(a,v,m,o,u,y,w,g,x,_,tt){function $(d){if(!tt(d))throw new TypeError("Attempted to access private element on non-instance")}var G=[].concat(v[0]),et=v[3],O=!w,V=u===1,rt=u===3,it=u===4,L=u===2;function D(d,I,ot){return function(z,st){return I&&(st=z,z=a),ot&&ot(z),c[d].call(z,st)}}if(!O){var c={},X=[],A=rt?"get":it||V?"set":"value";if(x?(_||V?c={get:Dt(function(){return et(this)},o,"get"),set:function(d){v[4](this,d)}}:c[A]=et,_||Dt(c[A],o,L?"":A)):_||(c=Object.getOwnPropertyDescriptor(a,o)),!_&&!x){if((n=W[+g][o])&&(n^u)!==7)throw Error("Decorating two elements with the same name ("+c[A].name+") is not supported yet");W[+g][o]=u<3?1:u}}for(var f=a,q=G.length-1;q>=0;q-=m?2:1){var nt=T(G[q],"A decorator","be",!0),at=m?G[q-1]:void 0,K={},j={kind:["field","accessor","method","getter","setter","class"][u],name:o,metadata:l,addInitializer:function(d,I){if(d.v)throw new TypeError("attempted to call addInitializer after decoration was finished");T(I,"An initializer","be",!0),y.push(I)}.bind(null,K)};if(O)n=nt.call(at,f,j),K.v=1,T(n,"class decorators","return")&&(f=n);else if(j.static=g,j.private=x,n=j.access={has:x?tt.bind():function(d){return o in d}},it||(n.get=x?L?function(d){return $(d),c.value}:D("get",0,$):function(d){return d[o]}),L||rt||(n.set=x?D("set",0,$):function(d,I){d[o]=I}),f=nt.call(at,V?{get:c.get,set:c.set}:c[A],j),K.v=1,V){if(typeof f=="object"&&f)(n=T(f.get,"accessor.get"))&&(c.get=n),(n=T(f.set,"accessor.set"))&&(c.set=n),(n=T(f.init,"accessor.init"))&&X.unshift(n);else if(f!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else T(f,(_?"field":"method")+" decorators","return")&&(_?X.unshift(f):c[A]=f)}return u<2&&w.push(k(X,g,1),k(y,g,0)),_||O||(x?V?w.splice(-1,0,D("get",g),D("set",g)):w.push(L?c[A]:T.call.bind(c[A])):Q(a,o,c)),f}function H(a){return Q(a,J,{configurable:!0,enumerable:!0,value:l})}return p!==void 0&&(l=p[J]),l=U(l??null),M=[],B=function(a){a&&M.push(k(a))},E=function(a,v){for(var m=0;m<r.length;m++){var o=r[m],u=o[1],y=7&u;if((8&u)==a&&!y==v){var w=o[2],g=!!o[3],x=16&u;F(a?e:e.prototype,o,x,g?"#"+w:Ht(w),y,y<2?[]:a?S=S||[]:b=b||[],M,!!a,g,v,a&&g?function(_){return ee(_)===e}:s)}}},E(8,0),E(0,0),E(8,1),E(0,1),B(b),B(S),n=M,Y||H(e),{e:n,get c(){var a=[];return Y&&[H(e=F(e,[t],i,e.name,5,a)),k(a,1)]}}}function Ht(e){var t=te(e,"string");return typeof t=="symbol"?t:t+""}function te(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Dt(e,t,r){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch{}return e}function ee(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var Ut,Bt=class extends qt{static{({e:[yt,xt,_t,Tt,At,wt,St,It,Rt,Et,Vt,jt,Ct,Mt,kt,Lt,bt],c:[Ut,vt]}=Ft(this,[re("rui-tag-group")],[[C({...ht,defaultValue:[]}),0,"value"],[C({type:String,defaultValue:""}),0,"label"],[C({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[C({type:String,attribute:"selection-mode",defaultValue:"multiple"}),0,"selectionMode"],[C({type:Boolean,reflect:!0,defaultValue:!1}),0,"embedded"],[zt({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[zt({name:"rui-remove",bubbles:!0,composed:!0}),0,"removeEvent"],[ne,0,"derivedItems"],[ie(["value","label","disabled","selectionMode","embedded","derivedItems"]),2,"onPropsUpdated"],[P({selector:"[data-tag]",type:"click"}),2,"onTagClick"],[P({selector:"[data-tag-remove]",type:"click"}),2,"onRemoveClick"],[P({selector:"[data-tag]",type:"keydown"}),2,"onTagKeydown"]],0,void 0,qt))}constructor(...t){super(...t),Lt(this)}value=(bt(this),yt(this));label=(xt(this),_t(this));disabled=(Tt(this),At(this));selectionMode=(wt(this),St(this));embedded=(It(this),Rt(this));changeEvent=(Et(this),Vt(this));removeEvent=(jt(this),Ct(this));uid=(Mt(this),mt("rui-tag-group"));derivedItems=kt(this,null);isMultiple(){return this.selectionMode==="multiple"}getSelectedValues(){return this.value}setSelectedValues(t){this.value=t}getList(){let t=this.querySelector("[data-rui-managed-list]");return t||(this.derivedItems!=null?null:this.querySelector("[data-tag-list]"))}getTags(){let t=this.getList();return t?Array.from(t.querySelectorAll("[data-tag]")):[]}getVisibleTags(){return this.getTags().filter(t=>!t.hidden&&t.getAttribute("aria-disabled")!=="true")}getTagValue(t){return t.getAttribute("data-value")||t.textContent?.trim()||""}getTagLabel(t){return t.getAttribute("data-label")||t.textContent?.trim()||""}ensureTagIds(){this.getTags().forEach((t,r)=>{t.id||(t.id=`${this.uid}-tag-${r}`)})}syncList(){let t=this.getList();t&&(t.id||(t.id=`${this.uid}-list`),t.setAttribute("role","list"),t.setAttribute("aria-label",this.label||"Tags"),this.disabled?t.setAttribute("aria-disabled","true"):t.removeAttribute("aria-disabled"))}syncTags(){let t=new Set(this.getSelectedValues());this.getTags().forEach((i,s)=>{i.setAttribute("role","listitem");let p=this.getTagValue(i),l=t.has(p);i.setAttribute("aria-selected",String(l)),i.tabIndex=s===0?0:-1;let n=i.querySelector("[data-tag-remove]");n&&(n.type="button",n.tabIndex=-1,n.setAttribute("aria-label",`Remove ${this.getTagLabel(i)}`))})}selectTag(t){if(this.disabled||this.embedded||t.getAttribute("aria-disabled")==="true")return;let r=this.getTagValue(t);if(this.isMultiple()){let i=new Set(this.getSelectedValues());i.has(r)?i.delete(r):i.add(r),this.setSelectedValues([...i])}else this.value=[r];this.syncTags(),this.changeEvent.emit({value:this.value})}removeTag(t){let r=this.getTagValue(t),i=new Set(this.getSelectedValues());i.delete(r),this.setSelectedValues([...i]),this.syncTags(),this.removeEvent.emit({value:r}),this.changeEvent.emit({value:this.value})}initialize(){this.syncManagedList(),this.ensureTagIds(),this.syncList(),this.syncTags()}onConnected(){this.initialize()}onPropsUpdated(){this.syncManagedList(),this.syncList(),this.syncTags()}resync(){this.ensureTagIds(),this.syncList(),this.syncTags()}setItems(t){this.derivedItems=t,this.value=t.map(r=>r.value)}createManagedTag(t){let r=document.createElement("span");r.setAttribute("data-tag",""),r.setAttribute("data-value",t.value),r.setAttribute("data-label",t.label),r.className="rui-tag",r.textContent=t.label,r.setAttribute("aria-label",t.label);let i=document.createElement("button");return i.type="button",i.setAttribute("data-tag-remove",""),i.className="rui-tag__remove",i.setAttribute("aria-label",`Remove ${t.label}`),i.append(ct()),r.append(i),r}syncManagedList(){let t=this.querySelector('[data-ref="root"]');if(!t||this.derivedItems==null)return;t.querySelector("[data-tag-list]:not([data-rui-managed-list])")?.toggleAttribute("hidden",!0);let i=t.querySelector("[data-rui-managed-list]");if(this.derivedItems.length===0){i?.remove();return}i||(i=document.createElement("div"),i.setAttribute("data-tag-list",""),i.setAttribute("data-rui-managed-list",""),i.className="rui-tag-group__list",t.appendChild(i)),i.replaceChildren(...this.derivedItems.map(s=>this.createManagedTag(s))),this.ensureTagIds(),this.syncList(),this.syncTags()}onTagClick(t){let r=t.target;if(r.closest("[data-tag-remove]"))return;let i=r.closest("[data-tag]");i&&this.contains(i)&&this.selectTag(i)}onRemoveClick(t){t.stopPropagation();let i=t.target.closest("[data-tag]");i&&this.contains(i)&&this.removeTag(i)}onTagKeydown(t){let r=this.getVisibleTags(),i=t.target.closest("[data-tag]");if(!i)return;if(t.key==="Enter"||t.key===" "){t.preventDefault(),this.embedded||this.selectTag(i);return}if(t.key==="Backspace"||t.key==="Delete"){i.querySelector("[data-tag-remove]")&&(t.preventDefault(),this.removeTag(i));return}dt({items:r,current:i,key:t.key,orientation:"horizontal"}).handled&&t.preventDefault()}static{vt()}};import{jsx as h,jsxs as ae}from"@ecopages/jsx/jsx-runtime";function Z(e,t){return t===void 0||e?.label!==void 0?e:{...e,label:t}}function Gt({children:e,class:t,...r}){return h("div",{...r,"data-tag-list":!0,class:R("rui-tag-group__list",t),children:e})}function Ot({value:e,label:t,children:r,class:i,disabled:s,aria:p,...l}){return ae("span",{...l,"data-tag":!0,"data-value":e,"data-label":t,class:R("rui-tag",i),aria:Z(p,t),"aria-disabled":s?"true":void 0,children:[r,h(Xt,{})]})}function Xt({children:e,class:t,aria:r,...i}){return h("button",{...i,aria:Z(r,"Remove"),type:"button","data-tag-remove":!0,class:R("rui-tag__remove",t),children:e??h(N,{})})}function $t({children:e}){return h("div",{class:"rui-tag-group","data-ref":"root",children:e})}function oe({tags:e,children:t,value:r,...i}){return e!=null?h("rui-tag-group",{...i,value:r,children:h($t,{children:h(Gt,{children:e.map(s=>h(Ot,{value:s.value,label:typeof s.label=="string"?s.label:void 0,disabled:s.disabled,children:s.label}))})})}):h("rui-tag-group",{...i,value:r,children:h($t,{children:t})})}export{Ot as RuiTag,oe as RuiTagGroup,Ut as RuiTagGroupElement,Gt as RuiTagList,Xt as RuiTagRemove};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/ui/tag-group/tag-group.script.tsx", "../../../../src/lib/roving-tabindex.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/tag-group/tag-group.tsx", "../../../../src/aria.ts"
|
|
4
|
-
"sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_managedItems, _init_extra_managedItems;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { parseMultiValue, serializeMultiValue } from \"../shared/multi-value\";\nlet _RuiTagGroup;\nclass RuiTagGroup extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_managedItems, _init_extra_managedItems, _initProto],\n c: [_RuiTagGroup, _initClass]\n } = _applyDecs(this, [customElement(\"rui-tag-group\")], [[prop({\n type: String,\n reflect: true,\n defaultValue: \"\"\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"multiple\"\n }), 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-remove\",\n bubbles: true,\n composed: true\n }), 0, \"removeEvent\"], [state, 0, \"managedItems\"], [onUpdated([\"value\", \"label\", \"disabled\", \"selectionMode\", \"embedded\", \"managedItems\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"click\"\n }), 2, \"onTagClick\"], [onEvent({\n selector: \"[data-tag-remove]\",\n type: \"click\"\n }), 2, \"onRemoveClick\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"keydown\"\n }), 2, \"onTagKeydown\"]], 0, void 0, RadiantElement));\n }\n constructor(...args) {\n super(...args);\n _init_extra_managedItems(this);\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n changeEvent = (_init_extra_embedded(this), _init_changeEvent(this));\n removeEvent = (_init_extra_changeEvent(this), _init_removeEvent(this));\n uid = (_init_extra_removeEvent(this), Math.random().toString(36).slice(2, 9));\n managedItems = _init_managedItems(this, []);\n isMultiple() {\n return this.selectionMode === \"multiple\";\n }\n getSelectedValues() {\n if (!this.value) {\n return [];\n }\n return parseMultiValue(this.value);\n }\n setSelectedValues(values) {\n this.value = serializeMultiValue(values);\n }\n getList() {\n const managed = this.querySelector(\"[data-rui-managed-list]\");\n if (managed) {\n return managed;\n }\n return this.querySelector(\"[data-tag-list]\");\n }\n getTags() {\n const list = this.getList();\n if (!list) {\n return [];\n }\n return Array.from(list.querySelectorAll(\"[data-tag]\"));\n }\n getVisibleTags() {\n return this.getTags().filter(tag => !tag.hidden && tag.getAttribute(\"aria-disabled\") !== \"true\");\n }\n getTagValue(tag) {\n return tag.getAttribute(\"data-value\") || tag.textContent?.trim() || \"\";\n }\n getTagLabel(tag) {\n return tag.getAttribute(\"data-label\") || tag.textContent?.trim() || \"\";\n }\n ensureTagIds() {\n this.getTags().forEach((tag, index) => {\n if (!tag.id) {\n tag.id = `rui-tag-${this.uid}-${index}`;\n }\n });\n }\n syncList() {\n const list = this.getList();\n if (!list) {\n return;\n }\n if (!list.id) {\n list.id = `rui-tag-list-${this.uid}`;\n }\n list.setAttribute(\"role\", \"list\");\n list.setAttribute(\"aria-label\", this.label || \"Tags\");\n if (this.disabled) {\n list.setAttribute(\"aria-disabled\", \"true\");\n } else {\n list.removeAttribute(\"aria-disabled\");\n }\n }\n syncTags() {\n const selected = new Set(this.getSelectedValues());\n const tags = this.getTags();\n tags.forEach((tag, index) => {\n tag.setAttribute(\"role\", \"listitem\");\n const value = this.getTagValue(tag);\n const isSelected = selected.has(value);\n tag.setAttribute(\"aria-selected\", String(isSelected));\n tag.tabIndex = index === 0 ? 0 : -1;\n const removeButton = tag.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n removeButton.type = \"button\";\n removeButton.tabIndex = -1;\n removeButton.setAttribute(\"aria-label\", `Remove ${this.getTagLabel(tag)}`);\n }\n });\n }\n selectTag(tag) {\n if (this.disabled || this.embedded || tag.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n const tagValue = this.getTagValue(tag);\n if (this.isMultiple()) {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(tagValue)) {\n selected.delete(tagValue);\n } else {\n selected.add(tagValue);\n }\n this.setSelectedValues([...selected]);\n } else {\n this.value = tagValue;\n }\n this.syncTags();\n this.changeEvent.emit({\n value: this.value\n });\n }\n removeTag(tag) {\n const tagValue = this.getTagValue(tag);\n const selected = new Set(this.getSelectedValues());\n selected.delete(tagValue);\n this.setSelectedValues([...selected]);\n this.syncTags();\n this.removeEvent.emit({\n value: tagValue\n });\n this.changeEvent.emit({\n value: this.value\n });\n }\n initialize() {\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onConnected() {\n this.initialize();\n }\n onPropsUpdated() {\n this.syncManagedList();\n this.syncList();\n this.syncTags();\n }\n resync() {\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n setItems(items) {\n this.managedItems = items;\n this.value = serializeMultiValue(items.map(item => item.value));\n }\n /**\n * Imperative twin of the view's `RuiTag` / `RuiTagRemove` markup for\n * CE-managed items (same `data-*` hooks, classes, and remove glyph).\n */\n createManagedTag(item) {\n const tag = document.createElement(\"span\");\n tag.setAttribute(\"data-tag\", \"\");\n tag.setAttribute(\"data-value\", item.value);\n tag.setAttribute(\"data-label\", item.label);\n tag.className = \"rui-tag\";\n tag.textContent = item.label;\n const remove = document.createElement(\"button\");\n remove.type = \"button\";\n remove.setAttribute(\"data-tag-remove\", \"\");\n remove.className = \"rui-tag__remove\";\n remove.setAttribute(\"aria-label\", `Remove ${item.label}`);\n const icon = document.createElement(\"span\");\n icon.setAttribute(\"aria-hidden\", \"true\");\n icon.textContent = \"\\xD7\";\n remove.append(icon);\n tag.append(remove);\n return tag;\n }\n syncManagedList() {\n const root = this.querySelector('[data-ref=\"root\"]');\n if (!root) {\n return;\n }\n let managed = root.querySelector(\"[data-rui-managed-list]\");\n if (this.managedItems.length === 0) {\n managed?.remove();\n return;\n }\n if (!managed) {\n managed = document.createElement(\"div\");\n managed.setAttribute(\"data-tag-list\", \"\");\n managed.setAttribute(\"data-rui-managed-list\", \"\");\n managed.className = \"rui-tag-group__list\";\n root.appendChild(managed);\n }\n managed.replaceChildren(...this.managedItems.map(item => this.createManagedTag(item)));\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onTagClick(event2) {\n const target = event2.target;\n if (target.closest(\"[data-tag-remove]\")) {\n return;\n }\n const tag = target.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.selectTag(tag);\n }\n }\n onRemoveClick(event2) {\n event2.stopPropagation();\n const button = event2.target;\n const tag = button.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.removeTag(tag);\n }\n }\n onTagKeydown(event2) {\n const tags = this.getVisibleTags();\n const current = event2.target.closest(\"[data-tag]\");\n if (!current) {\n return;\n }\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n if (!this.embedded) {\n this.selectTag(current);\n }\n return;\n }\n if (event2.key === \"Backspace\" || event2.key === \"Delete\") {\n const removeButton = current.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n event2.preventDefault();\n this.removeTag(current);\n }\n return;\n }\n const result = navigateRovingTabindex({\n items: tags,\n current,\n key: event2.key,\n orientation: \"horizontal\"\n });\n if (result.handled) {\n event2.preventDefault();\n }\n }\n static {\n _initClass();\n }\n}\nexport { _RuiTagGroup as RuiTagGroup };", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => item.trim()).filter(Boolean);\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { withDefaultAriaLabel } from \"@/aria\";\nimport { cx } from \"@/lib/cx\";\nimport \"./tag-group.script\";\nexport function RuiTagList({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-tag-list\": true,\n class: cx(\"rui-tag-group__list\", className),\n children\n });\n}\nexport function RuiTag({\n value,\n label,\n children,\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"span\", {\n ...props,\n \"data-tag\": true,\n \"data-value\": value,\n \"data-label\": label,\n class: cx(\"rui-tag\", className),\n \"aria-disabled\": disabled ? \"true\" : void 0,\n children: [children, /* @__PURE__ */jsx(RuiTagRemove, {})]\n });\n}\nexport function RuiTagRemove({\n children,\n class: className,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"button\", {\n ...props,\n aria: withDefaultAriaLabel(aria, \"Remove\"),\n type: \"button\",\n \"data-tag-remove\": true,\n class: cx(\"rui-tag__remove\", className),\n children: children ?? /* @__PURE__ */jsx(\"span\", {\n \"aria-hidden\": \"true\",\n children: \"\\xD7\"\n })\n });\n}\nfunction TagGroupShell({\n children\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: \"rui-tag-group\",\n \"data-ref\": \"root\",\n children\n });\n}\nexport function RuiTagGroup({\n tags,\n children,\n ...props\n}) {\n if (tags != null) {\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children: /* @__PURE__ */jsx(RuiTagList, {\n children: tags.map(tag => /* @__PURE__ */jsx(RuiTag, {\n value: tag.value,\n label: typeof tag.label === \"string\" ? tag.label : void 0,\n disabled: tag.disabled,\n children: tag.label\n }))\n })\n })\n });\n }\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children\n })\n });\n}", "export function withDefaultAriaLabel(aria, fallback) {\n if (fallback === void 0 || aria?.label !== void 0) {\n return aria;\n }\n return {\n ...aria,\n label: fallback\n };\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "state", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "parseMultiValue", "value", "
|
|
3
|
+
"sources": ["../../../../src/components/ui/tag-group/tag-group.script.tsx", "../../../../src/lib/icons/x.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/roving-tabindex.ts", "../../../../src/lib/unique-id.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/tag-group/tag-group.tsx", "../../../../src/aria.ts"],
|
|
4
|
+
"sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop, state } from \"@ecopages/radiant\";\nimport { createRuiIconX } from \"@/lib/icons/x\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { uniqueId } from \"@/lib/unique-id\";\nimport { multiValuePropOptions } from \"../shared/multi-value\";\nlet _RuiTagGroup;\nclass RuiTagGroup extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_changeEvent, _init_extra_changeEvent, _init_removeEvent, _init_extra_removeEvent, _init_derivedItems, _init_extra_derivedItems, _initProto],\n c: [_RuiTagGroup, _initClass]\n } = _applyDecs(this, [customElement(\"rui-tag-group\")], [[prop({\n ...multiValuePropOptions,\n defaultValue: []\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"multiple\"\n }), 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-remove\",\n bubbles: true,\n composed: true\n }), 0, \"removeEvent\"], [state, 0, \"derivedItems\"], [onUpdated([\"value\", \"label\", \"disabled\", \"selectionMode\", \"embedded\", \"derivedItems\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"click\"\n }), 2, \"onTagClick\"], [onEvent({\n selector: \"[data-tag-remove]\",\n type: \"click\"\n }), 2, \"onRemoveClick\"], [onEvent({\n selector: \"[data-tag]\",\n type: \"keydown\"\n }), 2, \"onTagKeydown\"]], 0, void 0, RadiantElement));\n }\n constructor(...args) {\n super(...args);\n _init_extra_derivedItems(this);\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n changeEvent = (_init_extra_embedded(this), _init_changeEvent(this));\n removeEvent = (_init_extra_changeEvent(this), _init_removeEvent(this));\n uid = (_init_extra_removeEvent(this), uniqueId(\"rui-tag-group\"));\n derivedItems = _init_derivedItems(this, null);\n isMultiple() {\n return this.selectionMode === \"multiple\";\n }\n getSelectedValues() {\n return this.value;\n }\n setSelectedValues(values) {\n this.value = values;\n }\n getList() {\n const managed = this.querySelector(\"[data-rui-managed-list]\");\n if (managed) {\n return managed;\n }\n if (this.derivedItems != null) {\n return null;\n }\n return this.querySelector(\"[data-tag-list]\");\n }\n getTags() {\n const list = this.getList();\n if (!list) {\n return [];\n }\n return Array.from(list.querySelectorAll(\"[data-tag]\"));\n }\n getVisibleTags() {\n return this.getTags().filter(tag => !tag.hidden && tag.getAttribute(\"aria-disabled\") !== \"true\");\n }\n getTagValue(tag) {\n return tag.getAttribute(\"data-value\") || tag.textContent?.trim() || \"\";\n }\n getTagLabel(tag) {\n return tag.getAttribute(\"data-label\") || tag.textContent?.trim() || \"\";\n }\n ensureTagIds() {\n this.getTags().forEach((tag, index) => {\n if (!tag.id) {\n tag.id = `${this.uid}-tag-${index}`;\n }\n });\n }\n syncList() {\n const list = this.getList();\n if (!list) {\n return;\n }\n if (!list.id) {\n list.id = `${this.uid}-list`;\n }\n list.setAttribute(\"role\", \"list\");\n list.setAttribute(\"aria-label\", this.label || \"Tags\");\n if (this.disabled) {\n list.setAttribute(\"aria-disabled\", \"true\");\n } else {\n list.removeAttribute(\"aria-disabled\");\n }\n }\n syncTags() {\n const selected = new Set(this.getSelectedValues());\n const tags = this.getTags();\n tags.forEach((tag, index) => {\n tag.setAttribute(\"role\", \"listitem\");\n const value = this.getTagValue(tag);\n const isSelected = selected.has(value);\n tag.setAttribute(\"aria-selected\", String(isSelected));\n tag.tabIndex = index === 0 ? 0 : -1;\n const removeButton = tag.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n removeButton.type = \"button\";\n removeButton.tabIndex = -1;\n removeButton.setAttribute(\"aria-label\", `Remove ${this.getTagLabel(tag)}`);\n }\n });\n }\n selectTag(tag) {\n if (this.disabled || this.embedded || tag.getAttribute(\"aria-disabled\") === \"true\") {\n return;\n }\n const tagValue = this.getTagValue(tag);\n if (this.isMultiple()) {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(tagValue)) {\n selected.delete(tagValue);\n } else {\n selected.add(tagValue);\n }\n this.setSelectedValues([...selected]);\n } else {\n this.value = [tagValue];\n }\n this.syncTags();\n this.changeEvent.emit({\n value: this.value\n });\n }\n removeTag(tag) {\n const tagValue = this.getTagValue(tag);\n const selected = new Set(this.getSelectedValues());\n selected.delete(tagValue);\n this.setSelectedValues([...selected]);\n this.syncTags();\n this.removeEvent.emit({\n value: tagValue\n });\n this.changeEvent.emit({\n value: this.value\n });\n }\n initialize() {\n this.syncManagedList();\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onConnected() {\n this.initialize();\n }\n onPropsUpdated() {\n this.syncManagedList();\n this.syncList();\n this.syncTags();\n }\n /**\n * Re-read authored `[data-tag]` children after the parent mutates them in place.\n */\n resync() {\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n /**\n * Replace authored tags with a CE-owned list. Requires `[data-ref=\"root\"]`.\n *\n * @remarks Hides the authored `[data-tag-list]` and sets `value` to every\n * item. Pass `[]` to clear the managed list.\n */\n setItems(items) {\n this.derivedItems = items;\n this.value = items.map(item => item.value);\n }\n /**\n * Imperative twin of the view's `RuiTag` / `RuiTagRemove` markup for\n * CE-managed items (same `data-*` hooks, classes, and remove icon).\n */\n createManagedTag(item) {\n const tag = document.createElement(\"span\");\n tag.setAttribute(\"data-tag\", \"\");\n tag.setAttribute(\"data-value\", item.value);\n tag.setAttribute(\"data-label\", item.label);\n tag.className = \"rui-tag\";\n tag.textContent = item.label;\n tag.setAttribute(\"aria-label\", item.label);\n const remove = document.createElement(\"button\");\n remove.type = \"button\";\n remove.setAttribute(\"data-tag-remove\", \"\");\n remove.className = \"rui-tag__remove\";\n remove.setAttribute(\"aria-label\", `Remove ${item.label}`);\n remove.append(createRuiIconX());\n tag.append(remove);\n return tag;\n }\n syncManagedList() {\n const root = this.querySelector('[data-ref=\"root\"]');\n if (!root || this.derivedItems == null) {\n return;\n }\n const authored = root.querySelector(\"[data-tag-list]:not([data-rui-managed-list])\");\n authored?.toggleAttribute(\"hidden\", true);\n let managed = root.querySelector(\"[data-rui-managed-list]\");\n if (this.derivedItems.length === 0) {\n managed?.remove();\n return;\n }\n if (!managed) {\n managed = document.createElement(\"div\");\n managed.setAttribute(\"data-tag-list\", \"\");\n managed.setAttribute(\"data-rui-managed-list\", \"\");\n managed.className = \"rui-tag-group__list\";\n root.appendChild(managed);\n }\n managed.replaceChildren(...this.derivedItems.map(item => this.createManagedTag(item)));\n this.ensureTagIds();\n this.syncList();\n this.syncTags();\n }\n onTagClick(event2) {\n const target = event2.target;\n if (target.closest(\"[data-tag-remove]\")) {\n return;\n }\n const tag = target.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.selectTag(tag);\n }\n }\n onRemoveClick(event2) {\n event2.stopPropagation();\n const button = event2.target;\n const tag = button.closest(\"[data-tag]\");\n if (tag && this.contains(tag)) {\n this.removeTag(tag);\n }\n }\n onTagKeydown(event2) {\n const tags = this.getVisibleTags();\n const current = event2.target.closest(\"[data-tag]\");\n if (!current) {\n return;\n }\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n if (!this.embedded) {\n this.selectTag(current);\n }\n return;\n }\n if (event2.key === \"Backspace\" || event2.key === \"Delete\") {\n const removeButton = current.querySelector(\"[data-tag-remove]\");\n if (removeButton) {\n event2.preventDefault();\n this.removeTag(current);\n }\n return;\n }\n const result = navigateRovingTabindex({\n items: tags,\n current,\n key: event2.key,\n orientation: \"horizontal\"\n });\n if (result.handled) {\n event2.preventDefault();\n }\n }\n static {\n _initClass();\n }\n}\nexport { _RuiTagGroup as RuiTagGroup };", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nexport function RuiIconX({\n class: className,\n size = \"sm\",\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"svg\", {\n ...props,\n class: cx(\"rui-icon\", size === \"md\" && \"rui-icon--md\", className),\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n children: [/* @__PURE__ */jsx(\"path\", {\n d: \"m18 6-12 12\"\n }), /* @__PURE__ */jsx(\"path\", {\n d: \"m6 6 12 12\"\n })]\n });\n}\nexport function createRuiIconX() {\n const icon = document.createElementNS(SVG_NAMESPACE, \"svg\");\n icon.setAttribute(\"class\", \"rui-icon\");\n icon.setAttribute(\"viewBox\", \"0 0 24 24\");\n icon.setAttribute(\"fill\", \"none\");\n icon.setAttribute(\"stroke\", \"currentColor\");\n icon.setAttribute(\"stroke-width\", \"2\");\n icon.setAttribute(\"stroke-linecap\", \"round\");\n icon.setAttribute(\"stroke-linejoin\", \"round\");\n icon.setAttribute(\"aria-hidden\", \"true\");\n for (const d of [\"m18 6-12 12\", \"m6 6 12 12\"]) {\n const path = document.createElementNS(SVG_NAMESPACE, \"path\");\n path.setAttribute(\"d\", d);\n icon.append(path);\n }\n return icon;\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { withDefaultAriaLabel } from \"@/aria\";\nimport { cx } from \"@/lib/cx\";\nimport { RuiIconX } from \"@/lib/icons\";\nimport \"./tag-group.script\";\nexport function RuiTagList({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n \"data-tag-list\": true,\n class: cx(\"rui-tag-group__list\", className),\n children\n });\n}\nexport function RuiTag({\n value,\n label,\n children,\n class: className,\n disabled,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsxs(\"span\", {\n ...props,\n \"data-tag\": true,\n \"data-value\": value,\n \"data-label\": label,\n class: cx(\"rui-tag\", className),\n aria: withDefaultAriaLabel(aria, label),\n \"aria-disabled\": disabled ? \"true\" : void 0,\n children: [children, /* @__PURE__ */jsx(RuiTagRemove, {})]\n });\n}\nexport function RuiTagRemove({\n children,\n class: className,\n aria,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"button\", {\n ...props,\n aria: withDefaultAriaLabel(aria, \"Remove\"),\n type: \"button\",\n \"data-tag-remove\": true,\n class: cx(\"rui-tag__remove\", className),\n children: children ?? /* @__PURE__ */jsx(RuiIconX, {})\n });\n}\nfunction TagGroupShell({\n children\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: \"rui-tag-group\",\n \"data-ref\": \"root\",\n children\n });\n}\nexport function RuiTagGroup({\n tags,\n children,\n value,\n ...props\n}) {\n if (tags != null) {\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n value,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children: /* @__PURE__ */jsx(RuiTagList, {\n children: tags.map(tag => /* @__PURE__ */jsx(RuiTag, {\n value: tag.value,\n label: typeof tag.label === \"string\" ? tag.label : void 0,\n disabled: tag.disabled,\n children: tag.label\n }))\n })\n })\n });\n }\n return /* @__PURE__ */jsx(\"rui-tag-group\", {\n ...props,\n value,\n children: /* @__PURE__ */jsx(TagGroupShell, {\n children\n })\n });\n}", "export function withDefaultAriaLabel(aria, fallback) {\n if (fallback === void 0 || aria?.label !== void 0) {\n return aria;\n }\n return {\n ...aria,\n label: fallback\n };\n}"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "state", "jsx", "jsxs", "cx", "parts", "SVG_NAMESPACE", "RuiIconX", "className", "size", "props", "jsxs", "cx", "jsx", "createRuiIconX", "icon", "d", "path", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "multiValuePropOptions", "uniqueTrimmed", "values", "item", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_label", "_init_extra_label", "_init_disabled", "_init_extra_disabled", "_init_selectionMode", "_init_extra_selectionMode", "_init_embedded", "_init_extra_embedded", "_init_changeEvent", "_init_extra_changeEvent", "_init_removeEvent", "_init_extra_removeEvent", "_init_derivedItems", "_init_extra_derivedItems", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiTagGroup", "RuiTagGroup", "RadiantElement", "customElement", "prop", "multiValuePropOptions", "event", "state", "onUpdated", "onEvent", "args", "uniqueId", "values", "managed", "list", "tag", "index", "selected", "value", "isSelected", "removeButton", "tagValue", "items", "item", "remove", "createRuiIconX", "root", "event2", "target", "tags", "current", "navigateRovingTabindex", "jsx", "jsxs", "withDefaultAriaLabel", "aria", "fallback", "RuiTagList", "children", "className", "props", "jsx", "cx", "RuiTag", "value", "label", "disabled", "aria", "jsxs", "withDefaultAriaLabel", "RuiTagRemove", "RuiIconX", "TagGroupShell", "RuiTagGroup", "tags", "tag"]
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ import type { RuiTagGroup as RuiTagGroupElement, RuiTagGroupProps } from './tag-
|
|
|
3
3
|
import './tag-group.script';
|
|
4
4
|
export type RuiTagListProps = JsxElementProps<HTMLDivElement>;
|
|
5
5
|
/**
|
|
6
|
-
* Flex-wrapped container for `RuiTag` children.
|
|
6
|
+
* Flex-wrapped container for `RuiTag` children. Stamps `[data-tag-list]`.
|
|
7
7
|
*
|
|
8
8
|
* @cssclass rui-tag-group__list - Tag row (flex-wrap container).
|
|
9
9
|
*/
|
|
@@ -14,17 +14,21 @@ export type RuiTagProps = JsxElementProps<HTMLSpanElement> & {
|
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
|
-
* A single tag
|
|
17
|
+
* A single tag. Stamps `[data-tag]`, `data-value`, `data-label`, and `aria-label`
|
|
18
|
+
* (from `label`).
|
|
18
19
|
*
|
|
19
20
|
* @cssclass rui-tag - Tag chip; selected state via `[aria-selected='true']`.
|
|
20
21
|
*
|
|
21
|
-
* @remarks
|
|
22
|
-
* `
|
|
22
|
+
* @remarks `listitem` has an author-only accessible name, so the chip needs
|
|
23
|
+
* `aria-label` for assistive tech and `getByRole('listitem', { name })`.
|
|
24
|
+
* Always appends `RuiTagRemove`. For a non-removable tag, stamp
|
|
25
|
+
* `[data-tag]` yourself without `[data-tag-remove]`. Tags built in
|
|
26
|
+
* `createManagedTag` always include a remove control — edit both together.
|
|
23
27
|
*/
|
|
24
|
-
export declare function RuiTag({ value, label, children, class: className, disabled, ...props }: RuiTagProps): JsxRenderable;
|
|
28
|
+
export declare function RuiTag({ value, label, children, class: className, disabled, aria, ...props }: RuiTagProps): JsxRenderable;
|
|
25
29
|
export type RuiTagRemoveProps = JsxElementProps<HTMLButtonElement>;
|
|
26
30
|
/**
|
|
27
|
-
* Remove
|
|
31
|
+
* Remove control inside a tag. Stamps `[data-tag-remove]`.
|
|
28
32
|
*
|
|
29
33
|
* @cssclass rui-tag__remove - Tag remove control.
|
|
30
34
|
*/
|
|
@@ -34,6 +38,14 @@ export type RuiTagData = {
|
|
|
34
38
|
label: JsxRenderable;
|
|
35
39
|
disabled?: boolean;
|
|
36
40
|
};
|
|
37
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Tag group view. Pass `tags` for the simple API, or compose `RuiTagList` /
|
|
43
|
+
* `RuiTag` children. Either path wraps content in `[data-ref="root"]`.
|
|
44
|
+
*
|
|
45
|
+
* Raw markup that already matches the host contract can be passed as `children`.
|
|
46
|
+
*
|
|
47
|
+
* @cssclass rui-tag-group - Root wrapper around the tag list (`data-ref="root"`).
|
|
48
|
+
*/
|
|
49
|
+
export declare function RuiTagGroup({ tags, children, value, ...props }: JsxCustomElementAttributes<RuiTagGroupElement, RuiTagGroupProps & {
|
|
38
50
|
tags?: RuiTagData[];
|
|
39
51
|
}>): JsxRenderable;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { RadiantElement } from '@ecopages/radiant';
|
|
2
2
|
import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
|
|
3
|
+
import { type ViewMultiValue } from '../shared/multi-value';
|
|
3
4
|
export type RuiTagGroupSelectionMode = 'single' | 'multiple';
|
|
4
5
|
export type RuiTagGroupItem = {
|
|
5
6
|
value: string;
|
|
6
7
|
label: string;
|
|
7
8
|
};
|
|
8
9
|
export type RuiTagGroupProps = {
|
|
9
|
-
value?:
|
|
10
|
+
value?: ViewMultiValue;
|
|
10
11
|
label?: string;
|
|
11
12
|
disabled?: boolean;
|
|
12
13
|
selectionMode?: RuiTagGroupSelectionMode;
|
|
@@ -14,7 +15,7 @@ export type RuiTagGroupProps = {
|
|
|
14
15
|
embedded?: boolean;
|
|
15
16
|
};
|
|
16
17
|
export type RuiTagGroupChangeDetail = {
|
|
17
|
-
value: string;
|
|
18
|
+
value: string[];
|
|
18
19
|
};
|
|
19
20
|
export type RuiTagGroupRemoveDetail = {
|
|
20
21
|
value: string;
|
|
@@ -22,22 +23,56 @@ export type RuiTagGroupRemoveDetail = {
|
|
|
22
23
|
/**
|
|
23
24
|
* `<rui-tag-group>` — a focusable list of tags with optional selection and removal.
|
|
24
25
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* The custom element is a behavior host: it does not render tag markup. Import the
|
|
27
|
+
* script and place any light-DOM children that match the contract below, or use
|
|
28
|
+
* `RuiTagGroup` / `RuiTagList` / `RuiTag`, which stamp the same targets.
|
|
29
|
+
*
|
|
30
|
+
* Use inside `RuiSelectValue` for multi-select chips. Set `embedded` so this host
|
|
31
|
+
* does not toggle selection; the parent owns `value`.
|
|
32
|
+
*
|
|
33
|
+
* ## Light-DOM contract
|
|
34
|
+
*
|
|
35
|
+
* Required:
|
|
36
|
+
* - `[data-tag-list]` — list container. Host sets `id`, `role="list"`, `aria-label`
|
|
37
|
+
* (from `label`, fallback `Tags`), and `aria-disabled` when `disabled`.
|
|
38
|
+
* - `[data-tag]` — one item, descendant of the list. Host sets `id` when missing,
|
|
39
|
+
* `role="listitem"`, `aria-selected`, and roving `tabIndex`.
|
|
40
|
+
*
|
|
41
|
+
* Per tag:
|
|
42
|
+
* - `[data-value]` — selection and remove identity. Falls back to trimmed text.
|
|
43
|
+
* - `[data-label]` — used in the remove control's accessible name. Falls back to trimmed text.
|
|
44
|
+
*
|
|
45
|
+
* Optional:
|
|
46
|
+
* - `[data-tag-remove]` — control inside a tag. Host sets `type="button"`,
|
|
47
|
+
* `tabIndex="-1"`, and `aria-label="Remove {label}"`. Omit for a non-removable tag.
|
|
48
|
+
* - `[data-ref="root"]` — wrapper required only when calling `setItems()`.
|
|
49
|
+
*
|
|
50
|
+
* Author `hidden` or `aria-disabled="true"` on a tag to exclude it from keyboard
|
|
51
|
+
* movement; `aria-disabled` also blocks selection. Do not set `role`,
|
|
52
|
+
* `aria-selected`, or `tabIndex` on tags — the host owns those.
|
|
53
|
+
*
|
|
54
|
+
* Nested hosts: none. Parent hosts (`rui-select`) query `rui-tag-group` by tag name.
|
|
27
55
|
*
|
|
28
56
|
* @see https://react-aria.adobe.com/TagGroup
|
|
29
57
|
* @element rui-tag-group
|
|
30
|
-
* @attr {string} value - Comma-separated selected values
|
|
58
|
+
* @attr {string} value - Comma-separated selected values in markup; the property is `string[]`. Default: `[]`.
|
|
31
59
|
* @attr {string} label - Accessible name for the tag list.
|
|
32
60
|
* @attr {boolean} disabled - Disable selection and removal. Default: `false`.
|
|
33
61
|
* @attr {('single'|'multiple')} selection-mode - Allow one or many selected tags. Default: `multiple`.
|
|
34
62
|
* @attr {boolean} embedded - Disables selection when the parent component owns the selected values. Default: `false`.
|
|
35
|
-
* @fires rui-change - Emitted when the selected `value` changes; `detail.value` is
|
|
63
|
+
* @fires rui-change - Emitted when the selected `value` changes; `detail.value` is `string[]`.
|
|
36
64
|
* @fires rui-remove - Emitted when a tag is removed; `detail.value` is the removed tag's value.
|
|
37
|
-
*
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* Minimum tree: `[data-tag-list]` > `[data-tag][data-value][data-label]` with optional
|
|
68
|
+
* `[data-tag-remove]` inside. `setItems()` switches to a Derived Tree: it hides the
|
|
69
|
+
* authored list and paints chips into `[data-rui-managed-list]` (do not author that
|
|
70
|
+
* marker). `resync()` re-reads authored children after in-place mutations.
|
|
71
|
+
* BEM classes live on the view helpers; the host never queries them.
|
|
72
|
+
* Not form-associated: wrap in `rui-field` and read `RuiForm` `onSubmit`.
|
|
38
73
|
*/
|
|
39
74
|
export declare class RuiTagGroup extends RadiantElement {
|
|
40
|
-
value: string;
|
|
75
|
+
value: string[];
|
|
41
76
|
label: string;
|
|
42
77
|
disabled: boolean;
|
|
43
78
|
selectionMode: RuiTagGroupSelectionMode;
|
|
@@ -45,7 +80,11 @@ export declare class RuiTagGroup extends RadiantElement {
|
|
|
45
80
|
changeEvent: EventEmitter<RuiTagGroupChangeDetail>;
|
|
46
81
|
removeEvent: EventEmitter<RuiTagGroupRemoveDetail>;
|
|
47
82
|
private readonly uid;
|
|
48
|
-
|
|
83
|
+
/**
|
|
84
|
+
* CE-owned chip list. `null` means the view still owns Authored Children;
|
|
85
|
+
* an array (including empty) means `setItems` has taken over as a Derived Tree.
|
|
86
|
+
*/
|
|
87
|
+
private derivedItems;
|
|
49
88
|
private isMultiple;
|
|
50
89
|
private getSelectedValues;
|
|
51
90
|
private setSelectedValues;
|
|
@@ -62,11 +101,20 @@ export declare class RuiTagGroup extends RadiantElement {
|
|
|
62
101
|
private initialize;
|
|
63
102
|
protected onConnected(): void;
|
|
64
103
|
onPropsUpdated(): void;
|
|
104
|
+
/**
|
|
105
|
+
* Re-read authored `[data-tag]` children after the parent mutates them in place.
|
|
106
|
+
*/
|
|
65
107
|
resync(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Replace authored tags with a CE-owned list. Requires `[data-ref="root"]`.
|
|
110
|
+
*
|
|
111
|
+
* @remarks Hides the authored `[data-tag-list]` and sets `value` to every
|
|
112
|
+
* item. Pass `[]` to clear the managed list.
|
|
113
|
+
*/
|
|
66
114
|
setItems(items: RuiTagGroupItem[]): void;
|
|
67
115
|
/**
|
|
68
116
|
* Imperative twin of the view's `RuiTag` / `RuiTagRemove` markup for
|
|
69
|
-
* CE-managed items (same `data-*` hooks, classes, and remove
|
|
117
|
+
* CE-managed items (same `data-*` hooks, classes, and remove icon).
|
|
70
118
|
*/
|
|
71
119
|
private createManagedTag;
|
|
72
120
|
private syncManagedList;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as x}from"@ecopages/jsx/jsx-runtime";function u(...e){return e.filter(Boolean).join(" ")}function o(e){return e?c(e.split(",")):[]}function g(e){return e.join(",")}var s={fromAttribute:e=>o(e),toAttribute:e=>e.length>0?g(e):null,fromProperty:e=>Array.isArray(e)?c(e.map(String)):typeof e=="string"?o(e):[]};function a(e){return e?e.split(",").map(t=>Number(t.trim())).filter(t=>Number.isFinite(t)):[]}function h(e){return e.join(",")}var l={fromAttribute:e=>a(e),toAttribute:e=>e.length>0?h(e):null,fromProperty:e=>Array.isArray(e)?e.map(Number).filter(t=>Number.isFinite(t)):typeof e=="number"&&Number.isFinite(e)?[e]:typeof e=="string"?a(e):[]};function c(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))]}var m="data-rui-control";var n={read:e=>{let t=Reflect.get(e,"value");return typeof t=="string"?t:e.getAttribute("value")??""},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",r)}},f={read:e=>{let t=Reflect.get(e,"value");if(typeof t=="number")return t;let r=e.getAttribute("value");return r==null||r===""?"":Number(r)},write:(e,t)=>{let r=t==null?"":String(t);e.setAttribute("value",r),"value"in e&&Reflect.set(e,"value",t)}},d={read:e=>e.querySelector('input[type="checkbox"]')?.checked??e.hasAttribute("checked"),write:(e,t)=>{t?e.setAttribute("checked",""):e.removeAttribute("checked")}};function p(e,t){let r=Reflect.get(e,"value");return r!==void 0&&t.fromProperty?t.fromProperty(r):t.fromAttribute?t.fromAttribute(e.getAttribute("value")):r}function A(e,t){Reflect.set(e,"value",t)}var i={read:e=>p(e,s),write:A},y={read:e=>p(e,l),write:A},N=new Map([["rui-checkbox",d],["rui-switch",d],["rui-combobox",{...i,submission:"none"}],["rui-date-field",n],["rui-date-input",{...n,submission:"host"}],["rui-date-range-picker",n],["rui-select",{...i,submission:"none"}],["rui-radio-group",n],["rui-checkbox-group",i],["rui-listbox",i],["rui-tag-group",i],["rui-slider",{...y,submission:"host"}],["rui-knob",{...f,submission:"host"}],["rui-number-field",{...f,submission:"host"}]]);function R(e){let{class:t,rows:r=3,...b}=e;return x("textarea",{...b,rows:r,[m]:"","data-rui-control-type":"text",class:u("rui-textarea",t)})}export{R as RuiTextarea};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|