@skdx/web-components 0.30.0 → 0.31.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/custom-elements.json +37729 -31148
- package/dist/alert/AlertAnatomy.cjs +1 -1
- package/dist/alert/AlertAnatomy.js +1 -1
- package/dist/autocomplete/AutocompleteAnatomy.cjs +1 -1
- package/dist/autocomplete/AutocompleteAnatomy.js +1 -1
- package/dist/autocomplete/AutocompleteContent.cjs +2 -2
- package/dist/autocomplete/AutocompleteContent.d.cts +3 -0
- package/dist/autocomplete/AutocompleteContent.d.ts +3 -0
- package/dist/autocomplete/AutocompleteContent.js +2 -2
- package/dist/avatar/AvatarImage.cjs +12 -6
- package/dist/avatar/AvatarImage.js +9 -3
- package/dist/backdrop/Backdrop.cjs +1 -0
- package/dist/backdrop/Backdrop.d.cts +12 -0
- package/dist/backdrop/Backdrop.d.ts +12 -0
- package/dist/backdrop/Backdrop.js +1 -0
- package/dist/backdrop/index.cjs +1 -0
- package/dist/backdrop/index.d.cts +1 -0
- package/dist/backdrop/index.d.ts +1 -0
- package/dist/backdrop/index.js +1 -0
- package/dist/badge/BadgeDelete.cjs +1 -1
- package/dist/badge/BadgeDelete.js +1 -1
- package/dist/badge/BadgeLabel.cjs +1 -1
- package/dist/badge/BadgeLabel.js +2 -2
- package/dist/badge/BadgeLeading.cjs +1 -1
- package/dist/badge/BadgeLeading.js +2 -2
- package/dist/breadcrumb/BreadcrumbLink.cjs +5 -1
- package/dist/breadcrumb/BreadcrumbLink.js +8 -4
- package/dist/checkbox-card/CheckboxCardAnatomy.cjs +9 -9
- package/dist/checkbox-card/CheckboxCardAnatomy.js +9 -9
- package/dist/checkbox-group/CheckboxGroupItem.cjs +1 -1
- package/dist/checkbox-group/CheckboxGroupItem.d.cts +2 -1
- package/dist/checkbox-group/CheckboxGroupItem.d.ts +2 -1
- package/dist/checkbox-group/CheckboxGroupItem.js +2 -2
- package/dist/checkbox-group/CheckboxGroupSelectAll.cjs +2 -2
- package/dist/checkbox-group/CheckboxGroupSelectAll.d.cts +2 -0
- package/dist/checkbox-group/CheckboxGroupSelectAll.d.ts +2 -0
- package/dist/checkbox-group/CheckboxGroupSelectAll.js +1 -1
- package/dist/checkbox-group/indicator.cjs +1 -1
- package/dist/checkbox-group/indicator.d.cts +7 -0
- package/dist/checkbox-group/indicator.d.ts +7 -0
- package/dist/checkbox-group/indicator.js +1 -1
- package/dist/chip/Chip.cjs +1 -0
- package/dist/chip/Chip.d.cts +11 -0
- package/dist/chip/Chip.d.ts +11 -0
- package/dist/chip/Chip.js +1 -0
- package/dist/chip/index.cjs +1 -0
- package/dist/chip/index.d.cts +1 -0
- package/dist/chip/index.d.ts +1 -0
- package/dist/chip/index.js +1 -0
- package/dist/clipboard/ClipboardTrigger.cjs +5 -5
- package/dist/clipboard/ClipboardTrigger.d.cts +3 -2
- package/dist/clipboard/ClipboardTrigger.d.ts +3 -2
- package/dist/clipboard/ClipboardTrigger.js +6 -6
- package/dist/combobox/Combobox.cjs +2 -2
- package/dist/combobox/Combobox.d.cts +4 -0
- package/dist/combobox/Combobox.d.ts +4 -0
- package/dist/combobox/Combobox.js +2 -2
- package/dist/combobox/ComboboxContent.cjs +1 -1
- package/dist/combobox/ComboboxContent.js +2 -2
- package/dist/combobox/index.cjs +1 -1
- package/dist/combobox/index.d.cts +2 -1
- package/dist/combobox/index.d.ts +2 -1
- package/dist/combobox/index.js +1 -1
- package/dist/date-picker/DatePickerCalendar.cjs +1 -1
- package/dist/date-picker/DatePickerCalendar.d.cts +1 -0
- package/dist/date-picker/DatePickerCalendar.d.ts +1 -0
- package/dist/date-picker/DatePickerCalendar.js +1 -1
- package/dist/date-picker/DatePickerContent.cjs +1 -1
- package/dist/date-picker/DatePickerContent.js +2 -2
- package/dist/date-picker/DatePickerTrigger.cjs +19 -6
- package/dist/date-picker/DatePickerTrigger.d.cts +8 -0
- package/dist/date-picker/DatePickerTrigger.d.ts +8 -0
- package/dist/date-picker/DatePickerTrigger.js +17 -4
- package/dist/date-picker/family.cjs +1 -1
- package/dist/date-picker/family.js +1 -1
- package/dist/date-range-picker/DateRangePicker.cjs +1 -0
- package/dist/date-range-picker/DateRangePicker.d.cts +12 -0
- package/dist/date-range-picker/DateRangePicker.d.ts +12 -0
- package/dist/date-range-picker/DateRangePicker.js +1 -0
- package/dist/date-range-picker/index.cjs +1 -0
- package/dist/date-range-picker/index.d.cts +1 -0
- package/dist/date-range-picker/index.d.ts +1 -0
- package/dist/date-range-picker/index.js +1 -0
- package/dist/date-time-picker/DateTimePicker.cjs +1 -0
- package/dist/date-time-picker/DateTimePicker.d.cts +12 -0
- package/dist/date-time-picker/DateTimePicker.d.ts +12 -0
- package/dist/date-time-picker/DateTimePicker.js +1 -0
- package/dist/date-time-picker/index.cjs +1 -0
- package/dist/date-time-picker/index.d.cts +1 -0
- package/dist/date-time-picker/index.d.ts +1 -0
- package/dist/date-time-picker/index.js +1 -0
- package/dist/dialog/DialogContent.cjs +1 -1
- package/dist/dialog/DialogContent.d.cts +2 -0
- package/dist/dialog/DialogContent.d.ts +2 -0
- package/dist/dialog/DialogContent.js +1 -1
- package/dist/dialog/Dialogs.cjs +24 -0
- package/dist/dialog/Dialogs.d.cts +43 -0
- package/dist/dialog/Dialogs.d.ts +43 -0
- package/dist/dialog/Dialogs.js +24 -0
- package/dist/dialog/index.cjs +1 -1
- package/dist/dialog/index.d.cts +2 -0
- package/dist/dialog/index.d.ts +2 -0
- package/dist/dialog/index.js +1 -1
- package/dist/drawer/DrawerContent.cjs +2 -2
- package/dist/drawer/DrawerContent.js +2 -2
- package/dist/fab/Fab.cjs +1 -0
- package/dist/fab/Fab.d.cts +12 -0
- package/dist/fab/Fab.d.ts +12 -0
- package/dist/fab/Fab.js +1 -0
- package/dist/fab/index.cjs +1 -0
- package/dist/fab/index.d.cts +1 -0
- package/dist/fab/index.d.ts +1 -0
- package/dist/fab/index.js +1 -0
- package/dist/field/FieldError.cjs +2 -2
- package/dist/field/FieldError.js +1 -1
- package/dist/floating-panel/FloatingPanel.cjs +2 -2
- package/dist/floating-panel/FloatingPanel.d.cts +3 -0
- package/dist/floating-panel/FloatingPanel.d.ts +3 -0
- package/dist/floating-panel/FloatingPanel.js +2 -2
- package/dist/floating-panel/FloatingPanelContent.cjs +2 -2
- package/dist/floating-panel/FloatingPanelContent.d.cts +3 -0
- package/dist/floating-panel/FloatingPanelContent.d.ts +3 -0
- package/dist/floating-panel/FloatingPanelContent.js +2 -2
- package/dist/gauge/Gauge.cjs +1 -0
- package/dist/gauge/Gauge.d.cts +12 -0
- package/dist/gauge/Gauge.d.ts +12 -0
- package/dist/gauge/Gauge.js +1 -0
- package/dist/gauge/index.cjs +1 -0
- package/dist/gauge/index.d.cts +1 -0
- package/dist/gauge/index.d.ts +1 -0
- package/dist/gauge/index.js +1 -0
- package/dist/grid/Grid.cjs +1 -0
- package/dist/grid/Grid.d.cts +12 -0
- package/dist/grid/Grid.d.ts +12 -0
- package/dist/grid/Grid.js +1 -0
- package/dist/grid/index.cjs +1 -0
- package/dist/grid/index.d.cts +1 -0
- package/dist/grid/index.d.ts +1 -0
- package/dist/grid/index.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +1 -1
- package/dist/internal/csv.cjs +2 -0
- package/dist/internal/csv.d.cts +43 -0
- package/dist/internal/csv.d.ts +43 -0
- package/dist/internal/csv.js +2 -0
- package/dist/internal/dialogs.cjs +1 -0
- package/dist/internal/dialogs.d.cts +96 -0
- package/dist/internal/dialogs.d.ts +96 -0
- package/dist/internal/dialogs.js +1 -0
- package/dist/internal/dismiss.cjs +1 -1
- package/dist/internal/dismiss.d.cts +1 -1
- package/dist/internal/dismiss.d.ts +1 -1
- package/dist/internal/dismiss.js +1 -1
- package/dist/internal/dismissal.cjs +1 -1
- package/dist/internal/dismissal.d.cts +7 -0
- package/dist/internal/dismissal.d.ts +7 -0
- package/dist/internal/dismissal.js +1 -1
- package/dist/internal/field-core.cjs +1 -1
- package/dist/internal/field-core.d.cts +2 -0
- package/dist/internal/field-core.d.ts +2 -0
- package/dist/internal/field-core.js +1 -1
- package/dist/internal/form-associated.cjs +1 -1
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/light-dom-styles.cjs +3 -1
- package/dist/internal/light-dom-styles.js +2 -0
- package/dist/internal/media-query.cjs +1 -0
- package/dist/internal/media-query.d.cts +7 -0
- package/dist/internal/media-query.d.ts +7 -0
- package/dist/internal/media-query.js +1 -0
- package/dist/internal/menu-panel.cjs +1 -1
- package/dist/internal/menu-panel.js +2 -2
- package/dist/internal/options.cjs +1 -1
- package/dist/internal/options.d.cts +1 -1
- package/dist/internal/options.d.ts +1 -1
- package/dist/internal/options.js +1 -1
- package/dist/internal/styles.cjs +20 -7
- package/dist/internal/styles.d.cts +1 -1
- package/dist/internal/styles.d.ts +1 -1
- package/dist/internal/styles.js +20 -7
- package/dist/list/ListItem.cjs +13 -8
- package/dist/list/ListItem.js +12 -7
- package/dist/loading-overlay/LoadingOverlayBackdrop.cjs +1 -1
- package/dist/loading-overlay/LoadingOverlayBackdrop.js +1 -1
- package/dist/loading-overlay/LoadingOverlayContent.cjs +1 -1
- package/dist/loading-overlay/LoadingOverlayContent.js +3 -3
- package/dist/mentions/MentionsContent.cjs +1 -1
- package/dist/mentions/MentionsContent.js +2 -2
- package/dist/menu/MenuAnatomy.cjs +1 -1
- package/dist/menu/MenuAnatomy.js +1 -1
- package/dist/menu/MenuTrigger.cjs +3 -2
- package/dist/menu/MenuTrigger.d.cts +5 -0
- package/dist/menu/MenuTrigger.d.ts +5 -0
- package/dist/menu/MenuTrigger.js +5 -4
- package/dist/navigation-menu/NavigationMenuContent.cjs +2 -2
- package/dist/navigation-menu/NavigationMenuContent.js +1 -1
- package/dist/paper/Paper.cjs +1 -0
- package/dist/paper/Paper.d.cts +11 -0
- package/dist/paper/Paper.d.ts +11 -0
- package/dist/paper/Paper.js +1 -0
- package/dist/paper/index.cjs +1 -0
- package/dist/paper/index.d.cts +1 -0
- package/dist/paper/index.d.ts +1 -0
- package/dist/paper/index.js +1 -0
- package/dist/password-input/PasswordInputField.cjs +2 -2
- package/dist/password-input/PasswordInputField.js +4 -4
- package/dist/popover/PopoverAnchor.cjs +1 -1
- package/dist/popover/PopoverAnchor.d.cts +1 -0
- package/dist/popover/PopoverAnchor.d.ts +1 -0
- package/dist/popover/PopoverAnchor.js +2 -2
- package/dist/popover/PopoverContent.cjs +1 -1
- package/dist/popover/PopoverContent.js +2 -2
- package/dist/popover/PopoverDescription.cjs +7 -2
- package/dist/popover/PopoverDescription.js +7 -2
- package/dist/popover/PopoverTitle.cjs +7 -2
- package/dist/popover/PopoverTitle.js +7 -2
- package/dist/popover/family.cjs +1 -1
- package/dist/popover/family.js +1 -1
- package/dist/progress/ProgressCircle.cjs +2 -2
- package/dist/progress/ProgressCircle.js +1 -1
- package/dist/progress/ProgressCircleIndicator.cjs +2 -2
- package/dist/progress/ProgressCircleIndicator.js +2 -2
- package/dist/progress/ProgressIndicator.cjs +2 -2
- package/dist/progress/ProgressIndicator.js +1 -1
- package/dist/progress/ProgressLabel.cjs +1 -1
- package/dist/progress/ProgressLabel.js +1 -1
- package/dist/progress/ProgressValue.cjs +1 -1
- package/dist/progress/ProgressValue.js +1 -1
- package/dist/select/SelectContent.cjs +2 -2
- package/dist/select/SelectContent.d.cts +3 -0
- package/dist/select/SelectContent.d.ts +3 -0
- package/dist/select/SelectContent.js +2 -2
- package/dist/speed-dial/SpeedDial.cjs +2 -2
- package/dist/speed-dial/SpeedDial.d.cts +6 -0
- package/dist/speed-dial/SpeedDial.d.ts +6 -0
- package/dist/speed-dial/SpeedDial.js +2 -2
- package/dist/speed-dial/SpeedDialAnatomy.cjs +1 -1
- package/dist/speed-dial/SpeedDialAnatomy.js +1 -1
- package/dist/speed-dial/SpeedDialContent.cjs +1 -1
- package/dist/speed-dial/SpeedDialContent.js +2 -2
- package/dist/speed-dial/SpeedDialTrigger.cjs +5 -4
- package/dist/speed-dial/SpeedDialTrigger.d.cts +5 -0
- package/dist/speed-dial/SpeedDialTrigger.d.ts +5 -0
- package/dist/speed-dial/SpeedDialTrigger.js +5 -4
- package/dist/stack/Stack.cjs +1 -0
- package/dist/stack/Stack.d.cts +12 -0
- package/dist/stack/Stack.d.ts +12 -0
- package/dist/stack/Stack.js +1 -0
- package/dist/stack/index.cjs +1 -0
- package/dist/stack/index.d.cts +1 -0
- package/dist/stack/index.d.ts +1 -0
- package/dist/stack/index.js +1 -0
- package/dist/table/Table.cjs +4 -4
- package/dist/table/Table.d.cts +17 -1
- package/dist/table/Table.d.ts +17 -1
- package/dist/table/Table.js +5 -5
- package/dist/table/TableAnatomy.cjs +5 -5
- package/dist/table/TableAnatomy.d.cts +4 -1
- package/dist/table/TableAnatomy.d.ts +4 -1
- package/dist/table/TableAnatomy.js +11 -11
- package/dist/table/TableColumnHeaderFilterInput.cjs +15 -0
- package/dist/table/TableColumnHeaderFilterInput.d.cts +37 -0
- package/dist/table/TableColumnHeaderFilterInput.d.ts +37 -0
- package/dist/table/TableColumnHeaderFilterInput.js +15 -0
- package/dist/table/TableExpandTrigger.cjs +5 -5
- package/dist/table/TableExpandTrigger.d.cts +1 -0
- package/dist/table/TableExpandTrigger.d.ts +1 -0
- package/dist/table/TableExpandTrigger.js +5 -5
- package/dist/table/TableHeaderCell.cjs +44 -31
- package/dist/table/TableHeaderCell.d.cts +18 -0
- package/dist/table/TableHeaderCell.d.ts +18 -0
- package/dist/table/TableHeaderCell.js +44 -31
- package/dist/table/index.cjs +1 -1
- package/dist/table/index.d.cts +1 -1
- package/dist/table/index.d.ts +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table/primitives.cjs +1 -1
- package/dist/table/primitives.d.cts +1 -0
- package/dist/table/primitives.d.ts +1 -0
- package/dist/table/primitives.js +1 -1
- package/dist/table/types.cjs +1 -1
- package/dist/table/types.d.cts +2 -0
- package/dist/table/types.d.ts +2 -0
- package/dist/tag-group/TagGroupAnatomy.cjs +4 -4
- package/dist/tag-group/TagGroupAnatomy.d.cts +5 -1
- package/dist/tag-group/TagGroupAnatomy.d.ts +5 -1
- package/dist/tag-group/TagGroupAnatomy.js +5 -5
- package/dist/tags-input/TagsInputInput.cjs +3 -2
- package/dist/tags-input/TagsInputInput.d.cts +5 -0
- package/dist/tags-input/TagsInputInput.d.ts +5 -0
- package/dist/tags-input/TagsInputInput.js +10 -9
- package/dist/text-field/TextField.cjs +8 -4
- package/dist/text-field/TextField.js +8 -4
- package/dist/timeline/Timeline.cjs +9 -2
- package/dist/timeline/Timeline.d.cts +8 -1
- package/dist/timeline/Timeline.d.ts +8 -1
- package/dist/timeline/Timeline.js +9 -2
- package/dist/timeline/TimelineAnatomy.cjs +7 -7
- package/dist/timeline/TimelineAnatomy.js +8 -8
- package/dist/tooltip/Tooltip.cjs +1 -0
- package/dist/tooltip/Tooltip.d.cts +20 -0
- package/dist/tooltip/Tooltip.d.ts +20 -0
- package/dist/tooltip/Tooltip.js +1 -0
- package/dist/tooltip/index.cjs +1 -0
- package/dist/tooltip/index.d.cts +1 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tour/TourAnatomy.cjs +1 -1
- package/dist/tour/TourAnatomy.d.cts +1 -0
- package/dist/tour/TourAnatomy.d.ts +1 -0
- package/dist/tour/TourAnatomy.js +1 -1
- package/dist/tour/TourContent.cjs +1 -1
- package/dist/tour/TourContent.js +2 -2
- package/dist/tour/TourNextTrigger.cjs +1 -1
- package/dist/tour/TourNextTrigger.js +1 -1
- package/dist/tree/Tree.cjs +1 -1
- package/dist/tree/Tree.d.cts +1 -1
- package/dist/tree/Tree.d.ts +1 -1
- package/dist/tree/Tree.js +1 -1
- package/dist/tree-select/TreeSelectContent.cjs +2 -2
- package/dist/tree-select/TreeSelectContent.d.cts +3 -0
- package/dist/tree-select/TreeSelectContent.d.ts +3 -0
- package/dist/tree-select/TreeSelectContent.js +2 -2
- package/package.json +126 -2
package/dist/index.d.ts
CHANGED
|
@@ -14,11 +14,14 @@ export { SkdxAutocomplete, defaultGetSuggestionCountLabel } from './autocomplete
|
|
|
14
14
|
export type { SkdxAutocompleteFilter, SkdxAutocompleteItemEntry } from './autocomplete/index.js';
|
|
15
15
|
export { SkdxAvatar } from './avatar/index.js';
|
|
16
16
|
export { SkdxBadge } from './badge/index.js';
|
|
17
|
+
export { SkdxChip } from './chip/index.js';
|
|
17
18
|
export { SkdxBreadcrumb, type SkdxBreadcrumbItemDescriptor } from './breadcrumb/index.js';
|
|
18
19
|
export { SkdxButton } from './button/index.js';
|
|
20
|
+
export { SkdxFab } from './fab/index.js';
|
|
19
21
|
export { SkdxCalendar, getISOWeek, resolveLocale, getMonthNames, getWeekDayNames, getLocaleWeekStartsOn, formatMonthLabel, formatDateLabel, formatYear, formatYearRange, type NameWidth, type CalendarSelectionMode, type CalendarValue, type DateRange, type RangePosition, type CalendarPageBehavior, type CalendarView, } from './calendar/index.js';
|
|
20
22
|
export type { CalendarDay } from './calendar/index.js';
|
|
21
23
|
export { SkdxCard, SkdxCardHeader, SkdxCardContent, SkdxCardFooter } from './card/index.js';
|
|
24
|
+
export { SkdxPaper } from './paper/index.js';
|
|
22
25
|
export { SkdxCarousel } from './carousel/index.js';
|
|
23
26
|
export { SkdxCheckbox, type SkdxCheckedState } from './checkbox/index.js';
|
|
24
27
|
export { SkdxCheckboxCard } from './checkbox-card/index.js';
|
|
@@ -27,13 +30,16 @@ export { SkdxClipboard } from './clipboard/index.js';
|
|
|
27
30
|
export { SkdxCollapsible } from './collapsible/index.js';
|
|
28
31
|
export { SkdxColorPicker, type SkdxColorPickerSwatchDescriptor } from './color-picker/index.js';
|
|
29
32
|
export type { ColorFormat } from './color-picker/index.js';
|
|
30
|
-
export { SkdxCombobox } from './combobox/index.js';
|
|
31
|
-
export type { SkdxComboboxFilter, SkdxComboboxHighlightChangeDetail, SkdxComboboxHighlightReason, SkdxComboboxItemEntry, SkdxComboboxOpenOn, } from './combobox/index.js';
|
|
33
|
+
export { SkdxCombobox, defaultOptionsFilter } from './combobox/index.js';
|
|
34
|
+
export type { SkdxComboboxFilter, SkdxComboboxHighlightChangeDetail, SkdxComboboxHighlightReason, SkdxComboboxItemEntry, SkdxComboboxOpenOn, SkdxComboboxValueChangeDetail, } from './combobox/index.js';
|
|
32
35
|
export { SkdxCommand, defaultCommandFilter } from './command/index.js';
|
|
33
36
|
export type { SkdxCommandFilter, SkdxCommandGroupDescriptor, SkdxCommandItemDescriptor, } from './command/index.js';
|
|
34
37
|
export { SkdxDateField } from './date-field/index.js';
|
|
35
38
|
export { SkdxDatePicker } from './date-picker/index.js';
|
|
39
|
+
export { SkdxDateTimePicker } from './date-time-picker/index.js';
|
|
40
|
+
export { SkdxDateRangePicker } from './date-range-picker/index.js';
|
|
36
41
|
export { SkdxDialog, type SkdxDialogDismiss, type SkdxDialogRole } from './dialog/index.js';
|
|
42
|
+
export { SkdxDialogs, createDialogs, type DialogsStore, type DialogsEntry, type DialogsKind, type DialogsOptions, type DialogsPromptOptions, type DialogsResult, } from './dialog/index.js';
|
|
37
43
|
export { SkdxDrawer, type SkdxDrawerDismiss, type SkdxDrawerPlacement } from './drawer/index.js';
|
|
38
44
|
export { SkdxMenu } from './menu/index.js';
|
|
39
45
|
export type { SkdxMenuItemDescriptor, SkdxMenuOpenOn, SkdxMenuPoint } from './menu/index.js';
|
|
@@ -51,6 +57,7 @@ export { SkdxLabel } from './label/index.js';
|
|
|
51
57
|
export { SkdxListbox } from './listbox/index.js';
|
|
52
58
|
export type { SkdxListboxValueChangeDetail } from './listbox/index.js';
|
|
53
59
|
export { SkdxLoadingOverlay } from './loading-overlay/index.js';
|
|
60
|
+
export { SkdxBackdrop } from './backdrop/index.js';
|
|
54
61
|
export { SkdxMentions, defaultGetResultCountLabel, defaultMentionSerializer } from './mentions/index.js';
|
|
55
62
|
export type { SkdxMentionsFilter, SkdxMentionsHighlightChangeDetail, SkdxMentionsHighlightReason, SkdxMentionsInsertedMention, SkdxMentionsItemEntry, SkdxMentionsOptionData, SkdxMentionsQueryChangeDetail, SkdxMentionsSerializer, SkdxMentionsValueChangeDetail, } from './mentions/index.js';
|
|
56
63
|
export { SkdxMenubar } from './menubar/index.js';
|
|
@@ -63,7 +70,9 @@ export type { PaginationRangeEntry, PaginationRangeOptions, PaginationLabels, Re
|
|
|
63
70
|
export { SkdxPasswordInput } from './password-input/index.js';
|
|
64
71
|
export { SkdxPinInput, pinInputDigitLabel } from './pin-input/index.js';
|
|
65
72
|
export { SkdxPopover, type PopoverModality, type SkdxPopoverOpenOn, type SkdxPopoverRole, } from './popover/index.js';
|
|
73
|
+
export { SkdxTooltip } from './tooltip/index.js';
|
|
66
74
|
export { SkdxProgress, type SkdxProgressRange, type SkdxProgressRole } from './progress/index.js';
|
|
75
|
+
export { SkdxGauge } from './gauge/index.js';
|
|
67
76
|
export { SkdxQrCode } from './qr-code/index.js';
|
|
68
77
|
export type { QrCodeErrorCorrection } from './qr-code/index.js';
|
|
69
78
|
export { SkdxRadioCard } from './radio-card/index.js';
|
|
@@ -78,6 +87,8 @@ export { SkdxSelect, defaultGetSelectionLabel } from './select/index.js';
|
|
|
78
87
|
export type { SkdxSelectFilter, SkdxSelectItemDescriptor, SkdxSelectItemEntry } from './select/index.js';
|
|
79
88
|
export { SkdxDivider } from './divider/index.js';
|
|
80
89
|
export { SkdxBox } from './box/index.js';
|
|
90
|
+
export { SkdxStack } from './stack/index.js';
|
|
91
|
+
export { SkdxGrid } from './grid/index.js';
|
|
81
92
|
export { SkdxList, SkdxListItem } from './list/index.js';
|
|
82
93
|
export type { SkdxListItemDescriptor, SkdxListOrientation } from './list/index.js';
|
|
83
94
|
export { SkdxLink } from './link/index.js';
|
|
@@ -92,7 +103,7 @@ export type { StepStatus, StepperOrientation, StepperNavigationMode, StepperItem
|
|
|
92
103
|
export { SkdxSwitch } from './switch/index.js';
|
|
93
104
|
export { SkdxTable, SkdxTableRow, SkdxTableCell } from './table/index.js';
|
|
94
105
|
export { defaultRowId, type SkdxTableColumn } from './table/index.js';
|
|
95
|
-
export type { SortDirection, TableSort, TableSortState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, } from './table/index.js';
|
|
106
|
+
export type { SortDirection, TableSort, TableSortState, TableFilterState, TableSelectAllScope, TableSelectionMode, TableColumnWidths, } from './table/index.js';
|
|
96
107
|
export { SkdxTabs } from './tabs/index.js';
|
|
97
108
|
export type { TabsChangeReason, TabsValueChangeDetail, SkdxTabsItemDescriptor } from './tabs/index.js';
|
|
98
109
|
export { SkdxTagsInput, type TagsInputInvalidDetail } from './tags-input/index.js';
|
|
@@ -126,3 +137,5 @@ export { SkdxVisuallyHidden } from './utils/visually-hidden.js';
|
|
|
126
137
|
export { SkdxPortal } from './utils/portal.js';
|
|
127
138
|
export { announce, clearAnnouncements, ANNOUNCE_DEBOUNCE_MS, type AnnouncePoliteness, } from './utils/live-announcer.js';
|
|
128
139
|
export type { PolymorphicTag } from './utils/polymorphic.js';
|
|
140
|
+
export { matchesMediaQuery, subscribeMediaQuery } from './internal/media-query.js';
|
|
141
|
+
export { toCsv, type CsvColumn, type CsvOptions } from './internal/csv.js';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{SkdxAccordion as o}from"./accordion/index.js";import{SkdxAlert as a}from"./alert/index.js";import{SkdxAngleSlider as x}from"./angle-slider/index.js";import{SkdxAspectRatio as i}from"./aspect-ratio/index.js";import{SkdxAutocomplete as
|
|
1
|
+
import{SkdxAccordion as o}from"./accordion/index.js";import{SkdxAlert as a}from"./alert/index.js";import{SkdxAngleSlider as x}from"./angle-slider/index.js";import{SkdxAspectRatio as i}from"./aspect-ratio/index.js";import{SkdxAutocomplete as S,defaultGetSuggestionCountLabel as n}from"./autocomplete/index.js";import{SkdxAvatar as k}from"./avatar/index.js";import{SkdxBadge as f}from"./badge/index.js";import{SkdxChip as g}from"./chip/index.js";import{SkdxBreadcrumb as u}from"./breadcrumb/index.js";import{SkdxButton as D}from"./button/index.js";import{SkdxFab as C}from"./fab/index.js";import{SkdxCalendar as F,getISOWeek as M,resolveLocale as P,getMonthNames as R,getWeekDayNames as I,getLocaleWeekStartsOn as A,formatMonthLabel as O,formatDateLabel as L,formatYear as v,formatYearRange as G}from"./calendar/index.js";import{SkdxCard as N,SkdxCardHeader as V,SkdxCardContent as B,SkdxCardFooter as w}from"./card/index.js";import{SkdxPaper as z}from"./paper/index.js";import{SkdxCarousel as _}from"./carousel/index.js";import{SkdxCheckbox as W}from"./checkbox/index.js";import{SkdxCheckboxCard as Y}from"./checkbox-card/index.js";import{SkdxCheckboxGroup as q}from"./checkbox-group/index.js";import{SkdxClipboard as X}from"./clipboard/index.js";import{SkdxCollapsible as $}from"./collapsible/index.js";import{SkdxColorPicker as te}from"./color-picker/index.js";import{SkdxCombobox as re,defaultOptionsFilter as ae}from"./combobox/index.js";import{SkdxCommand as xe,defaultCommandFilter as de}from"./command/index.js";import{SkdxDateField as le}from"./date-field/index.js";import{SkdxDatePicker as ne}from"./date-picker/index.js";import{SkdxDateTimePicker as ke}from"./date-time-picker/index.js";import{SkdxDateRangePicker as fe}from"./date-range-picker/index.js";import{SkdxDialog as ge}from"./dialog/index.js";import{SkdxDialogs as ue,createDialogs as Te}from"./dialog/index.js";import{SkdxDrawer as be}from"./drawer/index.js";import{SkdxMenu as he}from"./menu/index.js";import{SkdxEditable as Me}from"./editable/index.js";import{SkdxField as Re,SkdxFieldset as Ie}from"./field/index.js";import{SkdxFileUpload as Oe}from"./file-upload/index.js";import{SkdxFloatingPanel as ve,gestureAnnouncement as Ge}from"./floating-panel/index.js";import{SkdxForm as Ne,SkdxFormField as Ve}from"./form/index.js";import{SkdxHeading as we}from"./heading/index.js";import{SkdxKbd as ze}from"./kbd/index.js";import{SkdxLabel as _e}from"./label/index.js";import{SkdxListbox as We}from"./listbox/index.js";import{SkdxLoadingOverlay as Ye}from"./loading-overlay/index.js";import{SkdxBackdrop as qe}from"./backdrop/index.js";import{SkdxMentions as Xe,defaultGetResultCountLabel as Ze,defaultMentionSerializer as $e}from"./mentions/index.js";import{SkdxMenubar as tt}from"./menubar/index.js";import{SkdxNavigationMenu as rt}from"./navigation-menu/index.js";import{SkdxNumberField as pt}from"./number-field/index.js";import{SkdxPagination as dt,getPaginationRange as it,DEFAULT_PAGINATION_LABELS as lt}from"./pagination/index.js";import{SkdxPasswordInput as nt}from"./password-input/index.js";import{SkdxPinInput as kt,pinInputDigitLabel as st}from"./pin-input/index.js";import{SkdxPopover as yt}from"./popover/index.js";import{SkdxTooltip as ct}from"./tooltip/index.js";import{SkdxProgress as Tt}from"./progress/index.js";import{SkdxGauge as bt}from"./gauge/index.js";import{SkdxQrCode as ht}from"./qr-code/index.js";import{SkdxRadioCard as Mt}from"./radio-card/index.js";import{SkdxRadioGroup as Rt}from"./radio-group/index.js";import{SkdxRating as At}from"./rating/index.js";import{SkdxResizablePanelGroup as Lt,SkdxResizablePanel as vt}from"./resizable/index.js";import{SkdxScrollArea as Et}from"./scroll-area/index.js";import{SkdxSelect as Vt,defaultGetSelectionLabel as Bt}from"./select/index.js";import{SkdxDivider as Ut}from"./divider/index.js";import{SkdxBox as Ht}from"./box/index.js";import{SkdxStack as Qt}from"./stack/index.js";import{SkdxGrid as Kt}from"./grid/index.js";import{SkdxList as jt,SkdxListItem as qt}from"./list/index.js";import{SkdxLink as Xt}from"./link/index.js";import{SkdxImage as $t}from"./image/index.js";import{SkdxSkeleton as to}from"./skeleton/index.js";import{SkdxSlider as ro}from"./slider/index.js";import{SkdxSpinner as po}from"./spinner/index.js";import{SkdxSpeedDial as io}from"./speed-dial/index.js";import{SkdxSplitButton as So}from"./split-button/index.js";import{SkdxStepper as mo}from"./stepper/index.js";import{SkdxSwitch as so}from"./switch/index.js";import{SkdxTable as yo,SkdxTableRow as go,SkdxTableCell as co}from"./table/index.js";import{defaultRowId as To}from"./table/index.js";import{SkdxTabs as bo}from"./tabs/index.js";import{SkdxTagsInput as ho}from"./tags-input/index.js";import{SkdxTagGroup as Mo}from"./tag-group/index.js";import{SkdxText as Ro}from"./text/index.js";import{SkdxTextField as Ao}from"./text-field/index.js";import{SkdxTextarea as Lo}from"./textarea/index.js";import{SkdxTime as Go}from"./time/index.js";import{SkdxTimeField as No}from"./time-field/index.js";import{SkdxTimeline as Bo}from"./timeline/index.js";import{SkdxToastRegion as Uo,createToaster as zo,DEFAULT_TOAST_DURATION as Ho}from"./toast/index.js";import{SkdxToggleGroup as Qo}from"./toggle-group/index.js";import{SkdxToggle as Ko}from"./toggle/index.js";import{SkdxToolbar as jo}from"./toolbar/index.js";import{SkdxTour as Jo}from"./tour/index.js";import{SkdxTransfer as Zo,defaultTransferFilter as $o,moveAnnouncement as er}from"./transfer/index.js";import{searchResultsAnnouncement as or}from"./transfer/index.js";import{SkdxTree as ar}from"./tree/index.js";import{SkdxTreeSelect as xr,SkdxTreeSelectColumns as dr,defaultTreeSelectFilter as ir,defaultGetMatchCountLabel as lr}from"./tree-select/index.js";import{SkdxVisuallyHidden as nr}from"./utils/visually-hidden.js";import{SkdxPortal as kr}from"./utils/portal.js";import{announce as fr,clearAnnouncements as yr,ANNOUNCE_DEBOUNCE_MS as gr}from"./utils/live-announcer.js";import{matchesMediaQuery as ur,subscribeMediaQuery as Tr}from"./internal/media-query.js";import{toCsv as br}from"./internal/csv.js";export{gr as ANNOUNCE_DEBOUNCE_MS,lt as DEFAULT_PAGINATION_LABELS,Ho as DEFAULT_TOAST_DURATION,o as SkdxAccordion,a as SkdxAlert,x as SkdxAngleSlider,i as SkdxAspectRatio,S as SkdxAutocomplete,k as SkdxAvatar,qe as SkdxBackdrop,f as SkdxBadge,Ht as SkdxBox,u as SkdxBreadcrumb,D as SkdxButton,F as SkdxCalendar,N as SkdxCard,B as SkdxCardContent,w as SkdxCardFooter,V as SkdxCardHeader,_ as SkdxCarousel,W as SkdxCheckbox,Y as SkdxCheckboxCard,q as SkdxCheckboxGroup,g as SkdxChip,X as SkdxClipboard,$ as SkdxCollapsible,te as SkdxColorPicker,re as SkdxCombobox,xe as SkdxCommand,le as SkdxDateField,ne as SkdxDatePicker,fe as SkdxDateRangePicker,ke as SkdxDateTimePicker,ge as SkdxDialog,ue as SkdxDialogs,Ut as SkdxDivider,be as SkdxDrawer,Me as SkdxEditable,C as SkdxFab,Re as SkdxField,Ie as SkdxFieldset,Oe as SkdxFileUpload,ve as SkdxFloatingPanel,Ne as SkdxForm,Ve as SkdxFormField,bt as SkdxGauge,Kt as SkdxGrid,we as SkdxHeading,$t as SkdxImage,ze as SkdxKbd,_e as SkdxLabel,Xt as SkdxLink,jt as SkdxList,qt as SkdxListItem,We as SkdxListbox,Ye as SkdxLoadingOverlay,Xe as SkdxMentions,he as SkdxMenu,tt as SkdxMenubar,rt as SkdxNavigationMenu,pt as SkdxNumberField,dt as SkdxPagination,z as SkdxPaper,nt as SkdxPasswordInput,kt as SkdxPinInput,yt as SkdxPopover,kr as SkdxPortal,Tt as SkdxProgress,ht as SkdxQrCode,Mt as SkdxRadioCard,Rt as SkdxRadioGroup,At as SkdxRating,vt as SkdxResizablePanel,Lt as SkdxResizablePanelGroup,Et as SkdxScrollArea,Vt as SkdxSelect,to as SkdxSkeleton,ro as SkdxSlider,io as SkdxSpeedDial,po as SkdxSpinner,So as SkdxSplitButton,Qt as SkdxStack,mo as SkdxStepper,so as SkdxSwitch,yo as SkdxTable,co as SkdxTableCell,go as SkdxTableRow,bo as SkdxTabs,Mo as SkdxTagGroup,ho as SkdxTagsInput,Ro as SkdxText,Ao as SkdxTextField,Lo as SkdxTextarea,Go as SkdxTime,No as SkdxTimeField,Bo as SkdxTimeline,Uo as SkdxToastRegion,Ko as SkdxToggle,Qo as SkdxToggleGroup,jo as SkdxToolbar,ct as SkdxTooltip,Jo as SkdxTour,Zo as SkdxTransfer,ar as SkdxTree,xr as SkdxTreeSelect,dr as SkdxTreeSelectColumns,nr as SkdxVisuallyHidden,fr as announce,yr as clearAnnouncements,Te as createDialogs,zo as createToaster,de as defaultCommandFilter,lr as defaultGetMatchCountLabel,Ze as defaultGetResultCountLabel,Bt as defaultGetSelectionLabel,n as defaultGetSuggestionCountLabel,$e as defaultMentionSerializer,ae as defaultOptionsFilter,To as defaultRowId,$o as defaultTransferFilter,ir as defaultTreeSelectFilter,L as formatDateLabel,O as formatMonthLabel,v as formatYear,G as formatYearRange,Ge as gestureAnnouncement,M as getISOWeek,A as getLocaleWeekStartsOn,R as getMonthNames,it as getPaginationRange,I as getWeekDayNames,ur as matchesMediaQuery,er as moveAnnouncement,st as pinInputDigitLabel,P as resolveLocale,or as searchResultsAnnouncement,Tr as subscribeMediaQuery,br as toCsv};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var f=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var l=(n,e)=>{for(var t in e)f(n,t,{get:e[t],enumerable:!0})},p=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of u(e))!y.call(n,o)&&o!==t&&f(n,o,{get:()=>e[o],enumerable:!(i=c(e,o))||i.enumerable});return n};var w=n=>p(f({},"__esModule",{value:!0}),n);var R={};l(R,{toCsv:()=>m});module.exports=w(R);function k(n){return n==null?"":n instanceof Date?n.toISOString():typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"||typeof n=="bigint"?String(n):JSON.stringify(n)??""}function d(n,e){let t=k(n);return/["\r\n]/.test(t)||t.includes(e)?`"${t.replace(/"/g,'""')}"`:t}function m(n,e={}){let t=e.delimiter??",",i=n[0],o=(e.columns??(i?Object.keys(i):[])).map(r=>typeof r=="string"?{key:r}:r),s=[];e.header!==!1&&o.length&&s.push(o.map(r=>d(r.label??r.key,t)).join(t));for(let r of n)s.push(o.map(g=>d(r[g.key],t)).join(t));return s.join(`\r
|
|
2
|
+
`)}0&&(module.exports={toCsv});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** One output column: the row key to read and, optionally, the header text to print instead of the key. */
|
|
2
|
+
export interface CsvColumn<Row> {
|
|
3
|
+
/** Property of each row whose value fills this column. */
|
|
4
|
+
key: keyof Row & string;
|
|
5
|
+
/**
|
|
6
|
+
* Header cell text.
|
|
7
|
+
*
|
|
8
|
+
* @default the key itself
|
|
9
|
+
*/
|
|
10
|
+
label?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Output options for {@link toCsv}; every field has a working default. */
|
|
13
|
+
export interface CsvOptions<Row> {
|
|
14
|
+
/**
|
|
15
|
+
* Columns to emit, in order; omit to emit every key of the first row.
|
|
16
|
+
*
|
|
17
|
+
* @default Object.keys(rows[0])
|
|
18
|
+
*/
|
|
19
|
+
columns?: readonly (CsvColumn<Row> | (keyof Row & string))[] | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Field separator.
|
|
22
|
+
*
|
|
23
|
+
* @default ','
|
|
24
|
+
*/
|
|
25
|
+
delimiter?: string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the first line is the header row.
|
|
28
|
+
*
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
header?: boolean | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Serialises rows to RFC 4180 CSV text — CRLF line ends, fields quoted only when
|
|
35
|
+
* they contain the delimiter, a quote or a line break — ready for a Blob or a
|
|
36
|
+
* data: URL. Dates print as ISO 8601; null and undefined print as empty fields.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* toCsv(rows, { columns: [{ key: 'name', label: 'Name' }, 'amount'] });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function toCsv<Row extends object>(rows: readonly Row[], options?: CsvOptions<Row>): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** One output column: the row key to read and, optionally, the header text to print instead of the key. */
|
|
2
|
+
export interface CsvColumn<Row> {
|
|
3
|
+
/** Property of each row whose value fills this column. */
|
|
4
|
+
key: keyof Row & string;
|
|
5
|
+
/**
|
|
6
|
+
* Header cell text.
|
|
7
|
+
*
|
|
8
|
+
* @default the key itself
|
|
9
|
+
*/
|
|
10
|
+
label?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Output options for {@link toCsv}; every field has a working default. */
|
|
13
|
+
export interface CsvOptions<Row> {
|
|
14
|
+
/**
|
|
15
|
+
* Columns to emit, in order; omit to emit every key of the first row.
|
|
16
|
+
*
|
|
17
|
+
* @default Object.keys(rows[0])
|
|
18
|
+
*/
|
|
19
|
+
columns?: readonly (CsvColumn<Row> | (keyof Row & string))[] | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Field separator.
|
|
22
|
+
*
|
|
23
|
+
* @default ','
|
|
24
|
+
*/
|
|
25
|
+
delimiter?: string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the first line is the header row.
|
|
28
|
+
*
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
header?: boolean | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Serialises rows to RFC 4180 CSV text — CRLF line ends, fields quoted only when
|
|
35
|
+
* they contain the delimiter, a quote or a line break — ready for a Blob or a
|
|
36
|
+
* data: URL. Dates print as ISO 8601; null and undefined print as empty fields.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* toCsv(rows, { columns: [{ key: 'name', label: 'Name' }, 'amount'] });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function toCsv<Row extends object>(rows: readonly Row[], options?: CsvOptions<Row>): string;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function g(n){return n==null?"":n instanceof Date?n.toISOString():typeof n=="string"?n:typeof n=="number"||typeof n=="boolean"||typeof n=="bigint"?String(n):JSON.stringify(n)??""}function f(n,o){let e=g(n);return/["\r\n]/.test(e)||e.includes(o)?`"${e.replace(/"/g,'""')}"`:e}function c(n,o={}){let e=o.delimiter??",",s=n[0],r=(o.columns??(s?Object.keys(s):[])).map(t=>typeof t=="string"?{key:t}:t),i=[];o.header!==!1&&r.length&&i.push(r.map(t=>f(t.label??t.key,e)).join(e));for(let t of n)i.push(r.map(d=>f(t[d.key],e)).join(e));return i.join(`\r
|
|
2
|
+
`)}export{c as toCsv};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var a=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var o in t)a(e,o,{get:t[o],enumerable:!0})},m=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of f(t))!p.call(e,r)&&r!==o&&a(e,r,{get:()=>t[r],enumerable:!(s=g(t,r))||s.enumerable});return e};var D=e=>m(a({},"__esModule",{value:!0}),e);var O={};c(O,{createDialogs:()=>x,dialogsCancelResult:()=>y,dialogsConfirmResult:()=>v});module.exports=D(O);var b={alert:"OK",confirm:"Confirm",prompt:"OK"};function x(){let e=[],t=new Set,o=0;function s(){for(let n of t)n()}function r(n,i){let l=typeof i=="string"?{title:i}:i,u={...l,id:`skdx-dialogs-${++o}`,kind:n,confirmLabel:l.confirmLabel??b[n],cancelLabel:n==="alert"?void 0:l.cancelLabel??"Cancel"};return new Promise(d=>{e.push({entry:u,resolve:d}),e.length===1&&s()})}return{subscribe(n){return t.add(n),()=>{t.delete(n)}},getCurrent:()=>e[0]?.entry??null,alert:n=>r("alert",n).then(()=>{}),confirm:n=>r("confirm",n).then(i=>i===!0),prompt:n=>r("prompt",n).then(i=>typeof i=="string"?i:null),settle(n,i){if(e[0]?.entry.id!==n)return;let{resolve:l}=e.shift();l(i),s()}}}function y(e){if(e.kind==="confirm")return!1;if(e.kind==="prompt")return null}function v(e,t){if(e.kind==="confirm")return!0;if(e.kind==="prompt")return t}0&&(module.exports={createDialogs,dialogsCancelResult,dialogsConfirmResult});
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Which of the three canned dialogs an entry is. */
|
|
2
|
+
export type DialogsKind = 'alert' | 'confirm' | 'prompt';
|
|
3
|
+
/** Options common to alert, confirm and prompt; a bare string is the title. */
|
|
4
|
+
export interface DialogsOptions {
|
|
5
|
+
/** Heading of the dialog, rendered as its title and accessible name. */
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Body text under the title, rendered as the dialog's description.
|
|
9
|
+
*
|
|
10
|
+
* @default undefined — no description.
|
|
11
|
+
*/
|
|
12
|
+
description?: string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Label of the confirming button.
|
|
15
|
+
*
|
|
16
|
+
* @default 'OK' for alert and prompt, 'Confirm' for confirm
|
|
17
|
+
*/
|
|
18
|
+
confirmLabel?: string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Label of the cancelling button; alerts have none.
|
|
21
|
+
*
|
|
22
|
+
* @default 'Cancel'
|
|
23
|
+
*/
|
|
24
|
+
cancelLabel?: string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Severity rung the skin colours the dialog by, mirrored to `data-status`.
|
|
27
|
+
*
|
|
28
|
+
* @default undefined — the skin's own default.
|
|
29
|
+
*/
|
|
30
|
+
status?: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
/** Options for a prompt, which adds a single text field to the confirm shape. */
|
|
33
|
+
export interface DialogsPromptOptions extends DialogsOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Text the field starts with.
|
|
36
|
+
*
|
|
37
|
+
* @default ''
|
|
38
|
+
*/
|
|
39
|
+
defaultValue?: string | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Visible label of the text field.
|
|
42
|
+
*
|
|
43
|
+
* @default 'Value'
|
|
44
|
+
*/
|
|
45
|
+
label?: string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Placeholder shown in the empty field.
|
|
48
|
+
*
|
|
49
|
+
* @default undefined — no placeholder.
|
|
50
|
+
*/
|
|
51
|
+
placeholder?: string | undefined;
|
|
52
|
+
}
|
|
53
|
+
/** A queued dialog as the host renders it: resolved options plus the settle callback. */
|
|
54
|
+
export interface DialogsEntry extends DialogsPromptOptions {
|
|
55
|
+
/** Stable identity, for keying the rendered dialog. */
|
|
56
|
+
id: string;
|
|
57
|
+
/** Which canned dialog this is. */
|
|
58
|
+
kind: DialogsKind;
|
|
59
|
+
/** Resolved confirming label, never undefined. */
|
|
60
|
+
confirmLabel: string;
|
|
61
|
+
/** Resolved cancelling label, `undefined` for alerts. */
|
|
62
|
+
cancelLabel: string | undefined;
|
|
63
|
+
}
|
|
64
|
+
/** What settling an entry hands back: nothing for alert, a boolean for confirm, text or null for prompt. */
|
|
65
|
+
export type DialogsResult = void | boolean | string | null;
|
|
66
|
+
/** The queue every host renders from and every caller awaits on. */
|
|
67
|
+
export interface DialogsStore {
|
|
68
|
+
/** Subscribes to queue changes. Returns its own unsubscribe. */
|
|
69
|
+
subscribe: (listener: () => void) => () => void;
|
|
70
|
+
/** The entry currently shown, or `null` — a stable reference until the queue changes. */
|
|
71
|
+
getCurrent: () => DialogsEntry | null;
|
|
72
|
+
/** Shows a message with one button; resolves when it is dismissed. */
|
|
73
|
+
alert(options: DialogsOptions | string): Promise<void>;
|
|
74
|
+
/** Asks a yes/no question; resolves `true` on confirm, `false` on cancel or dismissal. */
|
|
75
|
+
confirm(options: DialogsOptions | string): Promise<boolean>;
|
|
76
|
+
/** Asks for one line of text; resolves the text on confirm, `null` on cancel or dismissal. */
|
|
77
|
+
prompt(options: DialogsPromptOptions | string): Promise<string | null>;
|
|
78
|
+
/** Resolves and removes the entry with `id`, then shows the next one. No-ops for an id that is not current. */
|
|
79
|
+
settle(id: string, result: DialogsResult): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates the dialog queue once per app. Hand it to the `Dialogs` host and call
|
|
83
|
+
* `alert`, `confirm` or `prompt` from anywhere; each returns a promise that
|
|
84
|
+
* settles with the user's answer.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* const dialogs = createDialogs();
|
|
89
|
+
* if (await dialogs.confirm({ title: 'Delete the project?', status: 'danger' })) remove();
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function createDialogs(): DialogsStore;
|
|
93
|
+
/** What cancelling or dismissing `entry` resolves with: `false` for confirm, `null` for prompt, nothing for alert. */
|
|
94
|
+
export declare function dialogsCancelResult(entry: DialogsEntry): DialogsResult;
|
|
95
|
+
/** What confirming `entry` resolves with: `true` for confirm, the typed `draft` for prompt, nothing for alert. */
|
|
96
|
+
export declare function dialogsConfirmResult(entry: DialogsEntry, draft: string): DialogsResult;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Which of the three canned dialogs an entry is. */
|
|
2
|
+
export type DialogsKind = 'alert' | 'confirm' | 'prompt';
|
|
3
|
+
/** Options common to alert, confirm and prompt; a bare string is the title. */
|
|
4
|
+
export interface DialogsOptions {
|
|
5
|
+
/** Heading of the dialog, rendered as its title and accessible name. */
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Body text under the title, rendered as the dialog's description.
|
|
9
|
+
*
|
|
10
|
+
* @default undefined — no description.
|
|
11
|
+
*/
|
|
12
|
+
description?: string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Label of the confirming button.
|
|
15
|
+
*
|
|
16
|
+
* @default 'OK' for alert and prompt, 'Confirm' for confirm
|
|
17
|
+
*/
|
|
18
|
+
confirmLabel?: string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Label of the cancelling button; alerts have none.
|
|
21
|
+
*
|
|
22
|
+
* @default 'Cancel'
|
|
23
|
+
*/
|
|
24
|
+
cancelLabel?: string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Severity rung the skin colours the dialog by, mirrored to `data-status`.
|
|
27
|
+
*
|
|
28
|
+
* @default undefined — the skin's own default.
|
|
29
|
+
*/
|
|
30
|
+
status?: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
/** Options for a prompt, which adds a single text field to the confirm shape. */
|
|
33
|
+
export interface DialogsPromptOptions extends DialogsOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Text the field starts with.
|
|
36
|
+
*
|
|
37
|
+
* @default ''
|
|
38
|
+
*/
|
|
39
|
+
defaultValue?: string | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Visible label of the text field.
|
|
42
|
+
*
|
|
43
|
+
* @default 'Value'
|
|
44
|
+
*/
|
|
45
|
+
label?: string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Placeholder shown in the empty field.
|
|
48
|
+
*
|
|
49
|
+
* @default undefined — no placeholder.
|
|
50
|
+
*/
|
|
51
|
+
placeholder?: string | undefined;
|
|
52
|
+
}
|
|
53
|
+
/** A queued dialog as the host renders it: resolved options plus the settle callback. */
|
|
54
|
+
export interface DialogsEntry extends DialogsPromptOptions {
|
|
55
|
+
/** Stable identity, for keying the rendered dialog. */
|
|
56
|
+
id: string;
|
|
57
|
+
/** Which canned dialog this is. */
|
|
58
|
+
kind: DialogsKind;
|
|
59
|
+
/** Resolved confirming label, never undefined. */
|
|
60
|
+
confirmLabel: string;
|
|
61
|
+
/** Resolved cancelling label, `undefined` for alerts. */
|
|
62
|
+
cancelLabel: string | undefined;
|
|
63
|
+
}
|
|
64
|
+
/** What settling an entry hands back: nothing for alert, a boolean for confirm, text or null for prompt. */
|
|
65
|
+
export type DialogsResult = void | boolean | string | null;
|
|
66
|
+
/** The queue every host renders from and every caller awaits on. */
|
|
67
|
+
export interface DialogsStore {
|
|
68
|
+
/** Subscribes to queue changes. Returns its own unsubscribe. */
|
|
69
|
+
subscribe: (listener: () => void) => () => void;
|
|
70
|
+
/** The entry currently shown, or `null` — a stable reference until the queue changes. */
|
|
71
|
+
getCurrent: () => DialogsEntry | null;
|
|
72
|
+
/** Shows a message with one button; resolves when it is dismissed. */
|
|
73
|
+
alert(options: DialogsOptions | string): Promise<void>;
|
|
74
|
+
/** Asks a yes/no question; resolves `true` on confirm, `false` on cancel or dismissal. */
|
|
75
|
+
confirm(options: DialogsOptions | string): Promise<boolean>;
|
|
76
|
+
/** Asks for one line of text; resolves the text on confirm, `null` on cancel or dismissal. */
|
|
77
|
+
prompt(options: DialogsPromptOptions | string): Promise<string | null>;
|
|
78
|
+
/** Resolves and removes the entry with `id`, then shows the next one. No-ops for an id that is not current. */
|
|
79
|
+
settle(id: string, result: DialogsResult): void;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates the dialog queue once per app. Hand it to the `Dialogs` host and call
|
|
83
|
+
* `alert`, `confirm` or `prompt` from anywhere; each returns a promise that
|
|
84
|
+
* settles with the user's answer.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* const dialogs = createDialogs();
|
|
89
|
+
* if (await dialogs.confirm({ title: 'Delete the project?', status: 'danger' })) remove();
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function createDialogs(): DialogsStore;
|
|
93
|
+
/** What cancelling or dismissing `entry` resolves with: `false` for confirm, `null` for prompt, nothing for alert. */
|
|
94
|
+
export declare function dialogsCancelResult(entry: DialogsEntry): DialogsResult;
|
|
95
|
+
/** What confirming `entry` resolves with: `true` for confirm, the typed `draft` for prompt, nothing for alert. */
|
|
96
|
+
export declare function dialogsConfirmResult(entry: DialogsEntry, draft: string): DialogsResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var d={alert:"OK",confirm:"Confirm",prompt:"OK"};function g(){let n=[],i=new Set,l=0;function s(){for(let e of i)e()}function o(e,t){let r=typeof t=="string"?{title:t}:t,a={...r,id:`skdx-dialogs-${++l}`,kind:e,confirmLabel:r.confirmLabel??d[e],cancelLabel:e==="alert"?void 0:r.cancelLabel??"Cancel"};return new Promise(u=>{n.push({entry:a,resolve:u}),n.length===1&&s()})}return{subscribe(e){return i.add(e),()=>{i.delete(e)}},getCurrent:()=>n[0]?.entry??null,alert:e=>o("alert",e).then(()=>{}),confirm:e=>o("confirm",e).then(t=>t===!0),prompt:e=>o("prompt",e).then(t=>typeof t=="string"?t:null),settle(e,t){if(n[0]?.entry.id!==e)return;let{resolve:r}=n.shift();r(t),s()}}}function f(n){if(n.kind==="confirm")return!1;if(n.kind==="prompt")return null}function p(n,i){if(n.kind==="confirm")return!0;if(n.kind==="prompt")return i}export{g as createDialogs,f as dialogsCancelResult,p as dialogsConfirmResult};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var l=(t,e)=>{for(var o in e)c(t,o,{get:e[o],enumerable:!0})},v=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let u of p(e))!d.call(t,u)&&u!==o&&c(t,u,{get:()=>e[u],enumerable:!(s=i(e,u))||s.enumerable});return t};var E=t=>v(c({},"__esModule",{value:!0}),t);var h={};l(h,{autoFocusRelay:()=>y,backdropPointerDown:()=>n.backdropPointerDown,dispatchAnswer:()=>m,dispatchAutoFocus:()=>r,dispatchEscapeKeyDown:()=>f,dispatchOutside:()=>w,escapeLayer:()=>n.escapeLayer,focusOnOpen:()=>n.focusOnOpen,focusOutsideTarget:()=>n.focusOutsideTarget,handleEscapeKeyDown:()=>n.handleEscapeKeyDown,nestedLayerContains:()=>n.nestedLayerContains,pushDismissLayer:()=>n.pushDismissLayer,topDismissLayer:()=>n.topDismissLayer,triggerContains:()=>n.triggerContains});module.exports=E(h);var n=require("./dismissal.cjs"),a={bubbles:!0,composed:!0,cancelable:!0};function f(t,e){let o=new CustomEvent("escape-key-down",{detail:e,...a});return t.dispatchEvent(o),!o.defaultPrevented}function m(t,e,o){let s=new CustomEvent(e,{detail:o,...a});return t.dispatchEvent(s),!s.defaultPrevented}function w(t,e,o){let s=new CustomEvent(e,{detail:o,...a}),u=new CustomEvent("interact-outside",{detail:o,...a});return t.dispatchEvent(u),u.defaultPrevented&&s.preventDefault(),t.dispatchEvent(s),!s.defaultPrevented}function r(t,e){let o=new CustomEvent(e,{detail:null,...a});return t.dispatchEvent(o),!o.defaultPrevented}function y(t){return e=>{let o=e.type;r(t,o)||e.preventDefault()}}0&&(module.exports={autoFocusRelay,backdropPointerDown,dispatchAnswer,dispatchAutoFocus,dispatchEscapeKeyDown,dispatchOutside,escapeLayer,focusOnOpen,focusOutsideTarget,handleEscapeKeyDown,nestedLayerContains,pushDismissLayer,topDismissLayer,triggerContains});
|
|
@@ -40,4 +40,4 @@ export declare function dispatchAutoFocus(host: HTMLElement, name: 'open-auto-fo
|
|
|
40
40
|
* @internal
|
|
41
41
|
*/
|
|
42
42
|
export declare function autoFocusRelay(host: HTMLElement): (event: CustomEvent<null>) => void;
|
|
43
|
-
export { backdropPointerDown, escapeLayer, focusOnOpen, focusOutsideTarget, handleEscapeKeyDown, pushDismissLayer, topDismissLayer, triggerContains, type DismissLayer, } from './dismissal.cjs';
|
|
43
|
+
export { backdropPointerDown, escapeLayer, focusOnOpen, focusOutsideTarget, handleEscapeKeyDown, nestedLayerContains, pushDismissLayer, topDismissLayer, triggerContains, type DismissLayer, } from './dismissal.cjs';
|
|
@@ -40,4 +40,4 @@ export declare function dispatchAutoFocus(host: HTMLElement, name: 'open-auto-fo
|
|
|
40
40
|
* @internal
|
|
41
41
|
*/
|
|
42
42
|
export declare function autoFocusRelay(host: HTMLElement): (event: CustomEvent<null>) => void;
|
|
43
|
-
export { backdropPointerDown, escapeLayer, focusOnOpen, focusOutsideTarget, handleEscapeKeyDown, pushDismissLayer, topDismissLayer, triggerContains, type DismissLayer, } from './dismissal.js';
|
|
43
|
+
export { backdropPointerDown, escapeLayer, focusOnOpen, focusOutsideTarget, handleEscapeKeyDown, nestedLayerContains, pushDismissLayer, topDismissLayer, triggerContains, type DismissLayer, } from './dismissal.js';
|
package/dist/internal/dismiss.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{backdropPointerDown as v,escapeLayer as E,focusOnOpen as f,focusOutsideTarget as m,handleEscapeKeyDown as w,pushDismissLayer as h,topDismissLayer as
|
|
1
|
+
import{backdropPointerDown as v,escapeLayer as E,focusOnOpen as f,focusOutsideTarget as m,handleEscapeKeyDown as w,nestedLayerContains as y,pushDismissLayer as h,topDismissLayer as L,triggerContains as b}from"./dismissal.js";var s={bubbles:!0,composed:!0,cancelable:!0};function c(t,n){let e=new CustomEvent("escape-key-down",{detail:n,...s});return t.dispatchEvent(e),!e.defaultPrevented}function r(t,n,e){let o=new CustomEvent(n,{detail:e,...s});return t.dispatchEvent(o),!o.defaultPrevented}function i(t,n,e){let o=new CustomEvent(n,{detail:e,...s}),u=new CustomEvent("interact-outside",{detail:e,...s});return t.dispatchEvent(u),u.defaultPrevented&&o.preventDefault(),t.dispatchEvent(o),!o.defaultPrevented}function a(t,n){let e=new CustomEvent(n,{detail:null,...s});return t.dispatchEvent(e),!e.defaultPrevented}function p(t){return n=>{let e=n.type;a(t,e)||n.preventDefault()}}export{p as autoFocusRelay,v as backdropPointerDown,r as dispatchAnswer,a as dispatchAutoFocus,c as dispatchEscapeKeyDown,i as dispatchOutside,E as escapeLayer,f as focusOnOpen,m as focusOutsideTarget,w as handleEscapeKeyDown,y as nestedLayerContains,h as pushDismissLayer,L as topDismissLayer,b as triggerContains};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var E=(e,n)=>{for(var t in n)i(e,t,{get:n[t],enumerable:!0})},b=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of y(n))!p.call(e,s)&&s!==t&&i(e,s,{get:()=>n[s],enumerable:!(o=m(n,s))||o.enumerable});return e};var v=e=>b(i({},"__esModule",{value:!0}),e);var C={};E(C,{autoFocusEvent:()=>h,backdropPointerDown:()=>O,escapeLayer:()=>d,focusOnOpen:()=>K,focusOutsideEvent:()=>w,focusOutsideTarget:()=>F,handleEscapeKeyDown:()=>L,nestedLayerContains:()=>D,pushDismissLayer:()=>x,topDismissLayer:()=>l,triggerContains:()=>N});module.exports=v(C);var u=[];function a(e,n){let t=n;for(;t;){if(e.contains(t))return!0;let o=t.getRootNode();t=o instanceof ShadowRoot?o.host:null}return!1}function f(e,n){return e.insideElements().some(t=>n.insideElements().some(o=>o&&t&&a(t,o)))}function x(e){return u.push(e),()=>{let n=u.indexOf(e);n!==-1&&u.splice(n,1)}}function D(e,n){let t=new Set([e]),o=!0;for(;o;){o=!1;for(let s of u)t.has(s)||[...t].some(r=>f(r,s))&&(t.add(s),o=!0)}return t.delete(e),[...t].some(s=>s.insideElements().some(r=>r&&a(r,n)))}function l(e=u){for(let n=e.length-1;n>=0;n--){let t=e[n];if(!e.some(o=>o!==t&&f(t,o)))return t}}function d(e){let n=e?u.filter(t=>t.insideElements().some(o=>o?.contains(e))):[];return l(n)??l()}function L(e,n,t){return e.key!=="Escape"||!t||d(e.target)!==n?!1:(t(e),e.preventDefault(),!0)}function h(e,n){if(!n)return!0;let t=new CustomEvent(e,{cancelable:!0,detail:null});return n(t),!t.defaultPrevented}function w(e){return new CustomEvent("focus-outside",{detail:e,cancelable:!0})}var c=0;function K(e){c+=1;try{e()}finally{queueMicrotask(()=>{c-=1})}}function F(e){if(c>0)return null;let n=e.target;return!n||n===document.body?null:n}function N(e,n){if(!e||!n)return!1;if(e.contains(n))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&t.host.contains(n)}function O(e,n){return!n||e.target!==n?null:e instanceof PointerEvent?e:new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY,screenX:e.screenX,screenY:e.screenY,button:e.button,buttons:e.buttons,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey})}0&&(module.exports={autoFocusEvent,backdropPointerDown,escapeLayer,focusOnOpen,focusOutsideEvent,focusOutsideTarget,handleEscapeKeyDown,nestedLayerContains,pushDismissLayer,topDismissLayer,triggerContains});
|
|
@@ -9,6 +9,13 @@ export interface DismissLayer {
|
|
|
9
9
|
}
|
|
10
10
|
/** Registers an open layer and returns its teardown; layers close out of order (a parent unmount takes its children), so the teardown removes by identity, not by position. */
|
|
11
11
|
export declare function pushDismissLayer(layer: DismissLayer): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `target` sits inside a layer that opened within `layer`: a portalled
|
|
14
|
+
* listbox or popover whose trigger lives in this panel. `contains()` cannot see
|
|
15
|
+
* it, so an outside-interaction check must ask the stack as well. Transitive,
|
|
16
|
+
* so a Select inside a Popover inside a Dialog still counts for the Dialog.
|
|
17
|
+
*/
|
|
18
|
+
export declare function nestedLayerContains(layer: DismissLayer, target: Node): boolean;
|
|
12
19
|
/** The layer nothing else is open inside: push order cannot rank nested layers, because a framework's effects run child-first. */
|
|
13
20
|
export declare function topDismissLayer(candidates?: readonly DismissLayer[]): DismissLayer | undefined;
|
|
14
21
|
/** The one layer an Escape belongs to: sibling non-modal layers can be open at once, so the layer holding the key's target answers, and the top layer only when none does. */
|
|
@@ -9,6 +9,13 @@ export interface DismissLayer {
|
|
|
9
9
|
}
|
|
10
10
|
/** Registers an open layer and returns its teardown; layers close out of order (a parent unmount takes its children), so the teardown removes by identity, not by position. */
|
|
11
11
|
export declare function pushDismissLayer(layer: DismissLayer): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Whether `target` sits inside a layer that opened within `layer`: a portalled
|
|
14
|
+
* listbox or popover whose trigger lives in this panel. `contains()` cannot see
|
|
15
|
+
* it, so an outside-interaction check must ask the stack as well. Transitive,
|
|
16
|
+
* so a Select inside a Popover inside a Dialog still counts for the Dialog.
|
|
17
|
+
*/
|
|
18
|
+
export declare function nestedLayerContains(layer: DismissLayer, target: Node): boolean;
|
|
12
19
|
/** The layer nothing else is open inside: push order cannot rank nested layers, because a framework's effects run child-first. */
|
|
13
20
|
export declare function topDismissLayer(candidates?: readonly DismissLayer[]): DismissLayer | undefined;
|
|
14
21
|
/** The one layer an Escape belongs to: sibling non-modal layers can be open at once, so the layer holding the key's target answers, and the top layer only when none does. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var s=[];function
|
|
1
|
+
var s=[];function c(e,n){let t=n;for(;t;){if(e.contains(t))return!0;let o=t.getRootNode();t=o instanceof ShadowRoot?o.host:null}return!1}function a(e,n){return e.insideElements().some(t=>n.insideElements().some(o=>o&&t&&c(t,o)))}function d(e){return s.push(e),()=>{let n=s.indexOf(e);n!==-1&&s.splice(n,1)}}function m(e,n){let t=new Set([e]),o=!0;for(;o;){o=!1;for(let u of s)t.has(u)||[...t].some(r=>a(r,u))&&(t.add(u),o=!0)}return t.delete(e),[...t].some(u=>u.insideElements().some(r=>r&&c(r,n)))}function l(e=s){for(let n=e.length-1;n>=0;n--){let t=e[n];if(!e.some(o=>o!==t&&a(t,o)))return t}}function f(e){let n=e?s.filter(t=>t.insideElements().some(o=>o?.contains(e))):[];return l(n)??l()}function y(e,n,t){return e.key!=="Escape"||!t||f(e.target)!==n?!1:(t(e),e.preventDefault(),!0)}function p(e,n){if(!n)return!0;let t=new CustomEvent(e,{cancelable:!0,detail:null});return n(t),!t.defaultPrevented}function E(e){return new CustomEvent("focus-outside",{detail:e,cancelable:!0})}var i=0;function b(e){i+=1;try{e()}finally{queueMicrotask(()=>{i-=1})}}function v(e){if(i>0)return null;let n=e.target;return!n||n===document.body?null:n}function x(e,n){if(!e||!n)return!1;if(e.contains(n))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&t.host.contains(n)}function D(e,n){return!n||e.target!==n?null:e instanceof PointerEvent?e:new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,composed:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY,screenX:e.screenX,screenY:e.screenY,button:e.button,buttons:e.buttons,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,altKey:e.altKey,metaKey:e.metaKey})}export{p as autoFocusEvent,D as backdropPointerDown,f as escapeLayer,b as focusOnOpen,E as focusOutsideEvent,v as focusOutsideTarget,y as handleEscapeKeyDown,m as nestedLayerContains,d as pushDismissLayer,l as topDismissLayer,x as triggerContains};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var f=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var q=(i,e)=>{for(var t in e)f(i,t,{get:e[t],enumerable:!0})},U=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of N(e))!H.call(i,n)&&n!==t&&f(i,n,{get:()=>e[n],enumerable:!(r=P(e,n))||r.enumerable});return i};var $=i=>U(f({},"__esModule",{value:!0}),i);var se={};q(se,{CHARACTER_COUNT_ANNOUNCE_DELAY_MS:()=>Y,ERROR_SUMMARY_RESCAN_EVENTS:()=>j,FIELD_CHARACTER_COUNT_ATTRIBUTE:()=>G,FIELD_CONTROL_ATTRIBUTE:()=>w,FIELD_CONTROL_SELECTOR:()=>I,FIELD_DESCRIPTION_ATTRIBUTE:()=>F,FIELD_ERROR_ATTRIBUTE:()=>L,FIELD_ERROR_SUMMARY_ATTRIBUTE:()=>D,FIELD_MESSAGE_ATTRIBUTE:()=>c,FIELD_NAME_ATTRIBUTE:()=>u,FIELD_PENDING_ATTRIBUTE:()=>v,FIELD_REQUIRED_INDICATOR_ATTRIBUTE:()=>z,FIELD_RESUBMIT_ATTRIBUTE:()=>h,FIELD_ROOT_ATTRIBUTE:()=>o,FIELD_VALIDITY_CHANGE_EVENT:()=>C,FORM_FIELD_ATTRIBUTE:()=>p,FORM_MESSAGE_ATTRIBUTE:()=>_,FieldController:()=>A,NATIVE_INVALID_FALLBACK_MESSAGE:()=>O,characterCountMessage:()=>M,characterCountVisible:()=>V,collectFieldErrors:()=>Z,errorSummaryScope:()=>X,findFieldControl:()=>x,focusFieldTarget:()=>ie,isFilled:()=>d,normalizeMessages:()=>b,readControlValue:()=>B,resetFields:()=>te,validateFields:()=>ee});module.exports=$(se);var C="validity-change",o="data-skdx-field",u="data-skdx-field-name",c="data-skdx-field-message",F="data-skdx-field-description",L="data-skdx-field-error",G="data-skdx-field-character-count",v="data-skdx-field-pending",h="data-skdx-field-resubmit",p="data-skdx-form-field",_="data-skdx-form-message",j=["validity-change","invalid","change","blur"],D="data-skdx-error-summary",Y=1e3;function M(i){let e=Math.abs(i),t=e===1?"character":"characters";return i<0?`You have ${e} ${t} too many`:`You have ${e} ${t} remaining`}function V(i,e,t=0){return t<=0?!0:i>=e*t/100}var O="This field is invalid.",w="data-skdx-field-control",I=[`[${w}]`,'input:not([type="hidden"])',"select","textarea",'[role="textbox"]','[role="searchbox"]','[role="combobox"]','[role="listbox"]','[role="radiogroup"]','[role="group"]','[role="slider"]','[role="spinbutton"]','[role="checkbox"]','[role="radio"]','[role="switch"]'].join(", "),z="data-skdx-field-required-indicator",K=new Set(["INPUT","SELECT","TEXTAREA"]),k=new Set(["radiogroup","group"]),Q=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function b(i){return i==null?[]:(Array.isArray(i)?i:[i]).filter(t=>typeof t=="string"&&t.trim()!=="")}function x(i){for(let e of Array.from(i.querySelectorAll(I)))if(e.getAttribute("aria-hidden")!=="true"&&e.closest(`[${o}]`)===i)return e;return null}function g(i,e){return E(i,o,e)}function E(i,e,t){for(let r of Array.from(i.querySelectorAll(t)))if(r.closest(`[${e}]`)===i)return r;return null}function B(i){if(!i)return;let e=i;return e.type==="checkbox"||e.type==="radio"?e.checked:"value"in i?e.value:i.querySelector('input[aria-hidden="true"]')?.value}function d(i){return i==null||i===!1||i===""?!1:!(Array.isArray(i)&&i.length===0)}function a(i,e,t){t?i.setAttribute(e,""):i.removeAttribute(e)}function R(i,...e){let t=i.split(/\s+/).filter(Boolean);for(let r of e)r&&!t.includes(r)&&t.push(r);return t.join(" ")}function X(i){return i.closest("form, skdx-form")??i.parentElement??i}function J(i){let e=x(i),r=g(i,`[${L}]`)?.textContent?.trim()||i.getAttribute(c)||i.getAttribute(u)||"";return!e?.id||!r?[]:[{id:e.id,message:r}]}function W(i){let e=E(i,p,I);if(!e?.id||e.getAttribute("aria-invalid")!=="true")return[];let r=E(i,p,`[${_}]:not([hidden])`)?.textContent?.trim()||i.getAttribute(u)||"";return r?[{id:e.id,message:r}]:[]}function Z(i){return Array.from(i.querySelectorAll(`[${o}][data-invalid], [${p}]`)).flatMap(t=>(t.hasAttribute(o)?J:W)(t))}var T="__skdxFieldCheckValidity",y="__skdxFieldReset";async function ee(i){let e=Array.from(i.querySelectorAll(`[${o}]`));return(await Promise.all(e.map(r=>r[T]?.()??Promise.resolve(!0)))).every(Boolean)}function te(i){for(let e of Array.from(i.querySelectorAll(`[${o}]`)))e[y]?.()}function ie(i,e=document){let t=e.getElementById(i);if(!t)return;let r=t.getAttribute("role"),s=(t.tagName==="FIELDSET"||r!==null&&k.has(r)?t.querySelector(Q):null)??t;s.focus(),s.scrollIntoView?.({block:"center"})}var A=class{constructor(e){this.options=e;this.props={};this.root=null;this.form=null;this.control=null;this.baseDescribedBy="";this.baseLabelledBy="";this.wroteLabelledBy=!1;this.wroteRequired=!1;this.wroteDisabled=!1;this.wroteGroupDisabled=!1;this.runToken=0;this.pending=!1;this.injected=[];this.custom=[];this.characterCount=null;this.awaitingSubmit=!1;this.handleInput=()=>{let e=this.isOverLimit(this.snapshot.count),t=this.readCount();this.update({dirty:!0,filled:d(this.resolveValue()),count:t,errors:this.composeErrors(t)}),this.scheduleCountAnnouncement(t,e),(this.props.mode==="change"||this.snapshot.errors.length>0)&&this.scheduleValidation()};this.handleFocusOut=()=>{let e=this.readCount();this.update({touched:!0,filled:d(this.resolveValue()),count:e,errors:this.composeErrors(e)});let t=this.validationTimer!==void 0;clearTimeout(this.validationTimer),this.validationTimer=void 0;let r=this.props.mode??"blur";(t||r==="blur"||this.snapshot.errors.length>0)&&this.runValidation()};this.handleSubmit=e=>{if(!this.form)return;let t=e.target;if(t!==this.form&&t?.closest?.("form")!==this.form||this.isEngineResubmit(e))return;this.markTouched();let r=this.runValidation({silent:this.hasErrorSummary()});if(S(r)){e.preventDefault(),this.awaitingSubmit=!0,Promise.resolve(r).then(()=>{this.awaitingSubmit&&(this.awaitingSubmit=!1,this.resubmitIfSettled())});return}(r.length>0||this.pending)&&e.preventDefault()};this.snapshot={controlId:"",errors:[],valid:!0,touched:!1,dirty:!1,filled:!1,count:0,validity:null}}get state(){return this.snapshot}setProps(e){let t=this.props.value;this.props=e;let r=b(e.errors??null),n=!re(this.injected,r);n&&(this.injected=r);let s=e.value!==t;if(!n&&!s)return;let l=this.readCount();this.update({count:l,filled:d(this.resolveValue()),errors:this.composeErrors(l)})}setCharacterCount(e){if((this.characterCount?.maxLength??null)===(e?.maxLength??null)&&(this.characterCount?.threshold??0)===(e?.threshold??0))return;this.characterCount=e;let r=this.readCount();this.update({count:r,errors:this.composeErrors(r)})}readCount(){let e=this.resolveValue();return typeof e=="string"?e.length:0}countMessage(e){return(this.props.getCharacterCountMessage??M)(e)}isOverLimit(e){return this.characterCount!==null&&e>this.characterCount.maxLength}composeErrors(e=this.snapshot.count){let t=[...this.injected,...this.custom];return this.characterCount&&this.isOverLimit(e)&&t.push(this.countMessage(this.characterCount.maxLength-e)),t}scheduleCountAnnouncement(e,t){let r=this.characterCount;if(!r)return;if(clearTimeout(this.announceTimer),this.isOverLimit(e)){t||this.options.announce(this.countMessage(r.maxLength-e),"assertive");return}if(!V(e,r.maxLength,r.threshold))return;let n=r.maxLength-e;this.announceTimer=setTimeout(()=>{this.options.announce(this.countMessage(n),"polite")},1e3)}connect(e){this.root=e,e.setAttribute(o,""),Object.defineProperty(e,T,{value:()=>this.validate(),configurable:!0,enumerable:!1,writable:!0}),Object.defineProperty(e,y,{value:()=>this.reset(),configurable:!0,enumerable:!1,writable:!0}),e.addEventListener("input",this.handleInput,!0),e.addEventListener("change",this.handleInput,!0),e.addEventListener("focusout",this.handleFocusOut,!0),this.form=e.closest("form"),this.form&&e.ownerDocument.addEventListener("submit",this.handleSubmit,!0),this.sync();let t=this.readCount();this.update({filled:d(this.resolveValue()),count:t,errors:this.composeErrors(t)})}disconnect(){clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.awaitingSubmit=!1;let e=this.root;e&&(e.removeEventListener("input",this.handleInput,!0),e.removeEventListener("change",this.handleInput,!0),e.removeEventListener("focusout",this.handleFocusOut,!0),this.form&&e.ownerDocument.removeEventListener("submit",this.handleSubmit,!0),delete e[T],delete e[y],this.root=null,this.form=null,this.control=null)}sync(){let e=this.root;if(!e)return;let t=x(e);t!==this.control&&(this.control=t,this.baseDescribedBy=t?.getAttribute("aria-describedby")??"",this.baseLabelledBy=t?.getAttribute("aria-labelledby")??"",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1);let{name:r}=this.props;r?e.setAttribute(u,r):e.removeAttribute(u);let n=this.snapshot.errors.join(" ");n?e.setAttribute(c,n):e.removeAttribute(c),this.applyStateAttributes(e),t&&(t.id||(t.id=this.options.controlId),t.id!==this.snapshot.controlId&&(this.snapshot={...this.snapshot,controlId:t.id,validity:this.readValidity()},this.options.onSnapshotChange(this.snapshot)),this.applyDescribedBy(e,t),this.snapshot.errors.length>0?t.setAttribute("aria-invalid","true"):t.removeAttribute("aria-invalid"),this.applyLabelledBy(e,t),this.applyConstraintState(t),this.applyStateAttributes(t))}applyDescribedBy(e,t){let r=g(e,`[${F}]`)!==null,n=g(e,`[${L}]`)!==null,s=R(this.baseDescribedBy,r?this.options.descriptionId:void 0,n?this.options.errorId:void 0);s?t.setAttribute("aria-describedby",s):t.removeAttribute("aria-describedby")}applyLabelledBy(e,t){let r=e.ownerDocument.getElementById(this.options.labelId)!==null;this.options.grouped&&r?(t.setAttribute("aria-labelledby",R(this.baseLabelledBy,this.options.labelId)),this.wroteLabelledBy=!0):this.wroteLabelledBy&&(this.baseLabelledBy?t.setAttribute("aria-labelledby",this.baseLabelledBy):t.removeAttribute("aria-labelledby"),this.wroteLabelledBy=!1)}applyConstraintState(e){let t=K.has(e.tagName),r=this.props.required===!0,n=this.props.disabled===!0;r?(t?e.setAttribute("required",""):e.setAttribute("aria-required","true"),this.wroteRequired=!0):this.wroteRequired&&(e.removeAttribute(t?"required":"aria-required"),this.wroteRequired=!1),n?(t?e.setAttribute("disabled",""):e.setAttribute("aria-disabled","true"),this.wroteDisabled=!0):this.wroteDisabled&&(e.removeAttribute(t?"disabled":"aria-disabled"),this.wroteDisabled=!1),t||this.applyGroupDisabled(e,n)}applyGroupDisabled(e,t){let r=e.getAttribute("role");if(!(!(e.tagName==="FIELDSET"||r!==null&&k.has(r))||!t&&!this.wroteGroupDisabled)){for(let s of e.querySelectorAll("input, select, textarea, button"))t?s.setAttribute("disabled",""):s.removeAttribute("disabled");this.wroteGroupDisabled=t}}validate(){return Promise.resolve(this.runValidation()).then(e=>e.length===0)}reset(){this.injected=[],this.custom=[],this.pending=!1,this.awaitingSubmit=!1,this.runToken++,clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.markPending(!1);let e=this.readCount();this.update({touched:!1,dirty:!1,count:e,filled:d(this.resolveValue()),errors:this.composeErrors(e)}),this.sync()}markTouched(){this.snapshot.touched||this.update({touched:!0})}applyStateAttributes(e){let{errors:t,touched:r,dirty:n,filled:s,count:l}=this.snapshot;a(e,"data-invalid",t.length>0),a(e,"data-valid",t.length===0),a(e,"data-touched",r),a(e,"data-dirty",n),a(e,"data-filled",s),a(e,"data-over-limit",this.isOverLimit(l)),a(e,"data-disabled",this.props.disabled===!0)}resolveValue(){return this.props.value!==void 0?this.props.value:B(this.control)}readValidity(){return this.control?.validity??null}markPending(e){this.root&&a(this.root,v,e)}nativeMessage(){let e=this.control;return!e?.validity||e.validity.valid?null:e.validationMessage||this.props.invalidMessage||O}runValidation(e={}){let t=++this.runToken,r=this.props.validate?.(this.resolveValue());return S(r)?(this.pending=!0,this.markPending(!0),Promise.resolve(r).then(n=>t!==this.runToken?this.snapshot.errors:(this.pending=!1,this.markPending(!1),this.commit(n,e)))):this.commit(r,e)}commit(e,t){if(this.custom=b(e),this.custom.length===0){let m=this.nativeMessage();m&&!this.injected.includes(m)&&(this.custom=[m])}let r=this.readCount(),n=this.composeErrors(r),s=this.snapshot.errors.length===0;this.update({errors:n,count:r,filled:d(this.resolveValue())});let l=n[0];return l&&s&&!t.silent&&this.options.announce(l,"assertive"),n}update(e){let t={...this.snapshot,...e,valid:!0,validity:this.readValidity()};t.valid=t.errors.length===0,!ne(this.snapshot,t)&&(this.snapshot=t,this.sync(),this.options.onSnapshotChange(t),this.root?.dispatchEvent(new CustomEvent(C,{bubbles:!0,composed:!0,detail:{valid:t.valid,errors:t.errors,touched:t.touched,dirty:t.dirty,filled:t.filled,count:t.count,validity:t.validity}})))}scheduleValidation(){clearTimeout(this.validationTimer),this.validationTimer=void 0;let e=this.props.mode==="change"?this.props.validationDebounceTime??0:0;if(e<=0){this.runValidation();return}this.validationTimer=setTimeout(()=>{this.validationTimer=void 0,this.runValidation()},e)}hasErrorSummary(){return this.form?.querySelector(`[${D}]`)!=null}isEngineResubmit(e){return this.form?.hasAttribute(h)?(this.snapshot.errors.length>0&&e.preventDefault(),!0):!1}resubmitIfSettled(){let e=this.form;if(!(!e||typeof e.requestSubmit!="function")&&!e.querySelector(`[${v}]`)&&!e.querySelector(`[${o}][data-invalid]`)){e.setAttribute(h,"");try{e.requestSubmit()}finally{e.removeAttribute(h)}}}};function S(i){return typeof i?.then=="function"}function re(i,e){return i.length===e.length&&i.every((t,r)=>t===e[r])}function ne(i,e){return i.controlId===e.controlId&&i.valid===e.valid&&i.touched===e.touched&&i.dirty===e.dirty&&i.filled===e.filled&&i.count===e.count&&i.validity===e.validity&&i.errors.length===e.errors.length&&i.errors.every((t,r)=>t===e.errors[r])}0&&(module.exports={CHARACTER_COUNT_ANNOUNCE_DELAY_MS,ERROR_SUMMARY_RESCAN_EVENTS,FIELD_CHARACTER_COUNT_ATTRIBUTE,FIELD_CONTROL_ATTRIBUTE,FIELD_CONTROL_SELECTOR,FIELD_DESCRIPTION_ATTRIBUTE,FIELD_ERROR_ATTRIBUTE,FIELD_ERROR_SUMMARY_ATTRIBUTE,FIELD_MESSAGE_ATTRIBUTE,FIELD_NAME_ATTRIBUTE,FIELD_PENDING_ATTRIBUTE,FIELD_REQUIRED_INDICATOR_ATTRIBUTE,FIELD_RESUBMIT_ATTRIBUTE,FIELD_ROOT_ATTRIBUTE,FIELD_VALIDITY_CHANGE_EVENT,FORM_FIELD_ATTRIBUTE,FORM_MESSAGE_ATTRIBUTE,FieldController,NATIVE_INVALID_FALLBACK_MESSAGE,characterCountMessage,characterCountVisible,collectFieldErrors,errorSummaryScope,findFieldControl,focusFieldTarget,isFilled,normalizeMessages,readControlValue,resetFields,validateFields});
|
|
1
|
+
"use strict";var m=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var q=(i,e)=>{for(var t in e)m(i,t,{get:e[t],enumerable:!0})},U=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of N(e))!H.call(i,n)&&n!==t&&m(i,n,{get:()=>e[n],enumerable:!(r=P(e,n))||r.enumerable});return i};var $=i=>U(m({},"__esModule",{value:!0}),i);var oe={};q(oe,{CHARACTER_COUNT_ANNOUNCE_DELAY_MS:()=>Y,ERROR_SUMMARY_RESCAN_EVENTS:()=>j,FIELD_CHARACTER_COUNT_ATTRIBUTE:()=>G,FIELD_CONTROL_ATTRIBUTE:()=>w,FIELD_CONTROL_SELECTOR:()=>x,FIELD_DESCRIPTION_ATTRIBUTE:()=>F,FIELD_ERROR_ATTRIBUTE:()=>L,FIELD_ERROR_SUMMARY_ATTRIBUTE:()=>D,FIELD_MESSAGE_ATTRIBUTE:()=>c,FIELD_NAME_ATTRIBUTE:()=>u,FIELD_PENDING_ATTRIBUTE:()=>v,FIELD_REQUIRED_INDICATOR_ATTRIBUTE:()=>K,FIELD_RESUBMIT_ATTRIBUTE:()=>h,FIELD_ROOT_ATTRIBUTE:()=>o,FIELD_VALIDITY_CHANGE_EVENT:()=>C,FORM_FIELD_ATTRIBUTE:()=>p,FORM_MESSAGE_ATTRIBUTE:()=>_,FieldController:()=>A,NATIVE_INVALID_FALLBACK_MESSAGE:()=>O,characterCountMessage:()=>M,characterCountVisible:()=>V,collectFieldErrors:()=>ee,errorSummaryScope:()=>J,findFieldControl:()=>I,focusFieldTarget:()=>re,isFilled:()=>d,joinFieldMessages:()=>z,normalizeMessages:()=>b,readControlValue:()=>B,resetFields:()=>ie,validateFields:()=>te});module.exports=$(oe);var C="validity-change",o="data-skdx-field",u="data-skdx-field-name",c="data-skdx-field-message",F="data-skdx-field-description",L="data-skdx-field-error",G="data-skdx-field-character-count",v="data-skdx-field-pending",h="data-skdx-field-resubmit",p="data-skdx-form-field",_="data-skdx-form-message",j=["validity-change","invalid","change","blur"],D="data-skdx-error-summary",Y=1e3;function M(i){let e=Math.abs(i),t=e===1?"character":"characters";return i<0?`You have ${e} ${t} too many`:`You have ${e} ${t} remaining`}function V(i,e,t=0){return t<=0?!0:i>=e*t/100}function z(i){return i.map((e,t)=>t===i.length-1||/[.!?]$/.test(e)?e:`${e}.`).join(" ")}var O="This field is invalid.",w="data-skdx-field-control",x=[`[${w}]`,'input:not([type="hidden"])',"select","textarea",'[role="textbox"]','[role="searchbox"]','[role="combobox"]','[role="listbox"]','[role="radiogroup"]','[role="group"]','[role="slider"]','[role="spinbutton"]','[role="checkbox"]','[role="radio"]','[role="switch"]'].join(", "),K="data-skdx-field-required-indicator",Q=new Set(["INPUT","SELECT","TEXTAREA"]),k=new Set(["radiogroup","group"]),X=['input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","button:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function b(i){return i==null?[]:(Array.isArray(i)?i:[i]).filter(t=>typeof t=="string"&&t.trim()!=="")}function I(i){for(let e of Array.from(i.querySelectorAll(x)))if(e.getAttribute("aria-hidden")!=="true"&&e.closest(`[${o}]`)===i)return e;return null}function g(i,e){return E(i,o,e)}function E(i,e,t){for(let r of Array.from(i.querySelectorAll(t)))if(r.closest(`[${e}]`)===i)return r;return null}function B(i){if(!i)return;let e=i;return e.type==="checkbox"||e.type==="radio"?e.checked:"value"in i?e.value:i.querySelector('input[aria-hidden="true"]')?.value}function d(i){return i==null||i===!1||i===""?!1:!(Array.isArray(i)&&i.length===0)}function a(i,e,t){t?i.setAttribute(e,""):i.removeAttribute(e)}function R(i,...e){let t=i.split(/\s+/).filter(Boolean);for(let r of e)r&&!t.includes(r)&&t.push(r);return t.join(" ")}function J(i){return i.closest("form, skdx-form")??i.parentElement??i}function W(i){let e=I(i),r=g(i,`[${L}]`)?.textContent?.trim()||i.getAttribute(c)||i.getAttribute(u)||"";return!e?.id||!r?[]:[{id:e.id,message:r}]}function Z(i){let e=E(i,p,x);if(!e?.id||e.getAttribute("aria-invalid")!=="true")return[];let r=E(i,p,`[${_}]:not([hidden])`)?.textContent?.trim()||i.getAttribute(u)||"";return r?[{id:e.id,message:r}]:[]}function ee(i){return Array.from(i.querySelectorAll(`[${o}][data-invalid], [${p}]`)).flatMap(t=>(t.hasAttribute(o)?W:Z)(t))}var T="__skdxFieldCheckValidity",y="__skdxFieldReset";async function te(i){let e=Array.from(i.querySelectorAll(`[${o}]`));return(await Promise.all(e.map(r=>r[T]?.()??Promise.resolve(!0)))).every(Boolean)}function ie(i){for(let e of Array.from(i.querySelectorAll(`[${o}]`)))e[y]?.()}function re(i,e=document){let t=e.getElementById(i);if(!t)return;let r=t.getAttribute("role"),s=(t.tagName==="FIELDSET"||r!==null&&k.has(r)?t.querySelector(X):null)??t;s.focus(),s.scrollIntoView?.({block:"center"})}var A=class{constructor(e){this.options=e;this.props={};this.root=null;this.form=null;this.control=null;this.baseDescribedBy="";this.baseLabelledBy="";this.wroteLabelledBy=!1;this.wroteRequired=!1;this.wroteDisabled=!1;this.wroteGroupDisabled=!1;this.runToken=0;this.pending=!1;this.injected=[];this.custom=[];this.characterCount=null;this.awaitingSubmit=!1;this.handleInput=()=>{let e=this.isOverLimit(this.snapshot.count),t=this.readCount();this.update({dirty:!0,filled:d(this.resolveValue()),count:t,errors:this.composeErrors(t)}),this.scheduleCountAnnouncement(t,e),(this.props.mode==="change"||this.snapshot.errors.length>0)&&this.scheduleValidation()};this.handleFocusOut=()=>{let e=this.readCount();this.update({touched:!0,filled:d(this.resolveValue()),count:e,errors:this.composeErrors(e)});let t=this.validationTimer!==void 0;clearTimeout(this.validationTimer),this.validationTimer=void 0;let r=this.props.mode??"blur";(t||r==="blur"||this.snapshot.errors.length>0)&&this.runValidation()};this.handleSubmit=e=>{if(!this.form)return;let t=e.target;if(t!==this.form&&t?.closest?.("form")!==this.form||this.isEngineResubmit(e))return;this.markTouched();let r=this.runValidation({silent:this.hasErrorSummary()});if(S(r)){e.preventDefault(),this.awaitingSubmit=!0,Promise.resolve(r).then(()=>{this.awaitingSubmit&&(this.awaitingSubmit=!1,this.resubmitIfSettled())});return}(r.length>0||this.pending)&&e.preventDefault()};this.snapshot={controlId:"",errors:[],valid:!0,touched:!1,dirty:!1,filled:!1,count:0,validity:null}}get state(){return this.snapshot}setProps(e){let t=this.props.value;this.props=e;let r=b(e.errors??null),n=!ne(this.injected,r);n&&(this.injected=r);let s=e.value!==t;if(!n&&!s)return;let l=this.readCount();this.update({count:l,filled:d(this.resolveValue()),errors:this.composeErrors(l)})}setCharacterCount(e){if((this.characterCount?.maxLength??null)===(e?.maxLength??null)&&(this.characterCount?.threshold??0)===(e?.threshold??0))return;this.characterCount=e;let r=this.readCount();this.update({count:r,errors:this.composeErrors(r)})}readCount(){let e=this.resolveValue();return typeof e=="string"?e.length:0}countMessage(e){return(this.props.getCharacterCountMessage??M)(e)}isOverLimit(e){return this.characterCount!==null&&e>this.characterCount.maxLength}composeErrors(e=this.snapshot.count){let t=[...this.injected,...this.custom];return this.characterCount&&this.isOverLimit(e)&&t.push(this.countMessage(this.characterCount.maxLength-e)),t}scheduleCountAnnouncement(e,t){let r=this.characterCount;if(!r)return;if(clearTimeout(this.announceTimer),this.isOverLimit(e)){t||this.options.announce(this.countMessage(r.maxLength-e),"assertive");return}if(!V(e,r.maxLength,r.threshold))return;let n=r.maxLength-e;this.announceTimer=setTimeout(()=>{this.options.announce(this.countMessage(n),"polite")},1e3)}connect(e){this.root=e,e.setAttribute(o,""),Object.defineProperty(e,T,{value:()=>this.validate(),configurable:!0,enumerable:!1,writable:!0}),Object.defineProperty(e,y,{value:()=>this.reset(),configurable:!0,enumerable:!1,writable:!0}),e.addEventListener("input",this.handleInput,!0),e.addEventListener("change",this.handleInput,!0),e.addEventListener("focusout",this.handleFocusOut,!0),this.form=e.closest("form"),this.form&&e.ownerDocument.addEventListener("submit",this.handleSubmit,!0),this.sync();let t=this.readCount();this.update({filled:d(this.resolveValue()),count:t,errors:this.composeErrors(t)})}disconnect(){clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.awaitingSubmit=!1;let e=this.root;e&&(e.removeEventListener("input",this.handleInput,!0),e.removeEventListener("change",this.handleInput,!0),e.removeEventListener("focusout",this.handleFocusOut,!0),this.form&&e.ownerDocument.removeEventListener("submit",this.handleSubmit,!0),delete e[T],delete e[y],this.root=null,this.form=null,this.control=null)}sync(){let e=this.root;if(!e)return;let t=I(e);t!==this.control&&(this.control=t,this.baseDescribedBy=t?.getAttribute("aria-describedby")??"",this.baseLabelledBy=t?.getAttribute("aria-labelledby")??"",this.wroteLabelledBy=!1,this.wroteRequired=!1,this.wroteDisabled=!1,this.wroteGroupDisabled=!1);let{name:r}=this.props;r?e.setAttribute(u,r):e.removeAttribute(u);let n=this.snapshot.errors.join(" ");n?e.setAttribute(c,n):e.removeAttribute(c),this.applyStateAttributes(e),t&&(t.id||(t.id=this.options.controlId),t.id!==this.snapshot.controlId&&(this.snapshot={...this.snapshot,controlId:t.id,validity:this.readValidity()},this.options.onSnapshotChange(this.snapshot)),this.applyDescribedBy(e,t),this.snapshot.errors.length>0?t.setAttribute("aria-invalid","true"):t.removeAttribute("aria-invalid"),this.applyLabelledBy(e,t),this.applyConstraintState(t),this.applyStateAttributes(t))}applyDescribedBy(e,t){let r=g(e,`[${F}]`)!==null,n=g(e,`[${L}]`)!==null,s=R(this.baseDescribedBy,r?this.options.descriptionId:void 0,n?this.options.errorId:void 0);s?t.setAttribute("aria-describedby",s):t.removeAttribute("aria-describedby")}applyLabelledBy(e,t){let r=e.ownerDocument.getElementById(this.options.labelId)!==null;this.options.grouped&&r?(t.setAttribute("aria-labelledby",R(this.baseLabelledBy,this.options.labelId)),this.wroteLabelledBy=!0):this.wroteLabelledBy&&(this.baseLabelledBy?t.setAttribute("aria-labelledby",this.baseLabelledBy):t.removeAttribute("aria-labelledby"),this.wroteLabelledBy=!1)}applyConstraintState(e){let t=Q.has(e.tagName),r=this.props.required===!0,n=this.props.disabled===!0;r?(t?e.setAttribute("required",""):e.setAttribute("aria-required","true"),this.wroteRequired=!0):this.wroteRequired&&(e.removeAttribute(t?"required":"aria-required"),this.wroteRequired=!1),n?(t?e.setAttribute("disabled",""):e.setAttribute("aria-disabled","true"),this.wroteDisabled=!0):this.wroteDisabled&&(e.removeAttribute(t?"disabled":"aria-disabled"),this.wroteDisabled=!1),t||this.applyGroupDisabled(e,n)}applyGroupDisabled(e,t){let r=e.getAttribute("role");if(!(!(e.tagName==="FIELDSET"||r!==null&&k.has(r))||!t&&!this.wroteGroupDisabled)){for(let s of e.querySelectorAll("input, select, textarea, button"))t?s.setAttribute("disabled",""):s.removeAttribute("disabled");this.wroteGroupDisabled=t}}validate(){return Promise.resolve(this.runValidation()).then(e=>e.length===0)}reset(){this.injected=[],this.custom=[],this.pending=!1,this.awaitingSubmit=!1,this.runToken++,clearTimeout(this.announceTimer),clearTimeout(this.validationTimer),this.validationTimer=void 0,this.markPending(!1);let e=this.readCount();this.update({touched:!1,dirty:!1,count:e,filled:d(this.resolveValue()),errors:this.composeErrors(e)}),this.sync()}markTouched(){this.snapshot.touched||this.update({touched:!0})}applyStateAttributes(e){let{errors:t,touched:r,dirty:n,filled:s,count:l}=this.snapshot;a(e,"data-invalid",t.length>0),a(e,"data-valid",t.length===0),a(e,"data-touched",r),a(e,"data-dirty",n),a(e,"data-filled",s),a(e,"data-over-limit",this.isOverLimit(l)),a(e,"data-disabled",this.props.disabled===!0)}resolveValue(){return this.props.value!==void 0?this.props.value:B(this.control)}readValidity(){return this.control?.validity??null}markPending(e){this.root&&a(this.root,v,e)}nativeMessage(){let e=this.control;return!e?.validity||e.validity.valid?null:e.validationMessage||this.props.invalidMessage||O}runValidation(e={}){let t=++this.runToken,r=this.props.validate?.(this.resolveValue());return S(r)?(this.pending=!0,this.markPending(!0),Promise.resolve(r).then(n=>t!==this.runToken?this.snapshot.errors:(this.pending=!1,this.markPending(!1),this.commit(n,e)))):this.commit(r,e)}commit(e,t){if(this.custom=b(e),this.custom.length===0){let f=this.nativeMessage();f&&!this.injected.includes(f)&&(this.custom=[f])}let r=this.readCount(),n=this.composeErrors(r),s=this.snapshot.errors.length===0;this.update({errors:n,count:r,filled:d(this.resolveValue())});let l=n[0];return l&&s&&!t.silent&&this.options.announce(l,"assertive"),n}update(e){let t={...this.snapshot,...e,valid:!0,validity:this.readValidity()};t.valid=t.errors.length===0,!se(this.snapshot,t)&&(this.snapshot=t,this.sync(),this.options.onSnapshotChange(t),this.root?.dispatchEvent(new CustomEvent(C,{bubbles:!0,composed:!0,detail:{valid:t.valid,errors:t.errors,touched:t.touched,dirty:t.dirty,filled:t.filled,count:t.count,validity:t.validity}})))}scheduleValidation(){clearTimeout(this.validationTimer),this.validationTimer=void 0;let e=this.props.mode==="change"?this.props.validationDebounceTime??0:0;if(e<=0){this.runValidation();return}this.validationTimer=setTimeout(()=>{this.validationTimer=void 0,this.runValidation()},e)}hasErrorSummary(){return this.form?.querySelector(`[${D}]`)!=null}isEngineResubmit(e){return this.form?.hasAttribute(h)?(this.snapshot.errors.length>0&&e.preventDefault(),!0):!1}resubmitIfSettled(){let e=this.form;if(!(!e||typeof e.requestSubmit!="function")&&!e.querySelector(`[${v}]`)&&!e.querySelector(`[${o}][data-invalid]`)){e.setAttribute(h,"");try{e.requestSubmit()}finally{e.removeAttribute(h)}}}};function S(i){return typeof i?.then=="function"}function ne(i,e){return i.length===e.length&&i.every((t,r)=>t===e[r])}function se(i,e){return i.controlId===e.controlId&&i.valid===e.valid&&i.touched===e.touched&&i.dirty===e.dirty&&i.filled===e.filled&&i.count===e.count&&i.validity===e.validity&&i.errors.length===e.errors.length&&i.errors.every((t,r)=>t===e.errors[r])}0&&(module.exports={CHARACTER_COUNT_ANNOUNCE_DELAY_MS,ERROR_SUMMARY_RESCAN_EVENTS,FIELD_CHARACTER_COUNT_ATTRIBUTE,FIELD_CONTROL_ATTRIBUTE,FIELD_CONTROL_SELECTOR,FIELD_DESCRIPTION_ATTRIBUTE,FIELD_ERROR_ATTRIBUTE,FIELD_ERROR_SUMMARY_ATTRIBUTE,FIELD_MESSAGE_ATTRIBUTE,FIELD_NAME_ATTRIBUTE,FIELD_PENDING_ATTRIBUTE,FIELD_REQUIRED_INDICATOR_ATTRIBUTE,FIELD_RESUBMIT_ATTRIBUTE,FIELD_ROOT_ATTRIBUTE,FIELD_VALIDITY_CHANGE_EVENT,FORM_FIELD_ATTRIBUTE,FORM_MESSAGE_ATTRIBUTE,FieldController,NATIVE_INVALID_FALLBACK_MESSAGE,characterCountMessage,characterCountVisible,collectFieldErrors,errorSummaryScope,findFieldControl,focusFieldTarget,isFilled,joinFieldMessages,normalizeMessages,readControlValue,resetFields,validateFields});
|