@spectral_labs/ui 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion/__tests__/AccordionTest.svelte +4 -4
- package/dist/components/accordion/components/accordion-content.svelte +3 -3
- package/dist/components/accordion/components/accordion-item.svelte +1 -1
- package/dist/components/accordion/components/accordion-root.svelte +5 -7
- package/dist/components/accordion/components/accordion-root.svelte.d.ts.map +1 -1
- package/dist/components/accordion/components/accordion-trigger.svelte +12 -12
- package/dist/components/alert-dialog/__tests__/AlertDialogTest.svelte +6 -3
- package/dist/components/alert-dialog/__tests__/alert-dialog.a11y.test.js +9 -2
- package/dist/components/alert-dialog/components/alert-dialog-action.svelte +2 -2
- package/dist/components/alert-dialog/components/alert-dialog-cancel.svelte +2 -2
- package/dist/components/alert-dialog/components/alert-dialog-content.svelte +15 -11
- package/dist/components/alert-dialog/components/alert-dialog-content.svelte.d.ts.map +1 -1
- package/dist/components/alert-dialog/components/alert-dialog-description.svelte +1 -1
- package/dist/components/alert-dialog/components/alert-dialog-overlay.svelte +8 -6
- package/dist/components/alert-dialog/components/alert-dialog-overlay.svelte.d.ts.map +1 -1
- package/dist/components/alert-dialog/components/alert-dialog-root.svelte +7 -2
- package/dist/components/alert-dialog/components/alert-dialog-root.svelte.d.ts.map +1 -1
- package/dist/components/alert-dialog/components/alert-dialog-title.svelte +6 -2
- package/dist/components/alert-dialog/components/alert-dialog-trigger.svelte +3 -3
- package/dist/components/app-bar/app-bar.svelte +12 -12
- package/dist/components/aspect-ratio/aspect-ratio.svelte +2 -2
- package/dist/components/avatar/avatar.svelte +6 -6
- package/dist/components/badge/badge.svelte +49 -13
- package/dist/components/badge/types.d.ts.map +1 -1
- package/dist/components/bottom-sheet/__tests__/BottomSheetTest.svelte +16 -6
- package/dist/components/bottom-sheet/components/bottom-sheet-root.svelte +20 -20
- package/dist/components/breadcrumb/breadcrumb-item.svelte +2 -2
- package/dist/components/breadcrumb/breadcrumb-link.svelte +6 -2
- package/dist/components/breadcrumb/breadcrumb-link.svelte.d.ts.map +1 -1
- package/dist/components/breadcrumb/breadcrumb-list.svelte +2 -2
- package/dist/components/breadcrumb/breadcrumb-page.svelte +3 -3
- package/dist/components/breadcrumb/breadcrumb-separator.svelte +12 -4
- package/dist/components/breadcrumb/breadcrumb.svelte +2 -2
- package/dist/components/button/button.svelte +1 -1
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/calendar/__tests__/CalendarTest.svelte +1 -1
- package/dist/components/calendar/calendar.svelte.d.ts.map +1 -1
- package/dist/components/calendar/calendar.svelte.js +89 -33
- package/dist/components/calendar/components/calendar-grid.svelte +16 -15
- package/dist/components/calendar/components/calendar-grid.svelte.d.ts.map +1 -1
- package/dist/components/calendar/components/calendar-header.svelte +1 -1
- package/dist/components/calendar/components/calendar-heading.svelte +2 -2
- package/dist/components/calendar/components/calendar-next-button.svelte +14 -6
- package/dist/components/calendar/components/calendar-prev-button.svelte +14 -6
- package/dist/components/calendar/components/calendar-root.svelte +50 -22
- package/dist/components/calendar/components/calendar-root.svelte.d.ts.map +1 -1
- package/dist/components/card/card.svelte +1 -1
- package/dist/components/checkbox/checkbox.svelte +23 -27
- package/dist/components/checkbox/checkbox.svelte.d.ts.map +1 -1
- package/dist/components/chips/chip-group.svelte +8 -13
- package/dist/components/chips/chip-group.svelte.d.ts.map +1 -1
- package/dist/components/chips/chips.svelte +32 -39
- package/dist/components/chips/chips.svelte.d.ts.map +1 -1
- package/dist/components/chips/types.d.ts +5 -5
- package/dist/components/chips/types.d.ts.map +1 -1
- package/dist/components/collapsible/__tests__/CollapsibleTest.svelte +1 -1
- package/dist/components/collapsible/components/collapsible-content.svelte +8 -6
- package/dist/components/collapsible/components/collapsible-content.svelte.d.ts.map +1 -1
- package/dist/components/collapsible/components/collapsible-root.svelte +2 -3
- package/dist/components/collapsible/components/collapsible-root.svelte.d.ts.map +1 -1
- package/dist/components/collapsible/components/collapsible-trigger.svelte +2 -2
- package/dist/components/combobox/__tests__/ComboboxTest.svelte +5 -5
- package/dist/components/combobox/components/combobox-content.svelte +4 -6
- package/dist/components/combobox/components/combobox-content.svelte.d.ts.map +1 -1
- package/dist/components/combobox/components/combobox-input.svelte +10 -15
- package/dist/components/combobox/components/combobox-input.svelte.d.ts.map +1 -1
- package/dist/components/combobox/components/combobox-item.svelte +5 -8
- package/dist/components/combobox/components/combobox-item.svelte.d.ts.map +1 -1
- package/dist/components/combobox/components/combobox-root.svelte +13 -18
- package/dist/components/combobox/components/combobox-root.svelte.d.ts.map +1 -1
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/combobox/index.d.ts.map +1 -1
- package/dist/components/command/__tests__/CommandTest.svelte +19 -10
- package/dist/components/command/__tests__/command.a11y.test.js +1 -1
- package/dist/components/command/command.svelte.d.ts.map +1 -1
- package/dist/components/command/command.svelte.js +20 -10
- package/dist/components/command/components/command-empty.svelte +2 -2
- package/dist/components/command/components/command-group.svelte +6 -4
- package/dist/components/command/components/command-group.svelte.d.ts.map +1 -1
- package/dist/components/command/components/command-input.svelte +27 -14
- package/dist/components/command/components/command-input.svelte.d.ts.map +1 -1
- package/dist/components/command/components/command-item.svelte +12 -7
- package/dist/components/command/components/command-item.svelte.d.ts.map +1 -1
- package/dist/components/command/components/command-list.svelte +2 -7
- package/dist/components/command/components/command-root.svelte +18 -10
- package/dist/components/command/components/command-root.svelte.d.ts.map +1 -1
- package/dist/components/command/components/command-separator.svelte +2 -2
- package/dist/components/context-menu/__tests__/ContextMenuNonInteractiveTest.svelte +2 -4
- package/dist/components/context-menu/__tests__/ContextMenuTest.svelte +1 -1
- package/dist/components/context-menu/__tests__/context-menu.test.svelte.js +4 -1
- package/dist/components/context-menu/components/context-menu-content.svelte +7 -10
- package/dist/components/context-menu/components/context-menu-content.svelte.d.ts.map +1 -1
- package/dist/components/context-menu/components/context-menu-root.svelte +7 -2
- package/dist/components/context-menu/components/context-menu-root.svelte.d.ts.map +1 -1
- package/dist/components/context-menu/components/context-menu-trigger.svelte +13 -13
- package/dist/components/context-menu/index.d.ts +1 -1
- package/dist/components/context-menu/index.d.ts.map +1 -1
- package/dist/components/context-menu/types.d.ts +1 -1
- package/dist/components/context-menu/types.d.ts.map +1 -1
- package/dist/components/date-field/__tests__/DateFieldTest.svelte +1 -1
- package/dist/components/date-field/__tests__/date-field.test.svelte.js +5 -5
- package/dist/components/date-field/components/date-field-root.svelte +55 -55
- package/dist/components/date-field/types.d.ts +14 -14
- package/dist/components/date-field/types.d.ts.map +1 -1
- package/dist/components/date-picker/__tests__/DatePickerTest.svelte +2 -8
- package/dist/components/date-picker/__tests__/date-picker.test.svelte.js +10 -9
- package/dist/components/date-picker/components/date-picker-root.svelte +38 -31
- package/dist/components/date-picker/components/date-picker-root.svelte.d.ts.map +1 -1
- package/dist/components/date-range-field/__tests__/DateRangeFieldTest.svelte +1 -1
- package/dist/components/date-range-field/__tests__/date-range-field.test.svelte.js +3 -3
- package/dist/components/date-range-field/components/date-range-field-root.svelte +5 -5
- package/dist/components/date-range-picker/__tests__/DateRangePickerTest.svelte +2 -7
- package/dist/components/date-range-picker/__tests__/date-range-picker.test.svelte.js +11 -11
- package/dist/components/date-range-picker/components/date-range-picker-root.svelte +40 -32
- package/dist/components/date-range-picker/components/date-range-picker-root.svelte.d.ts.map +1 -1
- package/dist/components/dialog/__tests__/DialogTest.svelte +8 -3
- package/dist/components/dialog/components/dialog-close.svelte +2 -2
- package/dist/components/dialog/components/dialog-content.svelte +16 -13
- package/dist/components/dialog/components/dialog-content.svelte.d.ts.map +1 -1
- package/dist/components/dialog/components/dialog-description.svelte +1 -1
- package/dist/components/dialog/components/dialog-overlay.svelte +8 -6
- package/dist/components/dialog/components/dialog-overlay.svelte.d.ts.map +1 -1
- package/dist/components/dialog/components/dialog-root.svelte +4 -2
- package/dist/components/dialog/components/dialog-root.svelte.d.ts.map +1 -1
- package/dist/components/dialog/components/dialog-title.svelte +6 -2
- package/dist/components/dialog/components/dialog-trigger.svelte +3 -3
- package/dist/components/drop-zone/drop-zone.svelte +12 -18
- package/dist/components/drop-zone/drop-zone.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/__tests__/DropdownMenuTest.svelte +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-checkbox-item.svelte +19 -8
- package/dist/components/dropdown-menu/components/dropdown-menu-checkbox-item.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-content.svelte +8 -12
- package/dist/components/dropdown-menu/components/dropdown-menu-content.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-item.svelte +4 -6
- package/dist/components/dropdown-menu/components/dropdown-menu-item.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-label.svelte +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-root.svelte +7 -2
- package/dist/components/dropdown-menu/components/dropdown-menu-root.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-separator.svelte +2 -2
- package/dist/components/dropdown-menu/components/dropdown-menu-sub-content.svelte +5 -8
- package/dist/components/dropdown-menu/components/dropdown-menu-sub-content.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-sub-trigger.svelte +19 -14
- package/dist/components/dropdown-menu/components/dropdown-menu-sub-trigger.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-sub.svelte +19 -7
- package/dist/components/dropdown-menu/components/dropdown-menu-sub.svelte.d.ts.map +1 -1
- package/dist/components/dropdown-menu/components/dropdown-menu-trigger.svelte +5 -7
- package/dist/components/dropdown-menu/components/dropdown-menu-trigger.svelte.d.ts.map +1 -1
- package/dist/components/empty-state/empty-state.svelte +6 -6
- package/dist/components/fab/fab.svelte +2 -2
- package/dist/components/field/__tests__/FieldTest.svelte +2 -2
- package/dist/components/field/field-description.svelte +1 -1
- package/dist/components/field/field-error.svelte +2 -2
- package/dist/components/field/field-group.svelte +1 -1
- package/dist/components/field/field-label.svelte +2 -2
- package/dist/components/field/field-separator.svelte +4 -4
- package/dist/components/field/field.svelte +1 -1
- package/dist/components/grid-list/__tests__/GridListTest.svelte +2 -2
- package/dist/components/grid-list/components/grid-list-item.svelte +11 -17
- package/dist/components/grid-list/components/grid-list-item.svelte.d.ts.map +1 -1
- package/dist/components/grid-list/components/grid-list-root.svelte +32 -35
- package/dist/components/grid-list/components/grid-list-root.svelte.d.ts.map +1 -1
- package/dist/components/grid-list/grid-list.svelte.d.ts.map +1 -1
- package/dist/components/grid-list/grid-list.svelte.js +25 -15
- package/dist/components/grid-list/index.d.ts +1 -1
- package/dist/components/grid-list/index.d.ts.map +1 -1
- package/dist/components/grid-list/types.d.ts +21 -21
- package/dist/components/grid-list/types.d.ts.map +1 -1
- package/dist/components/hover-card/__tests__/HoverCardTest.svelte +3 -3
- package/dist/components/hover-card/components/hover-card-content.svelte +26 -12
- package/dist/components/hover-card/components/hover-card-content.svelte.d.ts.map +1 -1
- package/dist/components/hover-card/components/hover-card-root.svelte +10 -4
- package/dist/components/hover-card/components/hover-card-root.svelte.d.ts.map +1 -1
- package/dist/components/hover-card/components/hover-card-trigger.svelte +3 -4
- package/dist/components/hover-card/components/hover-card-trigger.svelte.d.ts.map +1 -1
- package/dist/components/indicator/indicator.svelte +5 -5
- package/dist/components/input/__tests__/input.test.svelte.js +29 -0
- package/dist/components/input/input.svelte +22 -5
- package/dist/components/label/label.svelte +2 -3
- package/dist/components/label/label.svelte.d.ts.map +1 -1
- package/dist/components/language-select/__tests__/languages.test.js +8 -8
- package/dist/components/language-select/language-select.svelte +23 -35
- package/dist/components/language-select/language-select.svelte.d.ts.map +1 -1
- package/dist/components/link-preview/__tests__/LinkPreviewTest.svelte +2 -2
- package/dist/components/link-preview/__tests__/link-preview.a11y.test.js +5 -1
- package/dist/components/link-preview/__tests__/link-preview.test.svelte.js +4 -1
- package/dist/components/link-preview/components/link-preview-content.svelte +16 -7
- package/dist/components/link-preview/components/link-preview-content.svelte.d.ts.map +1 -1
- package/dist/components/link-preview/components/link-preview-root.svelte +7 -2
- package/dist/components/link-preview/components/link-preview-root.svelte.d.ts.map +1 -1
- package/dist/components/link-preview/components/link-preview-trigger.svelte +15 -13
- package/dist/components/link-preview/components/link-preview-trigger.svelte.d.ts.map +1 -1
- package/dist/components/link-preview/index.d.ts +1 -1
- package/dist/components/link-preview/index.d.ts.map +1 -1
- package/dist/components/list/components/list-item.svelte +4 -4
- package/dist/components/list/components/list-root.svelte +2 -2
- package/dist/components/menubar/__tests__/MenubarTest.svelte +5 -5
- package/dist/components/menubar/__tests__/menubar.a11y.test.js +5 -1
- package/dist/components/menubar/components/menubar-content.svelte +36 -27
- package/dist/components/menubar/components/menubar-content.svelte.d.ts.map +1 -1
- package/dist/components/menubar/components/menubar-menu.svelte +7 -3
- package/dist/components/menubar/components/menubar-menu.svelte.d.ts.map +1 -1
- package/dist/components/menubar/components/menubar-root.svelte +12 -22
- package/dist/components/menubar/components/menubar-root.svelte.d.ts.map +1 -1
- package/dist/components/menubar/components/menubar-trigger.svelte +6 -8
- package/dist/components/menubar/components/menubar-trigger.svelte.d.ts.map +1 -1
- package/dist/components/meter/meter.svelte +6 -9
- package/dist/components/meter/meter.svelte.d.ts.map +1 -1
- package/dist/components/nav-bar/components/nav-bar-item.svelte +9 -12
- package/dist/components/nav-bar/components/nav-bar-item.svelte.d.ts.map +1 -1
- package/dist/components/nav-bar/components/nav-bar-root.svelte +3 -3
- package/dist/components/nav-drawer/components/nav-drawer-item.svelte +8 -11
- package/dist/components/nav-drawer/components/nav-drawer-item.svelte.d.ts.map +1 -1
- package/dist/components/nav-drawer/components/nav-drawer-root.svelte +11 -11
- package/dist/components/nav-drawer/components/nav-drawer-root.svelte.d.ts.map +1 -1
- package/dist/components/nav-rail/components/nav-rail-item.svelte +10 -12
- package/dist/components/nav-rail/components/nav-rail-item.svelte.d.ts.map +1 -1
- package/dist/components/nav-rail/components/nav-rail-root.svelte +4 -4
- package/dist/components/pagination/pagination.svelte +28 -33
- package/dist/components/pagination/pagination.svelte.d.ts.map +1 -1
- package/dist/components/pin-input/pin-input.svelte +21 -20
- package/dist/components/pin-input/pin-input.svelte.d.ts.map +1 -1
- package/dist/components/popover/__tests__/PopoverTest.svelte +2 -2
- package/dist/components/popover/components/popover-close.svelte +2 -2
- package/dist/components/popover/components/popover-content.svelte +48 -25
- package/dist/components/popover/components/popover-content.svelte.d.ts.map +1 -1
- package/dist/components/popover/components/popover-root.svelte +1 -1
- package/dist/components/popover/components/popover-trigger.svelte +4 -5
- package/dist/components/popover/components/popover-trigger.svelte.d.ts.map +1 -1
- package/dist/components/progress/progress.svelte +3 -3
- package/dist/components/radio-group/components/radio-group-item.svelte +8 -9
- package/dist/components/radio-group/components/radio-group-item.svelte.d.ts.map +1 -1
- package/dist/components/radio-group/components/radio-group-root.svelte +6 -5
- package/dist/components/radio-group/components/radio-group-root.svelte.d.ts.map +1 -1
- package/dist/components/range-calendar/__tests__/RangeCalendarTest.svelte +1 -1
- package/dist/components/range-calendar/__tests__/range-calendar.test.svelte.js +4 -1
- package/dist/components/range-calendar/components/range-calendar-grid.svelte +16 -17
- package/dist/components/range-calendar/components/range-calendar-grid.svelte.d.ts.map +1 -1
- package/dist/components/range-calendar/components/range-calendar-header.svelte +29 -13
- package/dist/components/range-calendar/components/range-calendar-root.svelte +42 -17
- package/dist/components/range-calendar/components/range-calendar-root.svelte.d.ts.map +1 -1
- package/dist/components/range-calendar/range-calendar.svelte.d.ts.map +1 -1
- package/dist/components/range-calendar/range-calendar.svelte.js +54 -24
- package/dist/components/rating-group/rating-group.svelte +17 -23
- package/dist/components/rating-group/rating-group.svelte.d.ts.map +1 -1
- package/dist/components/scroll-area/scroll-area.svelte +22 -28
- package/dist/components/scroll-area/scroll-area.svelte.d.ts.map +1 -1
- package/dist/components/search-field/__tests__/SearchFieldTest.svelte +3 -3
- package/dist/components/search-field/__tests__/search-field.test.svelte.js +28 -0
- package/dist/components/search-field/search-field.svelte +44 -18
- package/dist/components/search-field/types.d.ts +7 -7
- package/dist/components/search-field/types.d.ts.map +1 -1
- package/dist/components/select/__tests__/SelectLabelPersistenceTest.svelte +6 -8
- package/dist/components/select/__tests__/SelectTest.svelte +1 -1
- package/dist/components/select/components/select-content.svelte +13 -16
- package/dist/components/select/components/select-content.svelte.d.ts.map +1 -1
- package/dist/components/select/components/select-item.svelte +14 -16
- package/dist/components/select/components/select-item.svelte.d.ts.map +1 -1
- package/dist/components/select/components/select-root.svelte +9 -12
- package/dist/components/select/components/select-root.svelte.d.ts.map +1 -1
- package/dist/components/select/components/select-trigger.svelte +20 -12
- package/dist/components/select/components/select-trigger.svelte.d.ts.map +1 -1
- package/dist/components/separator/separator.svelte +1 -1
- package/dist/components/sheet/__tests__/SheetTest.svelte +2 -2
- package/dist/components/sheet/components/sheet-close.svelte +2 -2
- package/dist/components/sheet/components/sheet-content.svelte +12 -11
- package/dist/components/sheet/components/sheet-content.svelte.d.ts.map +1 -1
- package/dist/components/sheet/components/sheet-description.svelte +1 -1
- package/dist/components/sheet/components/sheet-overlay.svelte +8 -6
- package/dist/components/sheet/components/sheet-overlay.svelte.d.ts.map +1 -1
- package/dist/components/sheet/components/sheet-root.svelte +4 -2
- package/dist/components/sheet/components/sheet-root.svelte.d.ts.map +1 -1
- package/dist/components/sheet/components/sheet-title.svelte +7 -6
- package/dist/components/sheet/components/sheet-trigger.svelte +3 -3
- package/dist/components/side-sheet/__tests__/side-sheet.test.svelte.js +3 -1
- package/dist/components/side-sheet/side-sheet.svelte +5 -5
- package/dist/components/sidebar/__tests__/SidebarFullTest.svelte +7 -7
- package/dist/components/sidebar/__tests__/SidebarTest.svelte +2 -2
- package/dist/components/sidebar/__tests__/sidebar.test.svelte.js +9 -5
- package/dist/components/sidebar/components/sidebar-content.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-footer.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-group-content.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-group-label.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-group.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-header.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-inset.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-menu-action.svelte +11 -4
- package/dist/components/sidebar/components/sidebar-menu-action.svelte.d.ts.map +1 -1
- package/dist/components/sidebar/components/sidebar-menu-button.svelte +8 -4
- package/dist/components/sidebar/components/sidebar-menu-item.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-menu-sub-button.svelte +5 -3
- package/dist/components/sidebar/components/sidebar-menu-sub-item.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-menu-sub.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-menu.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-provider.svelte +5 -3
- package/dist/components/sidebar/components/sidebar-provider.svelte.d.ts.map +1 -1
- package/dist/components/sidebar/components/sidebar-root.svelte +6 -4
- package/dist/components/sidebar/components/sidebar-separator.svelte +1 -1
- package/dist/components/sidebar/components/sidebar-trigger.svelte +13 -5
- package/dist/components/sidebar/sidebar.svelte.d.ts.map +1 -1
- package/dist/components/sidebar/sidebar.svelte.js +9 -3
- package/dist/components/simple-dialog/__tests__/SimpleDialogTest.svelte +4 -4
- package/dist/components/simple-dialog/simple-dialog.svelte +7 -7
- package/dist/components/simple-tooltip/__tests__/SimpleTooltipTest.svelte +2 -2
- package/dist/components/simple-tooltip/__tests__/simple-tooltip.test.svelte.js +1 -0
- package/dist/components/simple-tooltip/simple-tooltip.svelte +1 -1
- package/dist/components/slider/slider.svelte +11 -15
- package/dist/components/slider/slider.svelte.d.ts.map +1 -1
- package/dist/components/slider/types.d.ts +10 -10
- package/dist/components/slider/types.d.ts.map +1 -1
- package/dist/components/sortable-list/__tests__/SortableListTest.svelte +9 -2
- package/dist/components/sortable-list/__tests__/sortable-list.test.svelte.js +13 -7
- package/dist/components/sortable-list/components/sortable-list-handle.svelte +20 -25
- package/dist/components/sortable-list/components/sortable-list-handle.svelte.d.ts.map +1 -1
- package/dist/components/sortable-list/components/sortable-list-indicator.svelte +11 -16
- package/dist/components/sortable-list/components/sortable-list-indicator.svelte.d.ts.map +1 -1
- package/dist/components/sortable-list/components/sortable-list-item.svelte +5 -9
- package/dist/components/sortable-list/components/sortable-list-item.svelte.d.ts.map +1 -1
- package/dist/components/sortable-list/components/sortable-list-root.svelte +3 -3
- package/dist/components/sortable-list/sortable-list.svelte.d.ts.map +1 -1
- package/dist/components/sortable-list/sortable-list.svelte.js +8 -10
- package/dist/components/sortable-list/types.d.ts +15 -15
- package/dist/components/sortable-list/types.d.ts.map +1 -1
- package/dist/components/splitter/splitter.svelte +21 -30
- package/dist/components/splitter/splitter.svelte.d.ts.map +1 -1
- package/dist/components/switch/switch.svelte +11 -11
- package/dist/components/switch/switch.svelte.d.ts.map +1 -1
- package/dist/components/table/components/table-body.svelte +1 -1
- package/dist/components/table/components/table-cell.svelte +23 -35
- package/dist/components/table/components/table-cell.svelte.d.ts.map +1 -1
- package/dist/components/table/components/table-header.svelte +1 -1
- package/dist/components/table/components/table-resize-handle.svelte +7 -10
- package/dist/components/table/components/table-resize-handle.svelte.d.ts.map +1 -1
- package/dist/components/table/components/table-root.svelte +26 -22
- package/dist/components/table/components/table-row.svelte +5 -4
- package/dist/components/table/components/table-row.svelte.d.ts.map +1 -1
- package/dist/components/table/table.svelte.d.ts.map +1 -1
- package/dist/components/table/table.svelte.js +6 -2
- package/dist/components/tabs/__tests__/TabsTest.svelte +7 -7
- package/dist/components/tabs/__tests__/tabs.test.svelte.js +4 -1
- package/dist/components/tabs/components/tabs-content.svelte +2 -2
- package/dist/components/tabs/components/tabs-list.svelte +10 -13
- package/dist/components/tabs/components/tabs-list.svelte.d.ts.map +1 -1
- package/dist/components/tabs/components/tabs-root.svelte +1 -1
- package/dist/components/tabs/components/tabs-trigger.svelte +4 -5
- package/dist/components/tabs/components/tabs-trigger.svelte.d.ts.map +1 -1
- package/dist/components/textarea/__tests__/textarea.test.svelte.js +29 -0
- package/dist/components/textarea/textarea.svelte +14 -1
- package/dist/components/time-field/__tests__/TimeFieldTest.svelte +1 -1
- package/dist/components/time-field/__tests__/time-field.test.svelte.js +6 -8
- package/dist/components/time-field/components/time-field-root.svelte +67 -73
- package/dist/components/time-field/components/time-field-root.svelte.d.ts.map +1 -1
- package/dist/components/time-field/index.d.ts +1 -1
- package/dist/components/time-field/index.d.ts.map +1 -1
- package/dist/components/time-field/time-field.svelte.d.ts.map +1 -1
- package/dist/components/time-field/types.d.ts +13 -13
- package/dist/components/time-field/types.d.ts.map +1 -1
- package/dist/components/time-range-field/__tests__/TimeRangeFieldTest.svelte +1 -1
- package/dist/components/time-range-field/__tests__/time-range-field.test.svelte.js +4 -4
- package/dist/components/time-range-field/components/time-range-field-root.svelte +5 -5
- package/dist/components/time-range-field/types.d.ts +1 -1
- package/dist/components/time-range-field/types.d.ts.map +1 -1
- package/dist/components/toast/toast.svelte +15 -15
- package/dist/components/toggle/toggle.svelte +3 -4
- package/dist/components/toggle/toggle.svelte.d.ts.map +1 -1
- package/dist/components/toggle-group/components/toggle-group-item.svelte +3 -4
- package/dist/components/toggle-group/components/toggle-group-item.svelte.d.ts.map +1 -1
- package/dist/components/toggle-group/components/toggle-group-root.svelte +7 -11
- package/dist/components/toggle-group/components/toggle-group-root.svelte.d.ts.map +1 -1
- package/dist/components/toggle-group/types.d.ts.map +1 -1
- package/dist/components/toolbar/__tests__/ToolbarCompositionTest.svelte +7 -7
- package/dist/components/toolbar/__tests__/ToolbarTabstopTest.svelte +5 -5
- package/dist/components/toolbar/toolbar-group.svelte +3 -8
- package/dist/components/toolbar/toolbar-group.svelte.d.ts.map +1 -1
- package/dist/components/toolbar/toolbar-separator.svelte +2 -3
- package/dist/components/toolbar/toolbar-separator.svelte.d.ts.map +1 -1
- package/dist/components/toolbar/toolbar.svelte +17 -23
- package/dist/components/toolbar/toolbar.svelte.d.ts.map +1 -1
- package/dist/components/tooltip/__tests__/TooltipTest.svelte +1 -1
- package/dist/components/tooltip/components/tooltip-content.svelte +20 -15
- package/dist/components/tooltip/components/tooltip-content.svelte.d.ts.map +1 -1
- package/dist/components/tooltip/components/tooltip-provider.svelte +8 -3
- package/dist/components/tooltip/components/tooltip-provider.svelte.d.ts.map +1 -1
- package/dist/components/tooltip/components/tooltip-root.svelte +1 -1
- package/dist/components/tooltip/components/tooltip-trigger.svelte +15 -13
- package/dist/components/tooltip/components/tooltip-trigger.svelte.d.ts.map +1 -1
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tooltip/tooltip-provider.svelte.d.ts.map +1 -1
- package/dist/components/tree/__tests__/TreeLabelContentTest.svelte +7 -7
- package/dist/components/tree/__tests__/TreeTest.svelte +7 -7
- package/dist/components/tree/components/tree-item.svelte +22 -26
- package/dist/components/tree/components/tree-item.svelte.d.ts.map +1 -1
- package/dist/components/tree/components/tree-root.svelte +2 -2
- package/dist/components/tree/tree.svelte.d.ts.map +1 -1
- package/dist/components/tree/types.d.ts +9 -9
- package/dist/components/tree/types.d.ts.map +1 -1
- package/dist/components/virtualizer/__tests__/waterfall-layout.test.js +1 -1
- package/dist/components/virtualizer/components/virtualizer-root.svelte +8 -17
- package/dist/components/virtualizer/components/virtualizer-root.svelte.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/announcer/announcer.svelte.d.ts.map +1 -1
- package/dist/internal/date-time/calendar-helpers.d.ts.map +1 -1
- package/dist/internal/date-time/formatter.d.ts.map +1 -1
- package/dist/internal/date-time/types.d.ts.map +1 -1
- package/dist/internal/date-time/types.js +4 -1
- package/dist/internal/date-time/utils.d.ts +2 -2
- package/dist/internal/date-time/utils.d.ts.map +1 -1
- package/dist/internal/date-time/utils.js +2 -2
- package/dist/internal/dismissible-layer/dismissible-layer.svelte.d.ts.map +1 -1
- package/dist/internal/dismissible-layer/dismissible-layer.svelte.js +6 -6
- package/dist/internal/drag-drop/__tests__/auto-scroll.test.js +6 -2
- package/dist/internal/drag-drop/__tests__/drag-session.test.svelte.js +9 -4
- package/dist/internal/drag-drop/__tests__/drop-delegate.test.js +18 -10
- package/dist/internal/drag-drop/auto-scroll.svelte.d.ts.map +1 -1
- package/dist/internal/drag-drop/auto-scroll.svelte.js +12 -8
- package/dist/internal/drag-drop/drag-session.svelte.d.ts.map +1 -1
- package/dist/internal/drag-drop/drag-session.svelte.js +41 -17
- package/dist/internal/drag-drop/drag-source.svelte.d.ts.map +1 -1
- package/dist/internal/drag-drop/drop-delegate.svelte.d.ts.map +1 -1
- package/dist/internal/drag-drop/drop-delegate.svelte.js +3 -3
- package/dist/internal/drag-drop/drop-target.svelte.d.ts.map +1 -1
- package/dist/internal/drag-drop/keyboard-dnd.svelte.d.ts.map +1 -1
- package/dist/internal/escape-layer/escape-layer.svelte.d.ts.map +1 -1
- package/dist/internal/escape-layer/escape-layer.svelte.js +2 -2
- package/dist/internal/floating-layer/floating-layer.svelte.d.ts.map +1 -1
- package/dist/internal/floating-layer/types.d.ts.map +1 -1
- package/dist/internal/focus-scope/focus-scope.svelte.d.ts.map +1 -1
- package/dist/internal/grace-area/grace-area.svelte.d.ts.map +1 -1
- package/dist/internal/grace-area/grace-area.svelte.js +1 -1
- package/dist/internal/helpers/arrays.d.ts.map +1 -1
- package/dist/internal/helpers/dom.d.ts.map +1 -1
- package/dist/internal/helpers/dom.js +2 -2
- package/dist/internal/helpers/merge-props.d.ts.map +1 -1
- package/dist/internal/i18n/languages.d.ts.map +1 -1
- package/dist/internal/i18n/languages.js +2 -2
- package/dist/internal/portal/__tests__/PortalTest.svelte +3 -3
- package/dist/internal/portal/portal-consumer.svelte +1 -1
- package/dist/internal/portal/portal.svelte +7 -3
- package/dist/internal/portal/portal.svelte.d.ts.map +1 -1
- package/dist/internal/presence-layer/presence-layer.svelte.d.ts.map +1 -1
- package/dist/internal/roving-focus/roving-focus.svelte.d.ts.map +1 -1
- package/dist/internal/roving-focus/roving-focus.svelte.js +2 -2
- package/dist/internal/scroll-lock/scroll-lock.svelte.d.ts.map +1 -1
- package/dist/internal/text-selection-layer/text-selection-layer.svelte.d.ts.map +1 -1
- package/dist/internal/typeahead/typeahead.svelte.d.ts.map +1 -1
- package/dist/internal/typeahead/typeahead.svelte.js +1 -1
- package/package.json +1 -1
- package/src/fonts.css +2 -2
- package/src/themes/__tests__/carbon-dark-contrast.test.ts +4 -3
- package/src/themes/carbon.css +104 -107
- package/src/themes/day.css +104 -106
- package/src/themes/docs.css +104 -106
- package/src/themes/iris-ocr.css +104 -108
- package/src/themes/midnight.css +104 -107
- package/src/themes/spectral-components.css +3 -1
- package/src/themes/spectral.css +116 -111
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang=
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import type { TabsTriggerProps } from '../types.js'
|
|
3
3
|
import { getTabsContext } from '../tabs.svelte.js'
|
|
4
4
|
|
|
@@ -8,15 +8,14 @@
|
|
|
8
8
|
const isActive = $derived(ctx.value === value)
|
|
9
9
|
|
|
10
10
|
function onclick() {
|
|
11
|
-
if (!disabled)
|
|
12
|
-
ctx.setValue(value)
|
|
11
|
+
if (!disabled) ctx.setValue(value)
|
|
13
12
|
}
|
|
14
13
|
</script>
|
|
15
14
|
|
|
16
15
|
<button
|
|
17
16
|
class="sp-tabs-trigger {className ?? ''}"
|
|
18
|
-
type=
|
|
19
|
-
role=
|
|
17
|
+
type="button"
|
|
18
|
+
role="tab"
|
|
20
19
|
aria-selected={isActive}
|
|
21
20
|
tabindex={isActive ? 0 : -1}
|
|
22
21
|
{disabled}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-trigger.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tabs/components/tabs-trigger.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"tabs-trigger.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/tabs/components/tabs-trigger.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAyBnD,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
1
4
|
import { mount, unmount } from 'svelte';
|
|
2
5
|
import { afterEach, describe, expect, it } from 'vitest';
|
|
3
6
|
import Textarea from '../textarea.svelte';
|
|
7
|
+
const componentSource = readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '../textarea.svelte'), 'utf8');
|
|
4
8
|
describe('textarea', () => {
|
|
5
9
|
let target;
|
|
6
10
|
let instance;
|
|
@@ -23,4 +27,29 @@ describe('textarea', () => {
|
|
|
23
27
|
setup({ invalid: true });
|
|
24
28
|
expect(target.querySelector('textarea')?.getAttribute('aria-invalid')).toBe('true');
|
|
25
29
|
});
|
|
30
|
+
// ── iOS Safari focus-zoom contract ────────────────────────────────
|
|
31
|
+
// Real WebKit focus-zoom cannot be reproduced in jsdom. These tests
|
|
32
|
+
// lock the CSS contract that prevents the regression on `size="sm"` :
|
|
33
|
+
// the `sm` typography stays token-driven for desktop, and a clamp to
|
|
34
|
+
// >= 1rem is applied on coarse pointers (touch / iOS). Other sizes
|
|
35
|
+
// inherit the base 1rem and are already iOS-safe.
|
|
36
|
+
describe('iOS Safari focus-zoom contract (size="sm")', () => {
|
|
37
|
+
it('keeps fine-pointer typography on the body-medium token', () => {
|
|
38
|
+
expect(componentSource).toMatch(/\.sp-textarea\.sm\s*\{[^}]*font-size:\s*var\(--sp-sys-typescale-body-medium-size[^}]*\}/);
|
|
39
|
+
});
|
|
40
|
+
it('clamps the sm textarea to at least 1rem on coarse pointers', () => {
|
|
41
|
+
expect(componentSource).toMatch(/@media\s*\(pointer:\s*coarse\)\s*\{[\s\S]*?\.sp-textarea\.sm\s*\{[^}]*font-size:\s*max\(1rem,[^)]*\)[\s\S]*?\}/);
|
|
42
|
+
});
|
|
43
|
+
it('only the sm variant is targeted by the coarse-pointer clamp', () => {
|
|
44
|
+
// The clamp must target `.sp-textarea.sm` and only `.sp-textarea.sm`.
|
|
45
|
+
// Other sizes inherit the base 1rem and must not get an override.
|
|
46
|
+
const coarseRules = [
|
|
47
|
+
...componentSource.matchAll(/@media\s*\(pointer:\s*coarse\)\s*\{[^}]*\{/g),
|
|
48
|
+
];
|
|
49
|
+
expect(coarseRules.length).toBe(1);
|
|
50
|
+
expect(coarseRules[0][0]).toContain('.sp-textarea.sm');
|
|
51
|
+
expect(coarseRules[0][0]).not.toContain('.sp-textarea.md');
|
|
52
|
+
expect(coarseRules[0][0]).not.toContain('.sp-textarea.lg');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
26
55
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang=
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import type { TextareaProps } from './types.js'
|
|
3
3
|
|
|
4
4
|
let {
|
|
@@ -48,6 +48,19 @@
|
|
|
48
48
|
font-size: var(--sp-sys-typescale-body-medium-size, 0.875rem);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
/* iOS Safari focus zoom : WebKit auto-zooms the viewport when a focused
|
|
52
|
+
form control's computed font-size is < 16px. The `sm` size renders
|
|
53
|
+
at `body-medium` (14px by default), which crosses that threshold.
|
|
54
|
+
Clamp to at least 1rem on coarse pointers (touch / iOS) so dense
|
|
55
|
+
forms on mobile stay usable; `max()` preserves any theme that may
|
|
56
|
+
override `--sp-sys-typescale-body-medium-size` upward. Other sizes
|
|
57
|
+
inherit the base 1rem and are already iOS-safe. */
|
|
58
|
+
@media (pointer: coarse) {
|
|
59
|
+
.sp-textarea.sm {
|
|
60
|
+
font-size: max(1rem, var(--sp-sys-typescale-body-medium-size, 0.875rem));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
51
64
|
.sp-textarea.md {
|
|
52
65
|
min-height: 96px;
|
|
53
66
|
}
|
|
@@ -29,10 +29,9 @@ describe('timeField', () => {
|
|
|
29
29
|
// 3. Segments include hour and minute labels
|
|
30
30
|
it('segments include hour and minute labels', () => {
|
|
31
31
|
setup();
|
|
32
|
-
const labels = Array.from(target.querySelectorAll('[role="spinbutton"]'))
|
|
33
|
-
|
|
34
|
-
expect(labels.some(l => l &&
|
|
35
|
-
expect(labels.some(l => l && l.includes('minute'))).toBe(true);
|
|
32
|
+
const labels = Array.from(target.querySelectorAll('[role="spinbutton"]')).map((s) => s.getAttribute('aria-label')?.toLowerCase() ?? '');
|
|
33
|
+
expect(labels.some((l) => l && (l.includes('hour') || l.includes('heure')))).toBe(true);
|
|
34
|
+
expect(labels.some((l) => l && l.includes('minute'))).toBe(true);
|
|
36
35
|
});
|
|
37
36
|
// 4. Renders value when provided (minute field shows 30)
|
|
38
37
|
it('renders value when provided', () => {
|
|
@@ -76,9 +75,8 @@ describe('timeField', () => {
|
|
|
76
75
|
// 9. granularity="second" adds seconds segment
|
|
77
76
|
it('granularity="second" adds seconds segment', () => {
|
|
78
77
|
setup({ granularity: 'second', value: { hour: 14, minute: 30, second: 45 } });
|
|
79
|
-
const labels = Array.from(target.querySelectorAll('[role="spinbutton"]'))
|
|
80
|
-
|
|
81
|
-
expect(labels.some(l => l && l.includes('second'))).toBe(true);
|
|
78
|
+
const labels = Array.from(target.querySelectorAll('[role="spinbutton"]')).map((s) => s.getAttribute('aria-label')?.toLowerCase() ?? '');
|
|
79
|
+
expect(labels.some((l) => l && l.includes('second'))).toBe(true);
|
|
82
80
|
});
|
|
83
81
|
// 10. disabled marks group with data-disabled
|
|
84
82
|
it('disabled marks group as disabled', () => {
|
|
@@ -90,7 +88,7 @@ describe('timeField', () => {
|
|
|
90
88
|
it('readonly marks segments as readonly', () => {
|
|
91
89
|
setup({ readonly: true });
|
|
92
90
|
const segments = target.querySelectorAll('[role="spinbutton"]');
|
|
93
|
-
const readonlySegments = Array.from(segments).filter(s => s.getAttribute('aria-readonly') === 'true');
|
|
91
|
+
const readonlySegments = Array.from(segments).filter((s) => s.getAttribute('aria-readonly') === 'true');
|
|
94
92
|
expect(readonlySegments.length).toBeGreaterThanOrEqual(2);
|
|
95
93
|
});
|
|
96
94
|
// 12. group has aria-label
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang=
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import type { TimeSegmentValues } from '../time-field.svelte.js'
|
|
3
3
|
import type { DayPeriod, TimeFieldProps, TimeValue } from '../types.js'
|
|
4
4
|
import {
|
|
@@ -35,13 +35,12 @@
|
|
|
35
35
|
$effect(() => {
|
|
36
36
|
if (value) {
|
|
37
37
|
segmentValues = {
|
|
38
|
-
hour: resolvedHourCycle === 12 ?
|
|
38
|
+
hour: resolvedHourCycle === 12 ? value.hour % 12 || 12 : value.hour,
|
|
39
39
|
minute: value.minute,
|
|
40
40
|
second: value.second,
|
|
41
41
|
dayPeriod: value.hour >= 12 ? 'PM' : 'AM',
|
|
42
42
|
}
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
43
|
+
} else {
|
|
45
44
|
segmentValues = { hour: null, minute: null, second: null, dayPeriod: 'AM' }
|
|
46
45
|
}
|
|
47
46
|
})
|
|
@@ -50,21 +49,16 @@
|
|
|
50
49
|
|
|
51
50
|
function tryBuildValue(): TimeValue | undefined {
|
|
52
51
|
const { hour, minute, second } = segmentValues
|
|
53
|
-
if (hour === null)
|
|
54
|
-
|
|
55
|
-
if (
|
|
56
|
-
return undefined
|
|
57
|
-
if (granularity === 'second' && second === null)
|
|
58
|
-
return undefined
|
|
52
|
+
if (hour === null) return undefined
|
|
53
|
+
if ((granularity === 'minute' || granularity === 'second') && minute === null) return undefined
|
|
54
|
+
if (granularity === 'second' && second === null) return undefined
|
|
59
55
|
|
|
60
56
|
// Convert 12h display to 24h internal value
|
|
61
57
|
let h24 = hour ?? 0
|
|
62
58
|
if (resolvedHourCycle === 12) {
|
|
63
59
|
const period = segmentValues.dayPeriod
|
|
64
|
-
if (period === 'AM' && h24 === 12)
|
|
65
|
-
|
|
66
|
-
else if (period === 'PM' && h24 < 12)
|
|
67
|
-
h24 += 12
|
|
60
|
+
if (period === 'AM' && h24 === 12) h24 = 0
|
|
61
|
+
else if (period === 'PM' && h24 < 12) h24 += 12
|
|
68
62
|
}
|
|
69
63
|
|
|
70
64
|
return {
|
|
@@ -78,8 +72,7 @@
|
|
|
78
72
|
if (part === 'dayPeriod') {
|
|
79
73
|
// Just update dayPeriod — tryBuildValue handles 12h→24h conversion
|
|
80
74
|
segmentValues = { ...segmentValues, dayPeriod: val as DayPeriod }
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
75
|
+
} else {
|
|
83
76
|
segmentValues = { ...segmentValues, [part]: val as number }
|
|
84
77
|
}
|
|
85
78
|
const built = tryBuildValue()
|
|
@@ -92,8 +85,7 @@
|
|
|
92
85
|
function clearSegment(part: string) {
|
|
93
86
|
if (part === 'dayPeriod') {
|
|
94
87
|
segmentValues = { ...segmentValues, dayPeriod: 'AM' }
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
88
|
+
} else {
|
|
97
89
|
segmentValues = { ...segmentValues, [part]: null }
|
|
98
90
|
}
|
|
99
91
|
value = undefined
|
|
@@ -106,12 +98,24 @@
|
|
|
106
98
|
}
|
|
107
99
|
|
|
108
100
|
setTimeFieldContext({
|
|
109
|
-
get value() {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
get
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
get value() {
|
|
102
|
+
return value
|
|
103
|
+
},
|
|
104
|
+
get segments() {
|
|
105
|
+
return segments
|
|
106
|
+
},
|
|
107
|
+
get disabled() {
|
|
108
|
+
return disabled
|
|
109
|
+
},
|
|
110
|
+
get readonly() {
|
|
111
|
+
return isReadonly
|
|
112
|
+
},
|
|
113
|
+
get hourCycle() {
|
|
114
|
+
return resolvedHourCycle
|
|
115
|
+
},
|
|
116
|
+
get granularity() {
|
|
117
|
+
return granularity
|
|
118
|
+
},
|
|
115
119
|
updateSegment,
|
|
116
120
|
clearSegment,
|
|
117
121
|
toggleDayPeriod,
|
|
@@ -157,41 +161,32 @@
|
|
|
157
161
|
let next: number
|
|
158
162
|
if (current === null) {
|
|
159
163
|
next = key === 'ArrowUp' ? min : max
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
164
|
+
} else {
|
|
162
165
|
next = current + step
|
|
163
|
-
if (next > max)
|
|
164
|
-
|
|
165
|
-
if (next < min)
|
|
166
|
-
next = max
|
|
166
|
+
if (next > max) next = min
|
|
167
|
+
if (next < min) next = max
|
|
167
168
|
}
|
|
168
169
|
updateSegment(part, next)
|
|
169
|
-
}
|
|
170
|
-
else if (key === 'Backspace' || key === 'Delete') {
|
|
170
|
+
} else if (key === 'Backspace' || key === 'Delete') {
|
|
171
171
|
e.preventDefault()
|
|
172
172
|
clearSegment(part)
|
|
173
|
-
}
|
|
174
|
-
else if (key === 'ArrowLeft') {
|
|
173
|
+
} else if (key === 'ArrowLeft') {
|
|
175
174
|
e.preventDefault()
|
|
176
175
|
navigateSegment(e.currentTarget as HTMLElement, 'prev')
|
|
177
|
-
}
|
|
178
|
-
else if (key === 'ArrowRight') {
|
|
176
|
+
} else if (key === 'ArrowRight') {
|
|
179
177
|
e.preventDefault()
|
|
180
178
|
navigateSegment(e.currentTarget as HTMLElement, 'next')
|
|
181
|
-
}
|
|
182
|
-
else if (/^\d$/.test(key)) {
|
|
179
|
+
} else if (/^\d$/.test(key)) {
|
|
183
180
|
e.preventDefault()
|
|
184
181
|
const digit = Number.parseInt(key, 10)
|
|
185
182
|
const current = segmentValues[part as keyof TimeSegmentValues] as number | null
|
|
186
|
-
let newVal =
|
|
187
|
-
if (newVal > max)
|
|
188
|
-
newVal = digit
|
|
183
|
+
let newVal = current === null || current === 0 ? digit : current * 10 + digit
|
|
184
|
+
if (newVal > max) newVal = digit
|
|
189
185
|
updateSegment(part, newVal)
|
|
190
186
|
// Auto-advance
|
|
191
187
|
if (String(newVal).length >= 2 || newVal * 10 > max)
|
|
192
188
|
navigateSegment(e.currentTarget as HTMLElement, 'next')
|
|
193
|
-
}
|
|
194
|
-
else if (key !== 'Tab') {
|
|
189
|
+
} else if (key !== 'Tab') {
|
|
195
190
|
e.preventDefault()
|
|
196
191
|
}
|
|
197
192
|
}
|
|
@@ -201,36 +196,34 @@
|
|
|
201
196
|
if (key === 'ArrowUp' || key === 'ArrowDown') {
|
|
202
197
|
e.preventDefault()
|
|
203
198
|
toggleDayPeriod()
|
|
204
|
-
}
|
|
205
|
-
else if (key === 'a' || key === 'A') {
|
|
199
|
+
} else if (key === 'a' || key === 'A') {
|
|
206
200
|
e.preventDefault()
|
|
207
201
|
updateSegment('dayPeriod', 'AM')
|
|
208
|
-
}
|
|
209
|
-
else if (key === 'p' || key === 'P') {
|
|
202
|
+
} else if (key === 'p' || key === 'P') {
|
|
210
203
|
e.preventDefault()
|
|
211
204
|
updateSegment('dayPeriod', 'PM')
|
|
212
|
-
}
|
|
213
|
-
else if (key === 'ArrowLeft') {
|
|
205
|
+
} else if (key === 'ArrowLeft') {
|
|
214
206
|
e.preventDefault()
|
|
215
207
|
navigateSegment(e.currentTarget as HTMLElement, 'prev')
|
|
216
|
-
}
|
|
217
|
-
else if (key === 'ArrowRight') {
|
|
208
|
+
} else if (key === 'ArrowRight') {
|
|
218
209
|
e.preventDefault()
|
|
219
210
|
navigateSegment(e.currentTarget as HTMLElement, 'next')
|
|
220
|
-
}
|
|
221
|
-
else if (key === 'Backspace') {
|
|
211
|
+
} else if (key === 'Backspace') {
|
|
222
212
|
e.preventDefault()
|
|
223
213
|
updateSegment('dayPeriod', 'AM')
|
|
224
|
-
}
|
|
225
|
-
else if (key !== 'Tab') {
|
|
214
|
+
} else if (key !== 'Tab') {
|
|
226
215
|
e.preventDefault()
|
|
227
216
|
}
|
|
228
217
|
}
|
|
229
218
|
|
|
230
219
|
function navigateSegment(el: HTMLElement, direction: 'next' | 'prev') {
|
|
231
|
-
let sibling: Element | null =
|
|
220
|
+
let sibling: Element | null =
|
|
221
|
+
direction === 'next' ? el.nextElementSibling : el.previousElementSibling
|
|
232
222
|
while (sibling) {
|
|
233
|
-
if (
|
|
223
|
+
if (
|
|
224
|
+
sibling.getAttribute('role') === 'spinbutton' ||
|
|
225
|
+
sibling.hasAttribute('data-day-period')
|
|
226
|
+
) {
|
|
234
227
|
;(sibling as HTMLElement).focus()
|
|
235
228
|
return
|
|
236
229
|
}
|
|
@@ -241,7 +234,7 @@
|
|
|
241
234
|
|
|
242
235
|
<div
|
|
243
236
|
class="sp-time-field {className ?? ''}"
|
|
244
|
-
role=
|
|
237
|
+
role="group"
|
|
245
238
|
aria-label={ariaLabel ?? 'Time'}
|
|
246
239
|
data-disabled={disabled || undefined}
|
|
247
240
|
>
|
|
@@ -251,42 +244,43 @@
|
|
|
251
244
|
{#each segments as segment, i (`${i}-${segment.part}`)}
|
|
252
245
|
{#if segment.part === 'dayPeriod'}
|
|
253
246
|
<span
|
|
254
|
-
class=
|
|
255
|
-
role=
|
|
247
|
+
class="sp-time-field-segment sp-time-field-day-period"
|
|
248
|
+
role="spinbutton"
|
|
256
249
|
tabindex={disabled ? -1 : 0}
|
|
257
250
|
data-day-period
|
|
258
|
-
aria-label=
|
|
251
|
+
aria-label="AM/PM"
|
|
259
252
|
aria-readonly={isReadonly || undefined}
|
|
260
253
|
aria-valuetext={segment.value}
|
|
261
|
-
onkeydown={e => handleSegmentKeydown(e, 'dayPeriod')}
|
|
262
|
-
onbeforeinput={e => e.preventDefault()}
|
|
263
|
-
>
|
|
254
|
+
onkeydown={(e) => handleSegmentKeydown(e, 'dayPeriod')}
|
|
255
|
+
onbeforeinput={(e) => e.preventDefault()}>{segment.value}</span
|
|
256
|
+
>
|
|
264
257
|
{:else if segment.editable}
|
|
265
258
|
{@const part = segment.part}
|
|
266
259
|
<span
|
|
267
|
-
class=
|
|
268
|
-
role=
|
|
260
|
+
class="sp-time-field-segment"
|
|
261
|
+
role="spinbutton"
|
|
269
262
|
contenteditable={!disabled && !isReadonly}
|
|
270
|
-
inputmode=
|
|
263
|
+
inputmode="numeric"
|
|
271
264
|
tabindex={disabled ? -1 : 0}
|
|
272
|
-
data-placeholder={segmentValues[part as 'hour' | 'minute' | 'second'] === null ||
|
|
265
|
+
data-placeholder={segmentValues[part as 'hour' | 'minute' | 'second'] === null ||
|
|
266
|
+
undefined}
|
|
273
267
|
aria-label={part}
|
|
274
268
|
aria-readonly={isReadonly || undefined}
|
|
275
269
|
aria-valuenow={segmentValues[part as 'hour' | 'minute' | 'second'] ?? undefined}
|
|
276
270
|
aria-valuemin={part === 'hour' ? (resolvedHourCycle === 12 ? 1 : 0) : 0}
|
|
277
271
|
aria-valuemax={part === 'hour' ? (resolvedHourCycle === 12 ? 12 : 23) : 59}
|
|
278
|
-
onkeydown={e => handleSegmentKeydown(e, part)}
|
|
279
|
-
onbeforeinput={e => e.preventDefault()}
|
|
280
|
-
>
|
|
272
|
+
onkeydown={(e) => handleSegmentKeydown(e, part)}
|
|
273
|
+
onbeforeinput={(e) => e.preventDefault()}>{segment.value}</span
|
|
274
|
+
>
|
|
281
275
|
{:else}
|
|
282
|
-
<span class=
|
|
276
|
+
<span class="sp-time-field-literal" aria-hidden="true">{segment.value}</span>
|
|
283
277
|
{/if}
|
|
284
278
|
{/each}
|
|
285
279
|
{/if}
|
|
286
280
|
</div>
|
|
287
281
|
|
|
288
282
|
{#if name}
|
|
289
|
-
<input type=
|
|
283
|
+
<input type="hidden" {name} value={hiddenValue} {required} />
|
|
290
284
|
{/if}
|
|
291
285
|
|
|
292
286
|
<style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-field-root.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/time-field/components/time-field-root.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,cAAc,EAAa,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"time-field-root.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/time-field/components/time-field-root.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,cAAc,EAAa,MAAM,aAAa,CAAA;AAuQvE,QAAA,MAAM,aAAa,yDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { default as Root } from './components/time-field-root.svelte';
|
|
2
|
-
export type { HourCycle, TimeFieldProps, TimeGranularity, TimeRange, TimeRangeFieldProps, TimeValue } from './types.js';
|
|
2
|
+
export type { HourCycle, TimeFieldProps, TimeGranularity, TimeRange, TimeRangeFieldProps, TimeValue, } from './types.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qCAAqC,CAAA;AACrE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qCAAqC,CAAA;AACrE,YAAY,EACV,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-field.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/time-field.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAMlF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,eAAe,CAAA;IAC5B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAE/D;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAED,wCAAwC;AACxC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAI7D;AAED,4CAA4C;AAC5C,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,SAAS,GACnB,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"time-field.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/time-field.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAMlF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,eAAe,CAAA;IAC5B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAE/D;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAED,wCAAwC;AACxC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAI7D;AAED,4CAA4C;AAC5C,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,eAAe,EAC5B,SAAS,EAAE,SAAS,GACnB,eAAe,EAAE,CAiDnB"}
|
|
@@ -4,32 +4,32 @@ export type HourCycle = 12 | 24;
|
|
|
4
4
|
export type DayPeriod = 'AM' | 'PM';
|
|
5
5
|
export interface TimeFieldProps {
|
|
6
6
|
/** Current time value as { hour, minute, second }. */
|
|
7
|
-
|
|
7
|
+
value?: TimeValue;
|
|
8
8
|
/** Callback when value changes. */
|
|
9
|
-
|
|
9
|
+
onValueChange?: (value: TimeValue | undefined) => void;
|
|
10
10
|
/** Which time parts to display. */
|
|
11
|
-
|
|
11
|
+
granularity?: TimeGranularity;
|
|
12
12
|
/** 12 or 24 hour clock (defaults to locale default). */
|
|
13
|
-
|
|
13
|
+
hourCycle?: HourCycle;
|
|
14
14
|
/** Locale for formatting. */
|
|
15
|
-
|
|
15
|
+
locale?: string;
|
|
16
16
|
/** Minimum time. */
|
|
17
|
-
|
|
17
|
+
minValue?: TimeValue;
|
|
18
18
|
/** Maximum time. */
|
|
19
|
-
|
|
19
|
+
maxValue?: TimeValue;
|
|
20
20
|
/** Disabled state. */
|
|
21
|
-
|
|
21
|
+
disabled?: boolean;
|
|
22
22
|
/** Readonly state. */
|
|
23
|
-
|
|
23
|
+
readonly?: boolean;
|
|
24
24
|
/** Required for form validation. */
|
|
25
|
-
|
|
25
|
+
required?: boolean;
|
|
26
26
|
/** Form field name (renders hidden input). */
|
|
27
|
-
|
|
27
|
+
name?: string;
|
|
28
28
|
/** Accessible label. */
|
|
29
29
|
'aria-label'?: string;
|
|
30
30
|
/** Additional CSS class. */
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
class?: string;
|
|
32
|
+
children?: Snippet;
|
|
33
33
|
}
|
|
34
34
|
export interface TimeValue {
|
|
35
35
|
hour: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC1D,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAA;AAC/B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAEnC,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-field/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC1D,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAA;AAC/B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAEnC,MAAM,WAAW,cAAc;IAC7B,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAA;IACtD,mCAAmC;IACnC,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,wDAAwD;IACxD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IAC1C,mCAAmC;IACnC,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB"}
|
|
@@ -42,7 +42,7 @@ describe('timeRangeField', () => {
|
|
|
42
42
|
// At least 2 fields × 2 segments (hour + minute) = 4 spinbuttons
|
|
43
43
|
expect(segments.length).toBeGreaterThanOrEqual(4);
|
|
44
44
|
// Verify hour values are present in aria-valuenow attributes
|
|
45
|
-
const hourSegments = Array.from(segments).filter(s => s.getAttribute('aria-label') === 'hour');
|
|
45
|
+
const hourSegments = Array.from(segments).filter((s) => s.getAttribute('aria-label') === 'hour');
|
|
46
46
|
expect(hourSegments.length).toBeGreaterThanOrEqual(2);
|
|
47
47
|
});
|
|
48
48
|
// T-C-2-3: applies data-disabled to inner TimeField groups when disabled=true
|
|
@@ -106,7 +106,7 @@ describe('timeRangeField', () => {
|
|
|
106
106
|
it('updates rendered segments when remounted with new TimeRange value', () => {
|
|
107
107
|
setup();
|
|
108
108
|
// Initial state: no value → segments show placeholder (no aria-valuenow)
|
|
109
|
-
const initialHourSegments = Array.from(target.querySelectorAll('[role="spinbutton"]')).filter(s => s.getAttribute('aria-label') === 'hour');
|
|
109
|
+
const initialHourSegments = Array.from(target.querySelectorAll('[role="spinbutton"]')).filter((s) => s.getAttribute('aria-label') === 'hour');
|
|
110
110
|
expect(initialHourSegments.length).toBeGreaterThanOrEqual(2);
|
|
111
111
|
expect(initialHourSegments[0].getAttribute('aria-valuenow')).toBeNull();
|
|
112
112
|
// Remount with concrete value
|
|
@@ -115,10 +115,10 @@ describe('timeRangeField', () => {
|
|
|
115
115
|
const newRange = { start: new Time(14, 0), end: new Time(16, 45) };
|
|
116
116
|
instance = mount(TimeRangeFieldTest, { target, props: { value: newRange } });
|
|
117
117
|
flushSync();
|
|
118
|
-
const updatedHourSegments = Array.from(target.querySelectorAll('[role="spinbutton"]')).filter(s => s.getAttribute('aria-label') === 'hour');
|
|
118
|
+
const updatedHourSegments = Array.from(target.querySelectorAll('[role="spinbutton"]')).filter((s) => s.getAttribute('aria-label') === 'hour');
|
|
119
119
|
expect(updatedHourSegments.length).toBeGreaterThanOrEqual(2);
|
|
120
120
|
// At least one hour segment should have a valuenow (14 or its 12h equivalent)
|
|
121
|
-
const hasValue = updatedHourSegments.some(s => s.getAttribute('aria-valuenow') !== null);
|
|
121
|
+
const hasValue = updatedHourSegments.some((s) => s.getAttribute('aria-valuenow') !== null);
|
|
122
122
|
expect(hasValue).toBe(true);
|
|
123
123
|
});
|
|
124
124
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang=
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import type { TimeRange, TimeRangeFieldProps, TimeValue } from '../types.js'
|
|
3
3
|
import * as TimeField from '../../time-field/index.js'
|
|
4
4
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
}
|
|
42
42
|
</script>
|
|
43
43
|
|
|
44
|
-
<div class="sp-time-range-field {className ?? ''}" role=
|
|
44
|
+
<div class="sp-time-range-field {className ?? ''}" role="group" aria-label="Time range">
|
|
45
45
|
{#if children}
|
|
46
46
|
{@render children()}
|
|
47
47
|
{:else}
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
readonly={isReadonly}
|
|
56
56
|
{required}
|
|
57
57
|
name={name ? `${name}-start` : undefined}
|
|
58
|
-
aria-label=
|
|
58
|
+
aria-label="Start time"
|
|
59
59
|
/>
|
|
60
|
-
<span class=
|
|
60
|
+
<span class="sp-time-range-separator" aria-hidden="true">–</span>
|
|
61
61
|
<TimeField.Root
|
|
62
62
|
value={endValue}
|
|
63
63
|
onValueChange={onEndChange}
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
readonly={isReadonly}
|
|
69
69
|
{required}
|
|
70
70
|
name={name ? `${name}-end` : undefined}
|
|
71
|
-
aria-label=
|
|
71
|
+
aria-label="End time"
|
|
72
72
|
/>
|
|
73
73
|
{/if}
|
|
74
74
|
</div>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { HourCycle, TimeGranularity, TimeRange, TimeRangeFieldProps, TimeValue } from '../time-field/types.js';
|
|
1
|
+
export type { HourCycle, TimeGranularity, TimeRange, TimeRangeFieldProps, TimeValue, } from '../time-field/types.js';
|
|
2
2
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-range-field/types.ts"],"names":[],"mappings":"AAAA,YAAY,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/components/time-range-field/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,SAAS,GACV,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang=
|
|
1
|
+
<script lang="ts">
|
|
2
2
|
import type { ToastProps } from './types.js'
|
|
3
3
|
import { isBrowser, useId } from '../../internal/helpers/index.js'
|
|
4
4
|
|
|
@@ -35,35 +35,35 @@
|
|
|
35
35
|
register it before content appears. Only the inner content is
|
|
36
36
|
conditionally rendered — the aria-live wrapper stays stable.
|
|
37
37
|
-->
|
|
38
|
-
<div class=
|
|
38
|
+
<div class="sp-toast-region" {id} role="status" aria-live="polite" aria-atomic="true">
|
|
39
39
|
{#if visible}
|
|
40
40
|
<div class="sp-toast {variant} {className ?? ''}" data-variant={variant}>
|
|
41
|
-
<div class=
|
|
41
|
+
<div class="sp-toast-content">
|
|
42
42
|
{#if title}
|
|
43
|
-
<p class=
|
|
43
|
+
<p class="sp-toast-title">{title}</p>
|
|
44
44
|
{/if}
|
|
45
45
|
{#if description}
|
|
46
|
-
<p class=
|
|
46
|
+
<p class="sp-toast-description">{description}</p>
|
|
47
47
|
{/if}
|
|
48
48
|
{#if children}
|
|
49
49
|
{@render children()}
|
|
50
50
|
{/if}
|
|
51
51
|
</div>
|
|
52
|
-
<div class=
|
|
52
|
+
<div class="sp-toast-actions">
|
|
53
53
|
{#if action}
|
|
54
54
|
{@render action()}
|
|
55
55
|
{/if}
|
|
56
56
|
{#if dismissible}
|
|
57
|
-
<button class=
|
|
57
|
+
<button class="sp-toast-dismiss" type="button" aria-label="Dismiss" onclick={dismiss}>
|
|
58
58
|
<svg
|
|
59
|
-
viewBox=
|
|
60
|
-
fill=
|
|
61
|
-
stroke=
|
|
62
|
-
stroke-width=
|
|
63
|
-
stroke-linecap=
|
|
64
|
-
stroke-linejoin=
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
viewBox="0 0 24 24"
|
|
60
|
+
fill="none"
|
|
61
|
+
stroke="currentColor"
|
|
62
|
+
stroke-width="2"
|
|
63
|
+
stroke-linecap="round"
|
|
64
|
+
stroke-linejoin="round"
|
|
65
|
+
><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"
|
|
66
|
+
></line></svg
|
|
67
67
|
>
|
|
68
68
|
</button>
|
|
69
69
|
{/if}
|