react-aria-components 3.0.0-nightly-3f44370de-241118 → 3.0.0-nightly-b3a4d6c11-241119
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 +2 -2
- package/dist/Breadcrumbs.main.js.map +1 -1
- package/dist/Breadcrumbs.mjs +2 -2
- package/dist/Breadcrumbs.module.js +2 -2
- package/dist/Breadcrumbs.module.js.map +1 -1
- package/dist/Button.main.js.map +1 -1
- package/dist/Button.module.js.map +1 -1
- package/dist/Collection.main.js.map +1 -1
- package/dist/Collection.module.js.map +1 -1
- package/dist/ComboBox.main.js +2 -2
- package/dist/ComboBox.main.js.map +1 -1
- package/dist/ComboBox.mjs +2 -2
- package/dist/ComboBox.module.js +2 -2
- package/dist/ComboBox.module.js.map +1 -1
- package/dist/Dialog.main.js +22 -1
- package/dist/Dialog.main.js.map +1 -1
- package/dist/Dialog.mjs +23 -2
- package/dist/Dialog.module.js +23 -2
- package/dist/Dialog.module.js.map +1 -1
- package/dist/Disclosure.main.js +1 -1
- package/dist/Disclosure.main.js.map +1 -1
- package/dist/Disclosure.mjs +1 -1
- package/dist/Disclosure.module.js +1 -1
- package/dist/Disclosure.module.js.map +1 -1
- package/dist/Heading.main.js.map +1 -1
- package/dist/Heading.module.js.map +1 -1
- package/dist/Menu.main.js +7 -45
- package/dist/Menu.main.js.map +1 -1
- package/dist/Menu.mjs +9 -47
- package/dist/Menu.module.js +9 -47
- package/dist/Menu.module.js.map +1 -1
- package/dist/OverlayArrow.main.js +1 -1
- package/dist/OverlayArrow.main.js.map +1 -1
- package/dist/OverlayArrow.mjs +1 -1
- package/dist/OverlayArrow.module.js +1 -1
- package/dist/OverlayArrow.module.js.map +1 -1
- package/dist/Popover.main.js +1 -0
- package/dist/Popover.main.js.map +1 -1
- package/dist/Popover.mjs +1 -0
- package/dist/Popover.module.js +1 -0
- package/dist/Popover.module.js.map +1 -1
- package/dist/Table.main.js +2 -10
- package/dist/Table.main.js.map +1 -1
- package/dist/Table.mjs +2 -10
- package/dist/Table.module.js +2 -10
- package/dist/Table.module.js.map +1 -1
- package/dist/Tooltip.main.js +1 -1
- package/dist/Tooltip.main.js.map +1 -1
- package/dist/Tooltip.mjs +1 -1
- package/dist/Tooltip.module.js +1 -1
- package/dist/Tooltip.module.js.map +1 -1
- package/dist/Virtualizer.main.js.map +1 -1
- package/dist/Virtualizer.module.js.map +1 -1
- package/dist/types.d.ts +107 -107
- package/dist/types.d.ts.map +1 -1
- package/i18n/ar-AE.js +1 -1
- package/i18n/ar-AE.mjs +1 -1
- package/i18n/bg-BG.js +1 -1
- package/i18n/bg-BG.mjs +1 -1
- package/i18n/cs-CZ.js +1 -1
- package/i18n/cs-CZ.mjs +1 -1
- package/i18n/da-DK.js +1 -1
- package/i18n/da-DK.mjs +1 -1
- package/i18n/de-DE.js +1 -1
- package/i18n/de-DE.mjs +1 -1
- package/i18n/el-GR.js +1 -1
- package/i18n/el-GR.mjs +1 -1
- package/i18n/en-US.js +1 -1
- package/i18n/en-US.mjs +1 -1
- package/i18n/es-ES.js +1 -1
- package/i18n/es-ES.mjs +1 -1
- package/i18n/et-EE.js +1 -1
- package/i18n/et-EE.mjs +1 -1
- package/i18n/fi-FI.js +1 -1
- package/i18n/fi-FI.mjs +1 -1
- package/i18n/fr-FR.js +1 -1
- package/i18n/fr-FR.mjs +1 -1
- package/i18n/he-IL.js +1 -1
- package/i18n/he-IL.mjs +1 -1
- package/i18n/hr-HR.js +1 -1
- package/i18n/hr-HR.mjs +1 -1
- package/i18n/hu-HU.js +1 -1
- package/i18n/hu-HU.mjs +1 -1
- package/i18n/it-IT.js +1 -1
- package/i18n/it-IT.mjs +1 -1
- package/i18n/ja-JP.js +1 -1
- package/i18n/ja-JP.mjs +1 -1
- package/i18n/ko-KR.js +1 -1
- package/i18n/ko-KR.mjs +1 -1
- package/i18n/lt-LT.js +1 -1
- package/i18n/lt-LT.mjs +1 -1
- package/i18n/lv-LV.js +1 -1
- package/i18n/lv-LV.mjs +1 -1
- package/i18n/nb-NO.js +1 -1
- package/i18n/nb-NO.mjs +1 -1
- package/i18n/nl-NL.js +1 -1
- package/i18n/nl-NL.mjs +1 -1
- package/i18n/pl-PL.js +1 -1
- package/i18n/pl-PL.mjs +1 -1
- package/i18n/pt-BR.js +1 -1
- package/i18n/pt-BR.mjs +1 -1
- package/i18n/pt-PT.js +1 -1
- package/i18n/pt-PT.mjs +1 -1
- package/i18n/ro-RO.js +1 -1
- package/i18n/ro-RO.mjs +1 -1
- package/i18n/ru-RU.js +1 -1
- package/i18n/ru-RU.mjs +1 -1
- package/i18n/sk-SK.js +1 -1
- package/i18n/sk-SK.mjs +1 -1
- package/i18n/sl-SI.js +1 -1
- package/i18n/sl-SI.mjs +1 -1
- package/i18n/sr-SP.js +1 -1
- package/i18n/sr-SP.mjs +1 -1
- package/i18n/sv-SE.js +1 -1
- package/i18n/sv-SE.mjs +1 -1
- package/i18n/tr-TR.js +1 -1
- package/i18n/tr-TR.mjs +1 -1
- package/i18n/uk-UA.js +1 -1
- package/i18n/uk-UA.mjs +1 -1
- package/i18n/zh-CN.js +1 -1
- package/i18n/zh-CN.mjs +1 -1
- package/i18n/zh-TW.js +1 -1
- package/i18n/zh-TW.mjs +1 -1
- package/package.json +32 -33
- package/src/Collection.tsx +1 -1
- package/src/Dialog.tsx +15 -2
- package/src/Disclosure.tsx +1 -1
- package/src/Menu.tsx +7 -33
- package/src/OverlayArrow.tsx +5 -3
- package/src/Popover.tsx +2 -2
- package/src/Table.tsx +1 -2
- package/src/Tooltip.tsx +2 -2
- package/src/Virtualizer.tsx +2 -2
package/src/Menu.tsx
CHANGED
|
@@ -22,8 +22,8 @@ import {HeaderContext} from './Header';
|
|
|
22
22
|
import {KeyboardContext} from './Keyboard';
|
|
23
23
|
import {MultipleSelectionState, SelectionManager, useMultipleSelectionState} from '@react-stately/selection';
|
|
24
24
|
import {OverlayTriggerStateContext} from './Dialog';
|
|
25
|
-
import {PopoverContext
|
|
26
|
-
import {PressResponder, useHover
|
|
25
|
+
import {PopoverContext} from './Popover';
|
|
26
|
+
import {PressResponder, useHover} from '@react-aria/interactions';
|
|
27
27
|
import React, {
|
|
28
28
|
createContext,
|
|
29
29
|
ForwardedRef,
|
|
@@ -33,7 +33,6 @@ import React, {
|
|
|
33
33
|
RefObject,
|
|
34
34
|
useCallback,
|
|
35
35
|
useContext,
|
|
36
|
-
useEffect,
|
|
37
36
|
useRef,
|
|
38
37
|
useState
|
|
39
38
|
} from 'react';
|
|
@@ -120,7 +119,6 @@ export const SubmenuTrigger = /*#__PURE__*/ createBranchComponent('submenutrigg
|
|
|
120
119
|
let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);
|
|
121
120
|
let submenuRef = useRef<HTMLDivElement>(null);
|
|
122
121
|
let itemRef = useObjectRef(ref);
|
|
123
|
-
let popoverContext = useSlottedContext(PopoverContext)!;
|
|
124
122
|
let {parentMenuRef} = useContext(SubmenuTriggerContext)!;
|
|
125
123
|
let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({
|
|
126
124
|
parentMenuRef,
|
|
@@ -139,7 +137,9 @@ export const SubmenuTrigger = /*#__PURE__*/ createBranchComponent('submenutrigg
|
|
|
139
137
|
trigger: 'SubmenuTrigger',
|
|
140
138
|
triggerRef: itemRef,
|
|
141
139
|
placement: 'end top',
|
|
142
|
-
|
|
140
|
+
// Prevent parent popover from hiding submenu.
|
|
141
|
+
// @ts-ignore
|
|
142
|
+
'data-react-aria-top-layer': true,
|
|
143
143
|
...popoverProps
|
|
144
144
|
}]
|
|
145
145
|
]}>
|
|
@@ -174,33 +174,9 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
174
174
|
collection,
|
|
175
175
|
children: undefined
|
|
176
176
|
});
|
|
177
|
-
let
|
|
177
|
+
let triggerState = useContext(RootMenuTriggerStateContext);
|
|
178
178
|
let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);
|
|
179
|
-
let {menuProps} = useMenu({...props, isVirtualized}, state, ref);
|
|
180
|
-
let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;
|
|
181
|
-
let popoverContext = useContext(PopoverContext)!;
|
|
182
|
-
|
|
183
|
-
let isSubmenu = (popoverContext as PopoverProps)?.trigger === 'SubmenuTrigger';
|
|
184
|
-
useInteractOutside({
|
|
185
|
-
ref,
|
|
186
|
-
onInteractOutside: (e) => {
|
|
187
|
-
if (rootMenuTriggerState && !popoverContainer?.contains(e.target as HTMLElement)) {
|
|
188
|
-
rootMenuTriggerState.close();
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
isDisabled: isSubmenu || rootMenuTriggerState?.expandedKeysStack.length === 0
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
let prevPopoverContainer = useRef<HTMLDivElement | null>(null) ;
|
|
195
|
-
let [leftOffset, setLeftOffset] = useState({left: 0});
|
|
196
|
-
useEffect(() => {
|
|
197
|
-
if (popoverContainer && prevPopoverContainer.current !== popoverContainer && leftOffset.left === 0) {
|
|
198
|
-
prevPopoverContainer.current = popoverContainer;
|
|
199
|
-
let {left} = popoverContainer.getBoundingClientRect();
|
|
200
|
-
setLeftOffset({left: -1 * left});
|
|
201
|
-
}
|
|
202
|
-
}, [leftOffset, popoverContainer]);
|
|
203
|
-
|
|
179
|
+
let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);
|
|
204
180
|
let renderProps = useRenderProps({
|
|
205
181
|
defaultClassName: 'react-aria-Menu',
|
|
206
182
|
className: props.className,
|
|
@@ -221,7 +197,6 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
221
197
|
values={[
|
|
222
198
|
[MenuStateContext, state],
|
|
223
199
|
[SeparatorContext, {elementType: 'div'}],
|
|
224
|
-
[PopoverContext, {UNSTABLE_portalContainer: popoverContainer || undefined}],
|
|
225
200
|
[SectionContext, {name: 'MenuSection', render: MenuSection}],
|
|
226
201
|
[SubmenuTriggerContext, {parentMenuRef: ref}],
|
|
227
202
|
[MenuItemContext, null],
|
|
@@ -233,7 +208,6 @@ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInne
|
|
|
233
208
|
scrollRef={ref} />
|
|
234
209
|
</Provider>
|
|
235
210
|
</div>
|
|
236
|
-
<div ref={setPopoverContainer} style={{width: '100vw', position: 'absolute', top: 0, ...leftOffset}} />
|
|
237
211
|
</FocusScope>
|
|
238
212
|
);
|
|
239
213
|
}
|
package/src/OverlayArrow.tsx
CHANGED
|
@@ -16,7 +16,7 @@ import {PlacementAxis} from 'react-aria';
|
|
|
16
16
|
import React, {createContext, CSSProperties, ForwardedRef, forwardRef, HTMLAttributes} from 'react';
|
|
17
17
|
|
|
18
18
|
interface OverlayArrowContextValue extends OverlayArrowProps {
|
|
19
|
-
placement: PlacementAxis
|
|
19
|
+
placement: PlacementAxis | null
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export const OverlayArrowContext = createContext<ContextValue<OverlayArrowContextValue, HTMLDivElement>>({
|
|
@@ -30,7 +30,7 @@ export interface OverlayArrowRenderProps {
|
|
|
30
30
|
* The placement of the overlay relative to the trigger.
|
|
31
31
|
* @selector [data-placement="left | right | top | bottom"]
|
|
32
32
|
*/
|
|
33
|
-
placement: PlacementAxis
|
|
33
|
+
placement: PlacementAxis | null
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
function OverlayArrow(props: OverlayArrowProps, ref: ForwardedRef<HTMLDivElement>) {
|
|
@@ -38,9 +38,11 @@ function OverlayArrow(props: OverlayArrowProps, ref: ForwardedRef<HTMLDivElement
|
|
|
38
38
|
let placement = (props as OverlayArrowContextValue).placement;
|
|
39
39
|
let style: CSSProperties = {
|
|
40
40
|
position: 'absolute',
|
|
41
|
-
[placement]: '100%',
|
|
42
41
|
transform: placement === 'top' || placement === 'bottom' ? 'translateX(-50%)' : 'translateY(-50%)'
|
|
43
42
|
};
|
|
43
|
+
if (placement != null) {
|
|
44
|
+
style[placement] = '100%';
|
|
45
|
+
}
|
|
44
46
|
|
|
45
47
|
let renderProps = useRenderProps({
|
|
46
48
|
...props,
|
package/src/Popover.tsx
CHANGED
|
@@ -65,7 +65,7 @@ export interface PopoverRenderProps {
|
|
|
65
65
|
* The placement of the popover relative to the trigger.
|
|
66
66
|
* @selector [data-placement="left | right | top | bottom"]
|
|
67
67
|
*/
|
|
68
|
-
placement: PlacementAxis,
|
|
68
|
+
placement: PlacementAxis | null,
|
|
69
69
|
/**
|
|
70
70
|
* Whether the popover is currently entering. Use this to apply animations.
|
|
71
71
|
* @selector [data-entering]
|
|
@@ -165,7 +165,7 @@ function PopoverInner({state, isExiting, UNSTABLE_portalContainer, ...props}: Po
|
|
|
165
165
|
let style = {...popoverProps.style, ...renderProps.style};
|
|
166
166
|
|
|
167
167
|
return (
|
|
168
|
-
<Overlay isExiting={isExiting} portalContainer={UNSTABLE_portalContainer}>
|
|
168
|
+
<Overlay {...props} isExiting={isExiting} portalContainer={UNSTABLE_portalContainer}>
|
|
169
169
|
{!props.isNonModal && state.isOpen && <div data-testid="underlay" {...underlayProps} style={{position: 'fixed', inset: 0}} />}
|
|
170
170
|
<div
|
|
171
171
|
{...mergeProps(filterDOMProps(props as any), popoverProps)}
|
package/src/Table.tsx
CHANGED
|
@@ -1143,7 +1143,7 @@ export const Row = /*#__PURE__*/ createBranchComponent(
|
|
|
1143
1143
|
},
|
|
1144
1144
|
props => {
|
|
1145
1145
|
if (props.id == null && typeof props.children === 'function') {
|
|
1146
|
-
|
|
1146
|
+
throw new Error('No id detected for the Row element. The Row element requires a id to be provided to it when the cells are rendered dynamically.');
|
|
1147
1147
|
}
|
|
1148
1148
|
|
|
1149
1149
|
let dependencies = [props.value].concat(props.dependencies);
|
|
@@ -1194,7 +1194,6 @@ export const Cell = /*#__PURE__*/ createLeafComponent('cell', (props: CellProps,
|
|
|
1194
1194
|
let {dragState} = useContext(DragAndDropContext);
|
|
1195
1195
|
let {isVirtualized} = useContext(CollectionRendererContext);
|
|
1196
1196
|
|
|
1197
|
-
// @ts-ignore
|
|
1198
1197
|
cell.column = state.collection.columns[cell.index];
|
|
1199
1198
|
|
|
1200
1199
|
let {gridCellProps, isPressed} = useTableCell({
|
package/src/Tooltip.tsx
CHANGED
|
@@ -55,7 +55,7 @@ export interface TooltipRenderProps {
|
|
|
55
55
|
* The placement of the tooltip relative to the trigger.
|
|
56
56
|
* @selector [data-placement="left | right | top | bottom"]
|
|
57
57
|
*/
|
|
58
|
-
placement: PlacementAxis,
|
|
58
|
+
placement: PlacementAxis | null,
|
|
59
59
|
/**
|
|
60
60
|
* Whether the tooltip is currently entering. Use this to apply animations.
|
|
61
61
|
* @selector [data-entering]
|
|
@@ -168,7 +168,7 @@ function TooltipInner(props: TooltipProps & {isExiting: boolean, tooltipRef: Ref
|
|
|
168
168
|
ref={props.tooltipRef}
|
|
169
169
|
{...renderProps}
|
|
170
170
|
style={{...overlayProps.style, ...renderProps.style}}
|
|
171
|
-
data-placement={placement}
|
|
171
|
+
data-placement={placement ?? undefined}
|
|
172
172
|
data-entering={isEntering || undefined}
|
|
173
173
|
data-exiting={props.isExiting || undefined}>
|
|
174
174
|
<OverlayArrowContext.Provider value={{...arrowProps, placement, ref: arrowRef}}>
|
package/src/Virtualizer.tsx
CHANGED
|
@@ -126,7 +126,7 @@ function renderWrapper(
|
|
|
126
126
|
);
|
|
127
127
|
|
|
128
128
|
let {collection, layout} = reusableView.virtualizer;
|
|
129
|
-
let {key, type} = reusableView.content
|
|
129
|
+
let {key, type} = reusableView.content!;
|
|
130
130
|
if (type === 'item' && renderDropIndicator && layout.getDropTargetLayoutInfo) {
|
|
131
131
|
rendered = (
|
|
132
132
|
<React.Fragment key={reusableView.key}>
|
|
@@ -146,7 +146,7 @@ function renderDropIndicatorWrapper(
|
|
|
146
146
|
dropPosition: DropPosition,
|
|
147
147
|
renderDropIndicator: (target: ItemDropTarget) => ReactNode
|
|
148
148
|
) {
|
|
149
|
-
let target: DropTarget = {type: 'item', key: reusableView.content
|
|
149
|
+
let target: DropTarget = {type: 'item', key: reusableView.content!.key, dropPosition};
|
|
150
150
|
let indicator = renderDropIndicator(target);
|
|
151
151
|
if (indicator) {
|
|
152
152
|
let layoutInfo = reusableView.virtualizer.layout.getDropTargetLayoutInfo!(target);
|