react-aria-components 1.14.0 → 1.15.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/Breadcrumbs.main.js +3 -2
- package/dist/Breadcrumbs.main.js.map +1 -1
- package/dist/Breadcrumbs.mjs +4 -3
- package/dist/Breadcrumbs.module.js +4 -3
- package/dist/Breadcrumbs.module.js.map +1 -1
- package/dist/Button.main.js +1 -1
- package/dist/Button.main.js.map +1 -1
- package/dist/Button.mjs +2 -2
- package/dist/Button.module.js +2 -2
- package/dist/Button.module.js.map +1 -1
- package/dist/Calendar.main.js +11 -7
- package/dist/Calendar.main.js.map +1 -1
- package/dist/Calendar.mjs +12 -8
- package/dist/Calendar.module.js +12 -8
- package/dist/Calendar.module.js.map +1 -1
- package/dist/Checkbox.main.js +2 -2
- package/dist/Checkbox.main.js.map +1 -1
- package/dist/Checkbox.mjs +3 -3
- package/dist/Checkbox.module.js +3 -3
- package/dist/Checkbox.module.js.map +1 -1
- package/dist/ColorArea.main.js +1 -1
- package/dist/ColorArea.main.js.map +1 -1
- package/dist/ColorArea.mjs +2 -2
- package/dist/ColorArea.module.js +2 -2
- package/dist/ColorArea.module.js.map +1 -1
- package/dist/ColorField.main.js +7 -3
- package/dist/ColorField.main.js.map +1 -1
- package/dist/ColorField.mjs +8 -4
- package/dist/ColorField.module.js +8 -4
- package/dist/ColorField.module.js.map +1 -1
- package/dist/ColorSlider.main.js +1 -1
- package/dist/ColorSlider.main.js.map +1 -1
- package/dist/ColorSlider.mjs +2 -2
- package/dist/ColorSlider.module.js +2 -2
- package/dist/ColorSlider.module.js.map +1 -1
- package/dist/ColorSwatch.main.js +1 -1
- package/dist/ColorSwatch.main.js.map +1 -1
- package/dist/ColorSwatch.mjs +2 -2
- package/dist/ColorSwatch.module.js +2 -2
- package/dist/ColorSwatch.module.js.map +1 -1
- package/dist/ColorSwatchPicker.main.js +2 -0
- package/dist/ColorSwatchPicker.main.js.map +1 -1
- package/dist/ColorSwatchPicker.mjs +2 -0
- package/dist/ColorSwatchPicker.module.js +2 -0
- package/dist/ColorSwatchPicker.module.js.map +1 -1
- package/dist/ColorThumb.main.js +1 -1
- package/dist/ColorThumb.main.js.map +1 -1
- package/dist/ColorThumb.mjs +2 -2
- package/dist/ColorThumb.module.js +2 -2
- package/dist/ColorThumb.module.js.map +1 -1
- package/dist/ColorWheel.main.js +2 -2
- package/dist/ColorWheel.main.js.map +1 -1
- package/dist/ColorWheel.mjs +3 -3
- package/dist/ColorWheel.module.js +3 -3
- package/dist/ColorWheel.module.js.map +1 -1
- package/dist/ComboBox.main.js +2 -2
- package/dist/ComboBox.main.js.map +1 -1
- package/dist/ComboBox.mjs +3 -3
- package/dist/ComboBox.module.js +3 -3
- package/dist/ComboBox.module.js.map +1 -1
- package/dist/DateField.main.js +3 -3
- package/dist/DateField.main.js.map +1 -1
- package/dist/DateField.mjs +4 -4
- package/dist/DateField.module.js +4 -4
- package/dist/DateField.module.js.map +1 -1
- package/dist/DatePicker.main.js +2 -2
- package/dist/DatePicker.main.js.map +1 -1
- package/dist/DatePicker.mjs +3 -3
- package/dist/DatePicker.module.js +3 -3
- package/dist/DatePicker.module.js.map +1 -1
- package/dist/Dialog.main.js +2 -1
- package/dist/Dialog.main.js.map +1 -1
- package/dist/Dialog.mjs +3 -2
- package/dist/Dialog.module.js +3 -2
- package/dist/Dialog.module.js.map +1 -1
- package/dist/Disclosure.main.js +3 -3
- package/dist/Disclosure.main.js.map +1 -1
- package/dist/Disclosure.mjs +4 -4
- package/dist/Disclosure.module.js +4 -4
- package/dist/Disclosure.module.js.map +1 -1
- package/dist/DropZone.main.js +2 -3
- package/dist/DropZone.main.js.map +1 -1
- package/dist/DropZone.mjs +4 -5
- package/dist/DropZone.module.js +4 -5
- package/dist/DropZone.module.js.map +1 -1
- package/dist/Form.main.js +1 -1
- package/dist/Form.main.js.map +1 -1
- package/dist/Form.mjs +2 -2
- package/dist/Form.module.js +2 -2
- package/dist/Form.module.js.map +1 -1
- package/dist/GridList.main.js +16 -13
- package/dist/GridList.main.js.map +1 -1
- package/dist/GridList.mjs +17 -14
- package/dist/GridList.module.js +17 -14
- package/dist/GridList.module.js.map +1 -1
- package/dist/Group.main.js +1 -1
- package/dist/Group.main.js.map +1 -1
- package/dist/Group.mjs +2 -2
- package/dist/Group.module.js +2 -2
- package/dist/Group.module.js.map +1 -1
- package/dist/Header.main.js +1 -1
- package/dist/Header.main.js.map +1 -1
- package/dist/Header.mjs +2 -2
- package/dist/Header.module.js +2 -2
- package/dist/Header.module.js.map +1 -1
- package/dist/Heading.main.js +2 -2
- package/dist/Heading.main.js.map +1 -1
- package/dist/Heading.mjs +2 -2
- package/dist/Heading.module.js +2 -2
- package/dist/Heading.module.js.map +1 -1
- package/dist/HiddenDateInput.main.js +5 -1
- package/dist/HiddenDateInput.main.js.map +1 -1
- package/dist/HiddenDateInput.mjs +6 -2
- package/dist/HiddenDateInput.module.js +6 -2
- package/dist/HiddenDateInput.module.js.map +1 -1
- package/dist/Input.main.js +1 -1
- package/dist/Input.main.js.map +1 -1
- package/dist/Input.mjs +2 -2
- package/dist/Input.module.js +2 -2
- package/dist/Input.module.js.map +1 -1
- package/dist/Keyboard.main.js +1 -1
- package/dist/Keyboard.main.js.map +1 -1
- package/dist/Keyboard.mjs +2 -2
- package/dist/Keyboard.module.js +2 -2
- package/dist/Keyboard.module.js.map +1 -1
- package/dist/Label.main.js +2 -1
- package/dist/Label.main.js.map +1 -1
- package/dist/Label.mjs +3 -2
- package/dist/Label.module.js +3 -2
- package/dist/Label.module.js.map +1 -1
- package/dist/Link.main.js +3 -2
- package/dist/Link.main.js.map +1 -1
- package/dist/Link.mjs +4 -3
- package/dist/Link.module.js +4 -3
- package/dist/Link.module.js.map +1 -1
- package/dist/ListBox.main.js +13 -14
- package/dist/ListBox.main.js.map +1 -1
- package/dist/ListBox.mjs +14 -15
- package/dist/ListBox.module.js +14 -15
- package/dist/ListBox.module.js.map +1 -1
- package/dist/Menu.main.js +21 -8
- package/dist/Menu.main.js.map +1 -1
- package/dist/Menu.mjs +22 -9
- package/dist/Menu.module.js +22 -9
- package/dist/Menu.module.js.map +1 -1
- package/dist/Meter.main.js +1 -1
- package/dist/Meter.main.js.map +1 -1
- package/dist/Meter.mjs +2 -2
- package/dist/Meter.module.js +2 -2
- package/dist/Meter.module.js.map +1 -1
- package/dist/Modal.main.js +2 -2
- package/dist/Modal.main.js.map +1 -1
- package/dist/Modal.mjs +3 -3
- package/dist/Modal.module.js +3 -3
- package/dist/Modal.module.js.map +1 -1
- package/dist/NumberField.main.js +1 -1
- package/dist/NumberField.main.js.map +1 -1
- package/dist/NumberField.mjs +2 -2
- package/dist/NumberField.module.js +2 -2
- package/dist/NumberField.module.js.map +1 -1
- package/dist/OverlayArrow.main.js +1 -1
- package/dist/OverlayArrow.main.js.map +1 -1
- package/dist/OverlayArrow.mjs +2 -2
- package/dist/OverlayArrow.module.js +2 -2
- package/dist/OverlayArrow.module.js.map +1 -1
- package/dist/Popover.main.js +2 -2
- package/dist/Popover.main.js.map +1 -1
- package/dist/Popover.mjs +4 -4
- package/dist/Popover.module.js +4 -4
- package/dist/Popover.module.js.map +1 -1
- package/dist/ProgressBar.main.js +1 -1
- package/dist/ProgressBar.main.js.map +1 -1
- package/dist/ProgressBar.mjs +2 -2
- package/dist/ProgressBar.module.js +2 -2
- package/dist/ProgressBar.module.js.map +1 -1
- package/dist/RadioGroup.main.js +2 -2
- package/dist/RadioGroup.main.js.map +1 -1
- package/dist/RadioGroup.mjs +3 -3
- package/dist/RadioGroup.module.js +3 -3
- package/dist/RadioGroup.module.js.map +1 -1
- package/dist/SearchField.main.js +1 -1
- package/dist/SearchField.main.js.map +1 -1
- package/dist/SearchField.mjs +2 -2
- package/dist/SearchField.module.js +2 -2
- package/dist/SearchField.module.js.map +1 -1
- package/dist/Select.main.js +2 -2
- package/dist/Select.main.js.map +1 -1
- package/dist/Select.mjs +3 -3
- package/dist/Select.module.js +3 -3
- package/dist/Select.module.js.map +1 -1
- package/dist/Separator.main.js +3 -1
- package/dist/Separator.main.js.map +1 -1
- package/dist/Separator.mjs +4 -2
- package/dist/Separator.module.js +4 -2
- package/dist/Separator.module.js.map +1 -1
- package/dist/SharedElementTransition.main.js +3 -2
- package/dist/SharedElementTransition.main.js.map +1 -1
- package/dist/SharedElementTransition.mjs +4 -3
- package/dist/SharedElementTransition.module.js +4 -3
- package/dist/SharedElementTransition.module.js.map +1 -1
- package/dist/Slider.main.js +6 -5
- package/dist/Slider.main.js.map +1 -1
- package/dist/Slider.mjs +7 -6
- package/dist/Slider.module.js +7 -6
- package/dist/Slider.module.js.map +1 -1
- package/dist/Switch.main.js +1 -1
- package/dist/Switch.main.js.map +1 -1
- package/dist/Switch.mjs +2 -2
- package/dist/Switch.module.js +2 -2
- package/dist/Switch.module.js.map +1 -1
- package/dist/Table.main.js +30 -25
- package/dist/Table.main.js.map +1 -1
- package/dist/Table.mjs +31 -26
- package/dist/Table.module.js +31 -26
- package/dist/Table.module.js.map +1 -1
- package/dist/Tabs.main.js +13 -6
- package/dist/Tabs.main.js.map +1 -1
- package/dist/Tabs.mjs +14 -7
- package/dist/Tabs.module.js +14 -7
- package/dist/Tabs.module.js.map +1 -1
- package/dist/TagGroup.main.js +6 -5
- package/dist/TagGroup.main.js.map +1 -1
- package/dist/TagGroup.mjs +7 -6
- package/dist/TagGroup.module.js +7 -6
- package/dist/TagGroup.module.js.map +1 -1
- package/dist/Text.main.js +2 -1
- package/dist/Text.main.js.map +1 -1
- package/dist/Text.mjs +3 -2
- package/dist/Text.module.js +3 -2
- package/dist/Text.module.js.map +1 -1
- package/dist/TextArea.main.js +1 -1
- package/dist/TextArea.main.js.map +1 -1
- package/dist/TextArea.mjs +2 -2
- package/dist/TextArea.module.js +2 -2
- package/dist/TextArea.module.js.map +1 -1
- package/dist/TextField.main.js +1 -1
- package/dist/TextField.main.js.map +1 -1
- package/dist/TextField.mjs +2 -2
- package/dist/TextField.module.js +2 -2
- package/dist/TextField.module.js.map +1 -1
- package/dist/Toast.main.js +6 -4
- package/dist/Toast.main.js.map +1 -1
- package/dist/Toast.mjs +7 -5
- package/dist/Toast.module.js +7 -5
- package/dist/Toast.module.js.map +1 -1
- package/dist/ToggleButton.main.js +5 -2
- package/dist/ToggleButton.main.js.map +1 -1
- package/dist/ToggleButton.mjs +6 -3
- package/dist/ToggleButton.module.js +6 -3
- package/dist/ToggleButton.module.js.map +1 -1
- package/dist/ToggleButtonGroup.main.js +1 -1
- package/dist/ToggleButtonGroup.main.js.map +1 -1
- package/dist/ToggleButtonGroup.mjs +2 -2
- package/dist/ToggleButtonGroup.module.js +2 -2
- package/dist/ToggleButtonGroup.module.js.map +1 -1
- package/dist/Toolbar.main.js +1 -1
- package/dist/Toolbar.main.js.map +1 -1
- package/dist/Toolbar.mjs +2 -2
- package/dist/Toolbar.module.js +2 -2
- package/dist/Toolbar.module.js.map +1 -1
- package/dist/Tooltip.main.js +1 -1
- package/dist/Tooltip.main.js.map +1 -1
- package/dist/Tooltip.mjs +2 -2
- package/dist/Tooltip.module.js +2 -2
- package/dist/Tooltip.module.js.map +1 -1
- package/dist/Tree.main.js +6 -6
- package/dist/Tree.main.js.map +1 -1
- package/dist/Tree.mjs +7 -7
- package/dist/Tree.module.js +7 -7
- package/dist/Tree.module.js.map +1 -1
- package/dist/types.d.ts +121 -62
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.main.js +41 -3
- package/dist/utils.main.js.map +1 -1
- package/dist/utils.mjs +42 -5
- package/dist/utils.module.js +42 -5
- package/dist/utils.module.js.map +1 -1
- package/package.json +24 -24
- package/src/Breadcrumbs.tsx +9 -6
- package/src/Button.tsx +4 -3
- package/src/Calendar.tsx +26 -20
- package/src/Checkbox.tsx +7 -6
- package/src/ColorArea.tsx +3 -2
- package/src/ColorField.tsx +18 -3
- package/src/ColorSlider.tsx +2 -1
- package/src/ColorSwatch.tsx +2 -1
- package/src/ColorSwatchPicker.tsx +2 -0
- package/src/ColorThumb.tsx +3 -3
- package/src/ColorWheel.tsx +4 -3
- package/src/ComboBox.tsx +3 -2
- package/src/DateField.tsx +5 -4
- package/src/DatePicker.tsx +3 -2
- package/src/Dialog.tsx +5 -4
- package/src/Disclosure.tsx +7 -6
- package/src/DropZone.tsx +5 -5
- package/src/Form.tsx +4 -4
- package/src/GridList.tsx +30 -23
- package/src/Group.tsx +10 -9
- package/src/Header.tsx +7 -5
- package/src/Heading.tsx +4 -4
- package/src/HiddenDateInput.tsx +10 -3
- package/src/Input.tsx +3 -2
- package/src/Keyboard.tsx +4 -2
- package/src/Label.tsx +4 -3
- package/src/Link.tsx +15 -12
- package/src/ListBox.tsx +23 -22
- package/src/Menu.tsx +32 -17
- package/src/Meter.tsx +3 -2
- package/src/Modal.tsx +5 -4
- package/src/NumberField.tsx +2 -1
- package/src/OverlayArrow.tsx +3 -2
- package/src/Popover.tsx +5 -4
- package/src/ProgressBar.tsx +3 -2
- package/src/RadioGroup.tsx +6 -5
- package/src/SearchField.tsx +3 -2
- package/src/Select.tsx +6 -5
- package/src/Separator.tsx +8 -5
- package/src/SharedElementTransition.tsx +4 -3
- package/src/Slider.tsx +9 -7
- package/src/Switch.tsx +11 -10
- package/src/Table.tsx +47 -36
- package/src/Tabs.tsx +23 -18
- package/src/TagGroup.tsx +16 -13
- package/src/Text.tsx +4 -3
- package/src/TextArea.tsx +3 -2
- package/src/TextField.tsx +4 -3
- package/src/Toast.tsx +15 -11
- package/src/ToggleButton.tsx +5 -4
- package/src/ToggleButtonGroup.tsx +3 -2
- package/src/Toolbar.tsx +3 -2
- package/src/Tooltip.tsx +3 -2
- package/src/Tree.tsx +18 -17
- package/src/utils.tsx +96 -10
package/src/Menu.tsx
CHANGED
|
@@ -17,6 +17,9 @@ import {
|
|
|
17
17
|
ClassNameOrFunction,
|
|
18
18
|
ContextValue,
|
|
19
19
|
DEFAULT_SLOT,
|
|
20
|
+
dom,
|
|
21
|
+
DOMRenderProps,
|
|
22
|
+
PossibleLinkDOMRenderProps,
|
|
20
23
|
Provider,
|
|
21
24
|
RenderProps,
|
|
22
25
|
SlotProps,
|
|
@@ -29,7 +32,7 @@ import {
|
|
|
29
32
|
import {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps, usePersistedKeys} from './Collection';
|
|
30
33
|
import {FieldInputContext, SelectableCollectionContext, SelectableCollectionContextValue} from './RSPContexts';
|
|
31
34
|
import {filterDOMProps, useObjectRef, useResizeObserver} from '@react-aria/utils';
|
|
32
|
-
import {FocusStrategy, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents} from '@react-types/shared';
|
|
35
|
+
import {FocusEvents, FocusStrategy, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents} from '@react-types/shared';
|
|
33
36
|
import {HeaderContext} from './Header';
|
|
34
37
|
import {KeyboardContext} from './Keyboard';
|
|
35
38
|
import {MultipleSelectionState, SelectionManager, useMultipleSelectionState} from '@react-stately/selection';
|
|
@@ -194,7 +197,9 @@ export interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children'>, Collec
|
|
|
194
197
|
*/
|
|
195
198
|
className?: ClassNameOrFunction<MenuRenderProps>,
|
|
196
199
|
/** Provides content to display when there are no items in the list. */
|
|
197
|
-
renderEmptyState?: () => ReactNode
|
|
200
|
+
renderEmptyState?: () => ReactNode,
|
|
201
|
+
/** Whether the menu should close when the menu item is selected. */
|
|
202
|
+
shouldCloseOnSelect?: boolean
|
|
198
203
|
}
|
|
199
204
|
|
|
200
205
|
/**
|
|
@@ -232,9 +237,9 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
232
237
|
let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);
|
|
233
238
|
let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);
|
|
234
239
|
let renderProps = useRenderProps({
|
|
240
|
+
...props,
|
|
241
|
+
children: undefined,
|
|
235
242
|
defaultClassName: 'react-aria-Menu',
|
|
236
|
-
className: props.className,
|
|
237
|
-
style: props.style,
|
|
238
243
|
values: {
|
|
239
244
|
isEmpty: state.collection.size === 0
|
|
240
245
|
}
|
|
@@ -255,7 +260,7 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
255
260
|
|
|
256
261
|
return (
|
|
257
262
|
<FocusScope>
|
|
258
|
-
<div
|
|
263
|
+
<dom.div
|
|
259
264
|
{...mergeProps(DOMProps, renderProps, menuProps)}
|
|
260
265
|
ref={ref as RefObject<HTMLDivElement>}
|
|
261
266
|
slot={props.slot || undefined}
|
|
@@ -267,7 +272,7 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
267
272
|
[SeparatorContext, {elementType: 'div'}],
|
|
268
273
|
[SectionContext, {name: 'MenuSection', render: MenuSectionInner}],
|
|
269
274
|
[SubmenuTriggerContext, {parentMenuRef: ref, shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus}],
|
|
270
|
-
[MenuItemContext,
|
|
275
|
+
[MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],
|
|
271
276
|
[SelectableCollectionContext, null],
|
|
272
277
|
[FieldInputContext, null],
|
|
273
278
|
[SelectionManagerContext, state.selectionManager],
|
|
@@ -284,17 +289,19 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
284
289
|
</SharedElementTransition>
|
|
285
290
|
</Provider>
|
|
286
291
|
{emptyState}
|
|
287
|
-
</div>
|
|
292
|
+
</dom.div>
|
|
288
293
|
</FocusScope>
|
|
289
294
|
);
|
|
290
295
|
}
|
|
291
296
|
|
|
292
|
-
export interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection {
|
|
297
|
+
export interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection, DOMRenderProps<'section', undefined> {
|
|
293
298
|
/**
|
|
294
299
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
|
|
295
300
|
* @default 'react-aria-MenuSection'
|
|
296
301
|
*/
|
|
297
|
-
className?: string
|
|
302
|
+
className?: string,
|
|
303
|
+
/** Whether the menu should close when the menu item is selected. */
|
|
304
|
+
shouldCloseOnSelect?: boolean
|
|
298
305
|
}
|
|
299
306
|
|
|
300
307
|
// A subclass of SelectionManager that forwards focus-related properties to the parent,
|
|
@@ -337,31 +344,37 @@ function MenuSectionInner<T extends object>(props: MenuSectionProps<T>, ref: For
|
|
|
337
344
|
'aria-label': section.props['aria-label'] ?? undefined
|
|
338
345
|
});
|
|
339
346
|
let renderProps = useRenderProps({
|
|
347
|
+
...props,
|
|
348
|
+
id: undefined,
|
|
349
|
+
children: undefined,
|
|
340
350
|
defaultClassName: className,
|
|
341
351
|
className: section.props?.className,
|
|
342
352
|
style: section.props?.style,
|
|
343
|
-
values:
|
|
353
|
+
values: undefined
|
|
344
354
|
});
|
|
345
355
|
|
|
346
356
|
let parent = useContext(SelectionManagerContext)!;
|
|
347
357
|
let selectionState = useMultipleSelectionState(props);
|
|
348
358
|
let manager = props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;
|
|
349
359
|
|
|
360
|
+
let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;
|
|
361
|
+
|
|
350
362
|
let DOMProps = filterDOMProps(props as any, {global: true});
|
|
351
363
|
delete DOMProps.id;
|
|
352
364
|
|
|
353
365
|
return (
|
|
354
|
-
<section
|
|
366
|
+
<dom.section
|
|
355
367
|
{...mergeProps(DOMProps, renderProps, groupProps)}
|
|
356
368
|
ref={ref}>
|
|
357
369
|
<Provider
|
|
358
370
|
values={[
|
|
359
371
|
[HeaderContext, {...headingProps, ref: headingRef}],
|
|
360
|
-
[SelectionManagerContext, manager]
|
|
372
|
+
[SelectionManagerContext, manager],
|
|
373
|
+
[MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]
|
|
361
374
|
]}>
|
|
362
375
|
<CollectionBranch collection={state.collection} parent={section} />
|
|
363
376
|
</Provider>
|
|
364
|
-
</section>
|
|
377
|
+
</dom.section>
|
|
365
378
|
);
|
|
366
379
|
}
|
|
367
380
|
|
|
@@ -385,7 +398,7 @@ export interface MenuItemRenderProps extends ItemRenderProps {
|
|
|
385
398
|
isOpen: boolean
|
|
386
399
|
}
|
|
387
400
|
|
|
388
|
-
export interface MenuItemProps<T = object> extends RenderProps<MenuItemRenderProps>, LinkDOMProps, HoverEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
|
|
401
|
+
export interface MenuItemProps<T = object> extends Omit<RenderProps<MenuItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
|
|
389
402
|
/**
|
|
390
403
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
391
404
|
* @default 'react-aria-MenuItem'
|
|
@@ -402,7 +415,9 @@ export interface MenuItemProps<T = object> extends RenderProps<MenuItemRenderPro
|
|
|
402
415
|
/** Whether the item is disabled. */
|
|
403
416
|
isDisabled?: boolean,
|
|
404
417
|
/** Handler that is called when the item is selected. */
|
|
405
|
-
onAction?: () => void
|
|
418
|
+
onAction?: () => void,
|
|
419
|
+
/** Whether the menu should close when the menu item is selected. */
|
|
420
|
+
shouldCloseOnSelect?: boolean
|
|
406
421
|
}
|
|
407
422
|
|
|
408
423
|
const MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);
|
|
@@ -427,7 +442,7 @@ export const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function Men
|
|
|
427
442
|
let {hoverProps, isHovered} = useHover({
|
|
428
443
|
isDisabled: states.isDisabled
|
|
429
444
|
});
|
|
430
|
-
let renderProps = useRenderProps({
|
|
445
|
+
let renderProps = useRenderProps<MenuItemRenderProps, any>({
|
|
431
446
|
...props,
|
|
432
447
|
id: undefined,
|
|
433
448
|
children: item.rendered,
|
|
@@ -443,7 +458,7 @@ export const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function Men
|
|
|
443
458
|
}
|
|
444
459
|
});
|
|
445
460
|
|
|
446
|
-
let ElementType
|
|
461
|
+
let ElementType = props.href ? dom.a : dom.div;
|
|
447
462
|
let DOMProps = filterDOMProps(props as any, {global: true});
|
|
448
463
|
delete DOMProps.id;
|
|
449
464
|
delete DOMProps.onClick;
|
package/src/Meter.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {clamp} from '@react-stately/utils';
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
RenderProps,
|
|
19
20
|
SlotProps,
|
|
20
21
|
useContextProps,
|
|
@@ -83,10 +84,10 @@ export const Meter = /*#__PURE__*/ (forwardRef as forwardRefType)(function Meter
|
|
|
83
84
|
let DOMProps = filterDOMProps(props, {global: true});
|
|
84
85
|
|
|
85
86
|
return (
|
|
86
|
-
<div {...mergeProps(DOMProps, renderProps, meterProps)} ref={ref} slot={props.slot || undefined}>
|
|
87
|
+
<dom.div {...mergeProps(DOMProps, renderProps, meterProps)} ref={ref} slot={props.slot || undefined}>
|
|
87
88
|
<LabelContext.Provider value={{...labelProps, ref: labelRef, elementType: 'span'}}>
|
|
88
89
|
{renderProps.children}
|
|
89
90
|
</LabelContext.Provider>
|
|
90
|
-
</div>
|
|
91
|
+
</dom.div>
|
|
91
92
|
);
|
|
92
93
|
});
|
package/src/Modal.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import {AriaModalOverlayProps, DismissButton, Overlay, useIsSSR, useModalOverlay
|
|
|
14
14
|
import {
|
|
15
15
|
ClassNameOrFunction,
|
|
16
16
|
ContextValue,
|
|
17
|
+
dom,
|
|
17
18
|
Provider,
|
|
18
19
|
RenderProps,
|
|
19
20
|
SlotProps,
|
|
@@ -200,7 +201,7 @@ function ModalOverlayInner({UNSTABLE_portalContainer, ...props}: ModalOverlayInn
|
|
|
200
201
|
|
|
201
202
|
return (
|
|
202
203
|
<Overlay isExiting={props.isExiting} portalContainer={UNSTABLE_portalContainer}>
|
|
203
|
-
<div
|
|
204
|
+
<dom.div
|
|
204
205
|
{...mergeProps(filterDOMProps(props, {global: true}), underlayProps)}
|
|
205
206
|
{...renderProps}
|
|
206
207
|
style={style}
|
|
@@ -214,7 +215,7 @@ function ModalOverlayInner({UNSTABLE_portalContainer, ...props}: ModalOverlayInn
|
|
|
214
215
|
]}>
|
|
215
216
|
{renderProps.children}
|
|
216
217
|
</Provider>
|
|
217
|
-
</div>
|
|
218
|
+
</dom.div>
|
|
218
219
|
</Overlay>
|
|
219
220
|
);
|
|
220
221
|
}
|
|
@@ -246,7 +247,7 @@ function ModalContent(props: ModalContentProps) {
|
|
|
246
247
|
});
|
|
247
248
|
|
|
248
249
|
return (
|
|
249
|
-
<div
|
|
250
|
+
<dom.div
|
|
250
251
|
{...mergeProps(filterDOMProps(props, {global: true}), modalProps)}
|
|
251
252
|
{...renderProps}
|
|
252
253
|
ref={ref}
|
|
@@ -256,6 +257,6 @@ function ModalContent(props: ModalContentProps) {
|
|
|
256
257
|
<DismissButton onDismiss={state.close} />
|
|
257
258
|
}
|
|
258
259
|
{renderProps.children}
|
|
259
|
-
</div>
|
|
260
|
+
</dom.div>
|
|
260
261
|
);
|
|
261
262
|
}
|
package/src/NumberField.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {ButtonContext} from './Button';
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
Provider,
|
|
19
20
|
RACValidation,
|
|
20
21
|
removeDataAttributes,
|
|
@@ -137,7 +138,7 @@ export const NumberField = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
137
138
|
}],
|
|
138
139
|
[FieldErrorContext, validation]
|
|
139
140
|
]}>
|
|
140
|
-
<div
|
|
141
|
+
<dom.div
|
|
141
142
|
{...DOMProps}
|
|
142
143
|
{...renderProps}
|
|
143
144
|
ref={ref}
|
package/src/OverlayArrow.tsx
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import {
|
|
14
14
|
ClassNameOrFunction,
|
|
15
15
|
ContextValue,
|
|
16
|
+
dom,
|
|
16
17
|
RenderProps,
|
|
17
18
|
useContextProps,
|
|
18
19
|
useRenderProps
|
|
@@ -30,7 +31,7 @@ export const OverlayArrowContext = createContext<ContextValue<OverlayArrowContex
|
|
|
30
31
|
placement: 'bottom'
|
|
31
32
|
});
|
|
32
33
|
|
|
33
|
-
export interface OverlayArrowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'children'>, RenderProps<OverlayArrowRenderProps>, DOMProps {
|
|
34
|
+
export interface OverlayArrowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'render' | 'children'>, RenderProps<OverlayArrowRenderProps>, DOMProps {
|
|
34
35
|
/**
|
|
35
36
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
36
37
|
* @default 'react-aria-OverlayArrow'
|
|
@@ -77,7 +78,7 @@ export const OverlayArrow = /*#__PURE__*/ (forwardRef as forwardRefType)(functio
|
|
|
77
78
|
let DOMProps = filterDOMProps(props);
|
|
78
79
|
|
|
79
80
|
return (
|
|
80
|
-
<div
|
|
81
|
+
<dom.div
|
|
81
82
|
{...DOMProps}
|
|
82
83
|
{...renderProps}
|
|
83
84
|
style={{
|
package/src/Popover.tsx
CHANGED
|
@@ -15,12 +15,13 @@ import {AriaPopoverProps, DismissButton, Overlay, PlacementAxis, PositionProps,
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
RenderProps,
|
|
19
20
|
SlotProps,
|
|
20
21
|
useContextProps,
|
|
21
22
|
useRenderProps
|
|
22
23
|
} from './utils';
|
|
23
|
-
import {filterDOMProps, mergeProps, useEnterAnimation, useExitAnimation, useLayoutEffect} from '@react-aria/utils';
|
|
24
|
+
import {filterDOMProps, mergeProps, nodeContains, useEnterAnimation, useExitAnimation, useLayoutEffect} from '@react-aria/utils';
|
|
24
25
|
import {focusSafely} from '@react-aria/interactions';
|
|
25
26
|
import {OverlayArrowContext} from './OverlayArrow';
|
|
26
27
|
import {OverlayTriggerProps, OverlayTriggerState, useOverlayTriggerState} from 'react-stately';
|
|
@@ -198,7 +199,7 @@ function PopoverInner({state, isExiting, UNSTABLE_portalContainer, clearContexts
|
|
|
198
199
|
// Focus the popover itself on mount, unless a child element is already focused.
|
|
199
200
|
// Skip this for submenus since hovering a submenutrigger should keep focus on the trigger
|
|
200
201
|
useEffect(() => {
|
|
201
|
-
if (isDialog && props.trigger !== 'SubmenuTrigger' && ref.current && !ref.current
|
|
202
|
+
if (isDialog && props.trigger !== 'SubmenuTrigger' && ref.current && !nodeContains(ref.current, document.activeElement)) {
|
|
202
203
|
focusSafely(ref.current);
|
|
203
204
|
}
|
|
204
205
|
}, [isDialog, ref, props.trigger]);
|
|
@@ -220,7 +221,7 @@ function PopoverInner({state, isExiting, UNSTABLE_portalContainer, clearContexts
|
|
|
220
221
|
};
|
|
221
222
|
|
|
222
223
|
let overlay = (
|
|
223
|
-
<div
|
|
224
|
+
<dom.div
|
|
224
225
|
{...mergeProps(filterDOMProps(props, {global: true}), popoverProps)}
|
|
225
226
|
{...renderProps}
|
|
226
227
|
role={isDialog ? 'dialog' : undefined}
|
|
@@ -240,7 +241,7 @@ function PopoverInner({state, isExiting, UNSTABLE_portalContainer, clearContexts
|
|
|
240
241
|
{children}
|
|
241
242
|
</OverlayArrowContext.Provider>
|
|
242
243
|
<DismissButton onDismiss={state.close} />
|
|
243
|
-
</div>
|
|
244
|
+
</dom.div>
|
|
244
245
|
);
|
|
245
246
|
|
|
246
247
|
// If this is a root popover, render an extra div to act as the portal container for submenus/subdialogs.
|
package/src/ProgressBar.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {clamp} from '@react-stately/utils';
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
RenderProps,
|
|
19
20
|
SlotProps,
|
|
20
21
|
useContextProps,
|
|
@@ -91,10 +92,10 @@ export const ProgressBar = forwardRef(function ProgressBar(props: ProgressBarPro
|
|
|
91
92
|
let DOMProps = filterDOMProps(props, {global: true});
|
|
92
93
|
|
|
93
94
|
return (
|
|
94
|
-
<div {...mergeProps(DOMProps, renderProps, progressBarProps)} ref={ref} slot={props.slot || undefined}>
|
|
95
|
+
<dom.div {...mergeProps(DOMProps, renderProps, progressBarProps)} ref={ref} slot={props.slot || undefined}>
|
|
95
96
|
<LabelContext.Provider value={{...labelProps, ref: labelRef, elementType: 'span'}}>
|
|
96
97
|
{renderProps.children}
|
|
97
98
|
</LabelContext.Provider>
|
|
98
|
-
</div>
|
|
99
|
+
</dom.div>
|
|
99
100
|
);
|
|
100
101
|
});
|
package/src/RadioGroup.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import {AriaRadioGroupProps, AriaRadioProps, HoverEvents, Orientation, useFocusR
|
|
|
14
14
|
import {
|
|
15
15
|
ClassNameOrFunction,
|
|
16
16
|
ContextValue,
|
|
17
|
+
dom,
|
|
17
18
|
Provider,
|
|
18
19
|
RACValidation,
|
|
19
20
|
removeDataAttributes,
|
|
@@ -42,7 +43,7 @@ export interface RadioGroupProps extends Omit<AriaRadioGroupProps, 'children' |
|
|
|
42
43
|
*/
|
|
43
44
|
className?: ClassNameOrFunction<RadioGroupRenderProps>
|
|
44
45
|
}
|
|
45
|
-
export interface RadioProps extends Omit<AriaRadioProps, 'children'>, HoverEvents, RenderProps<RadioRenderProps>, SlotProps, Omit<GlobalDOMAttributes<HTMLLabelElement>, 'onClick'> {
|
|
46
|
+
export interface RadioProps extends Omit<AriaRadioProps, 'children'>, HoverEvents, RenderProps<RadioRenderProps, 'label'>, SlotProps, Omit<GlobalDOMAttributes<HTMLLabelElement>, 'onClick'> {
|
|
46
47
|
/**
|
|
47
48
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
48
49
|
* @default 'react-aria-Radio'
|
|
@@ -175,7 +176,7 @@ export const RadioGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
175
176
|
let DOMProps = filterDOMProps(props, {global: true});
|
|
176
177
|
|
|
177
178
|
return (
|
|
178
|
-
<div
|
|
179
|
+
<dom.div
|
|
179
180
|
{...mergeProps(DOMProps, renderProps, radioGroupProps)}
|
|
180
181
|
ref={ref}
|
|
181
182
|
slot={props.slot || undefined}
|
|
@@ -200,7 +201,7 @@ export const RadioGroup = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
200
201
|
{renderProps.children}
|
|
201
202
|
</SharedElementTransition>
|
|
202
203
|
</Provider>
|
|
203
|
-
</div>
|
|
204
|
+
</dom.div>
|
|
204
205
|
);
|
|
205
206
|
});
|
|
206
207
|
|
|
@@ -249,7 +250,7 @@ export const Radio = /*#__PURE__*/ (forwardRef as forwardRefType)(function Radio
|
|
|
249
250
|
delete DOMProps.onClick;
|
|
250
251
|
|
|
251
252
|
return (
|
|
252
|
-
<label
|
|
253
|
+
<dom.label
|
|
253
254
|
{...mergeProps(DOMProps, labelProps, hoverProps, renderProps)}
|
|
254
255
|
ref={ref}
|
|
255
256
|
data-selected={isSelected || undefined}
|
|
@@ -267,6 +268,6 @@ export const Radio = /*#__PURE__*/ (forwardRef as forwardRefType)(function Radio
|
|
|
267
268
|
<SelectionIndicatorContext.Provider value={{isSelected}}>
|
|
268
269
|
{renderProps.children}
|
|
269
270
|
</SelectionIndicatorContext.Provider>
|
|
270
|
-
</label>
|
|
271
|
+
</dom.label>
|
|
271
272
|
);
|
|
272
273
|
});
|
package/src/SearchField.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {ButtonContext} from './Button';
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
Provider,
|
|
19
20
|
RACValidation,
|
|
20
21
|
removeDataAttributes,
|
|
@@ -120,7 +121,7 @@ export const SearchField = /*#__PURE__*/ createHideableComponent(function Search
|
|
|
120
121
|
delete DOMProps.id;
|
|
121
122
|
|
|
122
123
|
return (
|
|
123
|
-
<div
|
|
124
|
+
<dom.div
|
|
124
125
|
{...DOMProps}
|
|
125
126
|
{...renderProps}
|
|
126
127
|
ref={ref}
|
|
@@ -146,6 +147,6 @@ export const SearchField = /*#__PURE__*/ createHideableComponent(function Search
|
|
|
146
147
|
]}>
|
|
147
148
|
{renderProps.children}
|
|
148
149
|
</Provider>
|
|
149
|
-
</div>
|
|
150
|
+
</dom.div>
|
|
150
151
|
);
|
|
151
152
|
});
|
package/src/Select.tsx
CHANGED
|
@@ -15,6 +15,7 @@ import {ButtonContext} from './Button';
|
|
|
15
15
|
import {
|
|
16
16
|
ClassNameOrFunction,
|
|
17
17
|
ContextValue,
|
|
18
|
+
dom,
|
|
18
19
|
Provider,
|
|
19
20
|
RACValidation,
|
|
20
21
|
removeDataAttributes,
|
|
@@ -222,7 +223,7 @@ function SelectInner<T extends object>({props, selectRef: ref, collection}: Sele
|
|
|
222
223
|
}],
|
|
223
224
|
[FieldErrorContext, validation]
|
|
224
225
|
]}>
|
|
225
|
-
<div
|
|
226
|
+
<dom.div
|
|
226
227
|
{...mergeProps(DOMProps, renderProps, focusProps)}
|
|
227
228
|
ref={ref}
|
|
228
229
|
slot={props.slot || undefined}
|
|
@@ -236,7 +237,7 @@ function SelectInner<T extends object>({props, selectRef: ref, collection}: Sele
|
|
|
236
237
|
<HiddenSelect
|
|
237
238
|
{...hiddenSelectProps}
|
|
238
239
|
autoComplete={props.autoComplete} />
|
|
239
|
-
</div>
|
|
240
|
+
</dom.div>
|
|
240
241
|
</Provider>
|
|
241
242
|
);
|
|
242
243
|
}
|
|
@@ -260,7 +261,7 @@ export interface SelectValueRenderProps<T> {
|
|
|
260
261
|
state: SelectState<T, 'single' | 'multiple'>
|
|
261
262
|
}
|
|
262
263
|
|
|
263
|
-
export interface SelectValueProps<T extends object> extends Omit<HTMLAttributes<HTMLElement>, keyof RenderProps<unknown>>, RenderProps<SelectValueRenderProps<T
|
|
264
|
+
export interface SelectValueProps<T extends object> extends Omit<HTMLAttributes<HTMLElement>, keyof RenderProps<unknown>>, RenderProps<SelectValueRenderProps<T>, 'span'> {
|
|
264
265
|
/**
|
|
265
266
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
266
267
|
* @default 'react-aria-SelectValue'
|
|
@@ -345,11 +346,11 @@ export const SelectValue = /*#__PURE__*/ createHideableComponent(function Select
|
|
|
345
346
|
let DOMProps = filterDOMProps(props, {global: true});
|
|
346
347
|
|
|
347
348
|
return (
|
|
348
|
-
<span ref={ref} {...DOMProps} {...renderProps} data-placeholder={state.selectedItems.length === 0 || undefined}>
|
|
349
|
+
<dom.span ref={ref} {...DOMProps} {...renderProps} data-placeholder={state.selectedItems.length === 0 || undefined}>
|
|
349
350
|
{/* clear description and error message slots */}
|
|
350
351
|
<TextContext.Provider value={undefined}>
|
|
351
352
|
{renderProps.children}
|
|
352
353
|
</TextContext.Provider>
|
|
353
|
-
</span>
|
|
354
|
+
</dom.span>
|
|
354
355
|
);
|
|
355
356
|
});
|
package/src/Separator.tsx
CHANGED
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
import {SeparatorProps as AriaSeparatorProps, useSeparator} from 'react-aria';
|
|
14
14
|
import {BaseCollection, CollectionNode, createLeafComponent} from '@react-aria/collections';
|
|
15
|
-
import {ContextValue, SlotProps, StyleProps, useContextProps} from './utils';
|
|
15
|
+
import {ContextValue, dom, DOMRenderProps, SlotProps, StyleProps, useContextProps} from './utils';
|
|
16
16
|
import {filterDOMProps, mergeProps} from '@react-aria/utils';
|
|
17
17
|
import {GlobalDOMAttributes} from '@react-types/shared';
|
|
18
|
-
import React, {createContext,
|
|
18
|
+
import React, {createContext, ForwardedRef} from 'react';
|
|
19
19
|
|
|
20
|
-
export interface SeparatorProps extends AriaSeparatorProps, StyleProps, SlotProps, GlobalDOMAttributes<HTMLElement> {
|
|
20
|
+
export interface SeparatorProps extends AriaSeparatorProps, StyleProps, SlotProps, DOMRenderProps<'hr' | 'div', undefined>, GlobalDOMAttributes<HTMLElement> {
|
|
21
21
|
/**
|
|
22
22
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
|
|
23
23
|
* @default 'react-aria-Separator'
|
|
@@ -49,11 +49,13 @@ export const Separator = /*#__PURE__*/ createLeafComponent(SeparatorNode, functi
|
|
|
49
49
|
[props, ref] = useContextProps(props, ref, SeparatorContext);
|
|
50
50
|
|
|
51
51
|
let {elementType, orientation, style, className, slot, ...otherProps} = props;
|
|
52
|
-
let Element =
|
|
52
|
+
let Element = elementType || 'hr';
|
|
53
53
|
if (Element === 'hr' && orientation === 'vertical') {
|
|
54
54
|
Element = 'div';
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
let ElementType = dom[Element];
|
|
58
|
+
|
|
57
59
|
let {separatorProps} = useSeparator({
|
|
58
60
|
...otherProps,
|
|
59
61
|
elementType,
|
|
@@ -63,7 +65,8 @@ export const Separator = /*#__PURE__*/ createLeafComponent(SeparatorNode, functi
|
|
|
63
65
|
let DOMProps = filterDOMProps(props, {global: true});
|
|
64
66
|
|
|
65
67
|
return (
|
|
66
|
-
<
|
|
68
|
+
<ElementType
|
|
69
|
+
render={props.render}
|
|
67
70
|
{...mergeProps(DOMProps, separatorProps)}
|
|
68
71
|
style={style}
|
|
69
72
|
className={className ?? 'react-aria-Separator'}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import {dom, RenderProps, useRenderProps} from './utils';
|
|
13
14
|
import {flushSync} from 'react-dom';
|
|
14
15
|
import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes, ReactNode, RefObject, useContext, useRef, useState} from 'react';
|
|
15
|
-
import {RenderProps, useRenderProps} from './utils';
|
|
16
16
|
import {useLayoutEffect} from '@react-aria/utils';
|
|
17
17
|
import {useObjectRef} from 'react-aria';
|
|
18
18
|
|
|
@@ -63,7 +63,7 @@ export interface SharedElementProps extends SharedElementPropsBase {
|
|
|
63
63
|
* An element that animates between its old and new position when moving between parents.
|
|
64
64
|
*/
|
|
65
65
|
export const SharedElement = forwardRef(function SharedElement(props: SharedElementProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
66
|
-
let {name, isVisible = true, children, className, style, ...divProps} = props;
|
|
66
|
+
let {name, isVisible = true, children, className, style, render, ...divProps} = props;
|
|
67
67
|
let [state, setState] = useState(isVisible ? 'visible' : 'hidden');
|
|
68
68
|
let scopeRef = useContext(SharedElementContext);
|
|
69
69
|
if (!scopeRef) {
|
|
@@ -164,6 +164,7 @@ export const SharedElement = forwardRef(function SharedElement(props: SharedElem
|
|
|
164
164
|
children,
|
|
165
165
|
className,
|
|
166
166
|
style,
|
|
167
|
+
render,
|
|
167
168
|
values: {
|
|
168
169
|
isEntering: state === 'entering',
|
|
169
170
|
isExiting: state === 'exiting'
|
|
@@ -175,7 +176,7 @@ export const SharedElement = forwardRef(function SharedElement(props: SharedElem
|
|
|
175
176
|
}
|
|
176
177
|
|
|
177
178
|
return (
|
|
178
|
-
<div
|
|
179
|
+
<dom.div
|
|
179
180
|
{...divProps}
|
|
180
181
|
{...renderProps}
|
|
181
182
|
ref={ref}
|
package/src/Slider.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import {AriaSliderProps, AriaSliderThumbProps, HoverEvents, mergeProps, Orientat
|
|
|
14
14
|
import {
|
|
15
15
|
ClassNameOrFunction,
|
|
16
16
|
ContextValue,
|
|
17
|
+
dom,
|
|
17
18
|
Provider,
|
|
18
19
|
RenderProps,
|
|
19
20
|
SlotProps,
|
|
@@ -101,7 +102,7 @@ export const Slider = /*#__PURE__*/ (forwardRef as forwardRefType)(function Slid
|
|
|
101
102
|
[SliderOutputContext, outputProps],
|
|
102
103
|
[LabelContext, {...labelProps, ref: labelRef}]
|
|
103
104
|
]}>
|
|
104
|
-
<div
|
|
105
|
+
<dom.div
|
|
105
106
|
{...mergeProps(DOMProps, renderProps, groupProps)}
|
|
106
107
|
ref={ref}
|
|
107
108
|
slot={props.slot || undefined}
|
|
@@ -111,7 +112,7 @@ export const Slider = /*#__PURE__*/ (forwardRef as forwardRefType)(function Slid
|
|
|
111
112
|
);
|
|
112
113
|
});
|
|
113
114
|
|
|
114
|
-
export interface SliderOutputProps extends RenderProps<SliderRenderProps>, GlobalDOMAttributes<HTMLOutputElement> {
|
|
115
|
+
export interface SliderOutputProps extends RenderProps<SliderRenderProps, 'output'>, GlobalDOMAttributes<HTMLOutputElement> {
|
|
115
116
|
/**
|
|
116
117
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
117
118
|
* @default 'react-aria-SliderOutput'
|
|
@@ -125,12 +126,13 @@ interface SliderOutputContextValue extends Omit<OutputHTMLAttributes<HTMLOutputE
|
|
|
125
126
|
*/
|
|
126
127
|
export const SliderOutput = /*#__PURE__*/ (forwardRef as forwardRefType)(function SliderOutput(props: SliderOutputProps, ref: ForwardedRef<HTMLOutputElement>) {
|
|
127
128
|
[props, ref] = useContextProps(props, ref, SliderOutputContext);
|
|
128
|
-
let {children, style, className, ...otherProps} = props;
|
|
129
|
+
let {children, style, className, render, ...otherProps} = props;
|
|
129
130
|
let state = useContext(SliderStateContext)!;
|
|
130
131
|
let renderProps = useRenderProps({
|
|
131
132
|
className,
|
|
132
133
|
style,
|
|
133
134
|
children,
|
|
135
|
+
render,
|
|
134
136
|
defaultChildren: state.getThumbValueLabel(0),
|
|
135
137
|
defaultClassName: 'react-aria-SliderOutput',
|
|
136
138
|
values: {
|
|
@@ -141,7 +143,7 @@ export const SliderOutput = /*#__PURE__*/ (forwardRef as forwardRefType)(functio
|
|
|
141
143
|
});
|
|
142
144
|
|
|
143
145
|
return (
|
|
144
|
-
<output
|
|
146
|
+
<dom.output
|
|
145
147
|
{...otherProps}
|
|
146
148
|
{...renderProps}
|
|
147
149
|
ref={ref}
|
|
@@ -187,7 +189,7 @@ export const SliderTrack = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
187
189
|
});
|
|
188
190
|
|
|
189
191
|
return (
|
|
190
|
-
<div
|
|
192
|
+
<dom.div
|
|
191
193
|
{...mergeProps(otherProps, hoverProps)}
|
|
192
194
|
{...renderProps}
|
|
193
195
|
ref={ref}
|
|
@@ -284,7 +286,7 @@ export const SliderThumb = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
284
286
|
delete DOMProps.id;
|
|
285
287
|
|
|
286
288
|
return (
|
|
287
|
-
<div
|
|
289
|
+
<dom.div
|
|
288
290
|
{...mergeProps(DOMProps, thumbProps, hoverProps)}
|
|
289
291
|
{...renderProps}
|
|
290
292
|
ref={ref}
|
|
@@ -303,6 +305,6 @@ export const SliderThumb = /*#__PURE__*/ (forwardRef as forwardRefType)(function
|
|
|
303
305
|
]}>
|
|
304
306
|
{renderProps.children}
|
|
305
307
|
</Provider>
|
|
306
|
-
</div>
|
|
308
|
+
</dom.div>
|
|
307
309
|
);
|
|
308
310
|
});
|
package/src/Switch.tsx
CHANGED
|
@@ -12,20 +12,21 @@
|
|
|
12
12
|
|
|
13
13
|
import {AriaSwitchProps, HoverEvents, mergeProps, useFocusRing, useHover, useSwitch, VisuallyHidden} from 'react-aria';
|
|
14
14
|
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
ClassNameOrFunction,
|
|
16
|
+
ContextValue,
|
|
17
|
+
dom,
|
|
18
|
+
removeDataAttributes,
|
|
19
|
+
RenderProps,
|
|
20
|
+
SlotProps,
|
|
21
|
+
useContextProps,
|
|
22
|
+
useRenderProps
|
|
22
23
|
} from './utils';
|
|
23
24
|
import {filterDOMProps, mergeRefs, useObjectRef} from '@react-aria/utils';
|
|
24
25
|
import {forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';
|
|
25
26
|
import React, {createContext, ForwardedRef, forwardRef} from 'react';
|
|
26
27
|
import {ToggleState, useToggleState} from 'react-stately';
|
|
27
28
|
|
|
28
|
-
export interface SwitchProps extends Omit<AriaSwitchProps, 'children'>, HoverEvents, RenderProps<SwitchRenderProps>, SlotProps, Omit<GlobalDOMAttributes<HTMLLabelElement>, 'onClick'> {
|
|
29
|
+
export interface SwitchProps extends Omit<AriaSwitchProps, 'children'>, HoverEvents, RenderProps<SwitchRenderProps, 'label'>, SlotProps, Omit<GlobalDOMAttributes<HTMLLabelElement>, 'onClick'> {
|
|
29
30
|
/**
|
|
30
31
|
* The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
|
|
31
32
|
* @default 'react-aria-Switch'
|
|
@@ -125,7 +126,7 @@ export const Switch = /*#__PURE__*/ (forwardRef as forwardRefType)(function Swit
|
|
|
125
126
|
delete DOMProps.onClick;
|
|
126
127
|
|
|
127
128
|
return (
|
|
128
|
-
<label
|
|
129
|
+
<dom.label
|
|
129
130
|
{...mergeProps(DOMProps, labelProps, hoverProps, renderProps)}
|
|
130
131
|
ref={ref}
|
|
131
132
|
slot={props.slot || undefined}
|
|
@@ -140,6 +141,6 @@ export const Switch = /*#__PURE__*/ (forwardRef as forwardRefType)(function Swit
|
|
|
140
141
|
<input {...mergeProps(inputProps, focusProps)} ref={inputRef} />
|
|
141
142
|
</VisuallyHidden>
|
|
142
143
|
{renderProps.children}
|
|
143
|
-
</label>
|
|
144
|
+
</dom.label>
|
|
144
145
|
);
|
|
145
146
|
});
|