@proyecto-viviana/solidaria-components 0.3.2 → 0.4.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/dist/ActionBar.js +184 -0
- package/dist/ActionBar.js.map +1 -0
- package/dist/ActionBar.jsx +128 -0
- package/dist/ActionBar.jsx.map +1 -0
- package/dist/ActionGroup.js +179 -0
- package/dist/ActionGroup.js.map +1 -0
- package/dist/ActionGroup.jsx +129 -0
- package/dist/ActionGroup.jsx.map +1 -0
- package/dist/Alert.js +111 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.jsx +82 -0
- package/dist/Alert.jsx.map +1 -0
- package/dist/Autocomplete.js +130 -0
- package/dist/Autocomplete.js.map +1 -0
- package/dist/Autocomplete.jsx +116 -0
- package/dist/Autocomplete.jsx.map +1 -0
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +334 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.jsx +266 -0
- package/dist/Breadcrumbs.jsx.map +1 -0
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +348 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.jsx +314 -0
- package/dist/Button.jsx.map +1 -0
- package/dist/Calendar.d.ts +4 -4
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +538 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.jsx +333 -0
- package/dist/Calendar.jsx.map +1 -0
- package/dist/CalendarPicker.d.ts +33 -0
- package/dist/CalendarPicker.d.ts.map +1 -0
- package/dist/CalendarPicker.js +44 -0
- package/dist/CalendarPicker.js.map +1 -0
- package/dist/CalendarPicker.jsx +44 -0
- package/dist/CalendarPicker.jsx.map +1 -0
- package/dist/Checkbox.d.ts +83 -4
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +923 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Checkbox.jsx +707 -0
- package/dist/Checkbox.jsx.map +1 -0
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +202 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collection.jsx +152 -0
- package/dist/Collection.jsx.map +1 -0
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +1720 -0
- package/dist/Color.js.map +1 -0
- package/dist/Color.jsx +1344 -0
- package/dist/Color.jsx.map +1 -0
- package/dist/ColorEditor.js +208 -0
- package/dist/ColorEditor.js.map +1 -0
- package/dist/ColorEditor.jsx +120 -0
- package/dist/ColorEditor.jsx.map +1 -0
- package/dist/ComboBox.d.ts +4 -4
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +992 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/ComboBox.jsx +714 -0
- package/dist/ComboBox.jsx.map +1 -0
- package/dist/ContextualHelpTrigger.js +146 -0
- package/dist/ContextualHelpTrigger.js.map +1 -0
- package/dist/ContextualHelpTrigger.jsx +109 -0
- package/dist/ContextualHelpTrigger.jsx.map +1 -0
- package/dist/DateField.d.ts +3 -3
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +4 -0
- package/dist/DateField.jsx +4 -0
- package/dist/DateField2.js +499 -0
- package/dist/DateField2.js.map +1 -0
- package/dist/DateField2.jsx +317 -0
- package/dist/DateField2.jsx.map +1 -0
- package/dist/DatePicker.d.ts +4 -4
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +991 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DatePicker.jsx +682 -0
- package/dist/DatePicker.jsx.map +1 -0
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +337 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Dialog.jsx +192 -0
- package/dist/Dialog.jsx.map +1 -0
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +328 -0
- package/dist/Disclosure.js.map +1 -0
- package/dist/Disclosure.jsx +230 -0
- package/dist/Disclosure.jsx.map +1 -0
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +176 -0
- package/dist/DragAndDrop.js.map +1 -0
- package/dist/DragAndDrop.jsx +160 -0
- package/dist/DragAndDrop.jsx.map +1 -0
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +189 -0
- package/dist/DropZone.js.map +1 -0
- package/dist/DropZone.jsx +144 -0
- package/dist/DropZone.jsx.map +1 -0
- package/dist/FieldError.js +66 -0
- package/dist/FieldError.js.map +1 -0
- package/dist/FieldError.jsx +47 -0
- package/dist/FieldError.jsx.map +1 -0
- package/dist/FileTrigger.js +79 -0
- package/dist/FileTrigger.js.map +1 -0
- package/dist/FileTrigger.jsx +49 -0
- package/dist/FileTrigger.jsx.map +1 -0
- package/dist/Focusable.js +70 -0
- package/dist/Focusable.js.map +1 -0
- package/dist/Focusable.jsx +69 -0
- package/dist/Focusable.jsx.map +1 -0
- package/dist/Form.js +99 -0
- package/dist/Form.js.map +1 -0
- package/dist/Form.jsx +73 -0
- package/dist/Form.jsx.map +1 -0
- package/dist/GridList.d.ts +34 -2
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +723 -0
- package/dist/GridList.js.map +1 -0
- package/dist/GridList.jsx +552 -0
- package/dist/GridList.jsx.map +1 -0
- package/dist/HiddenTimeInput.js +104 -0
- package/dist/HiddenTimeInput.js.map +1 -0
- package/dist/HiddenTimeInput.jsx +69 -0
- package/dist/HiddenTimeInput.jsx.map +1 -0
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +127 -0
- package/dist/Icon.js.map +1 -0
- package/dist/Icon.jsx +72 -0
- package/dist/Icon.jsx.map +1 -0
- package/dist/Keyboard.js +30 -0
- package/dist/Keyboard.js.map +1 -0
- package/dist/Keyboard.jsx +24 -0
- package/dist/Keyboard.jsx.map +1 -0
- package/dist/Landmark.js +134 -0
- package/dist/Landmark.js.map +1 -0
- package/dist/Landmark.jsx +118 -0
- package/dist/Landmark.jsx.map +1 -0
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +219 -0
- package/dist/Link.js.map +1 -0
- package/dist/Link.jsx +189 -0
- package/dist/Link.jsx.map +1 -0
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +670 -0
- package/dist/ListBox.js.map +1 -0
- package/dist/ListBox.jsx +508 -0
- package/dist/ListBox.jsx.map +1 -0
- package/dist/Menu.d.ts +27 -9
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +1254 -0
- package/dist/Menu.js.map +1 -0
- package/dist/Menu.jsx +1042 -0
- package/dist/Menu.jsx.map +1 -0
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +123 -0
- package/dist/Meter.js.map +1 -0
- package/dist/Meter.jsx +107 -0
- package/dist/Meter.jsx.map +1 -0
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +380 -0
- package/dist/Modal.js.map +1 -0
- package/dist/Modal.jsx +314 -0
- package/dist/Modal.jsx.map +1 -0
- package/dist/NumberField.d.ts +3 -3
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +573 -0
- package/dist/NumberField.js.map +1 -0
- package/dist/NumberField.jsx +443 -0
- package/dist/NumberField.jsx.map +1 -0
- package/dist/Popover.d.ts +10 -2
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +464 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.jsx +333 -0
- package/dist/Popover.jsx.map +1 -0
- package/dist/Pressable.js +69 -0
- package/dist/Pressable.js.map +1 -0
- package/dist/Pressable.jsx +68 -0
- package/dist/Pressable.jsx.map +1 -0
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +130 -0
- package/dist/ProgressBar.js.map +1 -0
- package/dist/ProgressBar.jsx +114 -0
- package/dist/ProgressBar.jsx.map +1 -0
- package/dist/RadioGroup.d.ts +82 -4
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +931 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioGroup.jsx +681 -0
- package/dist/RadioGroup.jsx.map +1 -0
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +410 -0
- package/dist/RangeCalendar.js.map +1 -0
- package/dist/RangeCalendar.jsx +253 -0
- package/dist/RangeCalendar.jsx.map +1 -0
- package/dist/RouterProvider.js +118 -0
- package/dist/RouterProvider.js.map +1 -0
- package/dist/RouterProvider.jsx +112 -0
- package/dist/RouterProvider.jsx.map +1 -0
- package/dist/SearchField.d.ts +2 -2
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +643 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.jsx +526 -0
- package/dist/SearchField.jsx.map +1 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +1031 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.jsx +744 -0
- package/dist/Select.jsx.map +1 -0
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +86 -0
- package/dist/SelectionIndicator.js.map +1 -0
- package/dist/SelectionIndicator.jsx +50 -0
- package/dist/SelectionIndicator.jsx.map +1 -0
- package/dist/Separator.js +97 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Separator.jsx +85 -0
- package/dist/Separator.jsx.map +1 -0
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +165 -0
- package/dist/SharedElementTransition.js.map +1 -0
- package/dist/SharedElementTransition.jsx +138 -0
- package/dist/SharedElementTransition.jsx.map +1 -0
- package/dist/Slider.d.ts +33 -1
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +515 -0
- package/dist/Slider.js.map +1 -0
- package/dist/Slider.jsx +403 -0
- package/dist/Slider.jsx.map +1 -0
- package/dist/StepList.js +198 -0
- package/dist/StepList.js.map +1 -0
- package/dist/StepList.jsx +141 -0
- package/dist/StepList.jsx.map +1 -0
- package/dist/Switch.d.ts +65 -2
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +534 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Switch.jsx +393 -0
- package/dist/Switch.jsx.map +1 -0
- package/dist/Table.d.ts +48 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +1759 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.jsx +1348 -0
- package/dist/Table.jsx.map +1 -0
- package/dist/Tabs.d.ts +0 -4
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +595 -0
- package/dist/Tabs.js.map +1 -0
- package/dist/Tabs.jsx +367 -0
- package/dist/Tabs.jsx.map +1 -0
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +378 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TagGroup.jsx +270 -0
- package/dist/TagGroup.jsx.map +1 -0
- package/dist/Text.d.ts +18 -6
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +42 -0
- package/dist/Text.js.map +1 -0
- package/dist/Text.jsx +35 -0
- package/dist/Text.jsx.map +1 -0
- package/dist/TextField.d.ts +6 -6
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +436 -0
- package/dist/TextField.js.map +1 -0
- package/dist/TextField.jsx +403 -0
- package/dist/TextField.jsx.map +1 -0
- package/dist/TimeField.d.ts +3 -3
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +372 -0
- package/dist/TimeField.js.map +1 -0
- package/dist/TimeField.jsx +224 -0
- package/dist/TimeField.jsx.map +1 -0
- package/dist/Toast.d.ts +14 -0
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +551 -0
- package/dist/Toast.js.map +1 -0
- package/dist/Toast.jsx +361 -0
- package/dist/Toast.jsx.map +1 -0
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +123 -0
- package/dist/ToggleButton.js.map +1 -0
- package/dist/ToggleButton.jsx +88 -0
- package/dist/ToggleButton.jsx.map +1 -0
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +114 -0
- package/dist/ToggleButtonGroup.js.map +1 -0
- package/dist/ToggleButtonGroup.jsx +85 -0
- package/dist/ToggleButtonGroup.jsx.map +1 -0
- package/dist/Toolbar.js +112 -0
- package/dist/Toolbar.js.map +1 -0
- package/dist/Toolbar.jsx +92 -0
- package/dist/Toolbar.jsx.map +1 -0
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +539 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.jsx +465 -0
- package/dist/Tooltip.jsx.map +1 -0
- package/dist/Tree.d.ts +14 -2
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +1424 -0
- package/dist/Tree.js.map +1 -0
- package/dist/Tree.jsx +1172 -0
- package/dist/Tree.jsx.map +1 -0
- package/dist/Virtualizer.d.ts +16 -2
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -0
- package/dist/Virtualizer.jsx +2 -0
- package/dist/Virtualizer2.js +751 -0
- package/dist/Virtualizer2.js.map +1 -0
- package/dist/Virtualizer2.jsx +730 -0
- package/dist/Virtualizer2.jsx.map +1 -0
- package/dist/VirtualizerLayouts.d.ts +18 -0
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +42 -0
- package/dist/VisuallyHidden.js.map +1 -0
- package/dist/VisuallyHidden.jsx +35 -0
- package/dist/VisuallyHidden.jsx.map +1 -0
- package/dist/contexts.js +33 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.jsx +33 -0
- package/dist/contexts.jsx.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -23932
- package/dist/index.jsx +70 -18337
- package/dist/useDragAndDrop.js +2 -0
- package/dist/useDragAndDrop.jsx +2 -0
- package/dist/useDragAndDrop2.js +395 -0
- package/dist/useDragAndDrop2.js.map +1 -0
- package/dist/useDragAndDrop2.jsx +395 -0
- package/dist/useDragAndDrop2.jsx.map +1 -0
- package/dist/utils.d.ts +83 -11
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +285 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.jsx +277 -0
- package/dist/utils.jsx.map +1 -0
- package/dist/virtualizer/Layout.js +144 -0
- package/dist/virtualizer/Layout.js.map +1 -0
- package/dist/virtualizer/Layout.jsx +144 -0
- package/dist/virtualizer/Layout.jsx.map +1 -0
- package/package.json +401 -4
- package/src/Breadcrumbs.tsx +3 -1
- package/src/Button.tsx +22 -2
- package/src/Calendar.tsx +27 -10
- package/src/CalendarPicker.tsx +73 -0
- package/src/Checkbox.tsx +539 -3
- package/src/Collection.tsx +9 -3
- package/src/Color.tsx +42 -14
- package/src/ComboBox.tsx +50 -6
- package/src/DateField.tsx +20 -2
- package/src/DatePicker.tsx +57 -5
- package/src/Dialog.tsx +13 -5
- package/src/Disclosure.tsx +3 -1
- package/src/DragAndDrop.tsx +3 -1
- package/src/DropZone.tsx +3 -1
- package/src/GridList.tsx +125 -24
- package/src/Icon.tsx +3 -1
- package/src/Link.tsx +3 -1
- package/src/ListBox.tsx +31 -4
- package/src/Menu.tsx +252 -128
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +100 -52
- package/src/NumberField.tsx +51 -8
- package/src/Popover.tsx +40 -10
- package/src/ProgressBar.tsx +3 -1
- package/src/RadioGroup.tsx +468 -4
- package/src/RangeCalendar.tsx +3 -1
- package/src/SearchField.tsx +27 -3
- package/src/Select.tsx +22 -7
- package/src/SelectionIndicator.tsx +3 -1
- package/src/SharedElementTransition.tsx +3 -1
- package/src/Slider.tsx +159 -13
- package/src/Switch.tsx +395 -2
- package/src/Table.tsx +409 -95
- package/src/Tabs.tsx +16 -45
- package/src/TagGroup.tsx +3 -1
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +43 -5
- package/src/TimeField.tsx +20 -2
- package/src/Toast.tsx +79 -14
- package/src/ToggleButton.tsx +3 -1
- package/src/ToggleButtonGroup.tsx +3 -1
- package/src/Tooltip.tsx +3 -1
- package/src/Tree.tsx +77 -9
- package/src/Virtualizer.tsx +180 -31
- package/src/VirtualizerLayouts.ts +45 -10
- package/src/index.ts +50 -0
- package/src/utils.tsx +243 -27
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
package/src/GridList.tsx
CHANGED
|
@@ -24,10 +24,12 @@ import {
|
|
|
24
24
|
createGridList,
|
|
25
25
|
createGridListItem,
|
|
26
26
|
createGridListSelectionCheckbox,
|
|
27
|
+
createGridListSection,
|
|
27
28
|
createFocusRing,
|
|
28
29
|
createHover,
|
|
29
30
|
mergeProps,
|
|
30
31
|
type AriaGridListProps,
|
|
32
|
+
type GridListSectionAria,
|
|
31
33
|
} from "@proyecto-viviana/solidaria";
|
|
32
34
|
import {
|
|
33
35
|
createGridState,
|
|
@@ -50,11 +52,10 @@ import { type DragAndDropHooks } from "./useDragAndDrop";
|
|
|
50
52
|
import {
|
|
51
53
|
CollectionRendererContext,
|
|
52
54
|
type CollectionRendererContextValue,
|
|
53
|
-
Section,
|
|
54
55
|
type SectionProps,
|
|
55
56
|
useCollectionRenderer,
|
|
56
57
|
} from "./Collection";
|
|
57
|
-
import { useVirtualizerContext } from "./Virtualizer";
|
|
58
|
+
import { useVirtualizerContext, type Orientation } from "./Virtualizer";
|
|
58
59
|
import {
|
|
59
60
|
getNormalizedDropTargetKey,
|
|
60
61
|
mergePersistedKeysIntoVirtualRange,
|
|
@@ -82,6 +83,12 @@ export interface GridListRenderProps {
|
|
|
82
83
|
isDisabled: boolean;
|
|
83
84
|
/** Whether the grid list is empty. */
|
|
84
85
|
isEmpty: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* The primary orientation of the items.
|
|
88
|
+
*
|
|
89
|
+
* @selector [data-orientation="vertical | horizontal"]
|
|
90
|
+
*/
|
|
91
|
+
orientation: Orientation;
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
export interface GridListProps<T extends object>
|
|
@@ -100,12 +107,21 @@ export interface GridListProps<T extends object>
|
|
|
100
107
|
selectionBehavior?: "replace" | "toggle";
|
|
101
108
|
/** Keys of disabled items. */
|
|
102
109
|
disabledKeys?: Iterable<Key>;
|
|
110
|
+
/** Whether disabled items can still receive focus. */
|
|
111
|
+
disabledBehavior?: "selection" | "all";
|
|
103
112
|
/** Currently selected keys (controlled). */
|
|
104
113
|
selectedKeys?: "all" | Iterable<Key>;
|
|
105
114
|
/** Default selected keys (uncontrolled). */
|
|
106
115
|
defaultSelectedKeys?: "all" | Iterable<Key>;
|
|
107
116
|
/** Handler called when selection changes. */
|
|
108
117
|
onSelectionChange?: (keys: "all" | Set<Key>) => void;
|
|
118
|
+
/**
|
|
119
|
+
* The primary orientation of the items. Usually this is the direction that the collection
|
|
120
|
+
* scrolls.
|
|
121
|
+
*
|
|
122
|
+
* @default 'vertical'
|
|
123
|
+
*/
|
|
124
|
+
orientation?: Orientation;
|
|
109
125
|
/** The children of the component. A function may be provided to render each item. */
|
|
110
126
|
children: (item: T) => JSX.Element;
|
|
111
127
|
/** The CSS className for the element. */
|
|
@@ -198,7 +214,12 @@ export const GridListContext = createContext<GridListContextValue<object> | null
|
|
|
198
214
|
export const GridListStateContext = createContext<GridState<object, GridCollection<object>> | null>(
|
|
199
215
|
null,
|
|
200
216
|
);
|
|
201
|
-
|
|
217
|
+
/** Carries the section header's outer (row) props to {@link GridListHeader}. */
|
|
218
|
+
export const GridListHeaderContext = createContext<GridListSectionAria["rowProps"] | null>(null);
|
|
219
|
+
/** Carries the section header's inner (rowheader) props to {@link GridListHeader}. */
|
|
220
|
+
export const GridListHeaderInnerContext = createContext<
|
|
221
|
+
GridListSectionAria["rowHeaderProps"] | null
|
|
222
|
+
>(null);
|
|
202
223
|
|
|
203
224
|
function buildGridCollection<T extends object>(
|
|
204
225
|
items: T[],
|
|
@@ -295,6 +316,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
295
316
|
"isLoading",
|
|
296
317
|
"onLoadMore",
|
|
297
318
|
"dragAndDropHooks",
|
|
319
|
+
"orientation",
|
|
298
320
|
],
|
|
299
321
|
[
|
|
300
322
|
"items",
|
|
@@ -302,6 +324,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
302
324
|
"getTextValue",
|
|
303
325
|
"getDisabled",
|
|
304
326
|
"disabledKeys",
|
|
327
|
+
"disabledBehavior",
|
|
305
328
|
"selectionMode",
|
|
306
329
|
"selectedKeys",
|
|
307
330
|
"defaultSelectedKeys",
|
|
@@ -339,11 +362,22 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
339
362
|
return keys;
|
|
340
363
|
});
|
|
341
364
|
|
|
365
|
+
const orientation = (): Orientation => local.orientation ?? "vertical";
|
|
366
|
+
const resolveDirection = (): "ltr" | "rtl" => {
|
|
367
|
+
const el = ref();
|
|
368
|
+
if (el && typeof window !== "undefined" && typeof window.getComputedStyle === "function") {
|
|
369
|
+
const dir = window.getComputedStyle(el).direction;
|
|
370
|
+
if (dir === "rtl") return "rtl";
|
|
371
|
+
}
|
|
372
|
+
return typeof document !== "undefined" && document.dir === "rtl" ? "rtl" : "ltr";
|
|
373
|
+
};
|
|
374
|
+
|
|
342
375
|
const state = createGridState<T, GridCollection<T>>(() => ({
|
|
343
376
|
collection: collection(),
|
|
344
377
|
disabledKeys: allDisabledKeys(),
|
|
378
|
+
disabledBehavior: stateProps.disabledBehavior,
|
|
345
379
|
selectionMode: stateProps.selectionMode,
|
|
346
|
-
selectionBehavior: stateProps.selectionBehavior,
|
|
380
|
+
selectionBehavior: stateProps.selectionBehavior ?? "replace",
|
|
347
381
|
selectedKeys: stateProps.selectedKeys,
|
|
348
382
|
defaultSelectedKeys: stateProps.defaultSelectedKeys,
|
|
349
383
|
onSelectionChange: stateProps.onSelectionChange,
|
|
@@ -358,19 +392,22 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
358
392
|
isVirtualized: ariaProps.isVirtualized,
|
|
359
393
|
onAction: ariaProps.onAction,
|
|
360
394
|
isDisabled: ariaProps.isDisabled,
|
|
361
|
-
selectionBehavior:
|
|
395
|
+
selectionBehavior: state.selectionBehavior,
|
|
396
|
+
keyboardNavigationBehavior: ariaProps.keyboardNavigationBehavior,
|
|
397
|
+
orientation: orientation(),
|
|
398
|
+
direction: resolveDirection(),
|
|
362
399
|
}),
|
|
363
400
|
() => state,
|
|
364
401
|
ref,
|
|
365
402
|
);
|
|
366
403
|
|
|
367
404
|
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
368
|
-
|
|
369
405
|
const renderValues = createMemo<GridListRenderProps>(() => ({
|
|
370
406
|
isFocused: state.isFocused || isFocused(),
|
|
371
407
|
isFocusVisible: isFocusVisible(),
|
|
372
408
|
isDisabled: ariaProps.isDisabled ?? false,
|
|
373
409
|
isEmpty: stateProps.items.length === 0,
|
|
410
|
+
orientation: orientation(),
|
|
374
411
|
}));
|
|
375
412
|
|
|
376
413
|
const renderProps = useRenderProps(
|
|
@@ -446,14 +483,6 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
446
483
|
const hooks = local.dragAndDropHooks;
|
|
447
484
|
const activeDropState = dropState();
|
|
448
485
|
if (!hooks?.useDroppableCollection || !activeDropState) return undefined;
|
|
449
|
-
const resolveDirection = (): "ltr" | "rtl" => {
|
|
450
|
-
const el = ref();
|
|
451
|
-
if (el && typeof window !== "undefined" && typeof window.getComputedStyle === "function") {
|
|
452
|
-
const dir = window.getComputedStyle(el).direction;
|
|
453
|
-
if (dir === "rtl") return "rtl";
|
|
454
|
-
}
|
|
455
|
-
return typeof document !== "undefined" && document.dir === "rtl" ? "rtl" : "ltr";
|
|
456
|
-
};
|
|
457
486
|
const dropTargetDelegate =
|
|
458
487
|
hooks.dropTargetDelegate ??
|
|
459
488
|
parentCollectionRenderer?.dropTargetDelegate ??
|
|
@@ -461,7 +490,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
461
490
|
? new hooks.ListDropTargetDelegate(
|
|
462
491
|
() => state.collection,
|
|
463
492
|
() => ref(),
|
|
464
|
-
{ layout: "grid", orientation:
|
|
493
|
+
{ layout: "grid", orientation: orientation(), direction: resolveDirection() },
|
|
465
494
|
)
|
|
466
495
|
: undefined);
|
|
467
496
|
if (!dropTargetDelegate) return undefined;
|
|
@@ -564,12 +593,16 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
564
593
|
if (!range) return stateProps.items;
|
|
565
594
|
return stateProps.items.slice(range.start, range.end);
|
|
566
595
|
});
|
|
596
|
+
// Spacers reserve the windowed-out extent along the virtualizer's primary axis,
|
|
597
|
+
// so a horizontal layout offsets along width rather than height.
|
|
598
|
+
const virtualSpacerStyle = (size: number): JSX.CSSProperties =>
|
|
599
|
+
virtualizer?.orientation === "horizontal" ? { width: `${size}px` } : { height: `${size}px` };
|
|
567
600
|
|
|
568
601
|
const contextValue = createMemo<GridListContextValue<T>>(() => ({
|
|
569
602
|
state,
|
|
570
603
|
collection: collection(),
|
|
571
604
|
isDisabled: ariaProps.isDisabled ?? false,
|
|
572
|
-
selectionBehavior:
|
|
605
|
+
selectionBehavior: state.selectionBehavior,
|
|
573
606
|
dragAndDropHooks: local.dragAndDropHooks,
|
|
574
607
|
dragState: dragState(),
|
|
575
608
|
dropState: dropState(),
|
|
@@ -606,6 +639,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
606
639
|
data-disabled={ariaProps.isDisabled || undefined}
|
|
607
640
|
data-empty={isEmpty() || undefined}
|
|
608
641
|
data-drop-target={isRootDropTarget() || undefined}
|
|
642
|
+
data-orientation={orientation()}
|
|
609
643
|
>
|
|
610
644
|
<SharedElementTransition>
|
|
611
645
|
{isEmpty() && local.renderEmptyState ? (
|
|
@@ -616,7 +650,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
616
650
|
<div
|
|
617
651
|
role="presentation"
|
|
618
652
|
aria-hidden="true"
|
|
619
|
-
style={
|
|
653
|
+
style={virtualSpacerStyle(virtualRange()!.offsetTop)}
|
|
620
654
|
data-virtualizer-spacer="top"
|
|
621
655
|
/>
|
|
622
656
|
) : null}
|
|
@@ -643,7 +677,7 @@ export function GridList<T extends object>(props: GridListProps<T>): JSX.Element
|
|
|
643
677
|
<div
|
|
644
678
|
role="presentation"
|
|
645
679
|
aria-hidden="true"
|
|
646
|
-
style={
|
|
680
|
+
style={virtualSpacerStyle(virtualRange()!.offsetBottom)}
|
|
647
681
|
data-virtualizer-spacer="bottom"
|
|
648
682
|
/>
|
|
649
683
|
) : null}
|
|
@@ -759,7 +793,9 @@ export function GridListItem<T extends object>(props: GridListItemProps<T>): JSX
|
|
|
759
793
|
|
|
760
794
|
const renderProps = useRenderProps(
|
|
761
795
|
{
|
|
762
|
-
children
|
|
796
|
+
get children() {
|
|
797
|
+
return props.children;
|
|
798
|
+
},
|
|
763
799
|
class: local.class,
|
|
764
800
|
style: local.style,
|
|
765
801
|
defaultClassName: "solidaria-GridList-item",
|
|
@@ -796,6 +832,7 @@ export function GridListItem<T extends object>(props: GridListItemProps<T>): JSX
|
|
|
796
832
|
)}
|
|
797
833
|
class={renderProps.class()}
|
|
798
834
|
style={renderProps.style()}
|
|
835
|
+
data-key={local.id}
|
|
799
836
|
data-selected={isSelected() || undefined}
|
|
800
837
|
data-focused={isFocused() || undefined}
|
|
801
838
|
data-focus-visible={(isFocusVisible() && isFocused()) || undefined}
|
|
@@ -876,7 +913,9 @@ export function GridListLoadMoreItem(props: GridListLoadMoreItemProps): JSX.Elem
|
|
|
876
913
|
|
|
877
914
|
const renderProps = useRenderProps(
|
|
878
915
|
{
|
|
879
|
-
|
|
916
|
+
get children() {
|
|
917
|
+
return props.children ?? (() => (isLoading() ? "Loading more..." : "Load more"));
|
|
918
|
+
},
|
|
880
919
|
class: props.class,
|
|
881
920
|
style: props.style,
|
|
882
921
|
defaultClassName: "solidaria-GridList-loadMore",
|
|
@@ -905,19 +944,81 @@ export function GridListLoadMoreItem(props: GridListLoadMoreItemProps): JSX.Elem
|
|
|
905
944
|
);
|
|
906
945
|
}
|
|
907
946
|
|
|
947
|
+
/**
|
|
948
|
+
* The header of a {@link GridListSection}. Renders as `role="row"` wrapping a
|
|
949
|
+
* `role="rowheader"` whose id labels the section (mirrors upstream
|
|
950
|
+
* `GridListHeader`). The row/rowheader props are supplied by the enclosing
|
|
951
|
+
* section through context.
|
|
952
|
+
*/
|
|
908
953
|
export function GridListHeader(props: GridListHeaderProps): JSX.Element {
|
|
954
|
+
const rowProps = useContext(GridListHeaderContext);
|
|
955
|
+
const rowHeaderProps = useContext(GridListHeaderInnerContext);
|
|
909
956
|
return (
|
|
910
|
-
<div
|
|
911
|
-
{props.
|
|
957
|
+
<div
|
|
958
|
+
class={props.class ?? "solidaria-GridListHeader"}
|
|
959
|
+
style={props.style}
|
|
960
|
+
{...(rowProps ?? {})}
|
|
961
|
+
>
|
|
962
|
+
<div {...(rowHeaderProps ?? {})} style={{ display: "contents" }}>
|
|
963
|
+
{props.children}
|
|
964
|
+
</div>
|
|
912
965
|
</div>
|
|
913
966
|
);
|
|
914
967
|
}
|
|
915
968
|
|
|
916
969
|
/**
|
|
917
|
-
*
|
|
970
|
+
* A section within a GridList. Renders as `role="rowgroup"` and supplies its
|
|
971
|
+
* optional {@link GridListHeader} with the row/rowheader props that wire up the
|
|
972
|
+
* section's `aria-labelledby` (mirrors upstream `GridListSection`).
|
|
918
973
|
*/
|
|
919
974
|
export function GridListSection(props: GridListSectionProps): JSX.Element {
|
|
920
|
-
|
|
975
|
+
const [local, domProps] = splitProps(props, ["children", "class", "style", "slot", "ref"]);
|
|
976
|
+
|
|
977
|
+
const section = createGridListSection({
|
|
978
|
+
get "aria-label"() {
|
|
979
|
+
return (domProps as { "aria-label"?: string })["aria-label"];
|
|
980
|
+
},
|
|
981
|
+
});
|
|
982
|
+
|
|
983
|
+
// Mirror upstream: resolve class/style via renderProps but keep children out
|
|
984
|
+
// of it (upstream passes `children: undefined`/`values: undefined`). The real
|
|
985
|
+
// children must only be evaluated inside the header providers below, otherwise
|
|
986
|
+
// a child <GridListHeader> would be instantiated in this component's owner and
|
|
987
|
+
// read the contexts as null.
|
|
988
|
+
// The values callback runs during setup (useRenderProps resolves class/style
|
|
989
|
+
// synchronously), so it must not read `local.children` — doing so would
|
|
990
|
+
// instantiate the header children in this owner, outside the providers below,
|
|
991
|
+
// and break their context wiring. Mirror upstream's `values: undefined` with a
|
|
992
|
+
// constant: a rendered section primitive always wraps its item collection.
|
|
993
|
+
const renderProps = useRenderProps(
|
|
994
|
+
{
|
|
995
|
+
children: undefined,
|
|
996
|
+
class: local.class,
|
|
997
|
+
style: local.style,
|
|
998
|
+
defaultClassName: "solidaria-GridListSection",
|
|
999
|
+
},
|
|
1000
|
+
() => ({ hasChildren: true }),
|
|
1001
|
+
);
|
|
1002
|
+
|
|
1003
|
+
const filteredDomProps = createMemo(() => filterDOMProps(domProps, { global: true }));
|
|
1004
|
+
|
|
1005
|
+
return (
|
|
1006
|
+
<div
|
|
1007
|
+
ref={(el) => assignRef(local.ref, el)}
|
|
1008
|
+
{...filteredDomProps()}
|
|
1009
|
+
{...section.rowGroupProps}
|
|
1010
|
+
class={renderProps.class()}
|
|
1011
|
+
style={renderProps.style()}
|
|
1012
|
+
slot={local.slot}
|
|
1013
|
+
data-section
|
|
1014
|
+
>
|
|
1015
|
+
<GridListHeaderContext.Provider value={section.rowProps}>
|
|
1016
|
+
<GridListHeaderInnerContext.Provider value={section.rowHeaderProps}>
|
|
1017
|
+
{local.children}
|
|
1018
|
+
</GridListHeaderInnerContext.Provider>
|
|
1019
|
+
</GridListHeaderContext.Provider>
|
|
1020
|
+
</div>
|
|
1021
|
+
);
|
|
921
1022
|
}
|
|
922
1023
|
|
|
923
1024
|
GridList.Item = GridListItem;
|
package/src/Icon.tsx
CHANGED
|
@@ -88,7 +88,9 @@ export function Icon(props: IconProps): JSX.Element {
|
|
|
88
88
|
|
|
89
89
|
const renderProps = useRenderProps(
|
|
90
90
|
{
|
|
91
|
-
children
|
|
91
|
+
get children() {
|
|
92
|
+
return local.children;
|
|
93
|
+
},
|
|
92
94
|
class: local.class,
|
|
93
95
|
style: local.style,
|
|
94
96
|
defaultClassName: "solidaria-Icon",
|
package/src/Link.tsx
CHANGED
|
@@ -210,7 +210,9 @@ export function Link(props: ParentProps<LinkProps>): JSX.Element {
|
|
|
210
210
|
|
|
211
211
|
const renderProps = useRenderProps(
|
|
212
212
|
{
|
|
213
|
-
children
|
|
213
|
+
get children() {
|
|
214
|
+
return props.children;
|
|
215
|
+
},
|
|
214
216
|
class: local.class,
|
|
215
217
|
style: local.style,
|
|
216
218
|
defaultClassName: "solidaria-Link",
|
package/src/ListBox.tsx
CHANGED
|
@@ -21,7 +21,9 @@ import {
|
|
|
21
21
|
createListBox,
|
|
22
22
|
createOption,
|
|
23
23
|
createFocusRing,
|
|
24
|
+
createScrollIntoViewOnFocus,
|
|
24
25
|
mergeProps,
|
|
26
|
+
useLocale,
|
|
25
27
|
type AriaListBoxProps,
|
|
26
28
|
type AriaOptionProps,
|
|
27
29
|
} from "@proyecto-viviana/solidaria";
|
|
@@ -287,14 +289,22 @@ export function ListBox<T>(props: ListBoxProps<T>): JSX.Element {
|
|
|
287
289
|
return !!disabled;
|
|
288
290
|
};
|
|
289
291
|
|
|
292
|
+
const locale = useLocale();
|
|
290
293
|
const listBoxAria = createListBox(
|
|
291
294
|
{
|
|
292
295
|
...ariaProps,
|
|
293
296
|
get isDisabled() {
|
|
294
297
|
return resolveDisabled();
|
|
295
298
|
},
|
|
299
|
+
get orientation() {
|
|
300
|
+
return stateProps.orientation ?? "vertical";
|
|
301
|
+
},
|
|
302
|
+
get direction() {
|
|
303
|
+
return locale().direction;
|
|
304
|
+
},
|
|
296
305
|
},
|
|
297
306
|
state,
|
|
307
|
+
() => listRef(),
|
|
298
308
|
);
|
|
299
309
|
|
|
300
310
|
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
@@ -334,6 +344,15 @@ export function ListBox<T>(props: ListBoxProps<T>): JSX.Element {
|
|
|
334
344
|
};
|
|
335
345
|
const [listRef, setListRef] = createSignal<HTMLElement | null>(null);
|
|
336
346
|
|
|
347
|
+
// Reveal the activedescendant-focused option on keyboard navigation. The
|
|
348
|
+
// listbox keeps real DOM focus on itself, so the browser won't natively scroll
|
|
349
|
+
// an off-screen focused option into view the way roving tabindex would.
|
|
350
|
+
createScrollIntoViewOnFocus({
|
|
351
|
+
focusedKey: () => state.focusedKey(),
|
|
352
|
+
isActive: () => state.isFocused(),
|
|
353
|
+
ref: () => listRef(),
|
|
354
|
+
});
|
|
355
|
+
|
|
337
356
|
const isEmpty = () => stateProps.items.length === 0;
|
|
338
357
|
const parentCollectionRenderer = useCollectionRenderer<unknown>();
|
|
339
358
|
const getItemNodes = createMemo(() =>
|
|
@@ -495,6 +514,10 @@ export function ListBox<T>(props: ListBoxProps<T>): JSX.Element {
|
|
|
495
514
|
if (!range) return stateProps.items;
|
|
496
515
|
return stateProps.items.slice(range.start, range.end);
|
|
497
516
|
});
|
|
517
|
+
// Spacers reserve the windowed-out extent along the virtualizer's primary axis,
|
|
518
|
+
// so a horizontal layout offsets along width rather than height.
|
|
519
|
+
const virtualSpacerStyle = (size: number): JSX.CSSProperties =>
|
|
520
|
+
virtualizer?.orientation === "horizontal" ? { width: `${size}px` } : { height: `${size}px` };
|
|
498
521
|
const sectionedRenderEntries = createMemo(() => {
|
|
499
522
|
let globalIndex = 0;
|
|
500
523
|
return stateProps.items.map((entry) => {
|
|
@@ -626,7 +649,7 @@ export function ListBox<T>(props: ListBoxProps<T>): JSX.Element {
|
|
|
626
649
|
<li
|
|
627
650
|
role="presentation"
|
|
628
651
|
aria-hidden="true"
|
|
629
|
-
style={
|
|
652
|
+
style={virtualSpacerStyle(virtualRange()!.offsetTop)}
|
|
630
653
|
data-virtualizer-spacer="top"
|
|
631
654
|
/>
|
|
632
655
|
) : null}
|
|
@@ -653,7 +676,7 @@ export function ListBox<T>(props: ListBoxProps<T>): JSX.Element {
|
|
|
653
676
|
<li
|
|
654
677
|
role="presentation"
|
|
655
678
|
aria-hidden="true"
|
|
656
|
-
style={
|
|
679
|
+
style={virtualSpacerStyle(virtualRange()!.offsetBottom)}
|
|
657
680
|
data-virtualizer-spacer="bottom"
|
|
658
681
|
/>
|
|
659
682
|
) : null}
|
|
@@ -732,7 +755,9 @@ export function ListBoxOption<T>(props: ListBoxOptionProps<T>): JSX.Element {
|
|
|
732
755
|
|
|
733
756
|
const renderProps = useRenderProps(
|
|
734
757
|
{
|
|
735
|
-
children
|
|
758
|
+
get children() {
|
|
759
|
+
return props.children;
|
|
760
|
+
},
|
|
736
761
|
class: local.class,
|
|
737
762
|
style: local.style,
|
|
738
763
|
defaultClassName: "solidaria-ListBox-option",
|
|
@@ -855,7 +880,9 @@ export function ListBoxLoadMoreItem(props: ListBoxLoadMoreItemProps): JSX.Elemen
|
|
|
855
880
|
|
|
856
881
|
const renderProps = useRenderProps(
|
|
857
882
|
{
|
|
858
|
-
|
|
883
|
+
get children() {
|
|
884
|
+
return props.children ?? (() => (isLoading() ? "Loading more..." : "Load more"));
|
|
885
|
+
},
|
|
859
886
|
class: props.class,
|
|
860
887
|
style: props.style,
|
|
861
888
|
defaultClassName: "solidaria-ListBox-loadMore",
|