@astryxdesign/core 0.1.6-canary.e8d4c3f → 0.1.6-canary.eb23da7
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/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +4 -34
- package/dist/ButtonGroup/ButtonGroup.d.ts +4 -19
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +4 -19
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +2 -21
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts +1 -12
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +6 -43
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -15
- package/dist/Dialog/DialogHeader.d.ts +1 -1
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +1 -3
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +0 -6
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +10 -42
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +15 -26
- package/dist/Table/Table.js +2 -2
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -2
- package/dist/Table/types.d.ts +10 -17
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/astryx.css +1 -3
- package/dist/astryx.umd.js +41 -41
- package/dist/astryx.umd.js.map +3 -3
- package/dist/utils/color.d.ts +1 -13
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/color.js +1 -23
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +1 -11
- package/src/AppShell/AppShell.doc.mjs +2 -8
- package/src/Button/Button.tsx +4 -34
- package/src/ButtonGroup/ButtonGroup.test.tsx +2 -386
- package/src/ButtonGroup/ButtonGroup.tsx +4 -19
- package/src/Calendar/Calendar.test.tsx +2 -103
- package/src/Calendar/Calendar.tsx +1 -21
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Chat/ChatLayout.test.tsx +2 -127
- package/src/Chat/ChatMessageList.doc.mjs +1 -1
- package/src/Chat/ChatToolCalls.doc.mjs +1 -1
- package/src/Chat/index.ts +0 -1
- package/src/Chat/useChatStreamScroll.ts +11 -67
- package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +2 -2
- package/src/DateInput/DateInput.test.tsx +5 -17
- package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -2
- package/src/Dialog/Dialog.tsx +15 -11
- package/src/Dialog/DialogHeader.tsx +1 -3
- package/src/Field/Field.doc.mjs +2 -2
- package/src/FileInput/FileInput.test.tsx +1 -40
- package/src/FileInput/FileInput.tsx +0 -9
- package/src/Grid/Grid.doc.mjs +5 -5
- package/src/InputGroup/InputGroup.doc.mjs +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +2 -7
- package/src/OverflowList/OverflowList.doc.mjs +2 -2
- package/src/PowerSearch/PowerSearch.doc.mjs +4 -4
- package/src/RadioList/RadioList.doc.mjs +1 -1
- package/src/Section/Section.doc.mjs +4 -4
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.doc.mjs +3 -6
- package/src/Selector/Selector.test.tsx +6 -114
- package/src/Selector/Selector.tsx +11 -57
- package/src/Slider/Slider.doc.mjs +2 -2
- package/src/Stack/Stack.doc.mjs +10 -10
- package/src/Switch/Switch.doc.mjs +2 -2
- package/src/Table/BaseTable.tsx +18 -28
- package/src/Table/Table.test.tsx +1 -132
- package/src/Table/Table.tsx +3 -3
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +5 -2
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +4 -4
- package/src/Table/types.ts +12 -18
- package/src/Table/useTableFiltering.doc.mjs +2 -2
- package/src/Table/useTableSortable.doc.mjs +11 -11
- package/src/Text/Text.doc.mjs +2 -2
- package/src/TimeInput/TimeInput.doc.mjs +2 -2
- package/src/Timestamp/Timestamp.doc.mjs +4 -4
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Toolbar/Toolbar.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/i18n/useTranslator.doc.mjs +0 -4
- package/src/utils/color.test.ts +1 -101
- package/src/utils/color.ts +1 -23
- package/src/utils/index.ts +1 -8
- package/dist/authoring/doc.d.ts +0 -145
- package/dist/authoring/doc.d.ts.map +0 -1
- package/dist/authoring/doc.js +0 -100
- package/dist/authoring/index.d.ts +0 -29
- package/dist/authoring/index.d.ts.map +0 -1
- package/dist/authoring/index.js +0 -28
- package/dist/authoring/integration.d.ts +0 -35
- package/dist/authoring/integration.d.ts.map +0 -1
- package/dist/authoring/integration.js +0 -30
- package/dist/authoring/template.d.ts +0 -66
- package/dist/authoring/template.d.ts.map +0 -1
- package/dist/authoring/template.js +0 -55
- package/dist/config.d.ts +0 -80
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -40
- package/src/Chat/useChatStreamScroll.test.tsx +0 -168
- package/src/PowerSearch/formatFilterValue.test.ts +0 -282
- package/src/authoring/doc.ts +0 -166
- package/src/authoring/index.test.ts +0 -52
- package/src/authoring/index.ts +0 -50
- package/src/authoring/integration.ts +0 -42
- package/src/authoring/template.ts +0 -74
- package/src/config.test.ts +0 -16
- package/src/config.ts +0 -92
- package/src/docPropLiterals.test.ts +0 -938
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAwB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAqB3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAyFrD,QAAA,MAAM,UAAU;;;;;;;;;;EAUd,CAAC;AAsGH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,IAAI,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,UAAU,CAAC;AAEjD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
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
|
@@ -228,42 +228,12 @@ const loadingStyles = {
|
|
|
228
228
|
$$css: true
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* "I am the last member of the group" — the trailing end cap.
|
|
234
|
-
*
|
|
235
|
-
* NOT `:last-child`: several members render an invisible layer element AFTER
|
|
236
|
-
* their button (a tooltip'd Button returns button + layer; DropdownMenu returns
|
|
237
|
-
* trigger + popover). `useLayer` renders those inline rather than portaling
|
|
238
|
-
* them, so the layer — not the button — took the `:last-child` slot and the real
|
|
239
|
-
* trailing button silently kept square corners (#2508).
|
|
240
|
-
*
|
|
241
|
-
* Layers always carry the native `popover` attribute (useLayer.tsx), and a
|
|
242
|
-
* popover is never an in-flow member — it is `display: none` until shown, then
|
|
243
|
-
* promoted to the top layer. So "last member" is: no following element sibling
|
|
244
|
-
* that isn't a popover.
|
|
245
|
-
*
|
|
246
|
-
* Reading it the other way round — marking the *buttons* and testing for a
|
|
247
|
-
* marked sibling — is the trap: it silently reclassifies anything it doesn't
|
|
248
|
-
* recognise as "not a member", so a member wrapped in a `display: contents`
|
|
249
|
-
* wrapper (Tooltip, HoverCard) or a raw child would make the button BEFORE it
|
|
250
|
-
* round mid-group. Ignoring known layers keeps the predicate conservative: an
|
|
251
|
-
* unrecognised sibling still counts, exactly as `:last-child` did, so the worst
|
|
252
|
-
* case degrades to the old behaviour instead of a wrong corner.
|
|
253
|
-
*
|
|
254
|
-
* Kept as a same-file const: StyleX only statically evaluates a selector key
|
|
255
|
-
* from a const in the same file.
|
|
256
|
-
*
|
|
257
|
-
* The leading edge still uses `:first-child` — a member's button always precedes
|
|
258
|
-
* its own layer, so the first button is genuinely `:first-child`.
|
|
259
|
-
*/
|
|
260
|
-
const IS_LAST_ITEM = ':not(:has(~ *:not([popover])))';
|
|
261
231
|
const groupStyles = {
|
|
262
232
|
horizontal: {
|
|
263
233
|
krdFHd: "x15mokao x8eehn2",
|
|
264
234
|
kVL7Gh: "xbiv7yw x1xrp5p4",
|
|
265
|
-
kfmiAY: "x1ga7v0g
|
|
266
|
-
kT0f0o: "x16uus16
|
|
235
|
+
kfmiAY: "x1ga7v0g x11xp8u1",
|
|
236
|
+
kT0f0o: "x16uus16 x747jw7",
|
|
267
237
|
k2ei4v: "xgbv0en x1pjv70x",
|
|
268
238
|
kVhnKS: "x1t7ytsu xyf0ibl",
|
|
269
239
|
kGJrpR: "x1j92z86",
|
|
@@ -272,8 +242,8 @@ const groupStyles = {
|
|
|
272
242
|
vertical: {
|
|
273
243
|
krdFHd: "x15mokao x8eehn2",
|
|
274
244
|
kfmiAY: "x1ga7v0g x2qxyot",
|
|
275
|
-
kVL7Gh: "xbiv7yw
|
|
276
|
-
kT0f0o: "x16uus16
|
|
245
|
+
kVL7Gh: "xbiv7yw x1yp72r9",
|
|
246
|
+
kT0f0o: "x16uus16 x747jw7",
|
|
277
247
|
kEafiO: "x11xkdxz x1g31smg",
|
|
278
248
|
kPef9Z: "x13fuv20 x1d9v4yf",
|
|
279
249
|
kLZC3w: "x1pc3f07",
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
* @output Exports ButtonGroup component, context, and types
|
|
5
5
|
* @position Groups buttons with connected styling; consumed by index.ts
|
|
6
6
|
*
|
|
7
|
-
* Children (Button, IconButton) consume the ButtonGroup context to
|
|
8
|
-
* position-aware styles
|
|
9
|
-
*
|
|
10
|
-
* the trailing edge cannot use :last-child (#2508).
|
|
7
|
+
* Children (Button, IconButton) consume the ButtonGroup context to
|
|
8
|
+
* apply position-aware styles using CSS :first-child / :last-child
|
|
9
|
+
* pseudo-classes — no cloneElement or wrapper divs needed.
|
|
11
10
|
*
|
|
12
11
|
* SYNC: When modified, update these files to stay in sync:
|
|
13
12
|
* - /packages/core/src/ButtonGroup/ButtonGroup.doc.mjs (props table, features)
|
|
@@ -57,10 +56,7 @@ export interface ButtonGroupProps extends BaseProps<HTMLDivElement> {
|
|
|
57
56
|
* handling (only on outer edges), and horizontal or vertical orientation.
|
|
58
57
|
*
|
|
59
58
|
* Children automatically detect the group via context and apply position-aware
|
|
60
|
-
* styles
|
|
61
|
-
*
|
|
62
|
-
* Members that render their own layer — a Button with a `tooltip`, or a
|
|
63
|
-
* DropdownMenu — compose correctly, including as the trailing member.
|
|
59
|
+
* styles using CSS :first-child / :last-child pseudo-classes.
|
|
64
60
|
*
|
|
65
61
|
* @example
|
|
66
62
|
* ```
|
|
@@ -70,17 +66,6 @@ export interface ButtonGroupProps extends BaseProps<HTMLDivElement> {
|
|
|
70
66
|
* <Button label="Paste" />
|
|
71
67
|
* </ButtonGroup>
|
|
72
68
|
* ```
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```
|
|
76
|
-
* <ButtonGroup label="Approve action">
|
|
77
|
-
* <Button label="Allow once" variant="primary" />
|
|
78
|
-
* <DropdownMenu
|
|
79
|
-
* button={{label: 'Allow options', variant: 'primary', isIconOnly: true, icon: <Icon icon="chevronDown" />}}
|
|
80
|
-
* items={[{label: 'Allow for 30 minutes'}, {label: 'Always allow'}]}
|
|
81
|
-
* />
|
|
82
|
-
* </ButtonGroup>
|
|
83
|
-
* ```
|
|
84
69
|
*/
|
|
85
70
|
export declare function ButtonGroup({ children, label, orientation, size: sizeProp, isDisabled, xstyle, className, style, ref, 'data-testid': testId, onKeyDown, ...props }: ButtonGroupProps): ReactNode;
|
|
86
71
|
export declare namespace ButtonGroup {
|
|
@@ -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;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAU,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAOjE,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;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,IAAI,EAAE,QAAQ,EACd,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,SAAS,CAuC9B;yBApDe,WAAW"}
|
|
@@ -8,10 +8,9 @@
|
|
|
8
8
|
* @output Exports ButtonGroup component, context, and types
|
|
9
9
|
* @position Groups buttons with connected styling; consumed by index.ts
|
|
10
10
|
*
|
|
11
|
-
* Children (Button, IconButton) consume the ButtonGroup context to
|
|
12
|
-
* position-aware styles
|
|
13
|
-
*
|
|
14
|
-
* the trailing edge cannot use :last-child (#2508).
|
|
11
|
+
* Children (Button, IconButton) consume the ButtonGroup context to
|
|
12
|
+
* apply position-aware styles using CSS :first-child / :last-child
|
|
13
|
+
* pseudo-classes — no cloneElement or wrapper divs needed.
|
|
15
14
|
*
|
|
16
15
|
* SYNC: When modified, update these files to stay in sync:
|
|
17
16
|
* - /packages/core/src/ButtonGroup/ButtonGroup.doc.mjs (props table, features)
|
|
@@ -57,10 +56,7 @@ const styles = {
|
|
|
57
56
|
* handling (only on outer edges), and horizontal or vertical orientation.
|
|
58
57
|
*
|
|
59
58
|
* Children automatically detect the group via context and apply position-aware
|
|
60
|
-
* styles
|
|
61
|
-
*
|
|
62
|
-
* Members that render their own layer — a Button with a `tooltip`, or a
|
|
63
|
-
* DropdownMenu — compose correctly, including as the trailing member.
|
|
59
|
+
* styles using CSS :first-child / :last-child pseudo-classes.
|
|
64
60
|
*
|
|
65
61
|
* @example
|
|
66
62
|
* ```
|
|
@@ -70,17 +66,6 @@ const styles = {
|
|
|
70
66
|
* <Button label="Paste" />
|
|
71
67
|
* </ButtonGroup>
|
|
72
68
|
* ```
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```
|
|
76
|
-
* <ButtonGroup label="Approve action">
|
|
77
|
-
* <Button label="Allow once" variant="primary" />
|
|
78
|
-
* <DropdownMenu
|
|
79
|
-
* button={{label: 'Allow options', variant: 'primary', isIconOnly: true, icon: <Icon icon="chevronDown" />}}
|
|
80
|
-
* items={[{label: 'Allow for 30 minutes'}, {label: 'Always allow'}]}
|
|
81
|
-
* />
|
|
82
|
-
* </ButtonGroup>
|
|
83
|
-
* ```
|
|
84
69
|
*/
|
|
85
70
|
export function ButtonGroup({
|
|
86
71
|
children,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA8StD;yBA9Se,QAAQ"}
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
* - /apps/storybook/stories/Calendar.stories.tsx (storybook stories)
|
|
17
17
|
* - /packages/cli/templates/blocks/components/Calendar/ (showcase blocks)
|
|
18
18
|
*/
|
|
19
|
-
import { useState, useMemo, useCallback, useEffect, useImperativeHandle
|
|
19
|
+
import { useState, useMemo, useCallback, useEffect, useImperativeHandle } from 'react';
|
|
20
20
|
import * as stylex from '@stylexjs/stylex';
|
|
21
21
|
import { Button } from "../Button/index.js";
|
|
22
22
|
import { Icon } from "../Icon/index.js";
|
|
23
|
-
import {
|
|
23
|
+
import { useGridFocus } from "../hooks/index.js";
|
|
24
24
|
import { useCalendarDays, useCalendarConstraints } from "./hooks/index.js";
|
|
25
25
|
import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
|
|
26
26
|
import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
|
|
@@ -160,25 +160,6 @@ export function Calendar({
|
|
|
160
160
|
return visibleMonths.map(m => plainDateFormat(m, DATE_FORMAT_MONTH_YEAR)).join(' – ');
|
|
161
161
|
}, [visibleMonths, numberOfMonths]);
|
|
162
162
|
|
|
163
|
-
// Announce the newly visible month to screen readers whenever it changes.
|
|
164
|
-
// The visible month label (`<span>`) carries no live semantics, so paging the
|
|
165
|
-
// grid — via the header prev/next buttons, keyboard grid paging (arrow keys
|
|
166
|
-
// across a month boundary, PageUp/PageDown), the `navigateTo` handle, or a
|
|
167
|
-
// controlled `focusDate` change — otherwise updates the grid silently. Keying
|
|
168
|
-
// off `monthYearLabel` reuses the existing single-/multi-month formatting and
|
|
169
|
-
// only fires when the visible month actually changes (so selecting a date,
|
|
170
|
-
// which does not move the grid, stays silent). The first-render guard avoids
|
|
171
|
-
// announcing the initial month on mount.
|
|
172
|
-
const announce = useAnnounce();
|
|
173
|
-
const isInitialRenderRef = useRef(true);
|
|
174
|
-
useEffect(() => {
|
|
175
|
-
if (isInitialRenderRef.current) {
|
|
176
|
-
isInitialRenderRef.current = false;
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
announce(monthYearLabel);
|
|
180
|
-
}, [monthYearLabel, announce]);
|
|
181
|
-
|
|
182
163
|
// Determine if prev/next navigation is possible based on min/max
|
|
183
164
|
const canNavigatePrevious = useMemo(() => {
|
|
184
165
|
if (!min) {
|
package/dist/Chat/index.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export type { ChatMessageMetadataProps, ChatMessageStatus, } from './ChatMessage
|
|
|
24
24
|
export { ChatSystemMessage } from './ChatSystemMessage';
|
|
25
25
|
export type { ChatSystemMessageProps, ChatSystemMessageVariant, } from './ChatSystemMessage';
|
|
26
26
|
export { useChatStreamScroll } from './useChatStreamScroll';
|
|
27
|
-
export type {
|
|
27
|
+
export type { UseChatStreamScrollOptions, UseChatStreamScrollReturn, } from './useChatStreamScroll';
|
|
28
28
|
export { useChatNewMessages } from './useChatNewMessages';
|
|
29
29
|
export type { UseChatNewMessagesOptions, UseChatNewMessagesReturn, } from './useChatNewMessages';
|
|
30
30
|
export { useChatPasteAsToken } from './useChatPasteAsToken';
|
package/dist/Chat/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAC,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAC,iBAAiB,EAAE,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAChF,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAC,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EACV,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EACV,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
export interface ChatScrollToBottomOptions {
|
|
2
|
-
/**
|
|
3
|
-
* `'instant'` jumps to the bottom in a single frame instead of running
|
|
4
|
-
* the spring animation. Use for programmatic positioning (opening a
|
|
5
|
-
* conversation, restoring a session) — keep the default `'spring'` for
|
|
6
|
-
* user-initiated scrolls like the scroll-to-bottom button. Mirrors the
|
|
7
|
-
* DOM's `scrollTo({behavior})`.
|
|
8
|
-
* @default 'spring'
|
|
9
|
-
*/
|
|
10
|
-
behavior?: 'instant' | 'spring';
|
|
11
|
-
}
|
|
12
1
|
export interface UseChatStreamScrollOptions {
|
|
13
2
|
/**
|
|
14
3
|
* Ref to the scrollable container element.
|
|
@@ -53,7 +42,7 @@ export interface UseChatStreamScrollReturn {
|
|
|
53
42
|
/** Whether auto-scroll is locked (following content). */
|
|
54
43
|
isLocked: boolean;
|
|
55
44
|
/** Scroll to the bottom of the container and re-lock. */
|
|
56
|
-
scrollToBottom: (
|
|
45
|
+
scrollToBottom: () => void;
|
|
57
46
|
/** Scroll so a specific element is at the top of the visible area. No lock change. */
|
|
58
47
|
scrollToMessage: (el: HTMLElement) => void;
|
|
59
48
|
/** Lock auto-scroll and scroll to bottom. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChatStreamScroll.d.ts","sourceRoot":"","sources":["../../src/Chat/useChatStreamScroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useChatStreamScroll.d.ts","sourceRoot":"","sources":["../../src/Chat/useChatStreamScroll.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,EAAE,OAAO,CAAC;IAElB,yDAAyD;IACzD,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,sFAAsF;IACtF,eAAe,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;IAE3C,6CAA6C;IAC7C,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,oEAAoE;IACpE,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,OAAc,EACd,aAAkB,EAClB,eAAqB,EACrB,OAAa,EACb,SAAgB,EAChB,IAAW,GACZ,EAAE,0BAA0B,GAAG,yBAAyB,CAmOxD"}
|
|
@@ -12,9 +12,6 @@
|
|
|
12
12
|
* - Locked (default): content growth auto-scrolls to bottom via rAF spring
|
|
13
13
|
* - Scrolling up (any source): unlocks immediately
|
|
14
14
|
* - Scrolling settles at bottom: re-locks on scrollend
|
|
15
|
-
* - The first fill positions instantly (whether content is present at
|
|
16
|
-
* mount or arrives async); only subsequent growth springs
|
|
17
|
-
* - `scrollToBottom({behavior: 'instant'})` jumps in one frame, no animation
|
|
18
15
|
*
|
|
19
16
|
* Uses scroll direction (lastScrollTop comparison) to detect user
|
|
20
17
|
* intent — works for wheel, touch, scrollbar drag, keyboard, everything.
|
|
@@ -47,9 +44,6 @@ export function useChatStreamScroll({
|
|
|
47
44
|
const [isScrolledUp, setIsScrolledUp] = useState(false);
|
|
48
45
|
const [isLocked, setIsLocked] = useState(true);
|
|
49
46
|
const lockedRef = useRef(true);
|
|
50
|
-
// True until the initial fill has been positioned — consumed by the first
|
|
51
|
-
// scrollIfLocked that sees scrollable content.
|
|
52
|
-
const initialFillPendingRef = useRef(true);
|
|
53
47
|
const velocityRef = useRef(0);
|
|
54
48
|
const animatingRef = useRef(false);
|
|
55
49
|
const lastTickRef = useRef(undefined);
|
|
@@ -101,33 +95,14 @@ export function useChatStreamScroll({
|
|
|
101
95
|
}
|
|
102
96
|
}, [animate]);
|
|
103
97
|
|
|
104
|
-
// Jump to the bottom in a single frame — cancels any in-flight spring so
|
|
105
|
-
// a later animation tick can't fight the assignment.
|
|
106
|
-
const jumpToBottom = useCallback(() => {
|
|
107
|
-
const el = scrollRef.current;
|
|
108
|
-
if (!el) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
animatingRef.current = false;
|
|
112
|
-
velocityRef.current = 0;
|
|
113
|
-
lastTickRef.current = undefined;
|
|
114
|
-
el.scrollTop = el.scrollHeight - el.clientHeight;
|
|
115
|
-
lastScrollTopRef.current = el.scrollTop;
|
|
116
|
-
}, [scrollRef]);
|
|
117
|
-
|
|
118
98
|
// --- Public API ---
|
|
119
99
|
|
|
120
|
-
const scrollToBottom = useCallback(
|
|
100
|
+
const scrollToBottom = useCallback(() => {
|
|
121
101
|
lockedRef.current = true;
|
|
122
102
|
setIsLocked(true);
|
|
123
103
|
setIsScrolledUp(false);
|
|
124
|
-
initialFillPendingRef.current = false;
|
|
125
|
-
if (options?.behavior === 'instant') {
|
|
126
|
-
jumpToBottom();
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
104
|
startAnimation();
|
|
130
|
-
}, [startAnimation
|
|
105
|
+
}, [startAnimation]);
|
|
131
106
|
const scrollToMessage = useCallback(el => {
|
|
132
107
|
const container = scrollRef.current;
|
|
133
108
|
if (!container) {
|
|
@@ -168,21 +143,10 @@ export function useChatStreamScroll({
|
|
|
168
143
|
if (!enabled) {
|
|
169
144
|
return;
|
|
170
145
|
}
|
|
171
|
-
if (
|
|
172
|
-
|
|
146
|
+
if (lockedRef.current) {
|
|
147
|
+
startAnimation();
|
|
173
148
|
}
|
|
174
|
-
|
|
175
|
-
// async-loaded conversation) positions in one frame instead of
|
|
176
|
-
// spring-flying from the top. Stays pending through empty/loading
|
|
177
|
-
// resizes until the container is actually scrollable.
|
|
178
|
-
const el = scrollRef.current;
|
|
179
|
-
if (initialFillPendingRef.current && el && el.scrollHeight > el.clientHeight) {
|
|
180
|
-
initialFillPendingRef.current = false;
|
|
181
|
-
jumpToBottom();
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
184
|
-
startAnimation();
|
|
185
|
-
}, [enabled, startAnimation, jumpToBottom, scrollRef]);
|
|
149
|
+
}, [enabled, startAnimation]);
|
|
186
150
|
|
|
187
151
|
// --- Event listeners ---
|
|
188
152
|
|
|
@@ -266,12 +230,11 @@ export function useChatStreamScroll({
|
|
|
266
230
|
passive: true
|
|
267
231
|
});
|
|
268
232
|
|
|
269
|
-
// Initial scroll to bottom
|
|
233
|
+
// Initial scroll to bottom
|
|
270
234
|
requestAnimationFrame(() => {
|
|
271
235
|
if (el.scrollHeight > el.clientHeight) {
|
|
272
236
|
el.scrollTop = el.scrollHeight - el.clientHeight;
|
|
273
237
|
lastScrollTopRef.current = el.scrollTop;
|
|
274
|
-
initialFillPendingRef.current = false;
|
|
275
238
|
}
|
|
276
239
|
});
|
|
277
240
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA6B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoB5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAwBhD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAyHD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAkB,EAClB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/Dialog/Dialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAA6B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoB5C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAwBhD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAyHD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,QAAgB,EAChB,YAAY,EACZ,KAAW,EACX,SAAkB,EAClB,QAAQ,EACR,OAAoB,EACpB,OAAgB,EAChB,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,sCAyOb;yBAzPe,MAAM"}
|
package/dist/Dialog/Dialog.js
CHANGED
|
@@ -359,41 +359,38 @@ export function Dialog({
|
|
|
359
359
|
})
|
|
360
360
|
});
|
|
361
361
|
|
|
362
|
-
// Filter out native open to prevent InvalidStateError when accidentally passed
|
|
363
|
-
const hasPosition = position != null && !isFullscreen;
|
|
364
|
-
const {
|
|
365
|
-
open: _open,
|
|
366
|
-
...safeProps
|
|
367
|
-
} = props;
|
|
368
|
-
|
|
369
362
|
// --- Inline rendering path (for documentation previews) ---
|
|
370
363
|
if (isInline) {
|
|
371
364
|
if (!isOpen) {
|
|
372
365
|
return null;
|
|
373
366
|
}
|
|
374
367
|
return /*#__PURE__*/_jsx("div", {
|
|
375
|
-
...safeProps,
|
|
376
368
|
...mergeProps(themeProps('dialog', {
|
|
377
369
|
variant
|
|
378
370
|
}), stylex.props(styles.inlineWrapper, !isFullscreen && dynamicStyles.sizing(width, maxHeight), isFullscreen && styles.fullscreen, xstyle), className, style),
|
|
371
|
+
"data-testid": props['data-testid'],
|
|
379
372
|
children: innerContent
|
|
380
373
|
});
|
|
381
374
|
}
|
|
382
375
|
|
|
383
376
|
// --- Standard modal rendering path ---
|
|
377
|
+
const hasPosition = position != null && !isFullscreen;
|
|
384
378
|
|
|
379
|
+
// Filter out native open to prevent InvalidStateError when accidentally passed
|
|
380
|
+
const {
|
|
381
|
+
open: _open,
|
|
382
|
+
...safeProps
|
|
383
|
+
} = props;
|
|
385
384
|
return /*#__PURE__*/_jsx("dialog", {
|
|
386
385
|
ref: mergeRefs(ref, dialogRef),
|
|
387
|
-
...safeProps,
|
|
388
|
-
...mergeProps(themeProps('dialog', {
|
|
389
|
-
variant
|
|
390
|
-
}), stylex.props(styles.dialog, isOpen && styles.open, styles.backdrop, !isFullscreen && dynamicStyles.sizing(width, maxHeight), hasPosition && dynamicStyles.position(position?.top, position?.right, position?.bottom, position?.left), isFullscreen && styles.fullscreen, xstyle), className, style),
|
|
391
386
|
onClick: handleClick,
|
|
392
387
|
onCancel: handleCancel,
|
|
393
388
|
"aria-modal": "true",
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
389
|
+
role: purpose === 'required' ? 'alertdialog' : undefined,
|
|
390
|
+
...mergeProps(themeProps('dialog', {
|
|
391
|
+
variant
|
|
392
|
+
}), stylex.props(styles.dialog, isOpen && styles.open, styles.backdrop, !isFullscreen && dynamicStyles.sizing(width, maxHeight), hasPosition && dynamicStyles.position(position?.top, position?.right, position?.bottom, position?.left), isFullscreen && styles.fullscreen, xstyle), className, style),
|
|
393
|
+
...safeProps,
|
|
397
394
|
children: innerContent
|
|
398
395
|
});
|
|
399
396
|
}
|
|
@@ -67,7 +67,7 @@ export interface DialogHeaderProps extends BaseProps<HTMLDivElement> {
|
|
|
67
67
|
* </Dialog>
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
|
-
export declare function DialogHeader({ title, subtitle, onOpenChange, startContent, endContent, hasDivider, xstyle, className, style, ref,
|
|
70
|
+
export declare function DialogHeader({ title, subtitle, onOpenChange, startContent, endContent, hasDivider, xstyle, className, style, ref, }: DialogHeaderProps): import("react").JSX.Element;
|
|
71
71
|
export declare namespace DialogHeader {
|
|
72
72
|
var displayName: string;
|
|
73
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogHeader.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogHeader.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoC5C,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE5C;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,
|
|
1
|
+
{"version":3,"file":"DialogHeader.d.ts","sourceRoot":"","sources":["../../src/Dialog/DialogHeader.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAQxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAoC5C,MAAM,WAAW,iBAAkB,SAAQ,SAAS,CAAC,cAAc,CAAC;IAClE,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE5C;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,iBAAiB,+BAgEnB;yBA3Ee,YAAY"}
|
|
@@ -64,8 +64,7 @@ export function DialogHeader({
|
|
|
64
64
|
xstyle,
|
|
65
65
|
className,
|
|
66
66
|
style,
|
|
67
|
-
ref
|
|
68
|
-
...rest
|
|
67
|
+
ref
|
|
69
68
|
}) {
|
|
70
69
|
const t = useTranslator();
|
|
71
70
|
const titleRef = useRef(null);
|
|
@@ -86,7 +85,6 @@ export function DialogHeader({
|
|
|
86
85
|
xstyle: xstyle,
|
|
87
86
|
className: className,
|
|
88
87
|
style: style,
|
|
89
|
-
...rest,
|
|
90
88
|
children: /*#__PURE__*/_jsxs("div", {
|
|
91
89
|
...{
|
|
92
90
|
className: "x78zum5 x1cy8zhl x1qughib xjcht0a"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/FileInput/FileInput.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,UAAU,CAAC;AAMlB,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AA0N9C,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,EACT,UAAU,GAAG,cAAc,GAAG,OAAO,CACtC;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAqB,EACrB,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAkB,EAClB,OAAO,EACP,QAAQ,EACR,UAAkB,EAClB,eAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,MAAM,EAAE,UAAU,EAClB,WAAW,EACX,WAAW,EACX,IAAc,EACd,UAAkB,EAClB,YAAY,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+
|
|
1
|
+
{"version":3,"file":"FileInput.d.ts","sourceRoot":"","sources":["../../src/FileInput/FileInput.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,UAAU,CAAC;AAMlB,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AA0N9C,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,EACT,UAAU,GAAG,cAAc,GAAG,OAAO,CACtC;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAqB,EACrB,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAkB,EAClB,OAAO,EACP,QAAQ,EACR,UAAkB,EAClB,eAAe,EACf,UAAkB,EAClB,SAAiB,EACjB,MAAM,EAAE,UAAU,EAClB,WAAW,EACX,WAAW,EACX,IAAc,EACd,UAAkB,EAClB,YAAY,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BA6WhB;yBAvYe,SAAS"}
|
|
@@ -313,12 +313,6 @@ export function FileInput({
|
|
|
313
313
|
const handleDragLeave = useCallback(e => {
|
|
314
314
|
e.preventDefault();
|
|
315
315
|
e.stopPropagation();
|
|
316
|
-
// Moving over the dropzone's own children (icon, text) fires dragleave on
|
|
317
|
-
// the container too — only a leave that actually exits the dropzone ends
|
|
318
|
-
// the drag-over state, otherwise the highlight flickers mid-drag.
|
|
319
|
-
if (e.relatedTarget instanceof Node && e.currentTarget.contains(e.relatedTarget)) {
|
|
320
|
-
return;
|
|
321
|
-
}
|
|
322
316
|
setIsDragOver(false);
|
|
323
317
|
}, []);
|
|
324
318
|
const handleDrop = useCallback(e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.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;AAU5D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Selector.d.ts","sourceRoot":"","sources":["../../src/Selector/Selector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,6 @@ import { Field, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputWrap
|
|
|
24
24
|
import { Divider } from "../Divider/index.js";
|
|
25
25
|
import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
|
|
26
26
|
import { Spinner } from "../Spinner/index.js";
|
|
27
|
-
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
28
27
|
import "../theme/tokens.stylex.js";
|
|
29
28
|
import { colorVars, sizeVars, spacingVars, radiusVars, durationVars, easeVars, typographyVars, fontWeightVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
30
29
|
import { isOptionData, isDivider, isSection, normalizeOption, getSelectableOptions } from "./utils.js";
|
|
@@ -166,18 +165,6 @@ function DefaultOption({
|
|
|
166
165
|
});
|
|
167
166
|
}
|
|
168
167
|
|
|
169
|
-
// Case-insensitive substring filter over the selectable options. Shared by the
|
|
170
|
-
// `filteredItems` memo (rendering) and the search-change handler, which needs
|
|
171
|
-
// the count for the *next* query synchronously to announce it exactly once per
|
|
172
|
-
// keystroke rather than reacting to state in an effect.
|
|
173
|
-
function filterOptionsByQuery(items, query) {
|
|
174
|
-
if (!query) {
|
|
175
|
-
return items;
|
|
176
|
-
}
|
|
177
|
-
const q = query.toLowerCase();
|
|
178
|
-
return items.filter(item => (item.label ?? item.value).toLowerCase().includes(q));
|
|
179
|
-
}
|
|
180
|
-
|
|
181
168
|
/**
|
|
182
169
|
* A selector/dropdown component for choosing from a list of options.
|
|
183
170
|
*
|
|
@@ -269,7 +256,13 @@ export function Selector(props) {
|
|
|
269
256
|
const selectableItems = useMemo(() => getSelectableOptions(options), [options]);
|
|
270
257
|
|
|
271
258
|
// Filter items by search query
|
|
272
|
-
const filteredItems = useMemo(() =>
|
|
259
|
+
const filteredItems = useMemo(() => {
|
|
260
|
+
if (!searchQuery) {
|
|
261
|
+
return selectableItems;
|
|
262
|
+
}
|
|
263
|
+
const query = searchQuery.toLowerCase();
|
|
264
|
+
return selectableItems.filter(item => (item.label ?? item.value).toLowerCase().includes(query));
|
|
265
|
+
}, [selectableItems, searchQuery]);
|
|
273
266
|
|
|
274
267
|
// Find selected item and its index for positioning
|
|
275
268
|
const selectedItemIndex = useMemo(() => {
|
|
@@ -282,20 +275,11 @@ export function Selector(props) {
|
|
|
282
275
|
// Ref for listbox to measure selected item position
|
|
283
276
|
const listboxRef = useRef(null);
|
|
284
277
|
|
|
285
|
-
// Announce match counts / "No results found" politely as the user types, so
|
|
286
|
-
// screen-reader users hear how many options remain. Filtering was previously
|
|
287
|
-
// silent (comboboxes-7). Mirrors BaseTypeahead, which announces from its
|
|
288
|
-
// query-change callback (not a reactive effect) via the same useAnnounce hook.
|
|
289
|
-
const announce = useAnnounce();
|
|
290
|
-
|
|
291
278
|
// Layer for dropdown positioning
|
|
292
279
|
const handleLayerHide = useCallback(() => {
|
|
293
280
|
setSearchQuery('');
|
|
294
|
-
// Clear any lingering result count when the popover closes so stale status
|
|
295
|
-
// text does not linger in the a11y tree.
|
|
296
|
-
announce('');
|
|
297
281
|
triggerRef.current?.focus();
|
|
298
|
-
}, [
|
|
282
|
+
}, []);
|
|
299
283
|
const popover = usePopover({
|
|
300
284
|
onHide: handleLayerHide,
|
|
301
285
|
hasLightDismiss: true,
|
|
@@ -314,22 +298,6 @@ export function Selector(props) {
|
|
|
314
298
|
// eslint-disable-next-line @eslint-react/exhaustive-deps -- mount-only: isDefaultOpen is not reactive
|
|
315
299
|
}, []);
|
|
316
300
|
|
|
317
|
-
// Announce the filtered result count from the query-change handler (matching
|
|
318
|
-
// BaseTypeahead) rather than a reactive effect: computing the count for the
|
|
319
|
-
// next query here fires the announcement exactly once per keystroke and does
|
|
320
|
-
// not re-speak on unrelated re-renders.
|
|
321
|
-
const handleSearchChange = useCallback(event => {
|
|
322
|
-
const nextQuery = event.target.value;
|
|
323
|
-
setSearchQuery(nextQuery);
|
|
324
|
-
if (nextQuery.length === 0) {
|
|
325
|
-
// Emptying the query clears the region rather than announcing a count.
|
|
326
|
-
announce('');
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
const count = filterOptionsByQuery(selectableItems, nextQuery).length;
|
|
330
|
-
announce(count === 0 ? 'No results found' : `${count} result${count === 1 ? '' : 's'}`);
|
|
331
|
-
}, [announce, selectableItems]);
|
|
332
|
-
|
|
333
301
|
// Calculate offset to position selected item over trigger. Explicit
|
|
334
302
|
// placement opts out of the selector-specific overlay behavior and uses the
|
|
335
303
|
// standard layer positioning API instead.
|
|
@@ -444,7 +412,7 @@ export function Selector(props) {
|
|
|
444
412
|
"aria-label": t('@astryx.selector.searchOptions'),
|
|
445
413
|
type: "text",
|
|
446
414
|
value: searchQuery,
|
|
447
|
-
onChange:
|
|
415
|
+
onChange: e => setSearchQuery(e.target.value),
|
|
448
416
|
onKeyDown: e => {
|
|
449
417
|
// Arrow keys navigate options; Enter selects; Escape/Tab close.
|
|
450
418
|
// Home/End are left to the input for caret movement.
|
|
@@ -458,7 +426,7 @@ export function Selector(props) {
|
|
|
458
426
|
}
|
|
459
427
|
})
|
|
460
428
|
});
|
|
461
|
-
}, [hasSearch, searchId, listboxId, searchQuery, searchPlaceholder,
|
|
429
|
+
}, [hasSearch, searchId, listboxId, searchQuery, searchPlaceholder, onKeyDown, popover.isOpen, highlightedIndex, getItemId, t]);
|
|
462
430
|
|
|
463
431
|
// Render an individual item
|
|
464
432
|
const renderItem = useCallback((item, flatIndex) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseTable.d.ts","sourceRoot":"","sources":["../../src/Table/BaseTable.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAkB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,cAAc,EAYf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseTable.d.ts","sourceRoot":"","sources":["../../src/Table/BaseTable.tsx"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,KAAK,YAAY,EAAkB,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,cAAc,EAYf,MAAM,SAAS,CAAC;AAijBjB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,SAAS,EAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3E,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAA;CAAC,KACrD,YAAY,CAAC"}
|