@astryxdesign/core 0.4.0 → 0.4.1-canary.0ad35c3
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/CHANGELOG.md +39 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +1 -2
- package/dist/AspectRatio/index.d.ts.map +1 -1
- package/dist/AspectRatio/index.js +1 -2
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +1 -2
- package/dist/Badge/index.d.ts.map +1 -1
- package/dist/Badge/index.js +1 -2
- package/dist/Banner/Banner.d.ts +3 -0
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +17 -3
- package/dist/Blockquote/Blockquote.d.ts.map +1 -1
- package/dist/Blockquote/Blockquote.js +1 -2
- package/dist/Blockquote/index.d.ts.map +1 -1
- package/dist/Blockquote/index.js +1 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -9
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +1 -2
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +1 -2
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +1 -2
- package/dist/Center/index.d.ts.map +1 -1
- package/dist/Center/index.js +1 -2
- package/dist/Chat/ChatMessage.d.ts +7 -0
- package/dist/Chat/ChatMessage.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.d.ts +13 -1
- package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +19 -1
- package/dist/Code/Code.d.ts.map +1 -1
- package/dist/Code/Code.js +1 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +5 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +7 -8
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +23 -10
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +44 -16
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +32 -13
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +10 -3
- package/dist/Field/PanelSearchInput.d.ts +81 -0
- package/dist/Field/PanelSearchInput.d.ts.map +1 -0
- package/dist/Field/PanelSearchInput.js +151 -0
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +21 -10
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +1 -2
- package/dist/Grid/index.d.ts.map +1 -1
- package/dist/Grid/index.js +1 -2
- package/dist/HoverCard/HoverCard.d.ts +1 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +5 -13
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +6 -5
- package/dist/Icon/globalIconRegistry.d.ts +5 -4
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +5 -4
- package/dist/Indicator/index.d.ts +1 -1
- package/dist/Indicator/index.d.ts.map +1 -1
- package/dist/Indicator/types.d.ts +10 -0
- package/dist/Indicator/types.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.js +7 -2
- package/dist/Layer/layerHost.d.ts +24 -0
- package/dist/Layer/layerHost.d.ts.map +1 -0
- package/dist/Layer/layerHost.js +79 -0
- package/dist/Layer/useLayer.d.ts +14 -6
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +155 -29
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +24 -50
- package/dist/MultiSelector/MultiSelector.d.ts +8 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +134 -102
- package/dist/NavItem/navItemStyles.stylex.d.ts +17 -5
- package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
- package/dist/NavItem/navItemStyles.stylex.js +11 -5
- package/dist/Popover/usePopover.d.ts +15 -0
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -2
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +2 -3
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +1 -2
- package/dist/Section/index.d.ts.map +1 -1
- package/dist/Section/index.js +1 -2
- package/dist/Selector/Selector.d.ts +10 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +135 -95
- package/dist/SideNav/SideNav.d.ts +7 -9
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +32 -5
- package/dist/SideNav/SideNavCollapseButton.d.ts +25 -9
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +39 -15
- package/dist/SideNav/SideNavCollapseContext.d.ts +21 -0
- package/dist/SideNav/SideNavCollapseContext.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseContext.js +16 -2
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +70 -24
- package/dist/SideNav/SideNavItem.d.ts +7 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +114 -75
- package/dist/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/SideNav/SideNavSection.js +7 -16
- package/dist/SideNav/index.d.ts +1 -1
- package/dist/SideNav/index.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +1 -2
- package/dist/Skeleton/index.d.ts.map +1 -1
- package/dist/Skeleton/index.js +1 -2
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +2 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +3 -3
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +4 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +7 -2
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +14 -3
- package/dist/Timestamp/formatInstant.d.ts +11 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +3 -1
- package/dist/TopNav/TopNavMegaMenu.js +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +2 -2
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -2
- package/dist/VisuallyHidden/index.d.ts.map +1 -1
- package/dist/VisuallyHidden/index.js +1 -2
- package/dist/astryx.css +23 -24
- package/dist/astryx.umd.js +47 -47
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +16 -2
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +17 -4
- package/dist/theme/defineTheme.d.ts +2 -2
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +2 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/tokens.stylex.d.ts +12 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +23 -0
- package/dist/utils/focusOutline.stylex.d.ts +34 -19
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.js +46 -33
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -1
- package/dist/utils/interactionModality.d.ts +34 -0
- package/dist/utils/interactionModality.d.ts.map +1 -0
- package/dist/utils/interactionModality.js +70 -0
- package/locales/en.json +44 -0
- package/locales/pseudo.json +33 -0
- package/package.json +3 -3
- package/src/AppShell/AppShell.doc.mjs +3 -0
- package/src/AspectRatio/AspectRatio.tsx +0 -2
- package/src/AspectRatio/index.ts +0 -2
- package/src/Badge/Badge.tsx +0 -2
- package/src/Badge/index.ts +0 -2
- package/src/Banner/Banner.test.tsx +58 -1
- package/src/Banner/Banner.tsx +24 -5
- package/src/Blockquote/Blockquote.tsx +0 -2
- package/src/Blockquote/index.ts +0 -2
- package/src/Button/Button.doc.mjs +2 -2
- package/src/Button/Button.tsx +10 -7
- package/src/ButtonGroup/ButtonGroup.test.tsx +7 -4
- package/src/Card/Card.tsx +0 -2
- package/src/Card/index.ts +0 -2
- package/src/Center/Center.tsx +0 -2
- package/src/Center/index.ts +0 -2
- package/src/Chat/Chat.doc.mjs +4 -1
- package/src/Chat/ChatMessage.doc.mjs +3 -3
- package/src/Chat/ChatMessage.tsx +7 -0
- package/src/Chat/ChatMessageBubble.doc.mjs +7 -0
- package/src/Chat/ChatMessageBubble.test.tsx +95 -6
- package/src/Chat/ChatMessageBubble.tsx +25 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +8 -3
- package/src/Code/Code.tsx +0 -2
- package/src/CommandPalette/CommandPalette.test.tsx +54 -0
- package/src/CommandPalette/CommandPalette.tsx +5 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +15 -6
- package/src/ComplexSelector/ComplexSelector.tsx +6 -10
- package/src/DateInput/DateInput.test.tsx +19 -0
- package/src/DateInput/DateInput.tsx +3 -6
- package/src/DateRangeInput/DateRangeInput.tsx +3 -9
- package/src/DateTimeInput/DateTimeInput.test.tsx +79 -1
- package/src/DateTimeInput/DateTimeInput.tsx +23 -9
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +2 -1
- package/src/Field/PanelSearchInput.tsx +271 -0
- package/src/FileInput/FileInput.tsx +21 -8
- package/src/Grid/Grid.tsx +0 -2
- package/src/Grid/index.ts +0 -2
- package/src/HoverCard/HoverCard.doc.mjs +3 -3
- package/src/HoverCard/HoverCard.test.tsx +283 -55
- package/src/HoverCard/HoverCard.tsx +5 -13
- package/src/HoverCard/useHoverCard.tsx +8 -11
- package/src/Icon/globalIconRegistry.tsx +5 -4
- package/src/Indicator/Indicator.doc.mjs +1 -1
- package/src/Indicator/index.ts +1 -0
- package/src/Indicator/types.ts +11 -0
- package/src/InputGroup/groupStyles.ts +7 -8
- package/src/Layer/layerHost.test.ts +99 -0
- package/src/Layer/layerHost.ts +141 -0
- package/src/Layer/useLayer.doc.mjs +14 -4
- package/src/Layer/useLayer.test.tsx +318 -7
- package/src/Layer/useLayer.tsx +229 -35
- package/src/Lightbox/Lightbox.tsx +2 -11
- package/src/MultiSelector/MultiSelector.doc.mjs +9 -0
- package/src/MultiSelector/MultiSelector.test.tsx +135 -5
- package/src/MultiSelector/MultiSelector.tsx +170 -127
- package/src/NavItem/navItemStyles.stylex.ts +31 -5
- package/src/Popover/Popover.doc.mjs +2 -0
- package/src/Popover/usePopover.tsx +37 -4
- package/src/ProgressBar/ProgressBar.tsx +2 -8
- package/src/Section/Section.tsx +0 -2
- package/src/Section/index.ts +0 -2
- package/src/Selector/Selector.doc.mjs +10 -0
- package/src/Selector/Selector.test.tsx +386 -2
- package/src/Selector/Selector.tsx +182 -122
- package/src/SideNav/SideNav.doc.mjs +13 -4
- package/src/SideNav/SideNav.test.tsx +771 -2
- package/src/SideNav/SideNav.tsx +37 -16
- package/src/SideNav/SideNavCollapseButton.doc.mjs +28 -6
- package/src/SideNav/SideNavCollapseButton.tsx +67 -15
- package/src/SideNav/SideNavCollapseContext.ts +29 -9
- package/src/SideNav/SideNavHeading.tsx +28 -10
- package/src/SideNav/SideNavItem.doc.mjs +13 -0
- package/src/SideNav/SideNavItem.tsx +92 -84
- package/src/SideNav/SideNavSection.tsx +6 -20
- package/src/SideNav/index.ts +2 -0
- package/src/Skeleton/Skeleton.tsx +0 -2
- package/src/Skeleton/index.ts +0 -2
- package/src/Slider/Slider.tsx +2 -11
- package/src/Switch/Switch.tsx +10 -2
- package/src/Table/Table.test.tsx +31 -0
- package/src/Table/TableRow.tsx +6 -0
- package/src/Text/Text.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.test.tsx +54 -0
- package/src/TimeInput/TimeInput.tsx +17 -2
- package/src/Timestamp/Timestamp.test.tsx +125 -30
- package/src/Timestamp/Timestamp.tsx +14 -2
- package/src/Timestamp/formatInstant.ts +16 -1
- package/src/Toolbar/Toolbar.test.tsx +14 -14
- package/src/TopNav/TopNavMegaMenu.doc.mjs +5 -0
- package/src/TopNav/TopNavMegaMenu.test.tsx +43 -0
- package/src/TopNav/TopNavMegaMenu.tsx +4 -1
- package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
- package/src/TopNav/TopNavMenu.test.tsx +41 -0
- package/src/TopNav/TopNavMenu.tsx +8 -2
- package/src/TreeList/TreeList.test.tsx +3 -2
- package/src/VisuallyHidden/VisuallyHidden.tsx +0 -2
- package/src/VisuallyHidden/index.ts +0 -2
- package/src/hooks/index.ts +5 -1
- package/src/hooks/useFocusTrap.test.tsx +16 -0
- package/src/hooks/useFocusTrap.ts +20 -2
- package/src/hooks/useInputStatusIcon.tsx +8 -8
- package/src/serverSafeComponents.test.ts +665 -0
- package/src/theme/defineTheme.ts +3 -0
- package/src/theme/generateThemeRules.test.ts +17 -0
- package/src/theme/index.ts +2 -0
- package/src/theme/themingTargets.test.ts +152 -26
- package/src/theme/tokens.stylex.ts +18 -0
- package/src/theme/tokens.test.ts +37 -0
- package/src/utils/focusOutline.stylex.ts +37 -23
- package/src/utils/index.ts +4 -0
- package/src/utils/interactionModality.ts +74 -0
package/dist/Layer/useLayer.js
CHANGED
|
@@ -15,10 +15,12 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import React, { useCallback, useEffect, useId, useRef, useState } from 'react';
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
|
+
import { createPortal } from 'react-dom';
|
|
18
19
|
import { addAnchorName, removeAnchorName } from "./anchorName.js";
|
|
20
|
+
import { resolveLayerPortalTarget } from "./layerHost.js";
|
|
19
21
|
import "../theme/tokens.stylex.js";
|
|
20
22
|
import { typographyVars } from "../theme/tokens.stylex.js";
|
|
21
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
24
|
const _temp = {
|
|
23
25
|
keoZOQ: "x1vhfslr",
|
|
24
26
|
k1K539: "xlm3tn6",
|
|
@@ -100,17 +102,40 @@ const styles = {
|
|
|
100
102
|
function toCssLength(value) {
|
|
101
103
|
return typeof value === 'number' ? `${value}px` : value;
|
|
102
104
|
}
|
|
105
|
+
function readPortalWritingContext(element, portalTarget) {
|
|
106
|
+
const view = element.ownerDocument.defaultView;
|
|
107
|
+
if (!view) {
|
|
108
|
+
return {};
|
|
109
|
+
}
|
|
110
|
+
const sourceStyle = view.getComputedStyle(element);
|
|
111
|
+
const targetStyle = view.getComputedStyle(portalTarget);
|
|
112
|
+
|
|
113
|
+
// Do not snapshot custom properties here. The portal target is the closest
|
|
114
|
+
// safe ancestor, so theme variables continue to inherit and update there.
|
|
115
|
+
// These two properties can be set on the unsafe chain itself and directly
|
|
116
|
+
// affect the logical anchor-positioning keywords used by the layer. Only
|
|
117
|
+
// override values the portal would actually lose; matching values should
|
|
118
|
+
// keep inheriting from the target so later direction changes remain live.
|
|
119
|
+
return {
|
|
120
|
+
...(sourceStyle.direction !== targetStyle.direction && {
|
|
121
|
+
direction: sourceStyle.direction
|
|
122
|
+
}),
|
|
123
|
+
...(sourceStyle.writingMode !== targetStyle.writingMode && {
|
|
124
|
+
writingMode: sourceStyle.writingMode
|
|
125
|
+
})
|
|
126
|
+
};
|
|
127
|
+
}
|
|
103
128
|
|
|
104
129
|
/**
|
|
105
130
|
* Map logical placement/alignment to a CSS position-area value.
|
|
106
131
|
*
|
|
107
132
|
* Uses the self-* logical keyword family: the inline axis resolves against
|
|
108
|
-
* the popover's own
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
133
|
+
* the popover's own direction (inherited inline or preserved when portaled),
|
|
134
|
+
* so it mirrors in RTL without placement-specific JS. The block axis is
|
|
135
|
+
* direction-neutral but must come from the same keyword family — mixing
|
|
136
|
+
* physical `top` with `self-inline-*` produces an invalid position-area
|
|
137
|
+
* (computes to `none`, which pins the popover to the viewport corner because
|
|
138
|
+
* styles.base zeroes the UA margins).
|
|
114
139
|
*
|
|
115
140
|
* Note the plain logical family (`inline-start`, no `self-`) is NOT a
|
|
116
141
|
* substitute: it resolves against the containing block — the page root for
|
|
@@ -182,36 +207,101 @@ export function useLayer(options) {
|
|
|
182
207
|
onHide,
|
|
183
208
|
lightDismiss = false
|
|
184
209
|
} = options;
|
|
210
|
+
const lazyMount = mode === 'context' ? options.lazyMount ?? false : false;
|
|
185
211
|
const id = useId();
|
|
186
212
|
const anchorId = `--astryx-layer-${id.replace(/:/g, '')}`;
|
|
187
213
|
const [isOpen, setIsOpen] = useState(false);
|
|
188
214
|
const popoverRef = useRef(null);
|
|
215
|
+
// The DOM element on which the current logical open state was applied.
|
|
216
|
+
// A portal target change replaces the popover element; retaining the old
|
|
217
|
+
// reference lets the ref callback recognize and reopen its replacement.
|
|
218
|
+
const openedPopoverRef = useRef(null);
|
|
189
219
|
const triggerRef = useRef(null);
|
|
220
|
+
// Context layers place a persistent inert marker at their real JSX position.
|
|
221
|
+
// Its parent tells us whether the final layer can stay inline or needs a
|
|
222
|
+
// corrective portal, including after the render call moves.
|
|
223
|
+
const sentinelRef = useRef(null);
|
|
224
|
+
const contextMountRef = useRef(null);
|
|
225
|
+
const [contextMount, setContextMount] = useState(null);
|
|
226
|
+
// A show() that arrives before the final layer mounts is replayed when its
|
|
227
|
+
// popover ref attaches.
|
|
228
|
+
const pendingShowRef = useRef(false);
|
|
190
229
|
|
|
191
230
|
// Ref mirrors isOpen for synchronous reads inside show/hide.
|
|
192
231
|
// State drives re-renders; the ref lets the imperative calls avoid
|
|
193
232
|
// stale-closure reads of the previous isOpen value.
|
|
194
233
|
const isOpenRef = useRef(false);
|
|
234
|
+
const showPopoverElement = useCallback(popover => {
|
|
235
|
+
// Finding infra-4: the Popover API is unsupported on Safari <17 and
|
|
236
|
+
// Firefox <125. On those browsers `showPopover` does not exist, so fall
|
|
237
|
+
// back to plain visibility instead of throwing.
|
|
238
|
+
if (typeof popover.showPopover === 'function') {
|
|
239
|
+
// The trigger is passed as the popover's invoker `source`: a layer
|
|
240
|
+
// hosted away from its trigger then still takes its sequential focus
|
|
241
|
+
// order (and its popover nesting) from the trigger rather than from its
|
|
242
|
+
// own DOM position. Browsers without the option ignore it.
|
|
243
|
+
popover.showPopover({
|
|
244
|
+
source: triggerRef.current ?? undefined
|
|
245
|
+
});
|
|
246
|
+
} else {
|
|
247
|
+
popover.style.display = 'block';
|
|
248
|
+
}
|
|
249
|
+
openedPopoverRef.current = popover;
|
|
250
|
+
}, []);
|
|
251
|
+
const isCurrentContextPopover = useCallback(popover => {
|
|
252
|
+
if (mode !== 'context') {
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
const mount = contextMountRef.current;
|
|
256
|
+
if (mount === null) {
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
const expectedParent = mount.portalTarget ?? sentinelRef.current?.parentElement ?? null;
|
|
260
|
+
return popover.parentElement === expectedParent;
|
|
261
|
+
}, [mode]);
|
|
262
|
+
const requestContextMount = useCallback(() => {
|
|
263
|
+
if (mode !== 'context') {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const sentinel = sentinelRef.current;
|
|
267
|
+
const inlineParent = sentinel?.parentElement ?? null;
|
|
268
|
+
if (!sentinel || !inlineParent) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const portalTarget = resolveLayerPortalTarget(inlineParent);
|
|
272
|
+
const mount = {
|
|
273
|
+
portalTarget,
|
|
274
|
+
portalStyle: portalTarget ? readPortalWritingContext(sentinel, portalTarget) : {}
|
|
275
|
+
};
|
|
276
|
+
contextMountRef.current = mount;
|
|
277
|
+
setContextMount(mount);
|
|
278
|
+
}, [mode]);
|
|
279
|
+
const clearContextMount = useCallback(() => {
|
|
280
|
+
if (mode !== 'context' || !lazyMount) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
contextMountRef.current = null;
|
|
284
|
+
setContextMount(null);
|
|
285
|
+
}, [mode, lazyMount]);
|
|
195
286
|
const show = useCallback(() => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
popover.style.display = 'block';
|
|
208
|
-
}
|
|
287
|
+
// A context popover left over until React commits a previous hide must not
|
|
288
|
+
// be reopened. The synchronous mount ref is the source of truth.
|
|
289
|
+
const candidate = popoverRef.current;
|
|
290
|
+
const popover = candidate && isCurrentContextPopover(candidate) ? candidate : null;
|
|
291
|
+
if (!popover) {
|
|
292
|
+
pendingShowRef.current = true;
|
|
293
|
+
requestContextMount();
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (!isOpenRef.current) {
|
|
297
|
+
showPopoverElement(popover);
|
|
209
298
|
isOpenRef.current = true;
|
|
210
299
|
setIsOpen(true);
|
|
211
300
|
onShow?.();
|
|
212
301
|
}
|
|
213
|
-
}, [onShow]);
|
|
302
|
+
}, [onShow, requestContextMount, showPopoverElement, isCurrentContextPopover]);
|
|
214
303
|
const hide = useCallback(() => {
|
|
304
|
+
pendingShowRef.current = false;
|
|
215
305
|
if (isOpenRef.current) {
|
|
216
306
|
const el = popoverRef.current;
|
|
217
307
|
// See finding infra-4 note in `show`: mirror the same guard on hide so
|
|
@@ -223,11 +313,13 @@ export function useLayer(options) {
|
|
|
223
313
|
el.style.display = 'none';
|
|
224
314
|
}
|
|
225
315
|
}
|
|
316
|
+
openedPopoverRef.current = null;
|
|
226
317
|
isOpenRef.current = false;
|
|
227
318
|
setIsOpen(false);
|
|
228
319
|
onHide?.();
|
|
229
320
|
}
|
|
230
|
-
|
|
321
|
+
clearContextMount();
|
|
322
|
+
}, [onHide, clearContextMount]);
|
|
231
323
|
|
|
232
324
|
// Ref for trigger element (context mode only)
|
|
233
325
|
const ref = mode === 'context' ? el => {
|
|
@@ -255,11 +347,13 @@ export function useLayer(options) {
|
|
|
255
347
|
const handleToggle = useCallback(e => {
|
|
256
348
|
const toggleEvent = e;
|
|
257
349
|
if (toggleEvent.newState === 'closed' && isOpenRef.current) {
|
|
350
|
+
openedPopoverRef.current = null;
|
|
258
351
|
isOpenRef.current = false;
|
|
259
352
|
setIsOpen(false);
|
|
260
353
|
onHide?.();
|
|
354
|
+
clearContextMount();
|
|
261
355
|
}
|
|
262
|
-
}, [onHide]);
|
|
356
|
+
}, [onHide, clearContextMount]);
|
|
263
357
|
|
|
264
358
|
// Ref callback for popover element — sets up the `toggle` listener.
|
|
265
359
|
// Tracks the element + handler currently bound so the listener is removed
|
|
@@ -283,7 +377,24 @@ export function useLayer(options) {
|
|
|
283
377
|
const popoverRefCallback = useCallback(el => {
|
|
284
378
|
popoverRef.current = el;
|
|
285
379
|
bindToggleListener(el, handleToggle);
|
|
286
|
-
|
|
380
|
+
if (el && pendingShowRef.current) {
|
|
381
|
+
pendingShowRef.current = false;
|
|
382
|
+
show();
|
|
383
|
+
} else if (el && isOpenRef.current && openedPopoverRef.current !== el && isCurrentContextPopover(el)) {
|
|
384
|
+
// Changing a portal target remounts the popover. Preserve the logical
|
|
385
|
+
// open state without firing onShow again for the replacement element.
|
|
386
|
+
showPopoverElement(el);
|
|
387
|
+
}
|
|
388
|
+
}, [handleToggle, bindToggleListener, show, showPopoverElement, isCurrentContextPopover]);
|
|
389
|
+
const sentinelRefCallback = useCallback(el => {
|
|
390
|
+
sentinelRef.current = el;
|
|
391
|
+
if (el && (!lazyMount || pendingShowRef.current || isOpenRef.current)) {
|
|
392
|
+
// The render call may have moved while the hook stayed mounted.
|
|
393
|
+
// Resolve again from the newly attached marker rather than reusing a
|
|
394
|
+
// portal target from its previous JSX position.
|
|
395
|
+
requestContextMount();
|
|
396
|
+
}
|
|
397
|
+
}, [lazyMount, requestContextMount]);
|
|
287
398
|
|
|
288
399
|
// Re-bind when the handler identity changes while the element stays mounted,
|
|
289
400
|
// and detach on unmount.
|
|
@@ -302,6 +413,17 @@ export function useLayer(options) {
|
|
|
302
413
|
|
|
303
414
|
// Render function for context mode
|
|
304
415
|
const renderContext = useCallback((children, props) => {
|
|
416
|
+
// Keep the marker mounted after resolving the layer. Apart from giving
|
|
417
|
+
// us the real JSX parent on first show, this lets its ref report when a
|
|
418
|
+
// persistent hook's render call moves to a different host.
|
|
419
|
+
const sentinel = /*#__PURE__*/_jsx("template", {
|
|
420
|
+
ref: sentinelRefCallback
|
|
421
|
+
});
|
|
422
|
+
if (contextMount === null) {
|
|
423
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
424
|
+
children: sentinel
|
|
425
|
+
});
|
|
426
|
+
}
|
|
305
427
|
const {
|
|
306
428
|
placement = 'above',
|
|
307
429
|
alignment = 'center',
|
|
@@ -332,10 +454,10 @@ export function useLayer(options) {
|
|
|
332
454
|
const stylexResult = stylex.props(styles.base, offsetStyle, xstyle);
|
|
333
455
|
const combinedClassName = extraClassName ? `${extraClassName} ${stylexResult.className ?? ''}` : stylexResult.className;
|
|
334
456
|
|
|
335
|
-
//
|
|
336
|
-
//
|
|
337
|
-
//
|
|
338
|
-
|
|
457
|
+
// The marker gives us the actual JSX parent without mounting arbitrary
|
|
458
|
+
// children there. Safe positions preserve the existing DOM order and
|
|
459
|
+
// cascade; unsafe positions use the nearest corrective portal target.
|
|
460
|
+
const layer = /*#__PURE__*/_jsx(Container, {
|
|
339
461
|
ref: popoverRefCallback,
|
|
340
462
|
id: id,
|
|
341
463
|
role: role,
|
|
@@ -345,13 +467,17 @@ export function useLayer(options) {
|
|
|
345
467
|
style: {
|
|
346
468
|
...stylexResult.style,
|
|
347
469
|
...anchorStyle,
|
|
470
|
+
...contextMount.portalStyle,
|
|
348
471
|
...extraStyle
|
|
349
472
|
},
|
|
350
473
|
onMouseEnter: onMouseEnter,
|
|
351
474
|
onMouseLeave: onMouseLeave,
|
|
352
475
|
children: children
|
|
353
476
|
});
|
|
354
|
-
|
|
477
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
478
|
+
children: [sentinel, contextMount.portalTarget ? /*#__PURE__*/createPortal(layer, contextMount.portalTarget) : layer]
|
|
479
|
+
});
|
|
480
|
+
}, [anchorId, contextMount, id, lightDismiss, popoverRefCallback, sentinelRefCallback]);
|
|
355
481
|
|
|
356
482
|
// Render function for fixed mode
|
|
357
483
|
const renderFixed = useCallback((children, props) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAwJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAgB,EAChB,aAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,aAAa,sCAyYf;yBAzZe,QAAQ"}
|
|
@@ -26,6 +26,7 @@ import { useScrollLock } from "../hooks/useScrollLock.js";
|
|
|
26
26
|
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
27
27
|
import { mergeProps, mergeRefs, rtlStyles } from "../utils/index.js";
|
|
28
28
|
import { themeProps } from "../utils/themeProps.js";
|
|
29
|
+
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
29
30
|
import { useTranslator } from "../i18n/index.js";
|
|
30
31
|
|
|
31
32
|
/**
|
|
@@ -57,6 +58,28 @@ const styles = {
|
|
|
57
58
|
kba3nw: "x1abwkk1",
|
|
58
59
|
$$css: true
|
|
59
60
|
},
|
|
61
|
+
imageWrapper: {
|
|
62
|
+
k1xSpc: "x78zum5",
|
|
63
|
+
kGNEyG: "x6s0dn4",
|
|
64
|
+
kjj79g: "xl56j7k",
|
|
65
|
+
kVQacm: "xb3r6kr",
|
|
66
|
+
kkrTdU: "xt0e3qv",
|
|
67
|
+
kfSwDN: "x87ps6o",
|
|
68
|
+
kAzted: "x2lwn1j",
|
|
69
|
+
$$css: true
|
|
70
|
+
},
|
|
71
|
+
imageWrapperZoomable: {
|
|
72
|
+
kkrTdU: "x1huxd7x x2dt3px",
|
|
73
|
+
$$css: true
|
|
74
|
+
},
|
|
75
|
+
imageWrapperZoomed: {
|
|
76
|
+
kkrTdU: "x1jm3nie",
|
|
77
|
+
$$css: true
|
|
78
|
+
},
|
|
79
|
+
imageWrapperDragging: {
|
|
80
|
+
kkrTdU: "xi9pz9s",
|
|
81
|
+
$$css: true
|
|
82
|
+
},
|
|
60
83
|
image: {
|
|
61
84
|
ks0D6T: "x193iq5w",
|
|
62
85
|
kskxy: "xmz0i5r",
|
|
@@ -461,56 +484,7 @@ export function Lightbox({
|
|
|
461
484
|
tabIndex: isZoomTarget ? 0 : undefined,
|
|
462
485
|
"aria-pressed": isZoomTarget ? isZoomed : undefined,
|
|
463
486
|
"aria-label": isZoomTarget ? t('@astryx.lightbox.zoom') : undefined,
|
|
464
|
-
...
|
|
465
|
-
0: {
|
|
466
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr xt0e3qv x87ps6o x2lwn1j"
|
|
467
|
-
},
|
|
468
|
-
8: {
|
|
469
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr xt0e3qv x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk"
|
|
470
|
-
},
|
|
471
|
-
4: {
|
|
472
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1huxd7x x2dt3px"
|
|
473
|
-
},
|
|
474
|
-
12: {
|
|
475
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1huxd7x x2dt3px"
|
|
476
|
-
},
|
|
477
|
-
2: {
|
|
478
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1jm3nie"
|
|
479
|
-
},
|
|
480
|
-
10: {
|
|
481
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1jm3nie"
|
|
482
|
-
},
|
|
483
|
-
6: {
|
|
484
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1jm3nie"
|
|
485
|
-
},
|
|
486
|
-
14: {
|
|
487
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk x1jm3nie"
|
|
488
|
-
},
|
|
489
|
-
1: {
|
|
490
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
|
|
491
|
-
},
|
|
492
|
-
9: {
|
|
493
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
|
|
494
|
-
},
|
|
495
|
-
5: {
|
|
496
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
|
|
497
|
-
},
|
|
498
|
-
13: {
|
|
499
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
|
|
500
|
-
},
|
|
501
|
-
3: {
|
|
502
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
|
|
503
|
-
},
|
|
504
|
-
11: {
|
|
505
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
|
|
506
|
-
},
|
|
507
|
-
7: {
|
|
508
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j xi9pz9s"
|
|
509
|
-
},
|
|
510
|
-
15: {
|
|
511
|
-
className: "x78zum5 x6s0dn4 xl56j7k xb3r6kr x87ps6o x2lwn1j x1a2a7pz x17nn4n9 x1wfwxd8 x7s97pk xi9pz9s"
|
|
512
|
-
}
|
|
513
|
-
}[!!isZoomTarget << 3 | !!(!isVideo && hasZoom && !isZoomed) << 2 | !!(!isVideo && isZoomed) << 1 | !!(!isVideo && isDragging) << 0],
|
|
487
|
+
...stylex.props(styles.imageWrapper, isZoomTarget && focusOutlineStyles.focusVisible, !isVideo && hasZoom && !isZoomed && styles.imageWrapperZoomable, !isVideo && isZoomed && styles.imageWrapperZoomed, !isVideo && isDragging && styles.imageWrapperDragging),
|
|
514
488
|
onDoubleClick: isVideo ? undefined : handleDoubleClick,
|
|
515
489
|
onKeyDown: isZoomTarget ? handleImageKeyDown : undefined,
|
|
516
490
|
onPointerDown: isVideo ? undefined : handlePointerDown,
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import React, { type ReactNode } from 'react';
|
|
15
15
|
import { type IconType } from '../Icon';
|
|
16
16
|
import { type FieldStatusVariant } from '../Field';
|
|
17
|
+
import type { IndicatorPosition } from '../Indicator';
|
|
17
18
|
import type { MultiSelectorOptionType, MultiSelectorOptionData, MultiSelectorStatus } from './types';
|
|
18
19
|
import type { BaseProps } from '../BaseProps';
|
|
19
20
|
import type { SizeValue } from '../utils/types';
|
|
@@ -189,6 +190,12 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
|
|
|
189
190
|
* Only called for selectable options (not dividers/sections or the select-all row).
|
|
190
191
|
*/
|
|
191
192
|
renderOption?: (option: MultiSelectorOptionData) => ReactNode;
|
|
193
|
+
/**
|
|
194
|
+
* Which edge of the option row carries the checkbox.
|
|
195
|
+
*
|
|
196
|
+
* @default 'start'
|
|
197
|
+
*/
|
|
198
|
+
indicatorPosition?: IndicatorPosition;
|
|
192
199
|
/**
|
|
193
200
|
* Whether the dropdown starts open on mount.
|
|
194
201
|
* Useful for showcases and previews.
|
|
@@ -215,7 +222,7 @@ export interface MultiSelectorProps<T extends MultiSelectorOptionType = MultiSel
|
|
|
215
222
|
* />
|
|
216
223
|
* ```
|
|
217
224
|
*/
|
|
218
|
-
export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
|
|
225
|
+
export declare function MultiSelector<T extends MultiSelectorOptionType>({ label, isLabelHidden, description, isOptional, isRequired, isDisabled, disabledMessage, options, value, onChange, changeAction, isLoading, placeholder: placeholderFromProps, size: sizeProp, variant, status, statusVariant, labelTooltip, startIcon, hasClear, hasSelectAll, selectAllLabel: selectAllLabelFromProps, hasSearch, searchPlaceholder: searchPlaceholderFromProps, triggerDisplay, maxBadges, renderOption, indicatorPosition, isDefaultOpen, 'data-testid': testId, htmlName, width, xstyle, className, style, }: MultiSelectorProps<T>): React.JSX.Element;
|
|
219
226
|
export declare namespace MultiSelector {
|
|
220
227
|
var displayName: string;
|
|
221
228
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EASZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAE5D,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiSelector.d.ts","sourceRoot":"","sources":["../../src/MultiSelector/MultiSelector.tsx"],"names":[],"mappings":"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"}
|