@cdx-ui/primitives 0.0.1-beta.159 → 0.0.1-beta.160
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/lib/commonjs/dialog/DialogContent.js +17 -3
- package/lib/commonjs/dialog/DialogContent.js.map +1 -1
- package/lib/commonjs/dialog/DialogPopup.js +5 -1
- package/lib/commonjs/dialog/DialogPopup.js.map +1 -1
- package/lib/commonjs/index.js +54 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/menu/MenuCheckboxItem.js +42 -0
- package/lib/commonjs/menu/MenuCheckboxItem.js.map +1 -0
- package/lib/commonjs/menu/MenuItem.js +142 -0
- package/lib/commonjs/menu/MenuItem.js.map +1 -0
- package/lib/commonjs/menu/MenuOverlayRoot.js +80 -0
- package/lib/commonjs/menu/MenuOverlayRoot.js.map +1 -0
- package/lib/commonjs/menu/MenuPopup.js +78 -0
- package/lib/commonjs/menu/MenuPopup.js.map +1 -0
- package/lib/commonjs/menu/MenuRadioGroup.js +48 -0
- package/lib/commonjs/menu/MenuRadioGroup.js.map +1 -0
- package/lib/commonjs/menu/MenuRadioItem.js +32 -0
- package/lib/commonjs/menu/MenuRadioItem.js.map +1 -0
- package/lib/commonjs/menu/MenuRoot.js +139 -0
- package/lib/commonjs/menu/MenuRoot.js.map +1 -0
- package/lib/commonjs/menu/MenuTrigger.js +59 -0
- package/lib/commonjs/menu/MenuTrigger.js.map +1 -0
- package/lib/commonjs/menu/context.js +36 -0
- package/lib/commonjs/menu/context.js.map +1 -0
- package/lib/commonjs/menu/index.js +118 -0
- package/lib/commonjs/menu/index.js.map +1 -0
- package/lib/commonjs/menu/overlayContext.js +30 -0
- package/lib/commonjs/menu/overlayContext.js.map +1 -0
- package/lib/commonjs/menu/types.js +6 -0
- package/lib/commonjs/menu/types.js.map +1 -0
- package/lib/commonjs/menu/useMenuNavigation.js +87 -0
- package/lib/commonjs/menu/useMenuNavigation.js.map +1 -0
- package/lib/commonjs/menu/useMenuOverlayLifecycle.js +68 -0
- package/lib/commonjs/menu/useMenuOverlayLifecycle.js.map +1 -0
- package/lib/commonjs/menu/useMenuTrigger.js +115 -0
- package/lib/commonjs/menu/useMenuTrigger.js.map +1 -0
- package/lib/commonjs/overlay/OverlayContainer.js +2 -3
- package/lib/commonjs/overlay/OverlayContainer.js.map +1 -1
- package/lib/commonjs/overlay/OverlayStack.js +125 -0
- package/lib/commonjs/overlay/OverlayStack.js.map +1 -0
- package/lib/commonjs/overlay/constants.js +7 -1
- package/lib/commonjs/overlay/constants.js.map +1 -1
- package/lib/commonjs/overlay/getAnchoredOverlayPosition.js +188 -0
- package/lib/commonjs/overlay/getAnchoredOverlayPosition.js.map +1 -0
- package/lib/commonjs/overlay/index.js +39 -0
- package/lib/commonjs/overlay/index.js.map +1 -1
- package/lib/commonjs/overlay/useAnchoredOverlay.js +127 -0
- package/lib/commonjs/overlay/useAnchoredOverlay.js.map +1 -0
- package/lib/commonjs/overlay/useDismissOverlay.js +8 -1
- package/lib/commonjs/overlay/useDismissOverlay.js.map +1 -1
- package/lib/commonjs/overlay/useDismissOverlay.web.js +11 -3
- package/lib/commonjs/overlay/useDismissOverlay.web.js.map +1 -1
- package/lib/commonjs/overlay/useEscapeKey.js +8 -1
- package/lib/commonjs/overlay/useEscapeKey.js.map +1 -1
- package/lib/commonjs/overlay/useEscapeKey.web.js +11 -3
- package/lib/commonjs/overlay/useEscapeKey.web.js.map +1 -1
- package/lib/commonjs/overlay/useOverlayPosition.js +16 -7
- package/lib/commonjs/overlay/useOverlayPosition.js.map +1 -1
- package/lib/commonjs/portal/portal.js +86 -63
- package/lib/commonjs/portal/portal.js.map +1 -1
- package/lib/commonjs/select/SelectContent.js +23 -11
- package/lib/commonjs/select/SelectContent.js.map +1 -1
- package/lib/commonjs/select/useListboxNavigation.js +10 -11
- package/lib/commonjs/select/useListboxNavigation.js.map +1 -1
- package/lib/commonjs/tooltip/TooltipContent.js +25 -24
- package/lib/commonjs/tooltip/TooltipContent.js.map +1 -1
- package/lib/commonjs/tooltip/getTooltipPosition.js +37 -84
- package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -1
- package/lib/module/dialog/DialogContent.js +18 -4
- package/lib/module/dialog/DialogContent.js.map +1 -1
- package/lib/module/dialog/DialogPopup.js +5 -1
- package/lib/module/dialog/DialogPopup.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/menu/MenuCheckboxItem.js +38 -0
- package/lib/module/menu/MenuCheckboxItem.js.map +1 -0
- package/lib/module/menu/MenuItem.js +138 -0
- package/lib/module/menu/MenuItem.js.map +1 -0
- package/lib/module/menu/MenuOverlayRoot.js +76 -0
- package/lib/module/menu/MenuOverlayRoot.js.map +1 -0
- package/lib/module/menu/MenuPopup.js +74 -0
- package/lib/module/menu/MenuPopup.js.map +1 -0
- package/lib/module/menu/MenuRadioGroup.js +44 -0
- package/lib/module/menu/MenuRadioGroup.js.map +1 -0
- package/lib/module/menu/MenuRadioItem.js +28 -0
- package/lib/module/menu/MenuRadioItem.js.map +1 -0
- package/lib/module/menu/MenuRoot.js +135 -0
- package/lib/module/menu/MenuRoot.js.map +1 -0
- package/lib/module/menu/MenuTrigger.js +55 -0
- package/lib/module/menu/MenuTrigger.js.map +1 -0
- package/lib/module/menu/context.js +27 -0
- package/lib/module/menu/context.js.map +1 -0
- package/lib/module/menu/index.js +13 -0
- package/lib/module/menu/index.js.map +1 -0
- package/lib/module/menu/overlayContext.js +24 -0
- package/lib/module/menu/overlayContext.js.map +1 -0
- package/lib/module/menu/types.js +4 -0
- package/lib/module/menu/types.js.map +1 -0
- package/lib/module/menu/useMenuNavigation.js +84 -0
- package/lib/module/menu/useMenuNavigation.js.map +1 -0
- package/lib/module/menu/useMenuOverlayLifecycle.js +63 -0
- package/lib/module/menu/useMenuOverlayLifecycle.js.map +1 -0
- package/lib/module/menu/useMenuTrigger.js +111 -0
- package/lib/module/menu/useMenuTrigger.js.map +1 -0
- package/lib/module/overlay/OverlayContainer.js +2 -3
- package/lib/module/overlay/OverlayContainer.js.map +1 -1
- package/lib/module/overlay/OverlayStack.js +119 -0
- package/lib/module/overlay/OverlayStack.js.map +1 -0
- package/lib/module/overlay/constants.js +6 -0
- package/lib/module/overlay/constants.js.map +1 -1
- package/lib/module/overlay/getAnchoredOverlayPosition.js +183 -0
- package/lib/module/overlay/getAnchoredOverlayPosition.js.map +1 -0
- package/lib/module/overlay/index.js +4 -1
- package/lib/module/overlay/index.js.map +1 -1
- package/lib/module/overlay/useAnchoredOverlay.js +123 -0
- package/lib/module/overlay/useAnchoredOverlay.js.map +1 -0
- package/lib/module/overlay/useDismissOverlay.js +9 -1
- package/lib/module/overlay/useDismissOverlay.js.map +1 -1
- package/lib/module/overlay/useDismissOverlay.web.js +11 -3
- package/lib/module/overlay/useDismissOverlay.web.js.map +1 -1
- package/lib/module/overlay/useEscapeKey.js +9 -1
- package/lib/module/overlay/useEscapeKey.js.map +1 -1
- package/lib/module/overlay/useEscapeKey.web.js +11 -3
- package/lib/module/overlay/useEscapeKey.web.js.map +1 -1
- package/lib/module/overlay/useOverlayPosition.js +16 -7
- package/lib/module/overlay/useOverlayPosition.js.map +1 -1
- package/lib/module/portal/portal.js +86 -64
- package/lib/module/portal/portal.js.map +1 -1
- package/lib/module/select/SelectContent.js +25 -13
- package/lib/module/select/SelectContent.js.map +1 -1
- package/lib/module/select/useListboxNavigation.js +10 -11
- package/lib/module/select/useListboxNavigation.js.map +1 -1
- package/lib/module/tooltip/TooltipContent.js +30 -29
- package/lib/module/tooltip/TooltipContent.js.map +1 -1
- package/lib/module/tooltip/getTooltipPosition.js +37 -84
- package/lib/module/tooltip/getTooltipPosition.js.map +1 -1
- package/lib/typescript/dialog/DialogContent.d.ts.map +1 -1
- package/lib/typescript/dialog/DialogPopup.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/menu/MenuCheckboxItem.d.ts +6 -0
- package/lib/typescript/menu/MenuCheckboxItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuItem.d.ts +8 -0
- package/lib/typescript/menu/MenuItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuOverlayRoot.d.ts +8 -0
- package/lib/typescript/menu/MenuOverlayRoot.d.ts.map +1 -0
- package/lib/typescript/menu/MenuPopup.d.ts +8 -0
- package/lib/typescript/menu/MenuPopup.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRadioGroup.d.ts +8 -0
- package/lib/typescript/menu/MenuRadioGroup.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRadioItem.d.ts +6 -0
- package/lib/typescript/menu/MenuRadioItem.d.ts.map +1 -0
- package/lib/typescript/menu/MenuRoot.d.ts +8 -0
- package/lib/typescript/menu/MenuRoot.d.ts.map +1 -0
- package/lib/typescript/menu/MenuTrigger.d.ts +7 -0
- package/lib/typescript/menu/MenuTrigger.d.ts.map +1 -0
- package/lib/typescript/menu/context.d.ts +15 -0
- package/lib/typescript/menu/context.d.ts.map +1 -0
- package/lib/typescript/menu/index.d.ts +12 -0
- package/lib/typescript/menu/index.d.ts.map +1 -0
- package/lib/typescript/menu/overlayContext.d.ts +35 -0
- package/lib/typescript/menu/overlayContext.d.ts.map +1 -0
- package/lib/typescript/menu/types.d.ts +104 -0
- package/lib/typescript/menu/types.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuNavigation.d.ts +16 -0
- package/lib/typescript/menu/useMenuNavigation.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts +15 -0
- package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts.map +1 -0
- package/lib/typescript/menu/useMenuTrigger.d.ts +35 -0
- package/lib/typescript/menu/useMenuTrigger.d.ts.map +1 -0
- package/lib/typescript/overlay/OverlayContainer.d.ts.map +1 -1
- package/lib/typescript/overlay/OverlayStack.d.ts +46 -0
- package/lib/typescript/overlay/OverlayStack.d.ts.map +1 -0
- package/lib/typescript/overlay/constants.d.ts +5 -0
- package/lib/typescript/overlay/constants.d.ts.map +1 -1
- package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts +45 -0
- package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts.map +1 -0
- package/lib/typescript/overlay/index.d.ts +5 -2
- package/lib/typescript/overlay/index.d.ts.map +1 -1
- package/lib/typescript/overlay/useAnchoredOverlay.d.ts +15 -0
- package/lib/typescript/overlay/useAnchoredOverlay.d.ts.map +1 -0
- package/lib/typescript/overlay/useDismissOverlay.d.ts +2 -1
- package/lib/typescript/overlay/useDismissOverlay.d.ts.map +1 -1
- package/lib/typescript/overlay/useDismissOverlay.web.d.ts +2 -1
- package/lib/typescript/overlay/useDismissOverlay.web.d.ts.map +1 -1
- package/lib/typescript/overlay/useEscapeKey.d.ts +2 -1
- package/lib/typescript/overlay/useEscapeKey.d.ts.map +1 -1
- package/lib/typescript/overlay/useEscapeKey.web.d.ts +2 -1
- package/lib/typescript/overlay/useEscapeKey.web.d.ts.map +1 -1
- package/lib/typescript/overlay/useOverlayPosition.d.ts +5 -1
- package/lib/typescript/overlay/useOverlayPosition.d.ts.map +1 -1
- package/lib/typescript/portal/portal.d.ts +3 -0
- package/lib/typescript/portal/portal.d.ts.map +1 -1
- package/lib/typescript/select/SelectContent.d.ts.map +1 -1
- package/lib/typescript/select/useListboxNavigation.d.ts.map +1 -1
- package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -1
- package/lib/typescript/tooltip/getTooltipPosition.d.ts +6 -8
- package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/dialog/DialogContent.tsx +16 -4
- package/src/dialog/DialogPopup.tsx +5 -1
- package/src/index.ts +23 -0
- package/src/menu/MenuCheckboxItem.tsx +51 -0
- package/src/menu/MenuItem.tsx +197 -0
- package/src/menu/MenuOverlayRoot.tsx +100 -0
- package/src/menu/MenuPopup.tsx +81 -0
- package/src/menu/MenuRadioGroup.tsx +48 -0
- package/src/menu/MenuRadioItem.tsx +32 -0
- package/src/menu/MenuRoot.tsx +190 -0
- package/src/menu/MenuTrigger.tsx +57 -0
- package/src/menu/context.tsx +38 -0
- package/src/menu/index.ts +36 -0
- package/src/menu/overlayContext.tsx +61 -0
- package/src/menu/types.ts +119 -0
- package/src/menu/useMenuNavigation.ts +102 -0
- package/src/menu/useMenuOverlayLifecycle.ts +77 -0
- package/src/menu/useMenuTrigger.ts +161 -0
- package/src/overlay/OverlayContainer.tsx +3 -1
- package/src/overlay/OverlayStack.tsx +202 -0
- package/src/overlay/constants.ts +6 -0
- package/src/overlay/getAnchoredOverlayPosition.ts +326 -0
- package/src/overlay/index.ts +29 -1
- package/src/overlay/useAnchoredOverlay.ts +153 -0
- package/src/overlay/useDismissOverlay.ts +10 -2
- package/src/overlay/useDismissOverlay.web.ts +9 -2
- package/src/overlay/useEscapeKey.ts +13 -1
- package/src/overlay/useEscapeKey.web.ts +13 -3
- package/src/overlay/useOverlayPosition.ts +35 -8
- package/src/portal/portal.tsx +109 -69
- package/src/select/SelectContent.tsx +29 -17
- package/src/select/useListboxNavigation.ts +12 -9
- package/src/tooltip/TooltipContent.tsx +32 -34
- package/src/tooltip/getTooltipPosition.ts +58 -125
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { PressableProps, ViewProps } from 'react-native';
|
|
3
|
+
import type { OverlayPlacement } from '../overlay';
|
|
4
|
+
import type { InteractionState } from '../types';
|
|
5
|
+
export interface IMenuOverlayRootProps extends ViewProps {
|
|
6
|
+
isOpen?: boolean;
|
|
7
|
+
defaultOpen?: boolean;
|
|
8
|
+
onOpenChange?: (open: boolean) => void;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
/** Preferred popup placement relative to the trigger. */
|
|
11
|
+
placement?: OverlayPlacement;
|
|
12
|
+
/** Distance between the trigger and popup in pixels. */
|
|
13
|
+
offset?: number;
|
|
14
|
+
/** Cross-axis adjustment from the aligned popup position in pixels. */
|
|
15
|
+
crossOffset?: number;
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export interface IMenuTriggerProps extends PressableProps {
|
|
19
|
+
asChild?: boolean;
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
export interface IMenuPopupProps extends ViewProps {
|
|
23
|
+
children?: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export interface IMenuProps extends ViewProps {
|
|
26
|
+
/** When true, children are wrapped in a scroll container (styled layer applies max-height). */
|
|
27
|
+
scrollable?: boolean;
|
|
28
|
+
/** Called when Escape is pressed on web keyboard navigation. */
|
|
29
|
+
onEscape?: () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Visual-only surface without `role="menu"` or menu keyboard navigation.
|
|
32
|
+
* Use when embedding inside another collection (e.g. `Select.Content` listbox).
|
|
33
|
+
*/
|
|
34
|
+
asSurface?: boolean;
|
|
35
|
+
children?: ReactNode;
|
|
36
|
+
}
|
|
37
|
+
export interface IMenuItemProps extends PressableProps {
|
|
38
|
+
disabled?: boolean;
|
|
39
|
+
/** Whether activation closes an overlay Menu. Defaults to true for overlay items. */
|
|
40
|
+
closeOnSelect?: boolean;
|
|
41
|
+
/** @internal */
|
|
42
|
+
itemRole?: 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';
|
|
43
|
+
/** @internal */
|
|
44
|
+
isChecked?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
isHovered?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
isActive?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
isFocused?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
isFocusVisible?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
isDisabled?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface MenuItemInteractionState extends InteractionState {
|
|
67
|
+
highlighted: boolean;
|
|
68
|
+
checked: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface IMenuCheckboxItemProps extends Omit<IMenuItemProps, 'children' | 'isChecked' | 'itemRole'> {
|
|
71
|
+
children?: ReactNode;
|
|
72
|
+
isChecked?: boolean;
|
|
73
|
+
defaultIsChecked?: boolean;
|
|
74
|
+
onChange?: (isChecked: boolean) => void;
|
|
75
|
+
}
|
|
76
|
+
export interface IMenuRadioGroupProps extends ViewProps {
|
|
77
|
+
value?: string;
|
|
78
|
+
defaultValue?: string;
|
|
79
|
+
onChange?: (value: string) => void;
|
|
80
|
+
}
|
|
81
|
+
export interface IMenuRadioItemProps extends Omit<IMenuItemProps, 'children' | 'isChecked' | 'itemRole'> {
|
|
82
|
+
children?: ReactNode;
|
|
83
|
+
value: string;
|
|
84
|
+
}
|
|
85
|
+
export interface RegisteredMenuItem {
|
|
86
|
+
disabled: boolean;
|
|
87
|
+
node: {
|
|
88
|
+
focus?: () => void;
|
|
89
|
+
} | null;
|
|
90
|
+
}
|
|
91
|
+
export type MenuCloseReason = 'escape' | 'outside' | 'programmatic' | 'select' | 'tab' | 'trigger';
|
|
92
|
+
export interface MenuContextValue {
|
|
93
|
+
menuId: string;
|
|
94
|
+
registerItem: (itemId: string, entry: RegisteredMenuItem) => void;
|
|
95
|
+
unregisterItem: (itemId: string) => void;
|
|
96
|
+
getItems: () => [string, RegisteredMenuItem][];
|
|
97
|
+
focusedItemId: string | undefined;
|
|
98
|
+
setFocusedItemId: (itemId: string | undefined) => void;
|
|
99
|
+
onEscape?: () => void;
|
|
100
|
+
/** When true, item activation dismisses the overlay menu. */
|
|
101
|
+
closeOnSelect?: boolean;
|
|
102
|
+
dismissOverlay?: (reason?: MenuCloseReason) => void;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/menu/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RegisteredMenuItem } from './types';
|
|
2
|
+
export interface UseMenuNavigationOptions {
|
|
3
|
+
getItems: () => [string, RegisteredMenuItem][];
|
|
4
|
+
focusedItemId: string | undefined;
|
|
5
|
+
setFocusedItemId: (itemId: string | undefined) => void;
|
|
6
|
+
onEscape?: () => void;
|
|
7
|
+
onTab?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function useMenuNavigation({ getItems, focusedItemId, setFocusedItemId, onEscape, onTab, }: UseMenuNavigationOptions): {
|
|
10
|
+
handleKeyDown: (e: {
|
|
11
|
+
key: string;
|
|
12
|
+
preventDefault: () => void;
|
|
13
|
+
stopPropagation?: () => void;
|
|
14
|
+
}) => void;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=useMenuNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMenuNavigation.d.ts","sourceRoot":"","sources":["../../../src/menu/useMenuNavigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAC/C,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,KAAK,GACN,EAAE,wBAAwB;uBAoBnB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE;EA8DhF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MenuOverlayContextValue } from './overlayContext';
|
|
2
|
+
import type { RegisteredMenuItem } from './types';
|
|
3
|
+
export interface UseMenuOverlayOpenFocusOptions {
|
|
4
|
+
overlay: MenuOverlayContextValue | null;
|
|
5
|
+
getItems: () => [string, RegisteredMenuItem][];
|
|
6
|
+
setFocusedItemId: (itemId: string | undefined) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* On open, keyboard-opened menus focus the first or last enabled item;
|
|
10
|
+
* pointer-opened menus focus the menu container so the first item is not
|
|
11
|
+
* highlighted until hover or arrow keys.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useMenuOverlayOpenFocus({ overlay, getItems, setFocusedItemId, }: UseMenuOverlayOpenFocusOptions): void;
|
|
14
|
+
export declare function useMenuOverlayCloseFocus(overlay: MenuOverlayContextValue): void;
|
|
15
|
+
//# sourceMappingURL=useMenuOverlayLifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMenuOverlayLifecycle.d.ts","sourceRoot":"","sources":["../../../src/menu/useMenuOverlayLifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAC/C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACxD;AAWD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE,8BAA8B,QAyBhC;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,QAoBxE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ForwardedRef, type RefCallback } from 'react';
|
|
2
|
+
import { type GestureResponderEvent, type PressableProps } from 'react-native';
|
|
3
|
+
import type { InteractionState } from '../types';
|
|
4
|
+
export interface UseMenuTriggerOptions {
|
|
5
|
+
asChild?: boolean;
|
|
6
|
+
onPress?: PressableProps['onPress'];
|
|
7
|
+
onHoverIn?: PressableProps['onHoverIn'];
|
|
8
|
+
onHoverOut?: PressableProps['onHoverOut'];
|
|
9
|
+
onFocus?: (...args: unknown[]) => unknown;
|
|
10
|
+
onBlur?: (...args: unknown[]) => unknown;
|
|
11
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface MenuTriggerAriaProps {
|
|
14
|
+
role: 'button';
|
|
15
|
+
id: string;
|
|
16
|
+
'aria-haspopup': 'menu';
|
|
17
|
+
'aria-expanded': boolean;
|
|
18
|
+
'aria-controls': string;
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface UseMenuTriggerReturn {
|
|
22
|
+
ariaProps: MenuTriggerAriaProps;
|
|
23
|
+
interactionState: Pick<InteractionState, 'hover' | 'focus' | 'disabled'>;
|
|
24
|
+
mergedRef: RefCallback<unknown>;
|
|
25
|
+
handlers: {
|
|
26
|
+
onPress: (e: GestureResponderEvent) => void;
|
|
27
|
+
onHoverIn: NonNullable<PressableProps['onHoverIn']>;
|
|
28
|
+
onHoverOut: NonNullable<PressableProps['onHoverOut']>;
|
|
29
|
+
onFocus: (...args: unknown[]) => unknown;
|
|
30
|
+
onBlur: (...args: unknown[]) => unknown;
|
|
31
|
+
onKeyDown: (e: KeyboardEvent) => void;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export declare function useMenuTrigger(forwardedRef: ForwardedRef<unknown>, options: UseMenuTriggerOptions): UseMenuTriggerReturn;
|
|
35
|
+
//# sourceMappingURL=useMenuTrigger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMenuTrigger.d.ts","sourceRoot":"","sources":["../../../src/menu/useMenuTrigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAC1F,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAI/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAC1C,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,oBAAoB,CAAC;IAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC;IACzE,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;QAC5C,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,UAAU,EAAE,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QACzC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;QACxC,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;KACvC,CAAC;CACH;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,EACnC,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAoHtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../src/overlay/OverlayContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAI/E,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE,QAAQ,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"OverlayContainer.d.ts","sourceRoot":"","sources":["../../../src/overlay/OverlayContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAI/E,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE,QAAQ,CAAC,qBAAqB,CAAC,2CA6BjC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type OverlayStackLayer = 'nonmodal' | 'modal' | 'notification';
|
|
3
|
+
export type OverlayStackCapability = 'escape' | 'outside' | 'back';
|
|
4
|
+
export interface OverlayStackMetadata {
|
|
5
|
+
/**
|
|
6
|
+
* Semantic layer used by hosts for visual and accessibility policy.
|
|
7
|
+
* Dismissal ownership follows activation order so a child opened from a modal
|
|
8
|
+
* handles Escape or outside interaction before its parent.
|
|
9
|
+
* @default 'nonmodal'
|
|
10
|
+
*/
|
|
11
|
+
layer?: OverlayStackLayer;
|
|
12
|
+
/**
|
|
13
|
+
* Optional logical overlay identifier.
|
|
14
|
+
*/
|
|
15
|
+
id?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Optional parent overlay identifier for nested overlay diagnostics.
|
|
18
|
+
*/
|
|
19
|
+
parentId?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Optional group identifier for registrations owned by one logical overlay.
|
|
22
|
+
*/
|
|
23
|
+
groupId?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface OverlayStackRegistrationOptions extends OverlayStackMetadata {
|
|
26
|
+
active: boolean;
|
|
27
|
+
capabilities?: readonly OverlayStackCapability[];
|
|
28
|
+
}
|
|
29
|
+
export interface OverlayStackRegistrationResult {
|
|
30
|
+
id: string;
|
|
31
|
+
isTopmost: (capability: OverlayStackCapability) => boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Scopes overlay ordering and dismissal coordination to a provider subtree.
|
|
35
|
+
* Hooks retain their standalone behavior when no provider is present.
|
|
36
|
+
*/
|
|
37
|
+
export declare function OverlayStackProvider({ children }: Readonly<{
|
|
38
|
+
children: React.ReactNode;
|
|
39
|
+
}>): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
/**
|
|
41
|
+
* Registers one active overlay and reports whether it is topmost for a specific
|
|
42
|
+
* dismissal capability. Capabilities are resolved independently so a
|
|
43
|
+
* notification without dismissal capabilities never blocks a modal.
|
|
44
|
+
*/
|
|
45
|
+
export declare function useOverlayStackRegistration({ active, capabilities, layer, id, parentId, groupId, }: OverlayStackRegistrationOptions): OverlayStackRegistrationResult;
|
|
46
|
+
//# sourceMappingURL=OverlayStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverlayStack.d.ts","sourceRoot":"","sources":["../../../src/overlay/OverlayStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;AACtE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,+BAAgC,SAAQ,oBAAoB;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,OAAO,CAAC;CAC5D;AAyED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,2CAIzF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,MAAM,EACN,YAAiB,EACjB,KAAkB,EAClB,EAAE,EACF,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,8BAA8B,CA+DlE"}
|
|
@@ -3,4 +3,9 @@
|
|
|
3
3
|
* so Dialog / AlertDialog stack on top when opened from a bottom sheet.
|
|
4
4
|
*/
|
|
5
5
|
export declare const MODAL_OVERLAY_Z_INDEX = 10000;
|
|
6
|
+
/**
|
|
7
|
+
* Notification overlay z-index — above modal surfaces while remaining
|
|
8
|
+
* nonmodal and pointer-transparent outside the notification content.
|
|
9
|
+
*/
|
|
10
|
+
export declare const NOTIFICATION_OVERLAY_Z_INDEX = 11000;
|
|
6
11
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/overlay/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/overlay/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ViewStyle } from 'react-native';
|
|
2
|
+
import type { AnchorLayout } from './useAnchorPosition';
|
|
3
|
+
import type { EdgeInsets } from './useOverlayPosition';
|
|
4
|
+
export declare const OVERLAY_PLACEMENTS: readonly ["auto", "auto-start", "auto-end", "top", "top-start", "top-end", "right", "right-start", "right-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end"];
|
|
5
|
+
export type OverlayPlacement = (typeof OVERLAY_PLACEMENTS)[number];
|
|
6
|
+
export type OverlaySide = 'top' | 'right' | 'bottom' | 'left';
|
|
7
|
+
export type OverlayAlign = 'start' | 'center' | 'end';
|
|
8
|
+
export type OverlayCollisionBehavior = 'none' | 'flip' | 'flip-shift';
|
|
9
|
+
export type OverlayWidthPolicy = 'content' | 'anchor';
|
|
10
|
+
export interface FloatingLayout {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ResolvedOverlayPlacement {
|
|
15
|
+
side: OverlaySide;
|
|
16
|
+
align: OverlayAlign;
|
|
17
|
+
}
|
|
18
|
+
export interface AnchoredOverlayPositionOptions {
|
|
19
|
+
placement?: OverlayPlacement;
|
|
20
|
+
offset?: number;
|
|
21
|
+
crossOffset?: number;
|
|
22
|
+
collisionBehavior?: OverlayCollisionBehavior;
|
|
23
|
+
collisionPadding?: number | Partial<EdgeInsets>;
|
|
24
|
+
insets?: Partial<EdgeInsets>;
|
|
25
|
+
width?: OverlayWidthPolicy;
|
|
26
|
+
isRTL?: boolean;
|
|
27
|
+
arrowBoundaryOffset?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface AnchoredOverlayPosition {
|
|
30
|
+
style: ViewStyle;
|
|
31
|
+
resolvedPlacement: ResolvedOverlayPlacement;
|
|
32
|
+
placement: Exclude<OverlayPlacement, 'auto' | 'auto-start' | 'auto-end'>;
|
|
33
|
+
availableWidth: number;
|
|
34
|
+
availableHeight: number;
|
|
35
|
+
arrow: {
|
|
36
|
+
x?: number;
|
|
37
|
+
y?: number;
|
|
38
|
+
};
|
|
39
|
+
transformOrigin: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function getAnchoredOverlayPosition(anchor: AnchorLayout, floatingLayout: FloatingLayout, viewport: {
|
|
42
|
+
width: number;
|
|
43
|
+
height: number;
|
|
44
|
+
}, options?: AnchoredOverlayPositionOptions): AnchoredOverlayPosition;
|
|
45
|
+
//# sourceMappingURL=getAnchoredOverlayPosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAnchoredOverlayPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/getAnchoredOverlayPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,2LAgBrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AACtD,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,CAAC;IACjB,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,SAAS,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AAgJD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC3C,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAsHzB"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export { MODAL_OVERLAY_Z_INDEX } from './constants';
|
|
1
|
+
export { MODAL_OVERLAY_Z_INDEX, NOTIFICATION_OVERLAY_Z_INDEX } from './constants';
|
|
2
2
|
export { OverlayContainer } from './OverlayContainer';
|
|
3
3
|
export type { OverlayContainerProps } from './OverlayContainer';
|
|
4
|
+
export { OverlayStackProvider, useOverlayStackRegistration, type OverlayStackCapability, type OverlayStackLayer, type OverlayStackMetadata, type OverlayStackRegistrationOptions, type OverlayStackRegistrationResult, } from './OverlayStack';
|
|
4
5
|
export { useAnchorPosition, type AnchorLayout } from './useAnchorPosition';
|
|
5
6
|
export { useDismissOverlay } from './useDismissOverlay';
|
|
6
7
|
export { useEscapeKey } from './useEscapeKey';
|
|
7
|
-
export {
|
|
8
|
+
export { getAnchoredOverlayPosition, OVERLAY_PLACEMENTS, type AnchoredOverlayPosition, type AnchoredOverlayPositionOptions, type FloatingLayout, type OverlayAlign, type OverlayCollisionBehavior, type OverlayPlacement, type OverlaySide, type OverlayWidthPolicy, type ResolvedOverlayPlacement, } from './getAnchoredOverlayPosition';
|
|
9
|
+
export { useAnchoredOverlay, type UseAnchoredOverlayOptions, type UseAnchoredOverlayResult, } from './useAnchoredOverlay';
|
|
10
|
+
export { useOverlayPosition, type OverlayPosition, type UseOverlayPositionOptions, OverlayInsetsProvider, type EdgeInsets, } from './useOverlayPosition';
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/overlay/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,GACpC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,UAAU,GAChB,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type LayoutChangeEvent, type ViewStyle } from 'react-native';
|
|
2
|
+
import { type AnchoredOverlayPosition, type AnchoredOverlayPositionOptions } from './getAnchoredOverlayPosition';
|
|
3
|
+
import { type UseAnchorPositionOptions } from './useAnchorPosition';
|
|
4
|
+
export interface UseAnchoredOverlayOptions extends AnchoredOverlayPositionOptions, UseAnchorPositionOptions {
|
|
5
|
+
}
|
|
6
|
+
export interface UseAnchoredOverlayResult {
|
|
7
|
+
floatingRef: React.RefObject<any>;
|
|
8
|
+
onFloatingLayout: (event: LayoutChangeEvent) => void;
|
|
9
|
+
style: ViewStyle;
|
|
10
|
+
position: AnchoredOverlayPosition | null;
|
|
11
|
+
ready: boolean;
|
|
12
|
+
update: () => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function useAnchoredOverlay(anchorRef: React.RefObject<any>, open: boolean, options?: UseAnchoredOverlayOptions): UseAnchoredOverlayResult;
|
|
15
|
+
//# sourceMappingURL=useAnchoredOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnchoredOverlay.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchoredOverlay.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EAEpC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAGvF,MAAM,WAAW,yBACf,SAAQ,8BAA8B,EAAE,wBAAwB;CAAG;AAErE,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClC,gBAAgB,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAsBD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAC/B,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAmG1B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { RefObject } from 'react';
|
|
2
|
+
import { type OverlayStackMetadata } from './OverlayStack';
|
|
2
3
|
/**
|
|
3
4
|
* No-op on native — overlay dismissal is handled by backdrop press
|
|
4
5
|
* or the system back gesture / hardware button via Modal.
|
|
5
6
|
*/
|
|
6
|
-
export declare function useDismissOverlay(
|
|
7
|
+
export declare function useDismissOverlay(open: boolean, _contentRef: RefObject<any>, _excludeRefs: RefObject<any>[], _onDismiss: () => void, options?: OverlayStackMetadata): void;
|
|
7
8
|
//# sourceMappingURL=useDismissOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDismissOverlay.d.ts","sourceRoot":"","sources":["../../../src/overlay/useDismissOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDismissOverlay.d.ts","sourceRoot":"","sources":["../../../src/overlay/useDismissOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,EAC3B,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAC9B,UAAU,EAAE,MAAM,IAAI,EACtB,OAAO,GAAE,oBAAyB,QAOnC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { RefObject } from 'react';
|
|
2
|
+
import { type OverlayStackMetadata } from './OverlayStack';
|
|
2
3
|
/**
|
|
3
4
|
* Dismisses an overlay when the user clicks/presses outside of it or when
|
|
4
5
|
* focus moves to an element outside the overlay via keyboard.
|
|
5
6
|
* Events targeting `contentRef` or any of `excludeRefs` are ignored.
|
|
6
7
|
*/
|
|
7
|
-
export declare function useDismissOverlay(open: boolean, contentRef: RefObject<any>, excludeRefs: RefObject<any>[], onDismiss: () => void): void;
|
|
8
|
+
export declare function useDismissOverlay(open: boolean, contentRef: RefObject<any>, excludeRefs: RefObject<any>[], onDismiss: () => void, options?: OverlayStackMetadata): void;
|
|
8
9
|
//# sourceMappingURL=useDismissOverlay.web.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDismissOverlay.web.d.ts","sourceRoot":"","sources":["../../../src/overlay/useDismissOverlay.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useDismissOverlay.web.d.ts","sourceRoot":"","sources":["../../../src/overlay/useDismissOverlay.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAUxF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,EAC1B,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAC7B,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,GAAE,oBAAyB,QA2CnC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type OverlayStackMetadata } from './OverlayStack';
|
|
1
2
|
/**
|
|
2
3
|
* No-op on native — Escape key dismissal is not applicable.
|
|
3
4
|
* Native uses the system back gesture / hardware button via Modal.
|
|
4
5
|
*/
|
|
5
|
-
export declare function useEscapeKey(
|
|
6
|
+
export declare function useEscapeKey(open: boolean, _onEscape: () => void, options?: OverlayStackMetadata): void;
|
|
6
7
|
//# sourceMappingURL=useEscapeKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEscapeKey.d.ts","sourceRoot":"","sources":["../../../src/overlay/useEscapeKey.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"useEscapeKey.d.ts","sourceRoot":"","sources":["../../../src/overlay/useEscapeKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,GAAE,oBAAyB,QAOnC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { type OverlayStackMetadata } from './OverlayStack';
|
|
1
2
|
/**
|
|
2
3
|
* Closes an overlay when the user presses the Escape key.
|
|
3
4
|
* Web-only — native platforms use Modal's `onRequestClose` for back/dismiss.
|
|
4
5
|
*/
|
|
5
|
-
export declare function useEscapeKey(open: boolean, onEscape: () => void): void;
|
|
6
|
+
export declare function useEscapeKey(open: boolean, onEscape: () => void, options?: OverlayStackMetadata): void;
|
|
6
7
|
//# sourceMappingURL=useEscapeKey.web.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEscapeKey.web.d.ts","sourceRoot":"","sources":["../../../src/overlay/useEscapeKey.web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEscapeKey.web.d.ts","sourceRoot":"","sources":["../../../src/overlay/useEscapeKey.web.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,IAAI,EACpB,OAAO,GAAE,oBAAyB,QA0BnC"}
|
|
@@ -33,6 +33,10 @@ export interface OverlayPosition {
|
|
|
33
33
|
maxHeight: number;
|
|
34
34
|
placement: 'top' | 'bottom';
|
|
35
35
|
}
|
|
36
|
+
export interface UseOverlayPositionOptions {
|
|
37
|
+
/** When true (default), overlay width matches the anchor (e.g. Select). When false, width follows content (e.g. Menu). */
|
|
38
|
+
matchAnchorWidth?: boolean;
|
|
39
|
+
}
|
|
36
40
|
/**
|
|
37
41
|
* Computes viewport-aware overlay positioning relative to an anchor element.
|
|
38
42
|
* Automatically flips placement from bottom to top when insufficient space
|
|
@@ -41,5 +45,5 @@ export interface OverlayPosition {
|
|
|
41
45
|
*
|
|
42
46
|
* Respects safe-area insets provided via `OverlayInsetsProvider`.
|
|
43
47
|
*/
|
|
44
|
-
export declare function useOverlayPosition(anchorLayout: AnchorLayout | null): OverlayPosition | null;
|
|
48
|
+
export declare function useOverlayPosition(anchorLayout: AnchorLayout | null, options?: UseOverlayPositionOptions): OverlayPosition | null;
|
|
45
49
|
//# sourceMappingURL=useOverlayPosition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useOverlayPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,qCAA4C,CAAC;AAC9E,eAAO,MAAM,qBAAqB,sCAAgC,CAAC;AAWnE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useOverlayPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,oBAAoB,qCAA4C,CAAC;AAC9E,eAAO,MAAM,qBAAqB,sCAAgC,CAAC;AAWnE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,0HAA0H;IAC1H,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,OAAO,CAAC,EAAE,yBAAyB,GAClC,eAAe,GAAG,IAAI,CA0DxB"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { type View, type ViewStyle } from 'react-native';
|
|
3
|
+
export declare function PortalProvider({ children }: Readonly<{
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}>): import("react/jsx-runtime").JSX.Element;
|
|
3
6
|
export declare function PortalHost({ name }: {
|
|
4
7
|
name?: string;
|
|
5
8
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/portal/portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAY,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/portal/portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAY,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAwHnE,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,2CAMnF;AAID,wBAAgB,UAAU,CAAC,EAAE,IAA0B,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,kDAyC3E;AAID,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,QAA8B,EAC9B,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,QAcA;AAQD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB;;;;;EAiBjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectContent.d.ts","sourceRoot":"","sources":["../../../src/select/SelectContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6D,MAAM,OAAO,CAAC;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectContent.d.ts","sourceRoot":"","sources":["../../../src/select/SelectContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6D,MAAM,OAAO,CAAC;AAClF,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAO9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAInD,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,iFAgHzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListboxNavigation.d.ts","sourceRoot":"","sources":["../../../src/select/useListboxNavigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,GACV,EAAE,2BAA2B;uBAUtB,GAAG;;
|
|
1
|
+
{"version":3,"file":"useListboxNavigation.d.ts","sourceRoot":"","sources":["../../../src/select/useListboxNavigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,GACV,EAAE,2BAA2B;uBAUtB,GAAG;;EA0DV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipContent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipContent.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwB,IAAI,EAAE,MAAM,cAAc,CAAC;AAS1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,sGAoG1B,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { type ViewStyle } from 'react-native';
|
|
2
2
|
import type { AnchorLayout } from '../overlay/useAnchorPosition';
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
import { type OverlayAlign, type OverlayPlacement, type OverlaySide, type ResolvedOverlayPlacement } from '../overlay/getAnchoredOverlayPosition';
|
|
4
|
+
export declare const TOOLTIP_PLACEMENTS: readonly ["auto", "auto-start", "auto-end", "top", "top-start", "top-end", "right", "right-start", "right-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end"];
|
|
5
|
+
export type TooltipPlacement = OverlayPlacement;
|
|
5
6
|
export type TooltipTriggerMode = 'hover' | 'focus' | 'click';
|
|
6
|
-
export type TooltipSide =
|
|
7
|
-
export type TooltipAlign =
|
|
8
|
-
export
|
|
9
|
-
readonly side: TooltipSide;
|
|
10
|
-
readonly align: TooltipAlign;
|
|
11
|
-
}
|
|
7
|
+
export type TooltipSide = OverlaySide;
|
|
8
|
+
export type TooltipAlign = OverlayAlign;
|
|
9
|
+
export type ResolvedTooltipPlacement = Readonly<ResolvedOverlayPlacement>;
|
|
12
10
|
export declare const TOOLTIP_Z_INDEX = 9999;
|
|
13
11
|
export declare function getTooltipAnchorStyle(anchor: AnchorLayout, placement: TooltipPlacement, offset: number, viewport: {
|
|
14
12
|
width: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTooltipPosition.d.ts","sourceRoot":"","sources":["../../../src/tooltip/getTooltipPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"getTooltipPosition.d.ts","sourceRoot":"","sources":["../../../src/tooltip/getTooltipPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAE/C,eAAO,MAAM,kBAAkB,2LAAqB,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAChD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC;AACtC,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC;AACxC,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,eAAe,OAAO,CAAC;AAqCpC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,CAkB1D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cdx-ui/primitives",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.160",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"@react-stately/checkbox": "3.7.4",
|
|
68
68
|
"@react-stately/radio": "3.12.0",
|
|
69
69
|
"@react-stately/toggle": "3.9.4",
|
|
70
|
-
"@cdx-ui/formatters": "0.0.1-beta.
|
|
71
|
-
"@cdx-ui/utils": "0.0.1-beta.
|
|
70
|
+
"@cdx-ui/formatters": "0.0.1-beta.160",
|
|
71
|
+
"@cdx-ui/utils": "0.0.1-beta.160"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@types/react": "19.1.17",
|
|
@@ -2,7 +2,7 @@ import { forwardRef, useCallback, useEffect, type ComponentRef } from 'react';
|
|
|
2
2
|
import { BackHandler, Platform, View, type ViewProps } from 'react-native';
|
|
3
3
|
import { FocusScope } from '@react-native-aria/focus';
|
|
4
4
|
import { Slot } from '../slot';
|
|
5
|
-
import { useEscapeKey } from '../overlay';
|
|
5
|
+
import { useEscapeKey, useOverlayStackRegistration } from '../overlay';
|
|
6
6
|
import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
|
|
7
7
|
import { useDialog } from './context';
|
|
8
8
|
import type { IDialogContentProps } from './types';
|
|
@@ -27,21 +27,33 @@ export const DialogContent = forwardRef<ComponentRef<typeof View>, DialogContent
|
|
|
27
27
|
onOpenChange(false);
|
|
28
28
|
}, [onOpenChange]);
|
|
29
29
|
|
|
30
|
-
useEscapeKey(open && closeOnEscKey, handleClose
|
|
30
|
+
useEscapeKey(open && closeOnEscKey, handleClose, {
|
|
31
|
+
id: nativeID,
|
|
32
|
+
groupId: nativeID,
|
|
33
|
+
layer: 'modal',
|
|
34
|
+
});
|
|
35
|
+
const { isTopmost } = useOverlayStackRegistration({
|
|
36
|
+
active: open && Platform.OS !== 'web',
|
|
37
|
+
capabilities: ['back'],
|
|
38
|
+
id: nativeID,
|
|
39
|
+
groupId: nativeID,
|
|
40
|
+
layer: 'modal',
|
|
41
|
+
});
|
|
31
42
|
|
|
32
43
|
useEffect(() => {
|
|
33
44
|
// BackHandler is native-only; react-native-web warns on every subscription.
|
|
34
45
|
if (!open || Platform.OS === 'web') return;
|
|
35
46
|
|
|
36
47
|
const backHandler = BackHandler.addEventListener('hardwareBackPress', () => {
|
|
37
|
-
|
|
48
|
+
if (!isTopmost('back')) return false;
|
|
49
|
+
handleClose();
|
|
38
50
|
return true;
|
|
39
51
|
});
|
|
40
52
|
|
|
41
53
|
return () => {
|
|
42
54
|
backHandler.remove();
|
|
43
55
|
};
|
|
44
|
-
}, [
|
|
56
|
+
}, [handleClose, isTopmost, open]);
|
|
45
57
|
|
|
46
58
|
if (!forceMount && !open) {
|
|
47
59
|
return null;
|
|
@@ -47,7 +47,11 @@ export const DialogPopup = forwardRef<ComponentRef<typeof View>, DialogPopupProp
|
|
|
47
47
|
onOpenChange(false);
|
|
48
48
|
}, [onOpenChange]);
|
|
49
49
|
|
|
50
|
-
useEscapeKey(open && closeOnEscKey, handleClose
|
|
50
|
+
useEscapeKey(open && closeOnEscKey, handleClose, {
|
|
51
|
+
id: nativeID,
|
|
52
|
+
groupId: nativeID,
|
|
53
|
+
layer: 'modal',
|
|
54
|
+
});
|
|
51
55
|
|
|
52
56
|
if (!(open || forceMount)) {
|
|
53
57
|
return null;
|