react-aria-components 1.7.1 → 1.8.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/Autocomplete.main.js.map +1 -1
- package/dist/Autocomplete.module.js.map +1 -1
- package/dist/Calendar.main.js +5 -7
- package/dist/Calendar.main.js.map +1 -1
- package/dist/Calendar.mjs +6 -8
- package/dist/Calendar.module.js +6 -8
- package/dist/Calendar.module.js.map +1 -1
- package/dist/Collection.main.js +1 -1
- package/dist/Collection.main.js.map +1 -1
- package/dist/Collection.mjs +1 -1
- package/dist/Collection.module.js +1 -1
- package/dist/Collection.module.js.map +1 -1
- package/dist/ColorPicker.main.js.map +1 -1
- package/dist/ColorPicker.module.js.map +1 -1
- package/dist/ColorWheel.main.js +3 -1
- package/dist/ColorWheel.main.js.map +1 -1
- package/dist/ColorWheel.mjs +3 -1
- package/dist/ColorWheel.module.js +3 -1
- package/dist/ColorWheel.module.js.map +1 -1
- package/dist/DateField.main.js +16 -9
- package/dist/DateField.main.js.map +1 -1
- package/dist/DateField.mjs +16 -9
- package/dist/DateField.module.js +16 -9
- package/dist/DateField.module.js.map +1 -1
- package/dist/Dialog.main.js +1 -1
- package/dist/Dialog.main.js.map +1 -1
- package/dist/Dialog.mjs +1 -1
- package/dist/Dialog.module.js +1 -1
- package/dist/Dialog.module.js.map +1 -1
- package/dist/DragAndDrop.main.js.map +1 -1
- package/dist/DragAndDrop.module.js.map +1 -1
- package/dist/GridList.main.js +2 -1
- package/dist/GridList.main.js.map +1 -1
- package/dist/GridList.mjs +2 -1
- package/dist/GridList.module.js +2 -1
- package/dist/GridList.module.js.map +1 -1
- package/dist/ListBox.main.js +2 -1
- package/dist/ListBox.main.js.map +1 -1
- package/dist/ListBox.mjs +2 -1
- package/dist/ListBox.module.js +2 -1
- package/dist/ListBox.module.js.map +1 -1
- package/dist/Menu.main.js.map +1 -1
- package/dist/Menu.module.js.map +1 -1
- package/dist/Modal.main.js.map +1 -1
- package/dist/Modal.module.js.map +1 -1
- package/dist/OverlayArrow.main.js +4 -1
- package/dist/OverlayArrow.main.js.map +1 -1
- package/dist/OverlayArrow.mjs +4 -1
- package/dist/OverlayArrow.module.js +4 -1
- package/dist/OverlayArrow.module.js.map +1 -1
- package/dist/Popover.main.js +1 -1
- package/dist/Popover.main.js.map +1 -1
- package/dist/Popover.mjs +1 -1
- package/dist/Popover.module.js +1 -1
- package/dist/Popover.module.js.map +1 -1
- package/dist/Separator.main.js +3 -2
- package/dist/Separator.main.js.map +1 -1
- package/dist/Separator.mjs +3 -2
- package/dist/Separator.module.js +3 -2
- package/dist/Separator.module.js.map +1 -1
- package/dist/Table.main.js +3 -2
- package/dist/Table.main.js.map +1 -1
- package/dist/Table.mjs +3 -2
- package/dist/Table.module.js +3 -2
- package/dist/Table.module.js.map +1 -1
- package/dist/TableLayout.main.js.map +1 -1
- package/dist/TableLayout.module.js.map +1 -1
- package/dist/TagGroup.main.js +1 -1
- package/dist/TagGroup.main.js.map +1 -1
- package/dist/TagGroup.mjs +1 -1
- package/dist/TagGroup.module.js +1 -1
- package/dist/TagGroup.module.js.map +1 -1
- package/dist/TextArea.main.js.map +1 -1
- package/dist/TextArea.module.js.map +1 -1
- package/dist/Toast.main.js +45 -16
- package/dist/Toast.main.js.map +1 -1
- package/dist/Toast.mjs +45 -18
- package/dist/Toast.module.js +45 -18
- package/dist/Toast.module.js.map +1 -1
- package/dist/Tooltip.main.js.map +1 -1
- package/dist/Tooltip.module.js.map +1 -1
- package/dist/Tree.main.js +2 -2
- package/dist/Tree.main.js.map +1 -1
- package/dist/Tree.mjs +2 -2
- package/dist/Tree.module.js +2 -2
- package/dist/Tree.module.js.map +1 -1
- package/dist/Virtualizer.main.js.map +1 -1
- package/dist/Virtualizer.module.js.map +1 -1
- package/dist/import.mjs +2 -2
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -1
- package/dist/module.js +2 -2
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +67 -39
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.main.js.map +1 -1
- package/dist/utils.module.js.map +1 -1
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.mjs +1 -1
- package/i18n/index.js +1 -1
- package/i18n/index.mjs +1 -1
- package/package.json +27 -25
- package/src/Autocomplete.tsx +2 -2
- package/src/Calendar.tsx +23 -11
- package/src/Collection.tsx +5 -2
- package/src/ColorPicker.tsx +2 -2
- package/src/ColorWheel.tsx +3 -1
- package/src/DateField.tsx +13 -9
- package/src/Dialog.tsx +2 -2
- package/src/DragAndDrop.tsx +4 -2
- package/src/GridList.tsx +4 -1
- package/src/ListBox.tsx +4 -1
- package/src/Menu.tsx +1 -1
- package/src/Modal.tsx +1 -0
- package/src/OverlayArrow.tsx +6 -3
- package/src/Popover.tsx +2 -1
- package/src/Separator.tsx +3 -2
- package/src/Table.tsx +8 -3
- package/src/TableLayout.ts +1 -1
- package/src/TagGroup.tsx +1 -1
- package/src/TextArea.tsx +1 -1
- package/src/Toast.tsx +51 -13
- package/src/Tooltip.tsx +2 -1
- package/src/Tree.tsx +2 -2
- package/src/Virtualizer.tsx +3 -3
- package/src/index.ts +3 -3
- package/src/utils.tsx +8 -1
package/src/Toast.tsx
CHANGED
|
@@ -10,21 +10,28 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import {AriaToastProps, AriaToastRegionProps, mergeProps, useFocusRing, useToast, useToastRegion} from 'react-aria';
|
|
13
|
+
import {AriaToastProps, AriaToastRegionProps, mergeProps, useFocusRing, useHover, useLocale, useToast, useToastRegion} from 'react-aria';
|
|
14
14
|
import {ButtonContext} from './Button';
|
|
15
15
|
import {ContextValue, DEFAULT_SLOT, Provider, RenderProps, StyleRenderProps, useContextProps, useRenderProps} from './utils';
|
|
16
16
|
import {createPortal} from 'react-dom';
|
|
17
17
|
import {forwardRefType} from '@react-types/shared';
|
|
18
18
|
import {QueuedToast, ToastQueue, ToastState, useToastQueue} from 'react-stately';
|
|
19
|
-
import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes, JSX, ReactElement, useContext} from 'react';
|
|
19
|
+
import React, {createContext, ForwardedRef, forwardRef, HTMLAttributes, JSX, ReactElement, ReactNode, useContext} from 'react';
|
|
20
20
|
import {TextContext} from './Text';
|
|
21
|
+
import {useIsSSR} from '@react-aria/ssr';
|
|
21
22
|
import {useObjectRef} from '@react-aria/utils';
|
|
23
|
+
import {useUNSAFE_PortalContext} from '@react-aria/overlays';
|
|
22
24
|
|
|
23
|
-
const ToastStateContext = createContext<ToastState<any> | null>(null);
|
|
25
|
+
export const ToastStateContext = createContext<ToastState<any> | null>(null);
|
|
24
26
|
|
|
25
27
|
export interface ToastRegionRenderProps<T> {
|
|
26
28
|
/** A list of all currently visible toasts. */
|
|
27
29
|
visibleToasts: QueuedToast<T>[],
|
|
30
|
+
/**
|
|
31
|
+
* Whether the toast region is currently hovered with a mouse.
|
|
32
|
+
* @selector [data-hovered]
|
|
33
|
+
*/
|
|
34
|
+
isHovered: boolean,
|
|
28
35
|
/**
|
|
29
36
|
* Whether the toast region is currently focused.
|
|
30
37
|
* @selector [data-focused]
|
|
@@ -40,54 +47,85 @@ export interface ToastRegionRenderProps<T> {
|
|
|
40
47
|
export interface ToastRegionProps<T> extends AriaToastRegionProps, StyleRenderProps<ToastRegionRenderProps<T>> {
|
|
41
48
|
/** The queue of toasts to display. */
|
|
42
49
|
queue: ToastQueue<T>,
|
|
43
|
-
/** A function to render each toast
|
|
44
|
-
children: (renderProps: {toast: QueuedToast<T>}) => ReactElement
|
|
50
|
+
/** A function to render each toast, or children containing a `<ToastList>`. */
|
|
51
|
+
children: ReactNode | ((renderProps: {toast: QueuedToast<T>}) => ReactElement)
|
|
45
52
|
}
|
|
46
53
|
|
|
47
54
|
/**
|
|
48
55
|
* A ToastRegion displays one or more toast notifications.
|
|
49
56
|
*/
|
|
50
57
|
export const ToastRegion = /*#__PURE__*/ (forwardRef as forwardRefType)(function ToastRegion<T>(props: ToastRegionProps<T>, ref: ForwardedRef<HTMLDivElement>): JSX.Element | null {
|
|
58
|
+
let isSSR = useIsSSR();
|
|
51
59
|
let state = useToastQueue(props.queue);
|
|
52
60
|
let objectRef = useObjectRef(ref);
|
|
53
61
|
let {regionProps} = useToastRegion(props, state, objectRef);
|
|
54
62
|
|
|
55
63
|
let {focusProps, isFocused, isFocusVisible} = useFocusRing();
|
|
64
|
+
let {hoverProps, isHovered} = useHover({});
|
|
56
65
|
let renderProps = useRenderProps({
|
|
57
66
|
...props,
|
|
58
67
|
children: undefined,
|
|
59
68
|
defaultClassName: 'react-aria-ToastRegion',
|
|
60
69
|
values: {
|
|
61
70
|
visibleToasts: state.visibleToasts,
|
|
71
|
+
isHovered,
|
|
62
72
|
isFocused,
|
|
63
73
|
isFocusVisible
|
|
64
74
|
}
|
|
65
75
|
});
|
|
66
76
|
|
|
77
|
+
let {direction} = useLocale();
|
|
78
|
+
let portalContainer;
|
|
79
|
+
let {getContainer} = useUNSAFE_PortalContext();
|
|
80
|
+
if (!isSSR) {
|
|
81
|
+
portalContainer = document.body;
|
|
82
|
+
if (getContainer) {
|
|
83
|
+
portalContainer = getContainer();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
67
87
|
let region = (
|
|
68
88
|
<ToastStateContext.Provider value={state}>
|
|
69
89
|
<div
|
|
70
90
|
{...renderProps}
|
|
71
|
-
{...mergeProps(regionProps, focusProps)}
|
|
91
|
+
{...mergeProps(regionProps, focusProps, hoverProps)}
|
|
92
|
+
dir={direction}
|
|
72
93
|
ref={objectRef}
|
|
94
|
+
data-hovered={isHovered || undefined}
|
|
73
95
|
data-focused={isFocused || undefined}
|
|
74
96
|
data-focus-visible={isFocusVisible || undefined}>
|
|
75
|
-
{typeof props.children === 'function' ? <ToastList {...props} style={{display: 'contents'}}
|
|
97
|
+
{typeof props.children === 'function' ? <ToastList {...props} className={undefined} style={{display: 'contents'}}>{props.children}</ToastList> : props.children}
|
|
76
98
|
</div>
|
|
77
99
|
</ToastStateContext.Provider>
|
|
78
100
|
);
|
|
79
101
|
|
|
80
|
-
return state.visibleToasts.length > 0 &&
|
|
81
|
-
? createPortal(region,
|
|
102
|
+
return state.visibleToasts.length > 0 && portalContainer
|
|
103
|
+
? createPortal(region, portalContainer)
|
|
82
104
|
: null;
|
|
83
105
|
});
|
|
84
106
|
|
|
85
|
-
|
|
86
|
-
|
|
107
|
+
export interface ToastListProps<T> extends Omit<ToastRegionProps<T>, 'queue' | 'children'> {
|
|
108
|
+
/** A function to render each toast. */
|
|
109
|
+
children: (renderProps: {toast: QueuedToast<T>}) => ReactElement
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export const ToastList = /*#__PURE__*/ (forwardRef as forwardRefType)(function ToastList<T>(props: ToastListProps<T>, ref: ForwardedRef<HTMLOListElement>) {
|
|
87
113
|
let state = useContext(ToastStateContext)!;
|
|
114
|
+
let {hoverProps, isHovered} = useHover({});
|
|
115
|
+
let renderProps = useRenderProps({
|
|
116
|
+
...props,
|
|
117
|
+
children: undefined,
|
|
118
|
+
defaultClassName: 'react-aria-ToastList',
|
|
119
|
+
values: {
|
|
120
|
+
visibleToasts: state.visibleToasts,
|
|
121
|
+
isFocused: false,
|
|
122
|
+
isFocusVisible: false,
|
|
123
|
+
isHovered
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
|
|
88
127
|
return (
|
|
89
|
-
|
|
90
|
-
<ol ref={ref} style={props.style} className={props.className}>
|
|
128
|
+
<ol {...hoverProps} {...renderProps} ref={ref}>
|
|
91
129
|
{state.visibleToasts.map((toast) => (
|
|
92
130
|
<li key={toast.key} style={{display: 'contents'}}>
|
|
93
131
|
{props.children({toast})}
|
package/src/Tooltip.tsx
CHANGED
|
@@ -41,6 +41,7 @@ export interface TooltipProps extends PositionProps, Pick<AriaPositionProps, 'ar
|
|
|
41
41
|
/**
|
|
42
42
|
* The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.
|
|
43
43
|
* @default document.body
|
|
44
|
+
* @deprecated - Use a parent UNSAFE_PortalProvider to set your portal container instead.
|
|
44
45
|
*/
|
|
45
46
|
UNSTABLE_portalContainer?: Element,
|
|
46
47
|
/**
|
|
@@ -80,7 +81,7 @@ export const TooltipContext = createContext<ContextValue<TooltipProps, HTMLDivEl
|
|
|
80
81
|
* the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip
|
|
81
82
|
* relative to the trigger.
|
|
82
83
|
*/
|
|
83
|
-
export function TooltipTrigger(props: TooltipTriggerComponentProps) {
|
|
84
|
+
export function TooltipTrigger(props: TooltipTriggerComponentProps): ReactNode {
|
|
84
85
|
let state = useTooltipTriggerState(props);
|
|
85
86
|
let ref = useRef<FocusableElement>(null);
|
|
86
87
|
let {triggerProps, tooltipProps} = useTooltipTrigger(props, state, ref);
|
package/src/Tree.tsx
CHANGED
|
@@ -384,14 +384,14 @@ export const TreeItem = /*#__PURE__*/ createBranchComponent('item', <T extends o
|
|
|
384
384
|
});
|
|
385
385
|
|
|
386
386
|
useEffect(() => {
|
|
387
|
-
if (!item.textValue) {
|
|
387
|
+
if (!item.textValue && process.env.NODE_ENV !== 'production') {
|
|
388
388
|
console.warn('A `textValue` prop is required for <TreeItem> elements in order to support accessibility features such as type to select.');
|
|
389
389
|
}
|
|
390
390
|
}, [item.textValue]);
|
|
391
391
|
|
|
392
392
|
let expandButtonRef = useRef<HTMLButtonElement>(null);
|
|
393
393
|
useEffect(() => {
|
|
394
|
-
if (hasChildItems && !expandButtonRef.current) {
|
|
394
|
+
if (hasChildItems && !expandButtonRef.current && process.env.NODE_ENV !== 'production') {
|
|
395
395
|
console.warn('Expandable tree items must contain a expand button so screen reader users can expand/collapse the item.');
|
|
396
396
|
}
|
|
397
397
|
// eslint-disable-next-line
|
package/src/Virtualizer.tsx
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import {CollectionBranchProps, CollectionRenderer, CollectionRendererContext, CollectionRootProps} from './Collection';
|
|
14
14
|
import {DropPosition, DropTarget, DropTargetDelegate, ItemDropTarget, Node} from '@react-types/shared';
|
|
15
15
|
import {Layout, ReusableView, useVirtualizerState, VirtualizerState} from '@react-stately/virtualizer';
|
|
16
|
-
import React, {createContext,
|
|
16
|
+
import React, {createContext, ReactNode, useContext, useMemo} from 'react';
|
|
17
17
|
import {useScrollView, VirtualizerItem} from '@react-aria/virtualizer';
|
|
18
18
|
|
|
19
19
|
type View = ReusableView<Node<unknown>, ReactNode>;
|
|
@@ -50,7 +50,7 @@ const LayoutContext = createContext<LayoutContextValue | null>(null);
|
|
|
50
50
|
* It supports very large collections by only rendering visible items to the DOM, reusing
|
|
51
51
|
* them as the user scrolls.
|
|
52
52
|
*/
|
|
53
|
-
export function Virtualizer<O>(props: VirtualizerProps<O>) {
|
|
53
|
+
export function Virtualizer<O>(props: VirtualizerProps<O>): ReactNode {
|
|
54
54
|
let {children, layout: layoutProp, layoutOptions} = props;
|
|
55
55
|
let layout = useMemo(() => typeof layoutProp === 'function' ? new layoutProp() : layoutProp, [layoutProp]);
|
|
56
56
|
let renderer: CollectionRenderer = useMemo(() => ({
|
|
@@ -129,7 +129,7 @@ function renderWrapper(
|
|
|
129
129
|
parent: View | null,
|
|
130
130
|
reusableView: View,
|
|
131
131
|
renderDropIndicator?: (target: ItemDropTarget) => ReactNode
|
|
132
|
-
):
|
|
132
|
+
): ReactNode {
|
|
133
133
|
let rendered = (
|
|
134
134
|
<VirtualizerItem
|
|
135
135
|
key={reusableView.key}
|
package/src/index.ts
CHANGED
|
@@ -70,7 +70,7 @@ export {TagGroup, TagGroupContext, TagList, TagListContext, Tag} from './TagGrou
|
|
|
70
70
|
export {Text, TextContext} from './Text';
|
|
71
71
|
export {TextArea, TextAreaContext} from './TextArea';
|
|
72
72
|
export {TextField, TextFieldContext} from './TextField';
|
|
73
|
-
export {Toast as UNSTABLE_Toast, ToastRegion as UNSTABLE_ToastRegion, ToastContent as UNSTABLE_ToastContent} from './Toast';
|
|
73
|
+
export {Toast as UNSTABLE_Toast, ToastList as UNSTABLE_ToastList, ToastRegion as UNSTABLE_ToastRegion, ToastContent as UNSTABLE_ToastContent, ToastStateContext as UNSTABLE_ToastStateContext} from './Toast';
|
|
74
74
|
export {ToggleButton, ToggleButtonContext} from './ToggleButton';
|
|
75
75
|
export {ToggleButtonGroup, ToggleButtonGroupContext, ToggleGroupStateContext} from './ToggleButtonGroup';
|
|
76
76
|
export {Toolbar, ToolbarContext} from './Toolbar';
|
|
@@ -133,7 +133,7 @@ export type {TagGroupProps, TagListProps, TagListRenderProps, TagProps, TagRende
|
|
|
133
133
|
export type {TextAreaProps} from './TextArea';
|
|
134
134
|
export type {TextFieldProps, TextFieldRenderProps} from './TextField';
|
|
135
135
|
export type {TextProps} from './Text';
|
|
136
|
-
export type {ToastRegionProps, ToastRegionRenderProps, ToastProps, ToastRenderProps} from './Toast';
|
|
136
|
+
export type {ToastRegionProps, ToastListProps, ToastRegionRenderProps, ToastProps, ToastRenderProps} from './Toast';
|
|
137
137
|
export type {ToggleButtonProps, ToggleButtonRenderProps} from './ToggleButton';
|
|
138
138
|
export type {ToggleButtonGroupProps, ToggleButtonGroupRenderProps} from './ToggleButtonGroup';
|
|
139
139
|
export type {ToolbarProps, ToolbarRenderProps} from './Toolbar';
|
|
@@ -146,6 +146,6 @@ export type {VirtualizerProps} from './Virtualizer';
|
|
|
146
146
|
|
|
147
147
|
export type {DateValue, DateRange, TimeValue} from 'react-aria';
|
|
148
148
|
export type {DirectoryDropItem, DraggableCollectionEndEvent, DraggableCollectionMoveEvent, DraggableCollectionStartEvent, DragPreviewRenderer, DragTypes, DropItem, DropOperation, DroppableCollectionDropEvent, DroppableCollectionEnterEvent, DroppableCollectionExitEvent, DroppableCollectionInsertDropEvent, DroppableCollectionMoveEvent, DroppableCollectionOnItemDropEvent, DroppableCollectionReorderEvent, DroppableCollectionRootDropEvent, DropPosition, DropTarget, FileDropItem, ItemDropTarget, RootDropTarget, TextDropItem, PressEvent} from 'react-aria';
|
|
149
|
-
export type {Color, ColorSpace, ColorFormat, Key, Selection, SortDescriptor, SortDirection, SelectionMode, ToastOptions} from 'react-stately';
|
|
149
|
+
export type {Color, ColorSpace, ColorFormat, Key, QueuedToast, Selection, SortDescriptor, SortDirection, SelectionMode, ToastOptions} from 'react-stately';
|
|
150
150
|
export type {ValidationResult, RouterConfig} from '@react-types/shared';
|
|
151
151
|
export type {ListLayoutOptions, GridLayoutOptions, WaterfallLayoutOptions} from '@react-stately/layout';
|
package/src/utils.tsx
CHANGED
|
@@ -87,7 +87,14 @@ interface RenderPropsHookOptions<T> extends RenderProps<T>, SharedDOMProps, Aria
|
|
|
87
87
|
defaultStyle?: CSSProperties
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
interface RenderPropsHookRetVal {
|
|
91
|
+
className?: string,
|
|
92
|
+
style?: CSSProperties,
|
|
93
|
+
children?: ReactNode,
|
|
94
|
+
'data-rac': string
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function useRenderProps<T>(props: RenderPropsHookOptions<T>): RenderPropsHookRetVal {
|
|
91
98
|
let {
|
|
92
99
|
className,
|
|
93
100
|
style,
|