@proyecto-viviana/solidaria 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -236
- package/dist/actiongroup/createActionGroup.d.ts +5 -5
- package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
- package/dist/actiongroup/index.d.ts +1 -1
- package/dist/autocomplete/createAutocomplete.d.ts +10 -10
- package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
- package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/button/createButton.d.ts +1 -1
- package/dist/button/createButton.d.ts.map +1 -1
- package/dist/button/createToggleButton.d.ts +3 -3
- package/dist/button/createToggleButtonGroup.d.ts +7 -7
- package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
- package/dist/button/index.d.ts +6 -6
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/types.d.ts +18 -12
- package/dist/button/types.d.ts.map +1 -1
- package/dist/calendar/createCalendar.d.ts +15 -5
- package/dist/calendar/createCalendar.d.ts.map +1 -1
- package/dist/calendar/createCalendarCell.d.ts +6 -2
- package/dist/calendar/createCalendarCell.d.ts.map +1 -1
- package/dist/calendar/createCalendarGrid.d.ts +4 -4
- package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendar.d.ts +15 -5
- package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
- package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
- package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
- package/dist/calendar/index.d.ts +5 -5
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/intl/index.d.ts +12 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/calendar/utils.d.ts +12 -0
- package/dist/calendar/utils.d.ts.map +1 -0
- package/dist/checkbox/createCheckbox.d.ts +6 -6
- package/dist/checkbox/createCheckbox.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
- package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
- package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
- package/dist/checkbox/index.d.ts +8 -8
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/collections/index.d.ts +3 -3
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/color/createColorArea.d.ts +3 -3
- package/dist/color/createColorArea.d.ts.map +1 -1
- package/dist/color/createColorField.d.ts +4 -4
- package/dist/color/createColorField.d.ts.map +1 -1
- package/dist/color/createColorSlider.d.ts +4 -4
- package/dist/color/createColorSlider.d.ts.map +1 -1
- package/dist/color/createColorSwatch.d.ts +2 -2
- package/dist/color/createColorSwatch.d.ts.map +1 -1
- package/dist/color/createColorWheel.d.ts +3 -3
- package/dist/color/createColorWheel.d.ts.map +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +98 -16
- package/dist/color/types.d.ts.map +1 -1
- package/dist/combobox/createComboBox.d.ts +10 -7
- package/dist/combobox/createComboBox.d.ts.map +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/intl/index.d.ts +1 -1
- package/dist/datepicker/createDateField.d.ts +18 -6
- package/dist/datepicker/createDateField.d.ts.map +1 -1
- package/dist/datepicker/createDatePicker.d.ts +51 -5
- package/dist/datepicker/createDatePicker.d.ts.map +1 -1
- package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
- package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
- package/dist/datepicker/createDateRangePicker.d.ts +8 -6
- package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
- package/dist/datepicker/createDateSegment.d.ts +10 -2
- package/dist/datepicker/createDateSegment.d.ts.map +1 -1
- package/dist/datepicker/createTimeField.d.ts +11 -5
- package/dist/datepicker/createTimeField.d.ts.map +1 -1
- package/dist/datepicker/createTimeSegment.d.ts +2 -2
- package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
- package/dist/datepicker/index.d.ts +7 -6
- package/dist/datepicker/index.d.ts.map +1 -1
- package/dist/dialog/createDialog.d.ts +5 -5
- package/dist/dialog/createDialog.d.ts.map +1 -1
- package/dist/dialog/index.d.ts +2 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/types.d.ts +4 -4
- package/dist/disclosure/createDisclosure.d.ts +5 -2
- package/dist/disclosure/createDisclosure.d.ts.map +1 -1
- package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
- package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
- package/dist/disclosure/index.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts +2 -2
- package/dist/dnd/createDrag.d.ts.map +1 -1
- package/dist/dnd/createDraggableCollection.d.ts +2 -2
- package/dist/dnd/createDraggableItem.d.ts +3 -3
- package/dist/dnd/createDraggableItem.d.ts.map +1 -1
- package/dist/dnd/createDrop.d.ts +2 -2
- package/dist/dnd/createDrop.d.ts.map +1 -1
- package/dist/dnd/createDroppableCollection.d.ts +26 -6
- package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
- package/dist/dnd/createDroppableItem.d.ts +3 -3
- package/dist/dnd/index.d.ts +12 -12
- package/dist/dnd/index.d.ts.map +1 -1
- package/dist/dnd/types.d.ts +2 -2
- package/dist/dnd/types.d.ts.map +1 -1
- package/dist/dnd/utils.d.ts +1 -1
- package/dist/dnd/utils.d.ts.map +1 -1
- package/dist/focus/FocusScope.d.ts +1 -1
- package/dist/focus/FocusScope.d.ts.map +1 -1
- package/dist/focus/createAutoFocus.d.ts.map +1 -1
- package/dist/focus/createFocusRestore.d.ts.map +1 -1
- package/dist/focus/createVirtualFocus.d.ts +4 -4
- package/dist/focus/createVirtualFocus.d.ts.map +1 -1
- package/dist/focus/index.d.ts +4 -4
- package/dist/focus/index.d.ts.map +1 -1
- package/dist/form/createFormReset.d.ts +1 -1
- package/dist/form/createFormValidation.d.ts +3 -3
- package/dist/form/createFormValidation.d.ts.map +1 -1
- package/dist/form/index.d.ts +2 -2
- package/dist/form/index.d.ts.map +1 -1
- package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
- package/dist/grid/createGrid.d.ts +3 -3
- package/dist/grid/createGridCell.d.ts +3 -3
- package/dist/grid/createGridRow.d.ts +3 -3
- package/dist/grid/index.d.ts +5 -5
- package/dist/grid/types.d.ts +8 -8
- package/dist/gridlist/createGridList.d.ts +6 -4
- package/dist/gridlist/createGridList.d.ts.map +1 -1
- package/dist/gridlist/createGridListItem.d.ts +4 -4
- package/dist/gridlist/createGridListItem.d.ts.map +1 -1
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
- package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
- package/dist/gridlist/index.d.ts +4 -4
- package/dist/gridlist/types.d.ts +11 -7
- package/dist/gridlist/types.d.ts.map +1 -1
- package/dist/i18n/createCollator.d.ts.map +1 -1
- package/dist/i18n/createDateFormatter.d.ts.map +1 -1
- package/dist/i18n/createFilter.d.ts.map +1 -1
- package/dist/i18n/createNumberFormatter.d.ts +1 -1
- package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
- package/dist/i18n/createStringFormatter.d.ts +2 -2
- package/dist/i18n/createStringFormatter.d.ts.map +1 -1
- package/dist/i18n/index.d.ts +8 -8
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/locale.d.ts +2 -2
- package/dist/i18n/locale.d.ts.map +1 -1
- package/dist/i18n/utils.d.ts.map +1 -1
- package/dist/index.d.ts +52 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18012 -16820
- package/dist/index.js.map +1 -1
- package/dist/index.jsx +18242 -0
- package/dist/index.jsx.map +1 -0
- package/dist/interactions/FocusableProvider.d.ts +2 -2
- package/dist/interactions/FocusableProvider.d.ts.map +1 -1
- package/dist/interactions/PressEvent.d.ts +2 -2
- package/dist/interactions/createFocus.d.ts +1 -1
- package/dist/interactions/createFocus.d.ts.map +1 -1
- package/dist/interactions/createFocusRing.d.ts +1 -1
- package/dist/interactions/createFocusRing.d.ts.map +1 -1
- package/dist/interactions/createFocusWithin.d.ts +1 -1
- package/dist/interactions/createFocusWithin.d.ts.map +1 -1
- package/dist/interactions/createFocusable.d.ts +3 -3
- package/dist/interactions/createFocusable.d.ts.map +1 -1
- package/dist/interactions/createHover.d.ts +5 -5
- package/dist/interactions/createHover.d.ts.map +1 -1
- package/dist/interactions/createInteractionModality.d.ts +3 -3
- package/dist/interactions/createInteractionModality.d.ts.map +1 -1
- package/dist/interactions/createKeyboard.d.ts +1 -1
- package/dist/interactions/createLongPress.d.ts +5 -5
- package/dist/interactions/createMove.d.ts +5 -5
- package/dist/interactions/createMove.d.ts.map +1 -1
- package/dist/interactions/createPress.d.ts +4 -4
- package/dist/interactions/createPress.d.ts.map +1 -1
- package/dist/interactions/index.d.ts +12 -12
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/label/createField.d.ts +4 -4
- package/dist/label/createField.d.ts.map +1 -1
- package/dist/label/createLabel.d.ts +7 -7
- package/dist/label/createLabel.d.ts.map +1 -1
- package/dist/label/createLabels.d.ts +1 -1
- package/dist/label/createLabels.d.ts.map +1 -1
- package/dist/label/index.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts +5 -5
- package/dist/landmark/createLandmark.d.ts.map +1 -1
- package/dist/landmark/index.d.ts +1 -1
- package/dist/link/createLink.d.ts +14 -8
- package/dist/link/createLink.d.ts.map +1 -1
- package/dist/link/index.d.ts +1 -1
- package/dist/listbox/createListBox.d.ts +11 -6
- package/dist/listbox/createListBox.d.ts.map +1 -1
- package/dist/listbox/createOption.d.ts +21 -4
- package/dist/listbox/createOption.d.ts.map +1 -1
- package/dist/listbox/index.d.ts +2 -2
- package/dist/listbox/index.d.ts.map +1 -1
- package/dist/live-announcer/announce.d.ts +2 -2
- package/dist/live-announcer/announce.d.ts.map +1 -1
- package/dist/live-announcer/index.d.ts +1 -1
- package/dist/menu/createMenu.d.ts +7 -7
- package/dist/menu/createMenu.d.ts.map +1 -1
- package/dist/menu/createMenuItem.d.ts +16 -4
- package/dist/menu/createMenuItem.d.ts.map +1 -1
- package/dist/menu/createMenuTrigger.d.ts +4 -4
- package/dist/menu/index.d.ts +3 -3
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/createMeter.d.ts +6 -6
- package/dist/meter/createMeter.d.ts.map +1 -1
- package/dist/meter/index.d.ts +1 -1
- package/dist/numberfield/createNumberField.d.ts +9 -8
- package/dist/numberfield/createNumberField.d.ts.map +1 -1
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
- package/dist/overlays/createModal.d.ts +3 -3
- package/dist/overlays/createModal.d.ts.map +1 -1
- package/dist/overlays/createOverlay.d.ts +1 -1
- package/dist/overlays/createOverlay.d.ts.map +1 -1
- package/dist/overlays/createOverlayTrigger.d.ts +6 -6
- package/dist/overlays/index.d.ts +6 -6
- package/dist/overlays/index.d.ts.map +1 -1
- package/dist/popover/calculatePosition.d.ts +4 -4
- package/dist/popover/calculatePosition.d.ts.map +1 -1
- package/dist/popover/createOverlayPosition.d.ts +3 -3
- package/dist/popover/createOverlayPosition.d.ts.map +1 -1
- package/dist/popover/createPopover.d.ts +4 -4
- package/dist/popover/createPopover.d.ts.map +1 -1
- package/dist/popover/index.d.ts +3 -3
- package/dist/progress/createProgressBar.d.ts +7 -5
- package/dist/progress/createProgressBar.d.ts.map +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/radio/createRadio.d.ts +7 -7
- package/dist/radio/createRadio.d.ts.map +1 -1
- package/dist/radio/createRadioGroup.d.ts +10 -10
- package/dist/radio/createRadioGroup.d.ts.map +1 -1
- package/dist/radio/createRadioGroupState.d.ts +3 -3
- package/dist/radio/createRadioGroupState.d.ts.map +1 -1
- package/dist/radio/index.d.ts +3 -3
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/searchfield/createSearchField.d.ts +7 -7
- package/dist/searchfield/createSearchField.d.ts.map +1 -1
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createHiddenSelect.d.ts +4 -4
- package/dist/select/createHiddenSelect.d.ts.map +1 -1
- package/dist/select/createSelect.d.ts +14 -6
- package/dist/select/createSelect.d.ts.map +1 -1
- package/dist/select/index.d.ts +2 -2
- package/dist/select/index.d.ts.map +1 -1
- package/dist/selection/createTypeSelect.d.ts +2 -2
- package/dist/selection/index.d.ts +1 -1
- package/dist/separator/createSeparator.d.ts +9 -5
- package/dist/separator/createSeparator.d.ts.map +1 -1
- package/dist/separator/index.d.ts +1 -1
- package/dist/slider/createSlider.d.ts +11 -7
- package/dist/slider/createSlider.d.ts.map +1 -1
- package/dist/slider/index.d.ts +2 -2
- package/dist/ssr/index.d.ts +1 -1
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/steplist/createStepList.d.ts +36 -0
- package/dist/steplist/createStepList.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +2 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/switch/createSwitch.d.ts +6 -4
- package/dist/switch/createSwitch.d.ts.map +1 -1
- package/dist/switch/index.d.ts +1 -1
- package/dist/table/createTable.d.ts +3 -3
- package/dist/table/createTable.d.ts.map +1 -1
- package/dist/table/createTableCell.d.ts +3 -3
- package/dist/table/createTableCell.d.ts.map +1 -1
- package/dist/table/createTableColumnHeader.d.ts +3 -3
- package/dist/table/createTableColumnHeader.d.ts.map +1 -1
- package/dist/table/createTableColumnResize.d.ts +41 -0
- package/dist/table/createTableColumnResize.d.ts.map +1 -0
- package/dist/table/createTableHeaderRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts +3 -3
- package/dist/table/createTableRow.d.ts.map +1 -1
- package/dist/table/createTableRowGroup.d.ts +2 -2
- package/dist/table/createTableRowGroup.d.ts.map +1 -1
- package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
- package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
- package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
- package/dist/table/index.d.ts +11 -9
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/types.d.ts +15 -7
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tabs/createTabs.d.ts +28 -25
- package/dist/tabs/createTabs.d.ts.map +1 -1
- package/dist/tabs/index.d.ts +1 -1
- package/dist/tag/createTag.d.ts +2 -2
- package/dist/tag/createTag.d.ts.map +1 -1
- package/dist/tag/createTagGroup.d.ts +5 -5
- package/dist/tag/createTagGroup.d.ts.map +1 -1
- package/dist/tag/index.d.ts +2 -2
- package/dist/tag/index.d.ts.map +1 -1
- package/dist/textfield/createTextField.d.ts +17 -11
- package/dist/textfield/createTextField.d.ts.map +1 -1
- package/dist/textfield/index.d.ts +1 -1
- package/dist/textfield/index.d.ts.map +1 -1
- package/dist/toast/createToast.d.ts +2 -2
- package/dist/toast/createToast.d.ts.map +1 -1
- package/dist/toast/createToastRegion.d.ts +5 -3
- package/dist/toast/createToastRegion.d.ts.map +1 -1
- package/dist/toast/index.d.ts +2 -2
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toggle/createToggle.d.ts +9 -9
- package/dist/toggle/createToggle.d.ts.map +1 -1
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/createToggleState.d.ts.map +1 -1
- package/dist/toggle/index.d.ts +4 -4
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toolbar/createToolbar.d.ts +9 -9
- package/dist/toolbar/createToolbar.d.ts.map +1 -1
- package/dist/toolbar/index.d.ts +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/tooltip/createTooltip.d.ts +5 -5
- package/dist/tooltip/createTooltip.d.ts.map +1 -1
- package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
- package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
- package/dist/tooltip/index.d.ts +2 -2
- package/dist/tree/createTree.d.ts +3 -3
- package/dist/tree/createTree.d.ts.map +1 -1
- package/dist/tree/createTreeItem.d.ts +4 -4
- package/dist/tree/createTreeItem.d.ts.map +1 -1
- package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
- package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/types.d.ts +10 -6
- package/dist/tree/types.d.ts.map +1 -1
- package/dist/utils/createDescription.d.ts +2 -2
- package/dist/utils/createDescription.d.ts.map +1 -1
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/focus.d.ts +1 -1
- package/dist/utils/focus.d.ts.map +1 -1
- package/dist/utils/geometry.d.ts.map +1 -1
- package/dist/utils/index.d.ts +12 -12
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/mergeProps.d.ts.map +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
- package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
- package/dist/visually-hidden/index.d.ts +1 -1
- package/package.json +32 -32
- package/src/actiongroup/createActionGroup.ts +101 -91
- package/src/actiongroup/index.ts +1 -1
- package/src/autocomplete/createAutocomplete.ts +117 -134
- package/src/autocomplete/index.ts +1 -1
- package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
- package/src/breadcrumbs/index.ts +1 -1
- package/src/button/createButton.ts +102 -73
- package/src/button/createToggleButton.ts +10 -10
- package/src/button/createToggleButtonGroup.ts +25 -32
- package/src/button/index.ts +6 -9
- package/src/button/types.ts +18 -12
- package/src/calendar/createCalendar.ts +62 -29
- package/src/calendar/createCalendarCell.ts +98 -46
- package/src/calendar/createCalendarGrid.ts +57 -35
- package/src/calendar/createRangeCalendar.ts +66 -31
- package/src/calendar/createRangeCalendarCell.ts +92 -31
- package/src/calendar/index.ts +5 -9
- package/src/calendar/intl/index.ts +210 -0
- package/src/calendar/utils.ts +227 -0
- package/src/checkbox/createCheckbox.ts +13 -21
- package/src/checkbox/createCheckboxGroup.ts +68 -44
- package/src/checkbox/createCheckboxGroupItem.ts +16 -27
- package/src/checkbox/createCheckboxGroupState.ts +3 -22
- package/src/checkbox/index.ts +8 -10
- package/src/collections/index.ts +33 -29
- package/src/color/createColorArea.ts +232 -154
- package/src/color/createColorField.ts +107 -58
- package/src/color/createColorSlider.ts +231 -73
- package/src/color/createColorSwatch.ts +38 -13
- package/src/color/createColorWheel.ts +208 -83
- package/src/color/index.ts +6 -6
- package/src/color/types.ts +98 -16
- package/src/combobox/createComboBox.ts +157 -100
- package/src/combobox/index.ts +1 -1
- package/src/combobox/intl/index.ts +5 -5
- package/src/datepicker/createDateField.ts +192 -39
- package/src/datepicker/createDatePicker.ts +260 -67
- package/src/datepicker/createDatePickerGroup.ts +149 -0
- package/src/datepicker/createDateRangePicker.ts +105 -57
- package/src/datepicker/createDateSegment.ts +183 -96
- package/src/datepicker/createTimeField.ts +38 -34
- package/src/datepicker/createTimeSegment.ts +67 -85
- package/src/datepicker/index.ts +13 -14
- package/src/dialog/createDialog.ts +45 -38
- package/src/dialog/index.ts +2 -2
- package/src/dialog/types.ts +4 -4
- package/src/disclosure/createDisclosure.ts +138 -33
- package/src/disclosure/createDisclosureGroup.ts +8 -21
- package/src/disclosure/index.ts +2 -2
- package/src/dnd/createDrag.ts +19 -25
- package/src/dnd/createDraggableCollection.ts +4 -4
- package/src/dnd/createDraggableItem.ts +20 -19
- package/src/dnd/createDrop.ts +42 -51
- package/src/dnd/createDroppableCollection.ts +290 -173
- package/src/dnd/createDroppableItem.ts +34 -34
- package/src/dnd/index.ts +23 -12
- package/src/dnd/types.ts +4 -7
- package/src/dnd/utils.ts +36 -49
- package/src/focus/FocusScope.tsx +155 -164
- package/src/focus/createAutoFocus.ts +4 -20
- package/src/focus/createFocusRestore.ts +15 -28
- package/src/focus/createVirtualFocus.ts +20 -36
- package/src/focus/index.ts +4 -8
- package/src/form/createFormReset.ts +4 -4
- package/src/form/createFormValidation.ts +20 -43
- package/src/form/index.ts +2 -5
- package/src/grid/GridKeyboardDelegate.ts +30 -30
- package/src/grid/createGrid.ts +36 -36
- package/src/grid/createGridCell.ts +18 -18
- package/src/grid/createGridRow.ts +14 -14
- package/src/grid/index.ts +5 -5
- package/src/grid/types.ts +8 -8
- package/src/gridlist/createGridList.ts +34 -29
- package/src/gridlist/createGridListItem.ts +68 -23
- package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
- package/src/gridlist/index.ts +4 -4
- package/src/gridlist/types.ts +11 -7
- package/src/i18n/createCollator.ts +5 -18
- package/src/i18n/createDateFormatter.ts +5 -13
- package/src/i18n/createFilter.ts +11 -24
- package/src/i18n/createNumberFormatter.ts +4 -6
- package/src/i18n/createStringFormatter.ts +19 -15
- package/src/i18n/index.ts +8 -11
- package/src/i18n/locale.tsx +15 -40
- package/src/i18n/utils.ts +35 -39
- package/src/index.ts +68 -169
- package/src/interactions/FocusableProvider.tsx +3 -7
- package/src/interactions/PressEvent.ts +4 -4
- package/src/interactions/createFocus.ts +12 -8
- package/src/interactions/createFocusRing.ts +21 -19
- package/src/interactions/createFocusWithin.ts +20 -13
- package/src/interactions/createFocusable.ts +15 -16
- package/src/interactions/createHover.ts +70 -55
- package/src/interactions/createInteractionModality.ts +75 -82
- package/src/interactions/createKeyboard.ts +2 -2
- package/src/interactions/createLongPress.ts +23 -23
- package/src/interactions/createMove.ts +72 -62
- package/src/interactions/createPress.ts +164 -87
- package/src/interactions/index.ts +24 -16
- package/src/label/createField.ts +18 -19
- package/src/label/createLabel.ts +18 -30
- package/src/label/createLabels.ts +8 -12
- package/src/label/index.ts +5 -5
- package/src/landmark/createLandmark.ts +30 -51
- package/src/landmark/index.ts +1 -1
- package/src/link/createLink.ts +83 -56
- package/src/link/index.ts +1 -1
- package/src/listbox/createListBox.ts +69 -58
- package/src/listbox/createOption.ts +83 -37
- package/src/listbox/index.ts +2 -6
- package/src/live-announcer/announce.ts +44 -71
- package/src/live-announcer/index.ts +1 -1
- package/src/menu/createMenu.ts +79 -50
- package/src/menu/createMenuItem.ts +79 -27
- package/src/menu/createMenuTrigger.ts +15 -15
- package/src/menu/index.ts +3 -12
- package/src/meter/createMeter.ts +7 -15
- package/src/meter/index.ts +1 -1
- package/src/numberfield/createNumberField.ts +138 -81
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/ariaHideOutside.ts +14 -10
- package/src/overlays/createInteractOutside.ts +21 -18
- package/src/overlays/createModal.tsx +17 -17
- package/src/overlays/createOverlay.ts +38 -8
- package/src/overlays/createOverlayTrigger.ts +16 -16
- package/src/overlays/createPreventScroll.ts +46 -24
- package/src/overlays/index.ts +6 -17
- package/src/popover/calculatePosition.ts +115 -117
- package/src/popover/createOverlayPosition.ts +46 -40
- package/src/popover/createPopover.ts +42 -17
- package/src/popover/index.ts +3 -3
- package/src/progress/createProgressBar.ts +31 -32
- package/src/progress/index.ts +1 -1
- package/src/radio/createRadio.ts +95 -73
- package/src/radio/createRadioGroup.ts +83 -77
- package/src/radio/createRadioGroupState.ts +7 -31
- package/src/radio/index.ts +3 -8
- package/src/searchfield/createSearchField.ts +57 -29
- package/src/searchfield/index.ts +2 -2
- package/src/select/createHiddenSelect.tsx +57 -44
- package/src/select/createSelect.ts +128 -71
- package/src/select/index.ts +2 -7
- package/src/selection/createTypeSelect.ts +11 -11
- package/src/selection/index.ts +1 -1
- package/src/separator/createSeparator.ts +20 -25
- package/src/separator/index.ts +1 -1
- package/src/slider/createSlider.ts +93 -124
- package/src/slider/index.ts +2 -2
- package/src/ssr/index.tsx +8 -47
- package/src/steplist/createStepList.ts +106 -0
- package/src/steplist/index.ts +8 -0
- package/src/switch/createSwitch.ts +9 -14
- package/src/switch/index.ts +1 -1
- package/src/table/createTable.ts +152 -85
- package/src/table/createTableCell.ts +17 -16
- package/src/table/createTableColumnHeader.ts +67 -20
- package/src/table/createTableColumnResize.ts +256 -0
- package/src/table/createTableHeaderRow.ts +7 -7
- package/src/table/createTableRow.ts +149 -29
- package/src/table/createTableRowGroup.ts +5 -7
- package/src/table/createTableSelectAllCheckbox.ts +12 -11
- package/src/table/createTableSelectionCheckbox.ts +8 -8
- package/src/table/index.ts +14 -9
- package/src/table/types.ts +15 -7
- package/src/tabs/createTabs.ts +74 -92
- package/src/tabs/index.ts +1 -1
- package/src/tag/createTag.ts +52 -50
- package/src/tag/createTagGroup.ts +47 -41
- package/src/tag/index.ts +2 -6
- package/src/textfield/createTextField.ts +67 -35
- package/src/textfield/index.ts +1 -5
- package/src/toast/createToast.ts +28 -26
- package/src/toast/createToastRegion.ts +169 -26
- package/src/toast/index.ts +2 -6
- package/src/toggle/createToggle.ts +95 -53
- package/src/toggle/createToggleState.ts +2 -10
- package/src/toggle/index.ts +4 -5
- package/src/toolbar/createToolbar.ts +193 -210
- package/src/toolbar/index.ts +1 -1
- package/src/tooltip/createTooltip.ts +11 -24
- package/src/tooltip/createTooltipTrigger.ts +61 -49
- package/src/tooltip/index.ts +2 -2
- package/src/tree/createTree.ts +35 -37
- package/src/tree/createTreeItem.ts +29 -29
- package/src/tree/createTreeSelectionCheckbox.ts +11 -8
- package/src/tree/index.ts +4 -4
- package/src/tree/types.ts +10 -6
- package/src/utils/createDescription.ts +6 -23
- package/src/utils/dom.ts +61 -54
- package/src/utils/env.ts +9 -11
- package/src/utils/events.ts +7 -7
- package/src/utils/filterDOMProps.ts +49 -49
- package/src/utils/focus.ts +60 -68
- package/src/utils/geometry.ts +1 -4
- package/src/utils/globalListeners.ts +9 -9
- package/src/utils/index.ts +12 -22
- package/src/utils/mergeProps.ts +42 -15
- package/src/utils/platform.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
- package/src/utils/textSelection.ts +16 -16
- package/src/visually-hidden/createVisuallyHidden.ts +16 -28
- package/src/visually-hidden/index.ts +1 -1
- package/dist/i18n/NumberFormatter.d.ts +0 -43
- package/dist/i18n/NumberFormatter.d.ts.map +0 -1
- package/dist/index.ssr.js +0 -17082
- package/dist/index.ssr.js.map +0 -1
- package/src/i18n/NumberFormatter.ts +0 -266
package/src/table/createTable.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Based on @react-aria/table/useTable.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createMemo, createEffect, on, type Accessor } from
|
|
7
|
-
import type { JSX } from
|
|
8
|
-
import { createId } from
|
|
9
|
-
import type { TableState, TableCollection, Key, GridNode } from
|
|
10
|
-
import type { AriaTableProps, TableAria } from
|
|
11
|
-
import { useLocale } from
|
|
12
|
-
import { announce } from
|
|
6
|
+
import { createMemo, createEffect, on, type Accessor } from "solid-js";
|
|
7
|
+
import type { JSX } from "solid-js";
|
|
8
|
+
import { createId } from "@proyecto-viviana/solid-stately";
|
|
9
|
+
import type { TableState, TableCollection, Key, GridNode } from "@proyecto-viviana/solid-stately";
|
|
10
|
+
import type { AriaTableProps, TableAria } from "./types";
|
|
11
|
+
import { useLocale } from "../i18n";
|
|
12
|
+
import { announce } from "../live-announcer";
|
|
13
13
|
|
|
14
14
|
// Global map to store table metadata for child components
|
|
15
15
|
const tableMap = new WeakMap<
|
|
@@ -18,7 +18,7 @@ const tableMap = new WeakMap<
|
|
|
18
18
|
tableId: string;
|
|
19
19
|
actions: { onRowAction?: (key: Key) => void; onCellAction?: (key: Key) => void };
|
|
20
20
|
shouldSelectOnPressUp?: boolean;
|
|
21
|
-
focusMode?:
|
|
21
|
+
focusMode?: "row" | "cell";
|
|
22
22
|
}
|
|
23
23
|
>();
|
|
24
24
|
|
|
@@ -34,13 +34,17 @@ export function getTableData<T>(state: TableState<T, TableCollection<T>>) {
|
|
|
34
34
|
*/
|
|
35
35
|
function getChildCells<T>(collection: TableCollection<T>, rowKey: Key): GridNode<T>[] {
|
|
36
36
|
const children = collection.getChildren(rowKey);
|
|
37
|
-
return [...children].filter(node => node.type ===
|
|
37
|
+
return [...children].filter((node) => node.type === "cell" || node.type === "rowheader");
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Helper to get cell at specific index in a row
|
|
42
42
|
*/
|
|
43
|
-
function getCellAtIndex<T>(
|
|
43
|
+
function getCellAtIndex<T>(
|
|
44
|
+
collection: TableCollection<T>,
|
|
45
|
+
rowKey: Key,
|
|
46
|
+
index: number,
|
|
47
|
+
): GridNode<T> | null {
|
|
44
48
|
const cells = getChildCells(collection, rowKey);
|
|
45
49
|
return cells[index] ?? null;
|
|
46
50
|
}
|
|
@@ -49,14 +53,21 @@ function getCellAtIndex<T>(collection: TableCollection<T>, rowKey: Key, index: n
|
|
|
49
53
|
* Helper to check if a node is a cell
|
|
50
54
|
*/
|
|
51
55
|
function isCell<T>(node: GridNode<T> | null): boolean {
|
|
52
|
-
return node?.type ===
|
|
56
|
+
return node?.type === "cell" || node?.type === "rowheader";
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
/**
|
|
56
60
|
* Helper to check if a node is a row
|
|
57
61
|
*/
|
|
58
62
|
function isRow<T>(node: GridNode<T> | null): boolean {
|
|
59
|
-
return node?.type ===
|
|
63
|
+
return node?.type === "item";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function focusCurrentElement(el: HTMLElement | null | undefined) {
|
|
67
|
+
const target = el?.querySelector<HTMLElement>(
|
|
68
|
+
'[role="row"][tabindex="0"], [role="rowheader"][tabindex="0"], [role="gridcell"][tabindex="0"], [role="columnheader"][tabindex="0"]',
|
|
69
|
+
);
|
|
70
|
+
target?.focus();
|
|
60
71
|
}
|
|
61
72
|
|
|
62
73
|
/**
|
|
@@ -65,14 +76,16 @@ function isRow<T>(node: GridNode<T> | null): boolean {
|
|
|
65
76
|
export function createTable<T extends object>(
|
|
66
77
|
props: Accessor<AriaTableProps>,
|
|
67
78
|
state: Accessor<TableState<T, TableCollection<T>>>,
|
|
68
|
-
ref: Accessor<HTMLTableElement | null
|
|
79
|
+
ref: Accessor<HTMLTableElement | null>,
|
|
69
80
|
): TableAria {
|
|
70
81
|
const id = createId(props().id);
|
|
71
82
|
const locale = useLocale();
|
|
72
83
|
|
|
73
84
|
// Track previous sort descriptor for announcements
|
|
74
|
-
let prevSortDescriptor: { column: Key; direction:
|
|
85
|
+
let prevSortDescriptor: { column: Key; direction: "ascending" | "descending" } | null = null;
|
|
75
86
|
let isFirstRender = true;
|
|
87
|
+
let typeaheadBuffer = "";
|
|
88
|
+
let typeaheadTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
76
89
|
|
|
77
90
|
// Store metadata for child components
|
|
78
91
|
const storeTableData = () => {
|
|
@@ -95,38 +108,83 @@ export function createTable<T extends object>(
|
|
|
95
108
|
});
|
|
96
109
|
|
|
97
110
|
// Announce sort changes (only after initial render)
|
|
98
|
-
createEffect(
|
|
99
|
-
(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
isFirstRender
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (sortDescriptor && (
|
|
108
|
-
sortDescriptor.column !== prevSortDescriptor?.column ||
|
|
109
|
-
sortDescriptor.direction !== prevSortDescriptor?.direction
|
|
110
|
-
)) {
|
|
111
|
-
const collection = state().collection;
|
|
112
|
-
const column = collection.columns.find(c => c.key === sortDescriptor.column);
|
|
113
|
-
const columnName = column?.textValue ?? String(sortDescriptor.column);
|
|
114
|
-
const directionText = sortDescriptor.direction === 'ascending' ? 'ascending' : 'descending';
|
|
111
|
+
createEffect(
|
|
112
|
+
on(
|
|
113
|
+
() => state().sortDescriptor,
|
|
114
|
+
(sortDescriptor) => {
|
|
115
|
+
if (isFirstRender) {
|
|
116
|
+
isFirstRender = false;
|
|
117
|
+
prevSortDescriptor = sortDescriptor;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
if (
|
|
122
|
+
sortDescriptor &&
|
|
123
|
+
(sortDescriptor.column !== prevSortDescriptor?.column ||
|
|
124
|
+
sortDescriptor.direction !== prevSortDescriptor?.direction)
|
|
125
|
+
) {
|
|
126
|
+
const collection = state().collection;
|
|
127
|
+
const column = collection.columns.find((c) => c.key === sortDescriptor.column);
|
|
128
|
+
const columnName = column?.textValue ?? String(sortDescriptor.column);
|
|
129
|
+
const directionText =
|
|
130
|
+
sortDescriptor.direction === "ascending" ? "ascending" : "descending";
|
|
131
|
+
|
|
132
|
+
announce(`Sorted by ${columnName}, ${directionText}`, "assertive", 500);
|
|
133
|
+
}
|
|
118
134
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
prevSortDescriptor = sortDescriptor;
|
|
136
|
+
},
|
|
137
|
+
),
|
|
138
|
+
);
|
|
122
139
|
|
|
123
140
|
// Keyboard navigation handler with full 2D navigation
|
|
124
141
|
const onKeyDown = (e: KeyboardEvent) => {
|
|
125
142
|
const s = state();
|
|
126
143
|
const collection = s.collection;
|
|
127
144
|
const p = props();
|
|
128
|
-
const focusMode = p.focusMode ??
|
|
129
|
-
const isRTL = locale().direction ===
|
|
145
|
+
const focusMode = p.focusMode ?? "row";
|
|
146
|
+
const isRTL = locale().direction === "rtl";
|
|
147
|
+
const setFocusedKey = (key: Key) => {
|
|
148
|
+
s.setFocusedKey(key);
|
|
149
|
+
queueMicrotask(() => focusCurrentElement(ref()));
|
|
150
|
+
};
|
|
151
|
+
const runTypeahead = (focusedKey: Key, focusedItem: GridNode<T>) => {
|
|
152
|
+
if (e.key.length !== 1 || e.ctrlKey || e.metaKey || e.altKey) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
typeaheadBuffer += e.key.toLocaleLowerCase();
|
|
157
|
+
if (typeaheadTimeout) {
|
|
158
|
+
clearTimeout(typeaheadTimeout);
|
|
159
|
+
}
|
|
160
|
+
typeaheadTimeout = setTimeout(() => {
|
|
161
|
+
typeaheadBuffer = "";
|
|
162
|
+
typeaheadTimeout = undefined;
|
|
163
|
+
}, 500);
|
|
164
|
+
|
|
165
|
+
const rows = Array.from(collection).filter((node) => !s.isDisabled(node.key));
|
|
166
|
+
if (rows.length === 0) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const currentRowKey =
|
|
171
|
+
isCell(focusedItem) && focusedItem.parentKey != null ? focusedItem.parentKey : focusedKey;
|
|
172
|
+
const currentIndex = rows.findIndex((node) => node.key === currentRowKey);
|
|
173
|
+
const orderedRows =
|
|
174
|
+
currentIndex >= 0
|
|
175
|
+
? [...rows.slice(currentIndex + 1), ...rows.slice(0, currentIndex + 1)]
|
|
176
|
+
: rows;
|
|
177
|
+
const match = orderedRows.find((node) =>
|
|
178
|
+
collection.getTextValue(node.key).toLocaleLowerCase().startsWith(typeaheadBuffer),
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
if (match) {
|
|
182
|
+
e.preventDefault();
|
|
183
|
+
setFocusedKey(match.key);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return true;
|
|
187
|
+
};
|
|
130
188
|
|
|
131
189
|
if (s.isKeyboardNavigationDisabled) {
|
|
132
190
|
return;
|
|
@@ -135,11 +193,11 @@ export function createTable<T extends object>(
|
|
|
135
193
|
const focusedKey = s.focusedKey;
|
|
136
194
|
if (focusedKey == null) {
|
|
137
195
|
// If nothing is focused, focus the first item
|
|
138
|
-
if (e.key ===
|
|
196
|
+
if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Home" || e.key === "End") {
|
|
139
197
|
const firstKey = collection.getFirstKey();
|
|
140
198
|
if (firstKey != null) {
|
|
141
199
|
e.preventDefault();
|
|
142
|
-
|
|
200
|
+
setFocusedKey(firstKey);
|
|
143
201
|
}
|
|
144
202
|
}
|
|
145
203
|
return;
|
|
@@ -151,7 +209,7 @@ export function createTable<T extends object>(
|
|
|
151
209
|
let nextKey: Key | null = null;
|
|
152
210
|
|
|
153
211
|
switch (e.key) {
|
|
154
|
-
case
|
|
212
|
+
case "ArrowDown": {
|
|
155
213
|
e.preventDefault();
|
|
156
214
|
// If focused on a cell, move to the same column in the next row
|
|
157
215
|
if (isCell(focusedItem) && focusedItem.parentKey != null) {
|
|
@@ -168,7 +226,7 @@ export function createTable<T extends object>(
|
|
|
168
226
|
break;
|
|
169
227
|
}
|
|
170
228
|
|
|
171
|
-
case
|
|
229
|
+
case "ArrowUp": {
|
|
172
230
|
e.preventDefault();
|
|
173
231
|
// If focused on a cell, move to the same column in the previous row
|
|
174
232
|
if (isCell(focusedItem) && focusedItem.parentKey != null) {
|
|
@@ -185,7 +243,7 @@ export function createTable<T extends object>(
|
|
|
185
243
|
break;
|
|
186
244
|
}
|
|
187
245
|
|
|
188
|
-
case
|
|
246
|
+
case "ArrowRight": {
|
|
189
247
|
e.preventDefault();
|
|
190
248
|
const goNext = !isRTL;
|
|
191
249
|
|
|
@@ -203,7 +261,7 @@ export function createTable<T extends object>(
|
|
|
203
261
|
|
|
204
262
|
if (targetIndex >= 0 && targetIndex < cells.length) {
|
|
205
263
|
nextKey = cells[targetIndex].key;
|
|
206
|
-
} else if (focusMode ===
|
|
264
|
+
} else if (focusMode === "row") {
|
|
207
265
|
// Wrap to row
|
|
208
266
|
nextKey = focusedItem.parentKey;
|
|
209
267
|
} else {
|
|
@@ -214,7 +272,7 @@ export function createTable<T extends object>(
|
|
|
214
272
|
break;
|
|
215
273
|
}
|
|
216
274
|
|
|
217
|
-
case
|
|
275
|
+
case "ArrowLeft": {
|
|
218
276
|
e.preventDefault();
|
|
219
277
|
const goNext = isRTL;
|
|
220
278
|
|
|
@@ -232,7 +290,7 @@ export function createTable<T extends object>(
|
|
|
232
290
|
|
|
233
291
|
if (targetIndex >= 0 && targetIndex < cells.length) {
|
|
234
292
|
nextKey = cells[targetIndex].key;
|
|
235
|
-
} else if (focusMode ===
|
|
293
|
+
} else if (focusMode === "row") {
|
|
236
294
|
// Wrap to row
|
|
237
295
|
nextKey = focusedItem.parentKey;
|
|
238
296
|
} else {
|
|
@@ -243,13 +301,13 @@ export function createTable<T extends object>(
|
|
|
243
301
|
break;
|
|
244
302
|
}
|
|
245
303
|
|
|
246
|
-
case
|
|
304
|
+
case "Home": {
|
|
247
305
|
e.preventDefault();
|
|
248
306
|
if (e.ctrlKey) {
|
|
249
307
|
// Ctrl+Home: Go to first row/cell
|
|
250
308
|
const firstRowKey = collection.getFirstKey();
|
|
251
309
|
if (firstRowKey != null) {
|
|
252
|
-
if (isCell(focusedItem) || focusMode ===
|
|
310
|
+
if (isCell(focusedItem) || focusMode === "cell") {
|
|
253
311
|
const cells = getChildCells(collection, firstRowKey);
|
|
254
312
|
nextKey = cells[0]?.key ?? firstRowKey;
|
|
255
313
|
} else {
|
|
@@ -267,13 +325,13 @@ export function createTable<T extends object>(
|
|
|
267
325
|
break;
|
|
268
326
|
}
|
|
269
327
|
|
|
270
|
-
case
|
|
328
|
+
case "End": {
|
|
271
329
|
e.preventDefault();
|
|
272
330
|
if (e.ctrlKey) {
|
|
273
331
|
// Ctrl+End: Go to last row/cell
|
|
274
332
|
const lastRowKey = collection.getLastKey();
|
|
275
333
|
if (lastRowKey != null) {
|
|
276
|
-
if (isCell(focusedItem) || focusMode ===
|
|
334
|
+
if (isCell(focusedItem) || focusMode === "cell") {
|
|
277
335
|
const cells = getChildCells(collection, lastRowKey);
|
|
278
336
|
nextKey = cells[cells.length - 1]?.key ?? lastRowKey;
|
|
279
337
|
} else {
|
|
@@ -291,11 +349,11 @@ export function createTable<T extends object>(
|
|
|
291
349
|
break;
|
|
292
350
|
}
|
|
293
351
|
|
|
294
|
-
case
|
|
352
|
+
case "PageDown": {
|
|
295
353
|
e.preventDefault();
|
|
296
354
|
// Move down by roughly a page (using DOM measurements if available)
|
|
297
355
|
const el = ref();
|
|
298
|
-
if (el) {
|
|
356
|
+
if (el && el.clientHeight > 0) {
|
|
299
357
|
const visibleHeight = el.clientHeight;
|
|
300
358
|
let currentKey: Key | null = focusedKey;
|
|
301
359
|
let traveled = 0;
|
|
@@ -329,9 +387,10 @@ export function createTable<T extends object>(
|
|
|
329
387
|
} else {
|
|
330
388
|
// Fallback: move 10 rows
|
|
331
389
|
let count = 10;
|
|
332
|
-
let current: Key | null =
|
|
333
|
-
|
|
334
|
-
|
|
390
|
+
let current: Key | null =
|
|
391
|
+
isCell(focusedItem) && focusedItem.parentKey != null
|
|
392
|
+
? focusedItem.parentKey
|
|
393
|
+
: focusedKey;
|
|
335
394
|
while (count > 0 && current != null) {
|
|
336
395
|
const next = collection.getKeyAfter(current);
|
|
337
396
|
if (next == null) break;
|
|
@@ -348,11 +407,11 @@ export function createTable<T extends object>(
|
|
|
348
407
|
break;
|
|
349
408
|
}
|
|
350
409
|
|
|
351
|
-
case
|
|
410
|
+
case "PageUp": {
|
|
352
411
|
e.preventDefault();
|
|
353
412
|
// Move up by roughly a page
|
|
354
413
|
const el = ref();
|
|
355
|
-
if (el) {
|
|
414
|
+
if (el && el.clientHeight > 0) {
|
|
356
415
|
const visibleHeight = el.clientHeight;
|
|
357
416
|
let currentKey: Key | null = focusedKey;
|
|
358
417
|
let traveled = 0;
|
|
@@ -384,9 +443,10 @@ export function createTable<T extends object>(
|
|
|
384
443
|
} else {
|
|
385
444
|
// Fallback: move 10 rows
|
|
386
445
|
let count = 10;
|
|
387
|
-
let current: Key | null =
|
|
388
|
-
|
|
389
|
-
|
|
446
|
+
let current: Key | null =
|
|
447
|
+
isCell(focusedItem) && focusedItem.parentKey != null
|
|
448
|
+
? focusedItem.parentKey
|
|
449
|
+
: focusedKey;
|
|
390
450
|
while (count > 0 && current != null) {
|
|
391
451
|
const prev = collection.getKeyBefore(current);
|
|
392
452
|
if (prev == null) break;
|
|
@@ -403,30 +463,33 @@ export function createTable<T extends object>(
|
|
|
403
463
|
break;
|
|
404
464
|
}
|
|
405
465
|
|
|
406
|
-
case
|
|
407
|
-
|
|
466
|
+
case "Escape":
|
|
467
|
+
if (p.escapeKeyBehavior !== "none") {
|
|
468
|
+
s.clearSelection();
|
|
469
|
+
}
|
|
408
470
|
return;
|
|
409
471
|
|
|
410
|
-
case
|
|
472
|
+
case "a":
|
|
411
473
|
if (e.ctrlKey || e.metaKey) {
|
|
412
474
|
e.preventDefault();
|
|
413
|
-
if (s.selectionMode ===
|
|
475
|
+
if (s.selectionMode === "multiple") {
|
|
414
476
|
s.selectAll();
|
|
415
477
|
}
|
|
416
478
|
}
|
|
417
479
|
return;
|
|
418
480
|
|
|
419
|
-
case
|
|
420
|
-
case
|
|
481
|
+
case " ":
|
|
482
|
+
case "Enter":
|
|
421
483
|
e.preventDefault();
|
|
422
484
|
// Toggle selection or trigger action
|
|
423
|
-
if (s.selectionMode !==
|
|
485
|
+
if (s.selectionMode !== "none") {
|
|
424
486
|
// For cells, select the parent row
|
|
425
|
-
const keyToSelect =
|
|
426
|
-
|
|
427
|
-
|
|
487
|
+
const keyToSelect =
|
|
488
|
+
isCell(focusedItem) && focusedItem.parentKey != null
|
|
489
|
+
? focusedItem.parentKey
|
|
490
|
+
: focusedKey;
|
|
428
491
|
|
|
429
|
-
if (e.shiftKey && s.selectionMode ===
|
|
492
|
+
if (e.shiftKey && s.selectionMode === "multiple") {
|
|
430
493
|
s.extendSelection(keyToSelect);
|
|
431
494
|
} else {
|
|
432
495
|
s.toggleSelection(keyToSelect);
|
|
@@ -435,19 +498,23 @@ export function createTable<T extends object>(
|
|
|
435
498
|
return;
|
|
436
499
|
|
|
437
500
|
default:
|
|
501
|
+
if (runTypeahead(focusedKey, focusedItem)) {
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
438
504
|
return;
|
|
439
505
|
}
|
|
440
506
|
|
|
441
507
|
if (nextKey != null) {
|
|
442
|
-
|
|
508
|
+
setFocusedKey(nextKey);
|
|
443
509
|
|
|
444
510
|
// Handle shift+arrow for range selection
|
|
445
|
-
if (e.shiftKey && s.selectionMode ===
|
|
511
|
+
if (e.shiftKey && s.selectionMode === "multiple") {
|
|
446
512
|
// For cells, select the parent row
|
|
447
513
|
const focusedNode = collection.getItem(nextKey);
|
|
448
|
-
const keyToSelect =
|
|
449
|
-
|
|
450
|
-
|
|
514
|
+
const keyToSelect =
|
|
515
|
+
focusedNode && isCell(focusedNode) && focusedNode.parentKey != null
|
|
516
|
+
? focusedNode.parentKey
|
|
517
|
+
: nextKey;
|
|
451
518
|
s.extendSelection(keyToSelect);
|
|
452
519
|
}
|
|
453
520
|
}
|
|
@@ -488,8 +555,8 @@ export function createTable<T extends object>(
|
|
|
488
555
|
// Warn if no label is provided
|
|
489
556
|
createMemo(() => {
|
|
490
557
|
const p = props();
|
|
491
|
-
if (!p[
|
|
492
|
-
console.warn(
|
|
558
|
+
if (!p["aria-label"] && !p["aria-labelledby"]) {
|
|
559
|
+
console.warn("Table: An aria-label or aria-labelledby prop is required for accessibility.");
|
|
493
560
|
}
|
|
494
561
|
});
|
|
495
562
|
|
|
@@ -498,12 +565,12 @@ export function createTable<T extends object>(
|
|
|
498
565
|
const s = state();
|
|
499
566
|
|
|
500
567
|
const baseProps: Record<string, unknown> = {
|
|
501
|
-
role:
|
|
568
|
+
role: "grid",
|
|
502
569
|
id,
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
570
|
+
"aria-label": p["aria-label"],
|
|
571
|
+
"aria-labelledby": p["aria-labelledby"],
|
|
572
|
+
"aria-describedby": p["aria-describedby"],
|
|
573
|
+
"aria-multiselectable": s.selectionMode === "multiple" ? "true" : undefined,
|
|
507
574
|
// Keep the grid itself tabbable so keyboard users can enter
|
|
508
575
|
// row/cell navigation without requiring a prior pointer interaction.
|
|
509
576
|
tabIndex: 0,
|
|
@@ -513,8 +580,8 @@ export function createTable<T extends object>(
|
|
|
513
580
|
};
|
|
514
581
|
|
|
515
582
|
if (p.isVirtualized) {
|
|
516
|
-
baseProps[
|
|
517
|
-
baseProps[
|
|
583
|
+
baseProps["aria-rowcount"] = s.collection.rowCount;
|
|
584
|
+
baseProps["aria-colcount"] = s.collection.columnCount;
|
|
518
585
|
}
|
|
519
586
|
|
|
520
587
|
return baseProps as JSX.HTMLAttributes<HTMLTableElement>;
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Based on @react-aria/table/useTableCell.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createMemo, createSignal, type Accessor } from
|
|
7
|
-
import type { JSX } from
|
|
8
|
-
import type { TableState, TableCollection } from
|
|
9
|
-
import type { AriaTableCellProps, TableCellAria } from
|
|
10
|
-
import { getTableData } from
|
|
6
|
+
import { createMemo, createSignal, type Accessor } from "solid-js";
|
|
7
|
+
import type { JSX } from "solid-js";
|
|
8
|
+
import type { TableState, TableCollection } from "@proyecto-viviana/solid-stately";
|
|
9
|
+
import type { AriaTableCellProps, TableCellAria } from "./types";
|
|
10
|
+
import { getTableData } from "./createTable";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Creates accessibility props for a table cell.
|
|
@@ -15,7 +15,7 @@ import { getTableData } from './createTable';
|
|
|
15
15
|
export function createTableCell<T extends object>(
|
|
16
16
|
props: Accessor<AriaTableCellProps>,
|
|
17
17
|
state: Accessor<TableState<T, TableCollection<T>>>,
|
|
18
|
-
_ref: Accessor<HTMLTableCellElement | null
|
|
18
|
+
_ref: Accessor<HTMLTableCellElement | null>,
|
|
19
19
|
): TableCellAria {
|
|
20
20
|
const [isPressed, setIsPressed] = createSignal(false);
|
|
21
21
|
|
|
@@ -64,7 +64,7 @@ export function createTableCell<T extends object>(
|
|
|
64
64
|
if (isDisabled()) return;
|
|
65
65
|
|
|
66
66
|
// Enter triggers cell action
|
|
67
|
-
if (e.key ===
|
|
67
|
+
if (e.key === "Enter") {
|
|
68
68
|
const tableData = getTableData(s);
|
|
69
69
|
const onCellAction = tableData?.actions.onCellAction;
|
|
70
70
|
|
|
@@ -103,17 +103,18 @@ export function createTableCell<T extends object>(
|
|
|
103
103
|
const tableData = getTableData(s);
|
|
104
104
|
|
|
105
105
|
// Determine the role based on node type
|
|
106
|
-
let role: string =
|
|
107
|
-
if (node.type ===
|
|
108
|
-
role =
|
|
106
|
+
let role: string = "gridcell";
|
|
107
|
+
if (node.type === "rowheader") {
|
|
108
|
+
role = "rowheader";
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
const baseProps: Record<string, unknown> = {
|
|
112
112
|
role,
|
|
113
|
-
id:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
id:
|
|
114
|
+
tableData && node.parentKey != null
|
|
115
|
+
? `${tableData.tableId}-${node.parentKey}-${node.key}`
|
|
116
|
+
: undefined,
|
|
117
|
+
"aria-disabled": isDisabled() || undefined,
|
|
117
118
|
tabIndex: isFocused() ? 0 : -1,
|
|
118
119
|
onClick,
|
|
119
120
|
onKeyDown,
|
|
@@ -124,12 +125,12 @@ export function createTableCell<T extends object>(
|
|
|
124
125
|
|
|
125
126
|
// Add aria-colindex for virtualized tables
|
|
126
127
|
if (p.isVirtualized && node.column != null) {
|
|
127
|
-
baseProps[
|
|
128
|
+
baseProps["aria-colindex"] = node.column + 1; // 1-based
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
// Add colspan if present
|
|
131
132
|
if (node.colspan != null && node.colspan > 1) {
|
|
132
|
-
baseProps[
|
|
133
|
+
baseProps["aria-colspan"] = node.colspan;
|
|
133
134
|
baseProps.colSpan = node.colspan;
|
|
134
135
|
}
|
|
135
136
|
|