@astryxdesign/core 0.7.9-canary.d5dd0ec → 0.7.9-canary.d6efbde
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/AlertDialog/AlertDialog.d.ts +3 -2
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +11 -14
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -2
- package/dist/ButtonGroup/ButtonGroup.d.ts +2 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +28 -5
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +10 -2
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +8 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +21 -12
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +33 -9
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +17 -7
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +19 -9
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +5 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +28 -10
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +6 -1
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +27 -5
- package/dist/Spinner/SpinnerOwnerContext.d.ts +2 -0
- package/dist/Spinner/SpinnerOwnerContext.d.ts.map +1 -0
- package/dist/Spinner/SpinnerOwnerContext.js +20 -0
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +1 -0
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +17 -10
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +19 -9
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +8 -4
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +11 -4
- package/dist/astryx.css +12 -0
- package/dist/hooks/actionGroupTracker.d.ts +9 -0
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +38 -24
- package/dist/hooks/pressGroupContext.d.ts +5 -3
- package/dist/hooks/pressGroupContext.d.ts.map +1 -1
- package/dist/hooks/pressGroupContext.js +17 -9
- package/dist/hooks/useActionGroupTracking.d.ts +29 -4
- package/dist/hooks/useActionGroupTracking.d.ts.map +1 -1
- package/dist/hooks/useActionGroupTracking.js +92 -14
- package/dist/hooks/useAnnounceRenderedText.d.ts +10 -2
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +45 -8
- package/dist/hooks/useGroupPressTracking.d.ts +34 -0
- package/dist/hooks/useGroupPressTracking.d.ts.map +1 -0
- package/dist/hooks/useGroupPressTracking.js +122 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +2 -1
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +2 -1
- package/dist/internal/touch.d.ts +12 -4
- package/dist/internal/touch.d.ts.map +1 -1
- package/dist/internal/touch.js +14 -5
- package/dist/privateAttributes/focusOwner.stylex.d.ts +22 -0
- package/dist/privateAttributes/focusOwner.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/focusOwner.stylex.js +39 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +8 -5
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -1
- package/dist/privateAttributes/pressGroupItem.stylex.js +11 -5
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +4 -1
- package/dist/utils/hitArea.d.ts +28 -2
- package/dist/utils/hitArea.d.ts.map +1 -1
- package/dist/utils/hitArea.js +49 -11
- package/dist/utils/touchHitArea.d.ts +25 -6
- package/dist/utils/touchHitArea.d.ts.map +1 -1
- package/dist/utils/touchHitArea.js +22 -12
- package/dist/utils/touchHitArea.stylex.d.ts +29 -5
- package/dist/utils/touchHitArea.stylex.d.ts.map +1 -1
- package/dist/utils/touchHitArea.stylex.js +37 -6
- package/locales/en.json +4 -0
- package/locales/pseudo.json +3 -0
- package/package.json +4 -4
- package/src/AlertDialog/AlertDialog.tsx +9 -13
- package/src/Button/Button.tsx +17 -2
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -2
- package/src/ButtonGroup/ButtonGroup.tsx +28 -4
- package/src/Chat/ChatMessageList.tsx +18 -2
- package/src/CheckboxList/CheckboxListItem.tsx +7 -4
- package/src/ComplexSelector/ComplexSelector.doc.mjs +2 -2
- package/src/ComplexSelector/ComplexSelector.tsx +39 -31
- package/src/DateTimeInput/DateTimeInput.tsx +35 -13
- package/src/DropdownMenu/DropdownMenu.tsx +16 -9
- package/src/HoverCard/HoverCard.tsx +4 -1
- package/src/Link/Link.tsx +5 -1
- package/src/Pagination/Pagination.tsx +23 -9
- package/src/Selector/Selector.tsx +10 -1
- package/src/Spinner/Spinner.doc.mjs +150 -36
- package/src/Spinner/Spinner.tsx +34 -6
- package/src/Spinner/SpinnerOwnerContext.ts +22 -0
- package/src/TabList/TabList.tsx +1 -0
- package/src/Table/plugins/sortable/useTableSortableState.doc.mjs +173 -0
- package/src/Tokenizer/Tokenizer.tsx +14 -10
- package/src/Tooltip/Tooltip.tsx +4 -1
- package/src/Typeahead/BaseTypeahead.tsx +9 -5
- package/src/Typeahead/Typeahead.tsx +7 -1
- package/src/hooks/actionGroupTracker.ts +33 -24
- package/src/hooks/pressGroupContext.ts +18 -9
- package/src/hooks/useActionGroupTracking.ts +139 -19
- package/src/hooks/useAnnounceRenderedText.ts +59 -8
- package/src/hooks/useGroupPressTracking.ts +154 -0
- package/src/i18n/generated-locales/en.generated.ts +1 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +1 -0
- package/src/internal/touch.ts +19 -4
- package/src/privateAttributes/focusOwner.stylex.ts +51 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +11 -5
- package/src/theme/generateThemeRules.ts +3 -0
- package/src/utils/hitArea.ts +88 -8
- package/src/utils/touchHitArea.stylex.ts +29 -19
- package/src/utils/touchHitArea.ts +60 -12
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file AlertDialog.tsx
|
|
3
3
|
* @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button, the
|
|
4
|
-
* action-group tracking (hooks/useActionGroupTracking)
|
|
5
|
-
*
|
|
4
|
+
* action-group tracking (hooks/useActionGroupTracking), the press-group
|
|
5
|
+
* context (hooks/pressGroupContext) and the group pointers
|
|
6
|
+
* (hooks/useGroupPressTracking)
|
|
6
7
|
* @output Exports AlertDialog component, AlertDialogProps type
|
|
7
8
|
* @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
|
|
8
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAmC,MAAM,OAAO,CAAC;AAUxD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmC5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAoHlB;yBAtIe,WAAW"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file AlertDialog.tsx
|
|
7
7
|
* @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button, the
|
|
8
|
-
* action-group tracking (hooks/useActionGroupTracking)
|
|
9
|
-
*
|
|
8
|
+
* action-group tracking (hooks/useActionGroupTracking), the press-group
|
|
9
|
+
* context (hooks/pressGroupContext) and the group pointers
|
|
10
|
+
* (hooks/useGroupPressTracking)
|
|
10
11
|
* @output Exports AlertDialog component, AlertDialogProps type
|
|
11
12
|
* @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
|
|
12
13
|
*
|
|
@@ -36,12 +37,10 @@ import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComp
|
|
|
36
37
|
import english from "../i18n/generated-english/AlertDialog/AlertDialog.generated.js";
|
|
37
38
|
import { useActionGroupTracking } from "../hooks/useActionGroupTracking.js";
|
|
38
39
|
import { PressGroupContext } from "../hooks/pressGroupContext.js";
|
|
40
|
+
import { GROUP_PRESS_POINTERS } from "../hooks/useGroupPressTracking.js";
|
|
39
41
|
import { alertController } from "../motion/uikit/alert.js";
|
|
40
|
-
import { pressGroupItemProps } from "../privateAttributes/pressGroupItem.stylex.js";
|
|
41
42
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
42
43
|
registerEnglishFallback(english);
|
|
43
|
-
const SLIDING_POINTERS = ['touch', 'pen'];
|
|
44
|
-
const ACTION_TRACKING_PROPS = pressGroupItemProps(SLIDING_POINTERS);
|
|
45
44
|
const SMALL_SCREEN_QUERY = '(max-width: 640px)';
|
|
46
45
|
const styles = {
|
|
47
46
|
trackingRow: {
|
|
@@ -115,8 +114,8 @@ export function AlertDialog({
|
|
|
115
114
|
onOpenChange(false);
|
|
116
115
|
}, [onOpenChange]);
|
|
117
116
|
|
|
118
|
-
//
|
|
119
|
-
// tracker is its only painter.
|
|
117
|
+
// Through the group's context, each action's Button writes the press-group
|
|
118
|
+
// marker from its first render. So the tracker is its only painter.
|
|
120
119
|
const actionsRef = useRef(null);
|
|
121
120
|
// Only under the touch presentation does a press slide across the
|
|
122
121
|
// actions. A desktop press stays the native button's.
|
|
@@ -130,21 +129,20 @@ export function AlertDialog({
|
|
|
130
129
|
highlightOnsetMs: alertController.actions.highlightOnsetMs,
|
|
131
130
|
highlightExpansion: alertController.actions.highlightExpansion,
|
|
132
131
|
// A mouse press acts as a native button's under any presentation.
|
|
133
|
-
pointerTypes:
|
|
132
|
+
pointerTypes: GROUP_PRESS_POINTERS,
|
|
134
133
|
isEnabled: isTracking
|
|
135
134
|
});
|
|
136
|
-
const actionTrackingProps = isTracking ? ACTION_TRACKING_PROPS : undefined;
|
|
137
135
|
const buttonActionStyle = [styles.action, isSmallScreen && styles.stackedAction];
|
|
138
136
|
const cancelButton = /*#__PURE__*/_jsx(Button, {
|
|
139
137
|
variant: "ghost",
|
|
140
138
|
label: cancelLabel,
|
|
141
139
|
onClick: handleCancel,
|
|
142
|
-
xstyle: buttonActionStyle
|
|
143
|
-
...actionTrackingProps,
|
|
140
|
+
xstyle: buttonActionStyle
|
|
144
141
|
// Dialog focuses [data-autofocus] itself after showModal(), because
|
|
145
142
|
// React's autoFocus runs during commit while the dialog is invisible.
|
|
146
143
|
// Cancel is least destructive, so it remains the autofocus target even
|
|
147
144
|
// when small-screen visual order places the destructive action above it.
|
|
145
|
+
,
|
|
148
146
|
"data-autofocus": true
|
|
149
147
|
}, "cancel");
|
|
150
148
|
const actionButton = /*#__PURE__*/_jsx(Button, {
|
|
@@ -152,8 +150,7 @@ export function AlertDialog({
|
|
|
152
150
|
label: actionLabel,
|
|
153
151
|
onClick: onAction,
|
|
154
152
|
isLoading: isActionLoading,
|
|
155
|
-
xstyle: buttonActionStyle
|
|
156
|
-
...actionTrackingProps
|
|
153
|
+
xstyle: buttonActionStyle
|
|
157
154
|
}, "action");
|
|
158
155
|
return /*#__PURE__*/_jsx(Dialog, {
|
|
159
156
|
...rest,
|
|
@@ -200,7 +197,7 @@ export function AlertDialog({
|
|
|
200
197
|
hAlign: isSmallScreen ? 'stretch' : 'end',
|
|
201
198
|
wrap: isSmallScreen ? 'nowrap' : 'wrap',
|
|
202
199
|
children: /*#__PURE__*/_jsx(PressGroupContext, {
|
|
203
|
-
value: isTracking,
|
|
200
|
+
value: isTracking ? GROUP_PRESS_POINTERS : null,
|
|
204
201
|
children: isSmallScreen ? [actionButton, cancelButton] : [cancelButton, actionButton]
|
|
205
202
|
})
|
|
206
203
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
|
package/dist/Button/Button.js
CHANGED
|
@@ -30,7 +30,7 @@ import { iconBoxSizeStyles } from "../Icon/IconSize.stylex.js";
|
|
|
30
30
|
import { EDGE_COMP_ATTR } from "../Layout/edgeCompensation.stylex.js";
|
|
31
31
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
32
32
|
import { useButtonGroup } from "../ButtonGroup/ButtonGroupContext.js";
|
|
33
|
-
import { PressGroupContext } from "../hooks/pressGroupContext.js";
|
|
33
|
+
import { PressGroupContext, pressGroupItemProps } from "../hooks/pressGroupContext.js";
|
|
34
34
|
import { useInputGroup } from "../InputGroup/InputGroupContext.js";
|
|
35
35
|
import { InputGroupInternalContext } from "../InputGroup/InputGroupInternalContext.js";
|
|
36
36
|
import { groupStyles as inputGroupStyles, inputGroupItemProps } from "../InputGroup/groupStyles.js";
|
|
@@ -53,6 +53,9 @@ registerEnglishFallback(english);
|
|
|
53
53
|
*/
|
|
54
54
|
const PRESSED_ON = '[data-astryx-press="on"]';
|
|
55
55
|
|
|
56
|
+
/** `aria-haspopup` values of a trigger that keeps its own press and opening. */
|
|
57
|
+
const MENU_POPUPS = new Set(['true', 'menu', 'listbox']);
|
|
58
|
+
|
|
56
59
|
/**
|
|
57
60
|
* Base button styles
|
|
58
61
|
* Pseudo-classes are nested within properties per StyleX recommendation:
|
|
@@ -396,7 +399,11 @@ export function Button({
|
|
|
396
399
|
const t = useComponentTranslator();
|
|
397
400
|
const size = useSize(sizeProp, 'md');
|
|
398
401
|
const buttonGroup = useButtonGroup();
|
|
399
|
-
|
|
402
|
+
// A tracking group's tracker paints this button's pointer press. A menu
|
|
403
|
+
// trigger is not tracked: it keeps its own press and opening.
|
|
404
|
+
const groupPointers = use(PressGroupContext);
|
|
405
|
+
const groupItemProps = groupPointers != null && !MENU_POPUPS.has(String(props['aria-haspopup'])) ? pressGroupItemProps(groupPointers) : undefined;
|
|
406
|
+
const isGroupTracked = groupItemProps != null;
|
|
400
407
|
const inputGroup = useInputGroup();
|
|
401
408
|
const [isPending, startTransition] = useTransition();
|
|
402
409
|
// clickAction is normally fire-once (submit/save/pay), so a same-tick
|
|
@@ -611,6 +618,7 @@ export function Button({
|
|
|
611
618
|
...(inputGroup != null && buttonGroup == null ? inputGroupItemProps : undefined),
|
|
612
619
|
...sharedMergedProps,
|
|
613
620
|
...pressFeedback,
|
|
621
|
+
...groupItemProps,
|
|
614
622
|
...props,
|
|
615
623
|
...ariaLabelProp,
|
|
616
624
|
...describedByProp,
|
|
@@ -633,6 +641,7 @@ export function Button({
|
|
|
633
641
|
...(inputGroup != null && buttonGroup == null ? inputGroupItemProps : undefined),
|
|
634
642
|
...sharedMergedProps,
|
|
635
643
|
...pressFeedback,
|
|
644
|
+
...groupItemProps,
|
|
636
645
|
...props,
|
|
637
646
|
...ariaLabelProp,
|
|
638
647
|
...describedByProp,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file ButtonGroup.tsx
|
|
3
|
-
* @input Uses React, StyleX, Button/IconButton children
|
|
3
|
+
* @input Uses React, StyleX, Button/IconButton children, and the shared group
|
|
4
|
+
* press tracking (hooks/useGroupPressTracking)
|
|
4
5
|
* @output Exports ButtonGroup component, context, and types
|
|
5
6
|
* @position Groups buttons with connected styling; consumed by index.ts
|
|
6
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAkB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAW9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAQjE,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACjE,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAErC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CA+D9B;yBA9Ee,WAAW"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file ButtonGroup.tsx
|
|
7
|
-
* @input Uses React, StyleX, Button/IconButton children
|
|
7
|
+
* @input Uses React, StyleX, Button/IconButton children, and the shared group
|
|
8
|
+
* press tracking (hooks/useGroupPressTracking)
|
|
8
9
|
* @output Exports ButtonGroup component, context, and types
|
|
9
10
|
* @position Groups buttons with connected styling; consumed by index.ts
|
|
10
11
|
*
|
|
@@ -20,12 +21,16 @@
|
|
|
20
21
|
* - /apps/storybook/stories/ButtonGroup.stories.tsx (storybook stories)
|
|
21
22
|
* - /packages/cli/assets/templates/blocks/components/ButtonGroup/ (showcase blocks)
|
|
22
23
|
*/
|
|
23
|
-
import { useMemo } from 'react';
|
|
24
|
+
import { useMemo, useRef } from 'react';
|
|
24
25
|
import * as stylex from '@stylexjs/stylex';
|
|
25
26
|
import "../theme/tokens.stylex.js";
|
|
26
27
|
import { radiusVars, shadowVars } from "../theme/tokens.stylex.js";
|
|
27
28
|
import { SizeProvider, useSize } from "../SizeContext/SizeContext.js";
|
|
28
29
|
import { useListFocus } from "../hooks/useListFocus.js";
|
|
30
|
+
import { PressGroupContext } from "../hooks/pressGroupContext.js";
|
|
31
|
+
import { GROUP_PRESS_POINTERS, useGroupPressTracking } from "../hooks/useGroupPressTracking.js";
|
|
32
|
+
import { useTouchPresentation } from "../utils/touchPresentation.js";
|
|
33
|
+
import { touchHitAreaStyles } from "../utils/touchHitArea.stylex.js";
|
|
29
34
|
import { mergeProps, composeEventHandlers } from "../utils/index.js";
|
|
30
35
|
import { ButtonGroupContext } from "./ButtonGroupContext.js";
|
|
31
36
|
import { themeProps } from "../utils/themeProps.js";
|
|
@@ -47,6 +52,10 @@ const styles = {
|
|
|
47
52
|
vertical: {
|
|
48
53
|
kXwgrk: "xdt5ytf",
|
|
49
54
|
$$css: true
|
|
55
|
+
},
|
|
56
|
+
tracking: {
|
|
57
|
+
kVAEAm: "x1n2onr6",
|
|
58
|
+
$$css: true
|
|
50
59
|
}
|
|
51
60
|
};
|
|
52
61
|
|
|
@@ -154,25 +163,39 @@ export function ButtonGroup({
|
|
|
154
163
|
orientation,
|
|
155
164
|
isDisabled
|
|
156
165
|
}), [orientation, isDisabled]);
|
|
166
|
+
|
|
167
|
+
// Only under the touch presentation does a press slide across the buttons.
|
|
168
|
+
// A desktop press stays the native button's.
|
|
169
|
+
const {
|
|
170
|
+
isTouch
|
|
171
|
+
} = useTouchPresentation();
|
|
172
|
+
const tracksPress = !isDisabled && isTouch;
|
|
173
|
+
const groupRef = useRef(null);
|
|
174
|
+
const {
|
|
175
|
+
hitAreaRef
|
|
176
|
+
} = useGroupPressTracking(groupRef, tracksPress);
|
|
157
177
|
return /*#__PURE__*/_jsx(ButtonGroupContext, {
|
|
158
178
|
value: contextValue,
|
|
159
179
|
children: /*#__PURE__*/_jsx(SizeProvider, {
|
|
160
180
|
value: size,
|
|
161
181
|
children: /*#__PURE__*/_jsx("div", {
|
|
162
|
-
ref: useMergedRefs(ref, listRef),
|
|
182
|
+
ref: useMergedRefs(ref, listRef, groupRef, hitAreaRef),
|
|
163
183
|
...props,
|
|
164
184
|
...mergeProps(themeProps('button-group', {
|
|
165
185
|
size,
|
|
166
186
|
orientation,
|
|
167
187
|
elevation
|
|
168
|
-
}), stylex.props(styles.group, orientation === 'vertical' && styles.vertical, elevationStyles[elevation], xstyle), className, style),
|
|
188
|
+
}), stylex.props(styles.group, tracksPress && styles.tracking, tracksPress && touchHitAreaStyles.layerBelowChildren, orientation === 'vertical' && styles.vertical, elevationStyles[elevation], xstyle), className, style),
|
|
169
189
|
role: "group",
|
|
170
190
|
"aria-label": label,
|
|
171
191
|
onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),
|
|
172
192
|
onFocus: composeEventHandlers(onFocus, handleFocus),
|
|
173
193
|
"aria-disabled": isDisabled || undefined,
|
|
174
194
|
"data-testid": testId,
|
|
175
|
-
children:
|
|
195
|
+
children: /*#__PURE__*/_jsx(PressGroupContext, {
|
|
196
|
+
value: tracksPress ? GROUP_PRESS_POINTERS : null,
|
|
197
|
+
children: children
|
|
198
|
+
})
|
|
176
199
|
})
|
|
177
200
|
})
|
|
178
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatMessageList.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatMessageList.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAIhF,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAWhD,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,CAAC;IAElB;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAoGD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,OAAoB,EACpB,GAAG,EACH,KAAgB,EAChB,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,oBAAoB,+BA6GtB;yBA3He,eAAe"}
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
import { useEffect, useMemo, useRef, useTransition } from 'react';
|
|
27
27
|
import * as stylex from '@stylexjs/stylex';
|
|
28
28
|
import "../theme/tokens.stylex.js";
|
|
29
|
-
import { spacingVars } from "../theme/tokens.stylex.js";
|
|
29
|
+
import { focusVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
30
|
+
import { focusOutlineStyles } from "../utils/focusOutline.stylex.js";
|
|
30
31
|
import { ChatListContext, useChatLayoutContext } from "./ChatContext.js";
|
|
31
32
|
import { isRenderable, mergeProps } from "../utils/index.js";
|
|
32
33
|
import { Spinner } from "../Spinner/index.js";
|
|
@@ -48,6 +49,10 @@ const styles = {
|
|
|
48
49
|
kAzted: "x2lwn1j",
|
|
49
50
|
$$css: true
|
|
50
51
|
},
|
|
52
|
+
focusRingInset: {
|
|
53
|
+
kInvED: "x1nw7mhf",
|
|
54
|
+
$$css: true
|
|
55
|
+
},
|
|
51
56
|
inner: {
|
|
52
57
|
k1xSpc: "x78zum5",
|
|
53
58
|
kXwgrk: "xdt5ytf",
|
|
@@ -218,7 +223,10 @@ export function ChatMessageList({
|
|
|
218
223
|
"data-testid": testId,
|
|
219
224
|
...mergeProps(themeProps('chat-message-list', {
|
|
220
225
|
density
|
|
221
|
-
}),
|
|
226
|
+
}),
|
|
227
|
+
// A tab stop: the shared ring, which a theme restyles through the
|
|
228
|
+
// focus-outline tokens.
|
|
229
|
+
stylex.props(styles.root, focusOutlineStyles.focusVisible, styles.focusRingInset, xstyle), className, style),
|
|
222
230
|
children: /*#__PURE__*/_jsxs("div", {
|
|
223
231
|
ref: innerRef,
|
|
224
232
|
...stylex.props(styles.inner, densityGapStyle, gapOverrideStyle),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAkC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAItE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CheckboxListItem.d.ts","sourceRoot":"","sources":["../../src/CheckboxList/CheckboxListItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAkC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAItE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAe5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAuBvC,MAAM,WAAW,qBAAsB,SAAQ,SAAS,CAAC,aAAa,CAAC;IACrE;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAChC;AAyCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,YAAY,EAAE,SAAS,EACvB,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EAAE,cAAsB,EAClC,SAAS,EAAE,aAAqB,EAChC,SAAS,EACT,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,KAAK,EACL,GAAG,SAAS,EACb,EAAE,qBAAqB,+BAmLvB;yBApMe,gBAAgB"}
|
|
@@ -32,6 +32,7 @@ import { CheckboxListContext } from "./CheckboxListContext.js";
|
|
|
32
32
|
import { ItemDescriptionContext } from "../Item/ItemDescriptionContext.js";
|
|
33
33
|
import { joinAriaIDs } from "../utils/inputAria.js";
|
|
34
34
|
import { useMergedRefs } from "../hooks/useMergedRefs.js";
|
|
35
|
+
import { themeDataAttributes } from "../utils/themeProps.js";
|
|
35
36
|
import { registerEnglishFallback, useComponentTranslator } from "../i18n/useComponentTranslator.js";
|
|
36
37
|
import english from "../i18n/generated-english/CheckboxList/CheckboxListItem.generated.js";
|
|
37
38
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -224,8 +225,14 @@ export function CheckboxListItem({
|
|
|
224
225
|
onCheck?.(shouldCheck);
|
|
225
226
|
}
|
|
226
227
|
};
|
|
228
|
+
|
|
229
|
+
// The state follows the fill, so a theme can restyle the text on it.
|
|
230
|
+
const isCheckedRow = resolvedChecked === true && !effectiveDisabled && !effectiveReadOnly;
|
|
227
231
|
return /*#__PURE__*/_jsx(ListItem, {
|
|
228
232
|
...restProps,
|
|
233
|
+
...themeDataAttributes({
|
|
234
|
+
selected: isCheckedRow ? 'selected' : null
|
|
235
|
+
}),
|
|
229
236
|
ref: ref,
|
|
230
237
|
label: namesFromVisibleLabel ? /*#__PURE__*/_jsx("span", {
|
|
231
238
|
id: labelID,
|
|
@@ -249,7 +256,7 @@ export function CheckboxListItem({
|
|
|
249
256
|
// Item's row layer drops the strength's release, and the box paints
|
|
250
257
|
// at that strength. So the row brings the release back, and the box
|
|
251
258
|
// fades with the row.
|
|
252
|
-
rowOwnsPress && interactionOverlayStyles.pressedAlpha,
|
|
259
|
+
rowOwnsPress && interactionOverlayStyles.pressedAlpha, isCheckedRow && styles.selected, xstyle],
|
|
253
260
|
className: className,
|
|
254
261
|
style: style,
|
|
255
262
|
startContent:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAQZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAuB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAG5D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAoBtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -289,15 +289,14 @@ export function ComplexSelector({
|
|
|
289
289
|
const contentId = useId();
|
|
290
290
|
const descriptionId = useId();
|
|
291
291
|
const statusMessageId = useId();
|
|
292
|
-
// With `tooltip` placement Field renders no message box
|
|
293
|
-
//
|
|
294
|
-
// Only that placement renders an on-field status affordance here.
|
|
292
|
+
// With `tooltip` placement, Field renders no message box. The info-tip
|
|
293
|
+
// holds the message and describes the trigger.
|
|
295
294
|
const isTooltipStatus = effectiveStatusVariant === 'tooltip';
|
|
296
295
|
const {
|
|
297
296
|
statusIcon: statusTip,
|
|
298
297
|
describedBy: statusTipDescribedBy
|
|
299
298
|
} = useInputStatusIcon({
|
|
300
|
-
status
|
|
299
|
+
status,
|
|
301
300
|
statusVariant: effectiveStatusVariant,
|
|
302
301
|
size: 'sm'
|
|
303
302
|
});
|
|
@@ -549,21 +548,31 @@ export function ComplexSelector({
|
|
|
549
548
|
},
|
|
550
549
|
children: triggerContent
|
|
551
550
|
})
|
|
552
|
-
}),
|
|
551
|
+
}), isBusy && /*#__PURE__*/_jsx(Spinner, {
|
|
552
|
+
size: "sm",
|
|
553
|
+
"aria-hidden": "true"
|
|
554
|
+
}), isRenderable(statusTip) && (isTooltipStatus ?
|
|
553
555
|
/*#__PURE__*/
|
|
554
|
-
// The info-tip is its own control: a press on it, or on its
|
|
555
|
-
// bubble (portaled, so outside this span in the DOM but
|
|
556
|
-
// React), shows the message without opening the
|
|
556
|
+
// The info-tip is its own control: a press on it, or on its
|
|
557
|
+
// message bubble (portaled, so outside this span in the DOM but
|
|
558
|
+
// inside it in React), shows the message without opening the
|
|
559
|
+
// popup.
|
|
557
560
|
_jsx("span", {
|
|
558
561
|
onClick: stopPropagation,
|
|
559
562
|
...{
|
|
560
563
|
className: "x3nfvp2 x6s0dn4 x2lah0s"
|
|
561
564
|
},
|
|
562
565
|
children: statusTip
|
|
563
|
-
})
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
566
|
+
}) :
|
|
567
|
+
/*#__PURE__*/
|
|
568
|
+
// The plain icon is part of the field: a press on it opens the
|
|
569
|
+
// popup, as a press on the trigger does.
|
|
570
|
+
_jsx("span", {
|
|
571
|
+
...{
|
|
572
|
+
className: "x3nfvp2 x6s0dn4 x2lah0s"
|
|
573
|
+
},
|
|
574
|
+
children: statusTip
|
|
575
|
+
})), !isRenderable(statusTip) && /*#__PURE__*/_jsx(Icon, {
|
|
567
576
|
icon: "chevronDown",
|
|
568
577
|
size: "sm",
|
|
569
578
|
color: "secondary"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DateTimeInput.d.ts","sourceRoot":"","sources":["../../src/DateTimeInput/DateTimeInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -641,6 +641,34 @@ function PointerDateTimeField({
|
|
|
641
641
|
// it, as BaseTypeahead does.
|
|
642
642
|
const timePointerActiveRef = useRef(false);
|
|
643
643
|
|
|
644
|
+
// These one-shot `document` listeners belong to this field. Unmount removes
|
|
645
|
+
// them. Otherwise the next click runs work for a field that is gone.
|
|
646
|
+
const timeClickWatchersRef = useRef(null);
|
|
647
|
+
const addTimeClickWatcher = useCallback(handler => {
|
|
648
|
+
const watchers = timeClickWatchersRef.current ?? new Set();
|
|
649
|
+
timeClickWatchersRef.current = watchers;
|
|
650
|
+
const watcher = () => {
|
|
651
|
+
// The `once` option removes the listener from the document. Delete it from
|
|
652
|
+
// the set too, or the set keeps every past press.
|
|
653
|
+
watchers.delete(watcher);
|
|
654
|
+
handler();
|
|
655
|
+
};
|
|
656
|
+
watchers.add(watcher);
|
|
657
|
+
document.addEventListener('click', watcher, {
|
|
658
|
+
once: true
|
|
659
|
+
});
|
|
660
|
+
}, []);
|
|
661
|
+
const clearTimeClickWatchers = useCallback(() => {
|
|
662
|
+
for (const watcher of timeClickWatchersRef.current ?? []) {
|
|
663
|
+
document.removeEventListener('click', watcher);
|
|
664
|
+
}
|
|
665
|
+
timeClickWatchersRef.current?.clear();
|
|
666
|
+
}, []);
|
|
667
|
+
|
|
668
|
+
// The Effect owns this field's `document` click watchers: its setup acquires
|
|
669
|
+
// nothing, its cleanup releases whatever a press left pending.
|
|
670
|
+
useEffect(() => clearTimeClickWatchers, [clearTimeClickWatchers]);
|
|
671
|
+
|
|
644
672
|
// Whether the highlight is still the one typing derived, or the user has
|
|
645
673
|
// since moved it themselves. Enter honours typed text only in the former
|
|
646
674
|
// case — otherwise the field would commit something other than the option
|
|
@@ -648,12 +676,10 @@ function PointerDateTimeField({
|
|
|
648
676
|
const timeHighlightFollowsTypingRef = useRef(true);
|
|
649
677
|
const markTimePointerActive = useCallback(() => {
|
|
650
678
|
timePointerActiveRef.current = true;
|
|
651
|
-
|
|
679
|
+
addTimeClickWatcher(() => {
|
|
652
680
|
timePointerActiveRef.current = false;
|
|
653
|
-
}, {
|
|
654
|
-
once: true
|
|
655
681
|
});
|
|
656
|
-
}, []);
|
|
682
|
+
}, [addTimeClickWatcher]);
|
|
657
683
|
|
|
658
684
|
// The time list is a manual popover: the browser's light dismiss counts a
|
|
659
685
|
// press in the time input as outside (a text input cannot be an invoker), so
|
|
@@ -784,17 +810,15 @@ function PointerDateTimeField({
|
|
|
784
810
|
// input must hold DOM focus or aria-activedescendant announces nothing.
|
|
785
811
|
timeInputRef.current?.focus();
|
|
786
812
|
if (timePointerActiveRef.current) {
|
|
787
|
-
|
|
813
|
+
addTimeClickWatcher(() => requestAnimationFrame(() => timePopover.show({
|
|
788
814
|
skipAutoFocus: true
|
|
789
|
-
}))
|
|
790
|
-
once: true
|
|
791
|
-
});
|
|
815
|
+
})));
|
|
792
816
|
} else {
|
|
793
817
|
timePopover.show({
|
|
794
818
|
skipAutoFocus: true
|
|
795
819
|
});
|
|
796
820
|
}
|
|
797
|
-
}, [hasTimeOptions, isEffectivelyDisabled, timePopover, timeOptions.length, closestOptionIndex, selectedOptionTime]);
|
|
821
|
+
}, [addTimeClickWatcher, hasTimeOptions, isEffectivelyDisabled, timePopover, timeOptions.length, closestOptionIndex, selectedOptionTime]);
|
|
798
822
|
|
|
799
823
|
/**
|
|
800
824
|
* The single commit path for a time chosen from the list. Deliberately the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,EAAS,KAAK,WAAW,EAAC,MAAM,WAAW,CAAC;AAKnD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,7 @@ import { useDropdownMenuPress } from "../hooks/useMenuPress.js";
|
|
|
53
53
|
import { useTypeahead } from "../hooks/useTypeahead.js";
|
|
54
54
|
import { useFocusReturnVisibility } from "../hooks/useFocusReturnVisibility.js";
|
|
55
55
|
import { returnFocusForLastInput } from "../utils/focusReturn.js";
|
|
56
|
+
import { PressGroupContext } from "../hooks/pressGroupContext.js";
|
|
56
57
|
import { useMenuOverflow } from "./useMenuOverflow.js";
|
|
57
58
|
import { MenuRegionsContext } from "./menuRegionsContext.js";
|
|
58
59
|
import { moveRegionsTab } from "./menuRegionStops.js";
|
|
@@ -1324,15 +1325,24 @@ export function DropdownMenu(props) {
|
|
|
1324
1325
|
onOpenChange: handleOpenChange
|
|
1325
1326
|
};
|
|
1326
1327
|
if (resolvedPresentation === 'bottom-sheet' && 'items' in props && props.items !== undefined) {
|
|
1327
|
-
return /*#__PURE__*/_jsx(
|
|
1328
|
-
|
|
1329
|
-
|
|
1328
|
+
return /*#__PURE__*/_jsx(PressGroupContext, {
|
|
1329
|
+
value: null,
|
|
1330
|
+
children: /*#__PURE__*/_jsx(DropdownMenuBottomSheet, {
|
|
1331
|
+
...sharedProps,
|
|
1332
|
+
presentation: "bottom-sheet"
|
|
1333
|
+
})
|
|
1330
1334
|
});
|
|
1331
1335
|
}
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
+
|
|
1337
|
+
// In a group that tracks presses, the trigger keeps its own press and
|
|
1338
|
+
// opening, whatever its `aria-haspopup`.
|
|
1339
|
+
return /*#__PURE__*/_jsx(PressGroupContext, {
|
|
1340
|
+
value: null,
|
|
1341
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPopover, {
|
|
1342
|
+
...sharedProps,
|
|
1343
|
+
presentation: "popover",
|
|
1344
|
+
pressTouchModel: props.presentation === 'popover' ? 'pointer' : 'uikit'
|
|
1345
|
+
})
|
|
1336
1346
|
});
|
|
1337
1347
|
}
|
|
1338
1348
|
DropdownMenu.displayName = 'DropdownMenu';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoverCard.d.ts","sourceRoot":"","sources":["../../src/HoverCard/HoverCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HoverCard.d.ts","sourceRoot":"","sources":["../../src/HoverCard/HoverCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,YAAY,EACV,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AA6ExB,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,EACT,QAAQ,GAAG,WAAW,GAAG,OAAO,CACjC;IACC;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,qBAAqB,CAAC;IAErC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAoCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,OAAO,EACP,SAAmB,EACnB,SAAoB,EACpB,KAAW,EACX,SAAe,EACf,YAAqB,EACrB,YAAqB,EACrB,SAAgB,EAChB,KAAK,EACL,YAAY,EACZ,kBAA2B,EAC3B,MAAM,EACN,aAAa,EACb,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,cAAc,GAAG,YAAY,CA6M/B;yBA/Ne,SAAS"}
|
|
@@ -20,6 +20,7 @@ import { isRenderable } from "../utils/isRenderable.js";
|
|
|
20
20
|
import { observeMutations } from "../utils/sharedMutationObserver.js";
|
|
21
21
|
import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect.js";
|
|
22
22
|
import * as stylex from '@stylexjs/stylex';
|
|
23
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
23
24
|
import { useHoverCard } from "./useHoverCard.js";
|
|
24
25
|
import "../theme/tokens.stylex.js";
|
|
25
26
|
import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
@@ -63,6 +64,19 @@ function supportsAriaExpanded(el) {
|
|
|
63
64
|
return false;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
67
|
+
const styles = {
|
|
68
|
+
wrapperInline: {
|
|
69
|
+
k1xSpc: "xt0psk2",
|
|
70
|
+
$$css: true
|
|
71
|
+
},
|
|
72
|
+
hoverIndication: {
|
|
73
|
+
kMnn75: "xujl8zx",
|
|
74
|
+
kmVMDM: "xev0dqp",
|
|
75
|
+
k1TLXF: "xycaml9",
|
|
76
|
+
kcSHmL: "x11b3rvo",
|
|
77
|
+
$$css: true
|
|
78
|
+
}
|
|
79
|
+
};
|
|
66
80
|
/**
|
|
67
81
|
* Check if children are text-only (no React elements)
|
|
68
82
|
*/
|
|
@@ -292,15 +306,11 @@ export function HoverCard({
|
|
|
292
306
|
// No aria-expanded: this wrapper is a role-less <span>, and
|
|
293
307
|
// aria-expanded is invalid on it (see EXPANDABLE_ROLES above).
|
|
294
308
|
,
|
|
295
|
-
"aria-describedby": label ? undefined : hoverCard.describedBy
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
1: {
|
|
301
|
-
className: "xt0psk2 xujl8zx xev0dqp xycaml9 x11b3rvo"
|
|
302
|
-
}
|
|
303
|
-
}[!!showHoverIndication << 0],
|
|
309
|
+
"aria-describedby": label ? undefined : hoverCard.describedBy
|
|
310
|
+
// The span is a tab stop Astryx adds: it draws the shared ring,
|
|
311
|
+
// which a theme restyles through the focus-outline tokens.
|
|
312
|
+
,
|
|
313
|
+
...focusOutlineProps.focusVisible(styles.wrapperInline, showHoverIndication && styles.hoverIndication),
|
|
304
314
|
children: children
|
|
305
315
|
}), renderedHoverCard]
|
|
306
316
|
});
|