@astryxdesign/core 0.7.6-canary.eae5d92 → 0.7.6-canary.eecd9c1
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/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +27 -6
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +37 -30
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +5 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +15 -4
- package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts +2 -0
- package/dist/Tokenizer/TokenizerClearAllMessageContext.d.ts.map +1 -0
- package/dist/Tokenizer/TokenizerClearAllMessageContext.js +17 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +4 -4
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +43 -7
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +1 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +1 -0
- package/locales/en.json +5 -1
- package/locales/pseudo.json +3 -0
- package/package.json +4 -4
- package/src/CodeBlock/__tests__/CodeBlockCopyClearance.a11y.chromium.spec.ts +38 -3
- package/src/Layer/useLayer.test.tsx +78 -3
- package/src/Layer/useLayer.tsx +27 -6
- package/src/PowerSearch/PowerSearch.test.tsx +24 -0
- package/src/PowerSearch/PowerSearch.tsx +42 -31
- package/src/Switch/Switch.test.tsx +45 -0
- package/src/Switch/Switch.tsx +6 -2
- package/src/Tokenizer/Tokenizer.spec.md +13 -1
- package/src/Tokenizer/Tokenizer.test.tsx +27 -0
- package/src/Tokenizer/Tokenizer.tsx +24 -10
- package/src/Tokenizer/TokenizerBottomSheet.test.tsx +8 -0
- package/src/Tokenizer/TokenizerClearAllMessageContext.ts +21 -0
- package/src/Typeahead/BaseTypeahead.doc.mjs +3 -3
- package/src/Typeahead/BaseTypeahead.spec.md +45 -45
- package/src/Typeahead/BaseTypeahead.tsx +48 -9
- package/src/Typeahead/Typeahead.test.tsx +120 -0
- package/src/i18n/generated-locales/en.generated.ts +1 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +1 -0
- package/src/motion/README.md +2 -1
- package/src/motion/roles.test.ts +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLayer.d.ts","sourceRoot":"","sources":["../../src/Layer/useLayer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useLayer.d.ts","sourceRoot":"","sources":["../../src/Layer/useLayer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAQZ,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAsInD;;GAEG;AACH,UAAU,kBAAkB;IAC1B,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD;;;OAGG;IACH,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CACtD;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,SAAS,CAAC;IAChB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAE9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,GAAG,EAAE,SAAS,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACrE;AAED,UAAU,mBAAmB;IAC3B,gBAAgB,EAAE,MAAM,OAAO,CAAC;CACjC;AAED;;;GAGG;AACH,UAAU,2BAA4B,SAAQ,mBAAmB;IAC/D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,KAAK,0BAA0B,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAC3E,KAAK,wBAAwB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAmiBvE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,cAAwB,EACnC,SAAS,GAAE,cAAyB,GACnC,MAAM,CAiBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,OAAO,GACtB,KAAK,CAAC,aAAa,CAQrB;AA4BD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,GACd,kBAAkB,CAoCpB;AAm2BD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAAC;AAC3E,wBAAgB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;AAWvE;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,2BAA2B,GACnC,0BAA0B,CAAC;AAC9B,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,iBAAiB,GACzB,wBAAwB,CAAC"}
|
package/dist/Layer/useLayer.js
CHANGED
|
@@ -328,8 +328,9 @@ function failsAnchor(layer, anchor) {
|
|
|
328
328
|
* every show and remount, and while the layer is open whenever its size, its
|
|
329
329
|
* content's size, its anchor's size or the viewport changes; each of those
|
|
330
330
|
* reads lands before the next frame paints. A same-size anchor that moves on
|
|
331
|
-
* screen, in layout or because something scrolled, is
|
|
332
|
-
* the anchor-move observer
|
|
331
|
+
* screen, in layout or because something scrolled, is reported after paint by
|
|
332
|
+
* the anchor-move observer and read in the next frame, before it paints (FR8).
|
|
333
|
+
* Scroll events are not read: during one the
|
|
333
334
|
* anchor has moved but the layer anchored to it not yet, so the read would
|
|
334
335
|
* compare a moved anchor with a stale layer. Once switched, a layer keeps its
|
|
335
336
|
* anchor-clear list until it next opens, so it never jumps back over its
|
|
@@ -469,9 +470,16 @@ function observeMove(element, onMove) {
|
|
|
469
470
|
* range (spec:AST-059 FR4, FR8): the layer, its content or the anchor
|
|
470
471
|
* resizing (ResizeObserver, before paint), the viewport resizing (before
|
|
471
472
|
* paint), and the anchor moving on screen without resizing, in layout or by a
|
|
472
|
-
* scroll (`observeMove`, after paint). Each calls `keepAnchorClear`
|
|
473
|
-
* `isCurrent` says they are still the live
|
|
474
|
-
*
|
|
473
|
+
* scroll (`observeMove`, reported after paint). Each calls `keepAnchorClear`
|
|
474
|
+
* for this layer and anchor while `isCurrent` says they are still the live
|
|
475
|
+
* pair. A move is read in the next animation frame, not in the task that
|
|
476
|
+
* reports it: placing the layer afresh there, right after the frame that
|
|
477
|
+
* scrolled its anchor, lets Chromium lay it out for one more frame against
|
|
478
|
+
* the anchor's position before the scroll, over the anchor, so the second
|
|
479
|
+
* painted frame would still cover it. Read in the next frame, before it
|
|
480
|
+
* paints, the fresh placement uses the moved anchor. Reports in one frame
|
|
481
|
+
* share one read. Returns the function that removes every observer and
|
|
482
|
+
* listener it added.
|
|
475
483
|
*/
|
|
476
484
|
function observeAnchorClearance(layer, anchor, isCurrent) {
|
|
477
485
|
const view = layer.ownerDocument.defaultView;
|
|
@@ -492,11 +500,24 @@ function observeAnchorClearance(layer, anchor, isCurrent) {
|
|
|
492
500
|
}
|
|
493
501
|
observer.observe(anchor);
|
|
494
502
|
}
|
|
495
|
-
|
|
503
|
+
let moveFrame = null;
|
|
504
|
+
const stopObservingMove = observeMove(anchor, () => {
|
|
505
|
+
if (moveFrame !== null) {
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
moveFrame = view.requestAnimationFrame(() => {
|
|
509
|
+
moveFrame = null;
|
|
510
|
+
reread();
|
|
511
|
+
});
|
|
512
|
+
});
|
|
496
513
|
view.addEventListener('resize', reread);
|
|
497
514
|
return () => {
|
|
498
515
|
observer?.disconnect();
|
|
499
516
|
stopObservingMove();
|
|
517
|
+
if (moveFrame !== null) {
|
|
518
|
+
view.cancelAnimationFrame(moveFrame);
|
|
519
|
+
moveFrame = null;
|
|
520
|
+
}
|
|
500
521
|
view.removeEventListener('resize', reread);
|
|
501
522
|
};
|
|
502
523
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PowerSearch.d.ts","sourceRoot":"","sources":["../../src/PowerSearch/PowerSearch.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"PowerSearch.d.ts","sourceRoot":"","sources":["../../src/PowerSearch/PowerSearch.tsx"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
17
17
|
import * as stylex from '@stylexjs/stylex';
|
|
18
18
|
import { Tokenizer } from "../Tokenizer/index.js";
|
|
19
|
+
import { TokenizerClearAllMessageContext } from "../Tokenizer/TokenizerClearAllMessageContext.js";
|
|
19
20
|
import { TypeaheadItem } from "../Typeahead/TypeaheadItem.js";
|
|
20
21
|
import { Token } from "../Token/index.js";
|
|
21
22
|
import { Avatar } from "../Avatar/index.js";
|
|
@@ -769,6 +770,9 @@ export function PowerSearch({
|
|
|
769
770
|
// replay (which resets a flag and would speak the count present on mount
|
|
770
771
|
// unprompted) announces nothing until the count changes.
|
|
771
772
|
const announce = useAnnounce();
|
|
773
|
+
// PowerSearch words its Clear all as its record does; the field announces
|
|
774
|
+
// these words instead of Tokenizer's (component:Tokenizer AR7).
|
|
775
|
+
const clearAllMessage = useMemo(() => t('@astryx.powersearch.allFiltersRemoved'), [t]);
|
|
772
776
|
const announcedResultCountRef = useRef(resultCountText);
|
|
773
777
|
useEffect(() => {
|
|
774
778
|
if (resultCountText === announcedResultCountRef.current) {
|
|
@@ -799,36 +803,39 @@ export function PowerSearch({
|
|
|
799
803
|
children: [/*#__PURE__*/_jsx("div", {
|
|
800
804
|
ref: useMergedRefs(ref, popover.triggerRef),
|
|
801
805
|
...themeProps('power-search'),
|
|
802
|
-
children: /*#__PURE__*/_jsx(
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
806
|
+
children: /*#__PURE__*/_jsx(TokenizerClearAllMessageContext, {
|
|
807
|
+
value: clearAllMessage,
|
|
808
|
+
children: /*#__PURE__*/_jsx(Tokenizer, {
|
|
809
|
+
handleRef: tokenizerRef,
|
|
810
|
+
label: label,
|
|
811
|
+
isLabelHidden: isLabelHidden,
|
|
812
|
+
searchSource: searchSource,
|
|
813
|
+
value: tokenizerValue,
|
|
814
|
+
onChange: handleTokenizerChange,
|
|
815
|
+
renderToken: renderToken,
|
|
816
|
+
renderItem: renderItem,
|
|
817
|
+
maxMenuItems: MAX_BROWSE_MENU_ITEMS,
|
|
818
|
+
menuWidth: menuWidth,
|
|
819
|
+
placeholder: filters.length === 0 ? placeholder : '',
|
|
820
|
+
hasAutoFocus: hasAutoFocus,
|
|
821
|
+
hasClear: hasClear && !isReadOnly,
|
|
822
|
+
startIcon: startIcon,
|
|
823
|
+
endContent: combinedEndContent,
|
|
824
|
+
isDisabled: isDisabled,
|
|
825
|
+
disabledMessage: disabledMessage,
|
|
826
|
+
size: size,
|
|
827
|
+
tokenOverflowBehavior: tokenOverflowBehavior,
|
|
828
|
+
hasEntriesOnFocus: true,
|
|
829
|
+
debounceMs: 0,
|
|
830
|
+
status: status,
|
|
831
|
+
statusVariant: statusVariant,
|
|
832
|
+
onFocus: onFocus,
|
|
833
|
+
onBlur: onBlur,
|
|
834
|
+
containerXstyle: xstyle,
|
|
835
|
+
containerClassName: className,
|
|
836
|
+
containerStyle: style,
|
|
837
|
+
"data-testid": testId
|
|
838
|
+
})
|
|
832
839
|
})
|
|
833
840
|
}), popover.render(popoverContent, {
|
|
834
841
|
placement: 'below',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/Switch/Switch.tsx"],"names":[],"mappings":"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"}
|
package/dist/Switch/Switch.js
CHANGED
|
@@ -451,8 +451,12 @@ export function Switch({
|
|
|
451
451
|
labelSpacing: labelSpacing !== 'hug' ? labelSpacing : undefined
|
|
452
452
|
}), stylex.props(width != null && dynamicWidthStyles.width(width), xstyle), className, style),
|
|
453
453
|
...rest,
|
|
454
|
-
// Native `disabled` suppressed clicks on the switch
|
|
454
|
+
// Native `disabled` suppressed clicks and key events on the switch; the
|
|
455
|
+
// switch is no longer natively disabled, so withhold the caller's
|
|
456
|
+
// handlers while disabled (spec:AST-085 FR2).
|
|
455
457
|
onClick: isDisabled ? undefined : rest.onClick,
|
|
458
|
+
onKeyDown: isDisabled ? undefined : rest.onKeyDown,
|
|
459
|
+
onKeyUp: isDisabled ? undefined : rest.onKeyUp,
|
|
456
460
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
457
461
|
ref: el => {
|
|
458
462
|
// Interaction (hover/focus) listeners for the disabled-message
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -23,12 +23,13 @@
|
|
|
23
23
|
* - /apps/storybook/stories/Tokenizer.stories.tsx
|
|
24
24
|
* - /packages/cli/assets/templates/blocks/components/Tokenizer/ (showcase blocks)
|
|
25
25
|
*/
|
|
26
|
-
import React, { lazy, Suspense, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
26
|
+
import React, { lazy, Suspense, use, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
27
27
|
import * as stylex from '@stylexjs/stylex';
|
|
28
28
|
import { BusyIndicatorLaneProvider, createBusyIndicatorLane, useIsBusy } from "../Typeahead/busyIndicatorLane.js";
|
|
29
29
|
import { TrailingKeyDownContext } from "../Typeahead/trailingKeyDown.js";
|
|
30
30
|
import { useFieldInputStyling } from "../Field/fieldParts.js";
|
|
31
31
|
import { useMergedRefs } from "../hooks/useMergedRefs.js";
|
|
32
|
+
import { TokenizerClearAllMessageContext } from "./TokenizerClearAllMessageContext.js";
|
|
32
33
|
import { useBusyAnnouncement } from "../hooks/useBusyAnnouncement.js";
|
|
33
34
|
import { useAdaptivePresentation } from "../hooks/useAdaptivePresentation.js";
|
|
34
35
|
import { useIsHydrating } from "../hooks/useIsHydrating.js";
|
|
@@ -832,7 +833,10 @@ export function Tokenizer({
|
|
|
832
833
|
}, [value, onChange, isDisabled, announce, t]);
|
|
833
834
|
|
|
834
835
|
// Handle clearing all items
|
|
835
|
-
|
|
836
|
+
// A composing component that words its own Clear all (PowerSearch) provides
|
|
837
|
+
// its words; otherwise the field's own (component:Tokenizer AR7).
|
|
838
|
+
const clearAllMessage = use(TokenizerClearAllMessageContext) ?? t('@astryx.tokenizer.allRemoved');
|
|
839
|
+
const handleClearAll = useCallback(options => {
|
|
836
840
|
if (isDisabled || value.length === 0) {
|
|
837
841
|
return;
|
|
838
842
|
}
|
|
@@ -842,8 +846,13 @@ export function Tokenizer({
|
|
|
842
846
|
item: lastItem,
|
|
843
847
|
type: 'remove'
|
|
844
848
|
});
|
|
849
|
+
// Focus moves to the input, so the emptied selection is announced, in
|
|
850
|
+
// the sheet's words (WCAG 4.1.3). The sheet announces its own Clear all.
|
|
851
|
+
if (!options?.silent) {
|
|
852
|
+
announce(clearAllMessage);
|
|
853
|
+
}
|
|
845
854
|
inputRef.current?.focus();
|
|
846
|
-
}, [value, onChange, isDisabled]);
|
|
855
|
+
}, [value, onChange, isDisabled, announce, clearAllMessage]);
|
|
847
856
|
|
|
848
857
|
// Handle backspace on empty input — remove last token
|
|
849
858
|
const handleKeyDown = useCallback(e => {
|
|
@@ -1149,7 +1158,9 @@ export function Tokenizer({
|
|
|
1149
1158
|
emptySearchText: emptySearchText,
|
|
1150
1159
|
onAdd: handleAdd,
|
|
1151
1160
|
onRemove: handleRemove,
|
|
1152
|
-
onClearAll: handleClearAll
|
|
1161
|
+
onClearAll: () => handleClearAll({
|
|
1162
|
+
silent: true
|
|
1163
|
+
}),
|
|
1153
1164
|
onChangeQuery: handleSheetQueryChange
|
|
1154
1165
|
})]
|
|
1155
1166
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenizerClearAllMessageContext.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/TokenizerClearAllMessageContext.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,+BAA+B,wCAE3C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file TokenizerClearAllMessageContext.ts
|
|
7
|
+
* @input None
|
|
8
|
+
* @output A context carrying the words a composing component announces for
|
|
9
|
+
* the field's Clear all
|
|
10
|
+
* @position Internal to Core: not exported from the Tokenizer barrel. A
|
|
11
|
+
* component that composes Tokenizer and words its own Clear all (PowerSearch:
|
|
12
|
+
* "All filters removed") provides it; Tokenizer otherwise announces its own
|
|
13
|
+
* words (component:Tokenizer AR7).
|
|
14
|
+
*/
|
|
15
|
+
import { createContext } from 'react';
|
|
16
|
+
export const TokenizerClearAllMessageContext = /*#__PURE__*/createContext(null);
|
|
17
|
+
TokenizerClearAllMessageContext.displayName = 'TokenizerClearAllMessageContext';
|
|
@@ -86,10 +86,10 @@ export interface BaseTypeaheadProps<T extends SearchableItem> extends Omit<BaseP
|
|
|
86
86
|
* When disabled with a reason, keeps the input focusable via `aria-disabled`
|
|
87
87
|
* (instead of the native `disabled` attribute) and `readOnly` so an
|
|
88
88
|
* associated disabled-reason tooltip stays discoverable by keyboard and
|
|
89
|
-
* assistive technology. Query and text mutation
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* wrapper.
|
|
89
|
+
* assistive technology. Query and text mutation, opening the list, and a
|
|
90
|
+
* pick by Enter or a press are blocked, also from a list that was open
|
|
91
|
+
* before this state applied; Escape or Tab still closes it. Consumers
|
|
92
|
+
* (Typeahead) own the tooltip and wrapper.
|
|
93
93
|
* @default false
|
|
94
94
|
*/
|
|
95
95
|
isFocusableDisabled?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseTypeahead.d.ts","sourceRoot":"","sources":["../../src/Typeahead/BaseTypeahead.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AA2BnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAY1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACxE,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAEtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE/D;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAoKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"BaseTypeahead.d.ts","sourceRoot":"","sources":["../../src/Typeahead/BaseTypeahead.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AA2BnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAY1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACxE,SAAS,CAAC,WAAW,CAAC,EACtB,UAAU,CACX;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEhB;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAEtD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAE/D;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAoKD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,EAi7BrB,CAAC,CAAC,SAAS,cAAc,EAC5B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,KACzB,KAAK,CAAC,YAAY,CAAC"}
|
|
@@ -397,9 +397,22 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
397
397
|
// Show the layer, deferring past the active click if a pointer is down.
|
|
398
398
|
// Without this, popover="auto" light-dismiss immediately closes the
|
|
399
399
|
// dropdown when it opens between pointerdown and pointerup/click.
|
|
400
|
+
// Read at show time, so a search or bootstrap that settles after the field
|
|
401
|
+
// became disabled does not open the list (spec:AST-085 FR2).
|
|
402
|
+
const isDisabledRef = useRef(isDisabled);
|
|
403
|
+
useIsomorphicLayoutEffect(() => {
|
|
404
|
+
isDisabledRef.current = isDisabled;
|
|
405
|
+
}, [isDisabled]);
|
|
400
406
|
const showLayer = useCallback(() => {
|
|
407
|
+
if (isDisabledRef.current) {
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
401
410
|
if (pointerActiveRef.current) {
|
|
402
|
-
document.addEventListener('click', () => requestAnimationFrame(() =>
|
|
411
|
+
document.addEventListener('click', () => requestAnimationFrame(() => {
|
|
412
|
+
if (!isDisabledRef.current) {
|
|
413
|
+
popover.show();
|
|
414
|
+
}
|
|
415
|
+
}), {
|
|
403
416
|
once: true
|
|
404
417
|
});
|
|
405
418
|
} else {
|
|
@@ -574,6 +587,11 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
574
587
|
|
|
575
588
|
// Handle item selection
|
|
576
589
|
const handleSelect = useCallback(item => {
|
|
590
|
+
// A disabled field changes nothing, also from a list that was open
|
|
591
|
+
// before it became disabled (spec:AST-085 FR2).
|
|
592
|
+
if (isDisabled) {
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
577
595
|
// Bump generation to invalidate any in-flight async searches
|
|
578
596
|
searchGenRef.current++;
|
|
579
597
|
if (searchTimeoutRef.current) {
|
|
@@ -591,7 +609,7 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
591
609
|
setLoading(false);
|
|
592
610
|
popover.hide();
|
|
593
611
|
inputRef.current?.focus();
|
|
594
|
-
}, [onChange, popover, searchSource, setLoading]);
|
|
612
|
+
}, [isDisabled, onChange, popover, searchSource, setLoading]);
|
|
595
613
|
|
|
596
614
|
// Shared by handleFocus and handleClick: bootstrap entries if none are
|
|
597
615
|
// loaded yet, or re-show cached results that haven't been invalidated by
|
|
@@ -625,7 +643,7 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
625
643
|
// dropdown never reopens until the user clicks away and back (#6845). See
|
|
626
644
|
// wasAlreadyFocusedRef above for how the two cases are told apart.
|
|
627
645
|
const handleClick = useCallback(() => {
|
|
628
|
-
if (!wasAlreadyFocusedRef.current || popover.isOpen) {
|
|
646
|
+
if (isDisabled || !wasAlreadyFocusedRef.current || popover.isOpen) {
|
|
629
647
|
return;
|
|
630
648
|
}
|
|
631
649
|
if (hasEntriesOnFocus && query.length === 0 && resultsGenRef.current !== searchGenRef.current) {
|
|
@@ -633,7 +651,7 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
633
651
|
return;
|
|
634
652
|
}
|
|
635
653
|
openIfEligible();
|
|
636
|
-
}, [popover.isOpen, hasEntriesOnFocus, query.length, performBootstrap, openIfEligible]);
|
|
654
|
+
}, [isDisabled, popover.isOpen, hasEntriesOnFocus, query.length, performBootstrap, openIfEligible]);
|
|
637
655
|
|
|
638
656
|
// Handle blur — close the dropdown when focus leaves the input for an
|
|
639
657
|
// element that is neither inside the field wrapper (anchor) nor inside the
|
|
@@ -676,6 +694,24 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
676
694
|
if (isImeKeyEvent(e.nativeEvent)) {
|
|
677
695
|
return;
|
|
678
696
|
}
|
|
697
|
+
|
|
698
|
+
// A focusable-disabled field opens no list and picks nothing; it only
|
|
699
|
+
// lets a list that was open before it became disabled close
|
|
700
|
+
// (spec:AST-085 FR2).
|
|
701
|
+
if (isDisabled) {
|
|
702
|
+
// Enter on a list that is still open picks nothing, and must not
|
|
703
|
+
// submit an enclosing form either, as it would not while enabled.
|
|
704
|
+
if (popover.isOpen && e.key === 'Enter') {
|
|
705
|
+
e.preventDefault();
|
|
706
|
+
}
|
|
707
|
+
if (popover.isOpen && (e.key === 'Escape' || e.key === 'Tab')) {
|
|
708
|
+
if (e.key === 'Escape') {
|
|
709
|
+
e.preventDefault();
|
|
710
|
+
}
|
|
711
|
+
popover.hide();
|
|
712
|
+
}
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
679
715
|
if (!popover.isOpen) {
|
|
680
716
|
if (e.key === 'ArrowDown' && (hasEntriesOnFocus || query.length > 0)) {
|
|
681
717
|
e.preventDefault();
|
|
@@ -740,7 +776,7 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
740
776
|
}
|
|
741
777
|
break;
|
|
742
778
|
}
|
|
743
|
-
}, [popover, results, highlightedIndex, handleSelect, hasEntriesOnFocus, query, minQueryLength, performBootstrap, externalOnKeyDown]);
|
|
779
|
+
}, [isDisabled, popover, results, highlightedIndex, handleSelect, hasEntriesOnFocus, query, minQueryLength, performBootstrap, externalOnKeyDown]);
|
|
744
780
|
|
|
745
781
|
// Generate item ID for accessibility
|
|
746
782
|
const getItemId = useCallback(index => `${listboxId}-option-${index}`, [listboxId]);
|
|
@@ -805,8 +841,8 @@ export const BaseTypeahead = function BaseTypeahead({
|
|
|
805
841
|
placeholder: placeholder
|
|
806
842
|
// When a disabled-reason tooltip is shown the input keeps focusability
|
|
807
843
|
// via aria-disabled + readOnly instead of the native disabled
|
|
808
|
-
// attribute. Query and text mutation
|
|
809
|
-
//
|
|
844
|
+
// attribute. Query and text mutation, opening and picking are blocked
|
|
845
|
+
// by the handlers above (spec:AST-085 FR2).
|
|
810
846
|
,
|
|
811
847
|
disabled: isDisabled && !isFocusableDisabled,
|
|
812
848
|
readOnly: isFocusableDisabled || undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/en.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"en.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/en.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0mBpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -288,6 +288,7 @@ const runtimeCatalog = {
|
|
|
288
288
|
'@astryx.outline.label': 'Table of contents',
|
|
289
289
|
'@astryx.powersearch.label': 'Search',
|
|
290
290
|
'@astryx.powersearch.placeholder': 'Search…',
|
|
291
|
+
'@astryx.powersearch.allFiltersRemoved': 'All filters removed',
|
|
291
292
|
'@astryx.resizable.collapsed': 'Collapsed',
|
|
292
293
|
'@astryx.resizable.handle.label': 'Resize handle',
|
|
293
294
|
'@astryx.selector.placeholder': 'Select…',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pseudo.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/pseudo.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"pseudo.generated.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated-locales/pseudo.generated.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,QAAA,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqnBpD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -288,6 +288,7 @@ const runtimeCatalog = {
|
|
|
288
288
|
'@astryx.outline.label': '⟦Ţàƀłé óƒ çóñţéñţš⟧',
|
|
289
289
|
'@astryx.powersearch.label': '⟦Šéàřçĥ⟧',
|
|
290
290
|
'@astryx.powersearch.placeholder': '⟦Šéàřçĥ…⟧',
|
|
291
|
+
'@astryx.powersearch.allFiltersRemoved': '⟦Àłł ƒíłţéřš řéɱóṽéð⟧',
|
|
291
292
|
'@astryx.resizable.collapsed': '⟦Çółłàþšéð⟧',
|
|
292
293
|
'@astryx.resizable.handle.label': '⟦Řéšížé ĥàñðłé⟧',
|
|
293
294
|
'@astryx.selector.placeholder': '⟦Šéłéçţ…⟧',
|
package/locales/en.json
CHANGED
|
@@ -1123,6 +1123,10 @@
|
|
|
1123
1123
|
"defaultMessage": "Search…",
|
|
1124
1124
|
"description": "Grey placeholder text inside the empty PowerSearch input. Imperative verb; trailing `…` is one character."
|
|
1125
1125
|
},
|
|
1126
|
+
"@astryx.powersearch.allFiltersRemoved": {
|
|
1127
|
+
"defaultMessage": "All filters removed",
|
|
1128
|
+
"description": "Screen-reader announcement after a PowerSearch field's Clear all removes every filter. Distinct from @astryx.tokenizer.allRemoved: PowerSearch words its items as filters."
|
|
1129
|
+
},
|
|
1126
1130
|
"@astryx.resizable.collapsed": {
|
|
1127
1131
|
"defaultMessage": "Collapsed",
|
|
1128
1132
|
"description": "aria-valuetext for the Resizable drag handle (role=separator) while its panel is collapsed to zero size. Replaces the numeric value announcement, since the numeric value is clamped to the minimum while collapsed. Adjective describing the panel state, not a verb/command."
|
|
@@ -1741,7 +1745,7 @@
|
|
|
1741
1745
|
},
|
|
1742
1746
|
"@astryx.tokenizer.allRemoved": {
|
|
1743
1747
|
"defaultMessage": "All items removed",
|
|
1744
|
-
"description": "Polite screen-reader announcement after a
|
|
1748
|
+
"description": "Polite screen-reader announcement after a Tokenizer's Clear all has removed every selected item: the inline Clear all button, or a confirmed Clear all in the bottom sheet. Live-region text, never shown on screen."
|
|
1745
1749
|
},
|
|
1746
1750
|
"@astryx.tokenizer.selectedCount": {
|
|
1747
1751
|
"defaultMessage": "{count, number} selected",
|
package/locales/pseudo.json
CHANGED
|
@@ -842,6 +842,9 @@
|
|
|
842
842
|
"@astryx.powersearch.placeholder": {
|
|
843
843
|
"defaultMessage": "⟦Šéàřçĥ…⟧"
|
|
844
844
|
},
|
|
845
|
+
"@astryx.powersearch.allFiltersRemoved": {
|
|
846
|
+
"defaultMessage": "⟦Àłł ƒíłţéřš řéɱóṽéð⟧"
|
|
847
|
+
},
|
|
845
848
|
"@astryx.resizable.collapsed": {
|
|
846
849
|
"defaultMessage": "⟦Çółłàþšéð⟧"
|
|
847
850
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/core",
|
|
3
|
-
"version": "0.7.6-canary.
|
|
3
|
+
"version": "0.7.6-canary.eecd9c1",
|
|
4
4
|
"displayName": "Astryx Core",
|
|
5
5
|
"description": "The component library. Accessible, themeable React components with built-in spacing, dark mode, and StyleX styling.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -847,9 +847,9 @@
|
|
|
847
847
|
"react-dom": ">=19.0.0"
|
|
848
848
|
},
|
|
849
849
|
"devDependencies": {
|
|
850
|
-
"@astryxdesign/a11y-spec": "0.7.6-canary.
|
|
851
|
-
"@astryxdesign/cli": "0.7.6-canary.
|
|
852
|
-
"@astryxdesign/interaction-harness": "0.7.6-canary.
|
|
850
|
+
"@astryxdesign/a11y-spec": "0.7.6-canary.eecd9c1",
|
|
851
|
+
"@astryxdesign/cli": "0.7.6-canary.eecd9c1",
|
|
852
|
+
"@astryxdesign/interaction-harness": "0.7.6-canary.eecd9c1",
|
|
853
853
|
"@babel/cli": "^7.29.7",
|
|
854
854
|
"@babel/core": "^7.29.7",
|
|
855
855
|
"@babel/preset-react": "^7.29.7",
|
|
@@ -39,9 +39,24 @@ async function mount(
|
|
|
39
39
|
);
|
|
40
40
|
await expect(copyButton(page)).toBeVisible();
|
|
41
41
|
if (Object.keys(args).length > 0) {
|
|
42
|
+
// Measure only the story as these args render it. Storybook emits
|
|
43
|
+
// `storyRendered` for the story's own first render too, shortly after it
|
|
44
|
+
// is visible, so the update waits for that render to finish first; the
|
|
45
|
+
// `storyRendered` it then waits for is the re-render with the args, and a
|
|
46
|
+
// re-render that never comes fails here instead of being measured. Each
|
|
47
|
+
// arg the cases pass is also checked in the page, so a slow runner can
|
|
48
|
+
// never measure the default story in its place.
|
|
49
|
+
await page.waitForFunction(
|
|
50
|
+
() =>
|
|
51
|
+
(
|
|
52
|
+
window as unknown as {
|
|
53
|
+
__STORYBOOK_PREVIEW__?: {currentRender?: {phase?: string}};
|
|
54
|
+
}
|
|
55
|
+
).__STORYBOOK_PREVIEW__?.currentRender?.phase === 'finished',
|
|
56
|
+
);
|
|
42
57
|
await page.evaluate(
|
|
43
58
|
async ({storyId, updatedArgs}) =>
|
|
44
|
-
new Promise<void>(resolve => {
|
|
59
|
+
new Promise<void>((resolve, reject) => {
|
|
45
60
|
const channel = (
|
|
46
61
|
window as unknown as {
|
|
47
62
|
__STORYBOOK_ADDONS_CHANNEL__: {
|
|
@@ -50,12 +65,32 @@ async function mount(
|
|
|
50
65
|
};
|
|
51
66
|
}
|
|
52
67
|
).__STORYBOOK_ADDONS_CHANNEL__;
|
|
53
|
-
|
|
68
|
+
const timer = setTimeout(
|
|
69
|
+
() =>
|
|
70
|
+
reject(new Error('the story did not re-render with its args')),
|
|
71
|
+
20_000,
|
|
72
|
+
);
|
|
73
|
+
channel.once('storyRendered', () => {
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
resolve();
|
|
76
|
+
});
|
|
54
77
|
channel.emit('updateStoryArgs', {storyId, updatedArgs});
|
|
55
|
-
setTimeout(resolve, 1500);
|
|
56
78
|
}),
|
|
57
79
|
{storyId: STORY, updatedArgs: args},
|
|
58
80
|
);
|
|
81
|
+
if (typeof args.code === 'string') {
|
|
82
|
+
await expect(
|
|
83
|
+
page.locator('pre.astryx-code-block [data-line]'),
|
|
84
|
+
).toHaveCount(args.code.split('\n').length);
|
|
85
|
+
}
|
|
86
|
+
if (typeof args.title === 'string') {
|
|
87
|
+
await expect(page.getByText(args.title, {exact: true})).toBeVisible();
|
|
88
|
+
}
|
|
89
|
+
if (args.isWrapped === true) {
|
|
90
|
+
await expect(
|
|
91
|
+
page.locator('pre.astryx-code-block [data-line="1"]'),
|
|
92
|
+
).toHaveCSS('white-space', 'pre-wrap');
|
|
93
|
+
}
|
|
59
94
|
}
|
|
60
95
|
}
|
|
61
96
|
|