@stapel/search-react 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/README.md +19 -2
- package/dist/default/FacetGroupControl.d.ts +13 -0
- package/dist/default/FacetGroupControl.d.ts.map +1 -1
- package/dist/default/FacetGroupControl.js +33 -2
- package/dist/default/FacetGroupControl.js.map +1 -1
- package/dist/default/FacetPanelPane.d.ts.map +1 -1
- package/dist/default/FacetPanelPane.js +6 -2
- package/dist/default/FacetPanelPane.js.map +1 -1
- package/dist/default/PartitionChips.d.ts.map +1 -1
- package/dist/default/PartitionChips.js +83 -2
- package/dist/default/PartitionChips.js.map +1 -1
- package/dist/default/SearchResultsPane.d.ts +5 -5
- package/dist/default/SearchResultsPane.d.ts.map +1 -1
- package/dist/default/SearchResultsPane.js +51 -9
- package/dist/default/SearchResultsPane.js.map +1 -1
- package/dist/headless/FacetPanel.d.ts +11 -0
- package/dist/headless/FacetPanel.d.ts.map +1 -1
- package/dist/headless/FacetPanel.js +20 -1
- package/dist/headless/FacetPanel.js.map +1 -1
- package/llms.txt +1 -1
- package/manifest.json +1 -1
- package/nav-manifest.json +1 -1
- package/package.json +7 -7
- package/src/analytics/generated/events.json +1 -1
- package/src/default/FacetGroupControl.tsx +52 -1
- package/src/default/FacetPanelPane.tsx +18 -1
- package/src/default/PartitionChips.tsx +86 -1
- package/src/default/SearchResultsPane.tsx +74 -25
- package/src/headless/FacetPanel.tsx +31 -1
|
@@ -88,11 +88,11 @@ export declare const RESULTS_MAX_WIDTH = 1400;
|
|
|
88
88
|
* pane's own breakpoint restated in a media query — three rules aimed at a
|
|
89
89
|
* shape the pane could change under them at any release.
|
|
90
90
|
*
|
|
91
|
-
* It is the same class in BOTH header shapes, and in both it names
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
91
|
+
* It is the same class in BOTH header shapes, and in both it names THE SAME
|
|
92
|
+
* THING: the controls' own line, and never the heading beside it (D452). The
|
|
93
|
+
* compact shape always drew it that way; the wide shape did not, and pinning a
|
|
94
|
+
* block that carried the `<h1>` pinned 100px of chrome at 1440 and 150px at
|
|
95
|
+
* 1280 — see `WIDE_HEADING_ROW`.
|
|
96
96
|
*/
|
|
97
97
|
export declare const RESULTS_TOOLBAR_CLASS = "stapel-search-results-toolbar";
|
|
98
98
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultsPane.d.ts","sourceRoot":"","sources":["../../src/default/SearchResultsPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQlD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,KAAK,EAAE,SAAS,UAAU,EAAE,KACzB,SAAS,CAAC;AAEf;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,EAAE,SAAS,KACf,SAAS,CAAC;AAEf;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"SearchResultsPane.d.ts","sourceRoot":"","sources":["../../src/default/SearchResultsPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,11 +40,11 @@ export const RESULTS_MAX_WIDTH = 1400;
|
|
|
40
40
|
* pane's own breakpoint restated in a media query — three rules aimed at a
|
|
41
41
|
* shape the pane could change under them at any release.
|
|
42
42
|
*
|
|
43
|
-
* It is the same class in BOTH header shapes, and in both it names
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
43
|
+
* It is the same class in BOTH header shapes, and in both it names THE SAME
|
|
44
|
+
* THING: the controls' own line, and never the heading beside it (D452). The
|
|
45
|
+
* compact shape always drew it that way; the wide shape did not, and pinning a
|
|
46
|
+
* block that carried the `<h1>` pinned 100px of chrome at 1440 and 150px at
|
|
47
|
+
* 1280 — see `WIDE_HEADING_ROW`.
|
|
48
48
|
*/
|
|
49
49
|
export const RESULTS_TOOLBAR_CLASS = "stapel-search-results-toolbar";
|
|
50
50
|
/**
|
|
@@ -79,6 +79,46 @@ const TOOLBAR_ROW = {
|
|
|
79
79
|
* becomes the column's rather than the stack's.
|
|
80
80
|
*/
|
|
81
81
|
const COMPACT_STACK = { display: "contents" };
|
|
82
|
+
/**
|
|
83
|
+
* The WIDE shape's heading row — a row of its own, at the results column's
|
|
84
|
+
* full measure (D452).
|
|
85
|
+
*
|
|
86
|
+
* The heading used to be the leading flex item of the block that pins, with
|
|
87
|
+
* the controls as the trailing one. Two things followed, and both were
|
|
88
|
+
* measured on the stand:
|
|
89
|
+
*
|
|
90
|
+
* - the controls row is `nowrap` and holds a count, a sort select, a page
|
|
91
|
+
* size and a view switch, so it took whatever width it needed and left the
|
|
92
|
+
* heading **415px** of a 1200px column. An `<h1>` at 42px (50 at 1280) then
|
|
93
|
+
* wrapped to TWO LINES;
|
|
94
|
+
* - those two lines were inside the pinned box, so what stood under the
|
|
95
|
+
* header while the feed scrolled was **100px** of chrome at 1440 and
|
|
96
|
+
* **150px** at 1280 — a third of the fold on a laptop.
|
|
97
|
+
*
|
|
98
|
+
* Nothing about the heading belongs in a pinned bar: it names the page once,
|
|
99
|
+
* it is read once, and it is the one element on the page whose length the pair
|
|
100
|
+
* does not control (`resultsHeading` is the host's sentence — "Buy a
|
|
101
|
+
* Samsung Galaxy S23 in Kazan"). So it takes its own line at the full width,
|
|
102
|
+
* where it has room not to wrap, and the pin acts on the controls alone —
|
|
103
|
+
* which is what `header="compact"` already did.
|
|
104
|
+
*
|
|
105
|
+
* `100%` is DECLARED rather than left to the column's `align-items: stretch`:
|
|
106
|
+
* the row is what a host reads to know the heading is not in the pinned box,
|
|
107
|
+
* and a width that only happens to be full is not a contract.
|
|
108
|
+
*/
|
|
109
|
+
const WIDE_HEADING_ROW = { inlineSize: "100%", minInlineSize: 0 };
|
|
110
|
+
/** The wide heading itself: no margin of its own — the column's gap is the
|
|
111
|
+
* rhythm — and free to shrink inside its row rather than forcing it wider. */
|
|
112
|
+
const WIDE_HEADING = { margin: 0, minInlineSize: 0 };
|
|
113
|
+
/**
|
|
114
|
+
* The wide row's trailing group — the surface's controls.
|
|
115
|
+
*
|
|
116
|
+
* `flex: 0 0 auto`: the count on the leading end is the elastic half (it is
|
|
117
|
+
* one short string and it arrives late), and the controls keep every pixel
|
|
118
|
+
* they need. Both ends shrinking is how a sort select ends up narrower than
|
|
119
|
+
* its own longest option.
|
|
120
|
+
*/
|
|
121
|
+
const TOOLBAR_END = { flex: "0 0 auto" };
|
|
82
122
|
/** The compact shape's toolbar box — the row the pin acts on. */
|
|
83
123
|
const COMPACT_TOOLBAR = {
|
|
84
124
|
display: "flex",
|
|
@@ -283,10 +323,12 @@ export function SearchResultsPane(props) {
|
|
|
283
323
|
items of the results COLUMN, so the toolbar between them has a
|
|
284
324
|
parent as tall as the feed to travel in. */
|
|
285
325
|
_jsxs(Flex, { vertical: true, gap: spacing[2], style: COMPACT_STACK, "data-testid": "search-results-header-compact", children: [_jsx(Typography.Title, { level: props.headingLevel ?? 4, style: compactHeadingSeen ? { margin: 0 } : visuallyHidden, "data-testid": "search-results-heading", "data-heading": compactHeadingSeen ? "seen" : "hidden", children: props.heading ?? t(SEARCH_I18N_KEYS.resultsTitle) }), _jsx("div", { className: RESULTS_TOOLBAR_CLASS, "data-testid": "search-results-toolbar", style: { ...COMPACT_TOOLBAR, ...toolbarPin }, children: props.toolbar }), _jsx(Count, { bag: bag })] })) : (
|
|
286
|
-
/*
|
|
287
|
-
|
|
288
|
-
direct
|
|
289
|
-
|
|
326
|
+
/* D452 — the heading is its OWN row, at the column's full width,
|
|
327
|
+
and the row that pins is the controls. See `WIDE_HEADING_ROW`.
|
|
328
|
+
Both are direct children of the results column: the toolbar
|
|
329
|
+
has a parent as tall as the feed to travel in, and the heading
|
|
330
|
+
has the whole measure to set its line in. */
|
|
331
|
+
_jsxs(_Fragment, { children: [_jsx("div", { style: WIDE_HEADING_ROW, "data-testid": "search-results-heading-row", children: _jsx(Typography.Title, { level: props.headingLevel ?? 4, style: WIDE_HEADING, "data-testid": "search-results-heading", children: props.heading ?? t(SEARCH_I18N_KEYS.resultsTitle) }) }), _jsxs(Flex, { justify: "space-between", align: "center", gap: spacing[3], className: RESULTS_TOOLBAR_CLASS, "data-testid": "search-results-toolbar", style: { ...TOOLBAR_ROW, ...toolbarPin }, children: [_jsx(Count, { bag: bag }), _jsx(Flex, { align: "center", gap: spacing[3], style: TOOLBAR_END, children: props.toolbar })] })] })), _jsx(DegradationNotice, { degradations: bag.degradations, variant: props.degradationNotice ?? "banner", scorerName: scorerName }), props.otherCategories === true && (_jsx(OtherCategoriesLine, { ...(props.enabled !== undefined ? { enabled: props.enabled } : {}), ...(props.categoryName !== undefined
|
|
290
332
|
? { categoryName: props.categoryName }
|
|
291
333
|
: {}), ...(props.categoryHref !== undefined
|
|
292
334
|
? { categoryHref: props.categoryHref }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResultsPane.js","sourceRoot":"","sources":["../../src/default/SearchResultsPane.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SearchResultsPane.js","sourceRoot":"","sources":["../../src/default/SearchResultsPane.tsx"],"names":[],"mappings":";AA2BA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAuCzD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAC;AAarE;;;;;;;;;GASG;AACH,MAAM,WAAW,GAAkB;IACjC,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM;IACjB,4EAA4E;IAC5E,4EAA4E;IAC5E,yCAAyC;IACzC,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,aAAa,GAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,gBAAgB,GAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAEjF;8EAC8E;AAC9E,MAAM,YAAY,GAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,WAAW,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAExD,iEAAiE;AACjE,MAAM,eAAe,GAAkB;IACrC,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,GAAG,WAAW;CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,GAAiC;IACxD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACjB,yEAAyE;QACzE,mDAAmD;QACnD,MAAM,EAAE,CAAC;QACT,uEAAuE;QACvE,0EAA0E;QAC1E,8CAA8C;QAC9C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uCAAuC,CAAC;AAEjF,MAAM,YAAY,GAAkB;IAClC,OAAO,EAAE,MAAM;IACf,mBAAmB,EAAE,yBAAyB;IAC9C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACf,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,0BAA0B,GAAkB;IAChD,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACf,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAkB;IAClC,GAAG,YAAY;IACf,mBAAmB,EAAE,KAAK;CAC3B,CAAC;AAcF,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAC;AACrE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,0BAA0B,GAAG,+BAA+B,CAAC;AAE1E;+EAC+E;AAC/E,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAuB;IACvD,MAAM,KAAK,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,GAAG,KAAK,0BAA0B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;IACpE,CAAC;IACD,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,KAAK,GAAG;QACZ,GAAG,KAAK,8BAA8B;QACtC,GAAG,KAAK,0BACN,OAAO,CAAC,KAAK,KAAK,SAAS;YACzB,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAChC,GAAG;KACJ,CAAC;IACF,KAAK,MAAM,IAAI,IAAI;QACjB,EAAE,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;QACjD,EAAE,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;KACpD,EAAE,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS;QACvC,KAAK,CAAC,IAAI,CACR,0BAA0B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;YAC5C,IAAI,KAAK,0BAA0B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAoOD,SAAS,KAAK,CAAC,KAAgC;IAC7C,uEAAuE;IACvE,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,0EAA0E;IAC1E,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,CACL,KAAC,UAAU,CAAC,IAAI,IACd,IAAI,EAAC,WAAW,iBACJ,cAAc,qBACT,IAAI,CAAC,SAAS,YAE9B,IAAI,CAAC,SAAS,KAAK,UAAU;YAC5B,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YACtE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GACtD,CACnB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,KAAgC;IAC7C,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;IACvD,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,CACL,MAAC,IAAI,IAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAC,QAAQ,EAAC,IAAI,uBAAa,cAAc,aACrE,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAC,aAAa,oBACL,MAAM,2BACC,0CAA0C,YAE/D,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,GACpB,EACd,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAC,aAAa,oBACL,MAAM,2BACC,0CAA0C,YAE/D,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,GACpB,IACT,CACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACzD,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IACnF,4EAA4E;IAC5E,4DAA4D;IAC5D,yEAAyE;IACzE,kEAAkE;IAClE,MAAM,kBAAkB,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;IAC/E,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACpD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC;;;;;;;;;OASG;IACH,MAAM,SAAS,GACb,KAAK,CAAC,MAAM,KAAK,MAAM;QACrB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,WAAW,KAAK,IAAI;YACpB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACjC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACvE,CAAC,CAAC,0BAA0B,CAAC;IAErC,OAAO,CACL,KAAC,SAAS,IACR,OAAO,EAAC,MAAM,KACV,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1D,KAAK,EAAE;YACL,KAAK,EAAE,MAAM;YACb,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,YAED,KAAC,aAAa,OAAK,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAC/E,CAAC,GAAG,EAAE,EAAE,CAAC,CACR,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,aAC3B,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAC3B,6BAAiB,qBAAqB,YAAE,KAAK,CAAC,IAAI,GAAO,CAC1D,EACA,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;oBAC5B;;kEAE8C;oBAC9C,MAAC,IAAI,IACH,QAAQ,QACR,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,aAAa,iBACR,+BAA+B,aAE3C,KAAC,UAAU,CAAC,KAAK,IACf,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAC9B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,iBAC9C,wBAAwB,kBACtB,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,YAEnD,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,GACjC,EACnB,cACE,SAAS,EAAE,qBAAqB,iBACpB,wBAAwB,EACpC,KAAK,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,UAAU,EAAE,YAE3C,KAAK,CAAC,OAAO,GACV,EACN,KAAC,KAAK,IAAC,GAAG,EAAE,GAAG,GAAI,IACd,CACR,CAAC,CAAC,CAAC;oBACF;;;;mEAI+C;oBAC/C,8BACE,cAAK,KAAK,EAAE,gBAAgB,iBAAc,4BAA4B,YACpE,KAAC,UAAU,CAAC,KAAK,IACf,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAC9B,KAAK,EAAE,YAAY,iBACP,wBAAwB,YAEnC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,GACjC,GACf,EACN,MAAC,IAAI,IACH,OAAO,EAAC,eAAe,EACvB,KAAK,EAAC,QAAQ,EACd,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EACf,SAAS,EAAE,qBAAqB,iBACpB,wBAAwB,EACpC,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,UAAU,EAAE,aAExC,KAAC,KAAK,IAAC,GAAG,EAAE,GAAG,GAAI,EACnB,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,YACrD,KAAK,CAAC,OAAO,GACT,IACF,IACN,CACJ,EAED,KAAC,iBAAiB,IAChB,YAAY,EAAE,GAAG,CAAC,YAAY,EAC9B,OAAO,EAAE,KAAK,CAAC,iBAAiB,IAAI,QAAQ,EAC5C,UAAU,EAAE,UAAU,GACtB,EAKD,KAAK,CAAC,eAAe,KAAK,IAAI,IAAI,CACjC,KAAC,mBAAmB,OACd,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC/D,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;4BACnC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;4BACtC,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;4BACnC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;4BACtC,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS;4BAC3C,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE;4BACtD,CAAC,CAAC,EAAE,CAAC,GACP,CACH,EAED,KAAC,QAAQ,IACP,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,MAAM,EAAC,QAAQ,EACf,YAAY,EAAE,CAAC,EACf,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,KAAK,EACH,8BACE,KAAC,UAAU,IACT,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,EACvC,MAAM,EAAC,cAAc,GACrB,EAIF,KAAC,UAAU,OACL,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wCACvC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE;wCAC9C,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;wCACvC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,gBAAgB,EAAE;wCACzC,CAAC,CAAC,EAAE,CAAC,GACP,IACD,EAEL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;4BAChB,2DAA2D;4BAC3D,uDAAuD;4BACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,sBAAsB,CAAC;4BAC7D,OAAO,CACL,KAAC,UAAU,IACT,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,eAAe,EAC7D,MAAM,EAAE,KAAK,EACb,OAAO,EAAE,CAAC,CACR,QAAQ;oCACN,CAAC,CAAC,gBAAgB,CAAC,qBAAqB;oCACxC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CACvC,EACD,UAAU,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,GACpB,CACH,CAAC;wBACJ,CAAC,YAEA,CAAC,KAAK,EAAE,EAAE;4BACT,MAAM,WAAW,GACf,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC,CAAC,CAAC,CACF,eACE,KAAK,EAAE,SAAS,KAIZ,CAAC,WAAW,KAAK,IAAI;oCACvB,CAAC,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;oCACtC,CAAC,CAAC,EAAE,CAAC,iBACK,qBAAqB,iBACpB,KAAK,CAAC,MAAM,IAAI,MAAM,KAC/B,CAAC,WAAW,KAAK,IAAI;oCACvB,CAAC,CAAC;wCACE,cAAc,EACZ,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;4CAC/B,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;4CACvB,CAAC,CAAC,YAAY;qCACnB;oCACH,CAAC,CAAC,EAAE,CAAC,aAEN,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CACtB,gBACE,IAAI,EAAE,0BAA0B,EAChC,UAAU,EAAC,SAAS,YAEnB,WAAW,GACN,CACT,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE,CAAC,CAC/B,wBACG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,UAAU,CAAC,IAAI,CAAC,CACjB,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,GAAI,CACjC,IALO,IAAI,CAAC,GAAG,CAMZ,CACP,CAAC,IACE,CACP,CAAC;4BACJ,OAAO,CACL,6BAAiB,gBAAgB,YAC9B,WAAW,KAAK,SAAS;oCACxB,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;oCACjC,CAAC,CAAC,WAAW,GACX,CACP,CAAC;wBACJ,CAAC,GACQ,EAEX,KAAC,KAAK,IAAC,GAAG,EAAE,GAAG,GAAI,EAClB,KAAK,CAAC,MAAM,IACR,CACR,GACa,GACN,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -12,6 +12,17 @@ export interface FacetPanelBag {
|
|
|
12
12
|
* category) — it is NOT what a failed query looks like.
|
|
13
13
|
*/
|
|
14
14
|
readonly state: LoadState<readonly FacetGroup[]>;
|
|
15
|
+
/**
|
|
16
|
+
* The groups in hand belong to the PREVIOUS answer, and a newer one is in
|
|
17
|
+
* flight — `LoadReady.refreshing`, lifted out of the state so a skin can
|
|
18
|
+
* read it without narrowing the union first.
|
|
19
|
+
*
|
|
20
|
+
* A skin holds its geometry still while this is `true`: the axes are about
|
|
21
|
+
* to change, and a rail that resizes group by group as they arrive is the
|
|
22
|
+
* 0.0586 CLS a partition press measured (p43). It is never `true` on a
|
|
23
|
+
* first load — there is nothing to hold still then.
|
|
24
|
+
*/
|
|
25
|
+
readonly refreshing: boolean;
|
|
15
26
|
/**
|
|
16
27
|
* `true` when the counts came from a SAMPLE because the candidate set
|
|
17
28
|
* exceeded the backend's cap. The panel must say so — the spec makes this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPanel.d.ts","sourceRoot":"","sources":["../../src/headless/FacetPanel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FacetPanel.d.ts","sourceRoot":"","sources":["../../src/headless/FacetPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,23 @@ export function useFacetPanel(props = {}) {
|
|
|
58
58
|
const { state: searchState, setFilter, setRange, setRanges, clearAll, toggleFilter, activeFilters, } = useSearchState();
|
|
59
59
|
const t = useT();
|
|
60
60
|
const query = useSearchQuery(searchState, props.enabled !== undefined ? { enabled: props.enabled } : undefined);
|
|
61
|
-
|
|
61
|
+
/*
|
|
62
|
+
* KEEP THE PREVIOUS ANSWER, AND SAY SO (p43, CLS 0.0586 on a partition press).
|
|
63
|
+
*
|
|
64
|
+
* `useSearchQuery` already runs with `placeholderData: keepPreviousData`, so
|
|
65
|
+
* the data in hand during a key change is the previous answer's — the panel
|
|
66
|
+
* has been drawing it for three releases. What it could not do is TELL a skin
|
|
67
|
+
* that this is what it was doing, so the rail resized group by group as the
|
|
68
|
+
* new axis's facets landed: `facet-group-make` and `facet-group-model` moved
|
|
69
|
+
* their neighbours as their option counts changed under them.
|
|
70
|
+
*
|
|
71
|
+
* `keepPrevious` reads TanStack's own `isPlaceholderData` into
|
|
72
|
+
* `LoadReady.refreshing`, which every projection below carries across
|
|
73
|
+
* (`mapLoad`, and `useHostFacetLabels` through it). It is set on EVERY ready
|
|
74
|
+
* answer once asked for, `false` included, so a skin keying its DOM off it
|
|
75
|
+
* does not grow and drop a wrapper as the flag comes and goes.
|
|
76
|
+
*/
|
|
77
|
+
const envelope = loadStateFromQuery(query, { keepPrevious: true });
|
|
62
78
|
const meta = envelope.status === "ready" ? envelope.data.facet_meta : EMPTY_META;
|
|
63
79
|
const groups = mapLoad(envelope, (data) => buildFacetGroups({
|
|
64
80
|
facets: data.facets,
|
|
@@ -90,6 +106,9 @@ export function useFacetPanel(props = {}) {
|
|
|
90
106
|
const reservedRangeAxes = useRememberedRangeAxes(searchState.category);
|
|
91
107
|
return {
|
|
92
108
|
state: labelled,
|
|
109
|
+
// Read off the ANSWER's own state rather than off the projection, so a
|
|
110
|
+
// label pass that returns the groups untouched cannot lose it.
|
|
111
|
+
refreshing: envelope.status === "ready" && envelope.refreshing === true,
|
|
93
112
|
approximate: meta.approximate,
|
|
94
113
|
skipped: meta.skipped,
|
|
95
114
|
counted: meta.counted,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FacetPanel.js","sourceRoot":"","sources":["../../src/headless/FacetPanel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,GACf,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"FacetPanel.js","sourceRoot":"","sources":["../../src/headless/FacetPanel.tsx"],"names":[],"mappings":"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"}
|
package/llms.txt
CHANGED
package/manifest.json
CHANGED
package/nav-manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stapel/search-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "Headless React pair for stapel-search: a typed query client, TanStack Query hooks, and a URL-first state codec that makes a search shareable by construction (filters, ranges, geo, sort and the keyset cursor all live in the query string). Drill-down facets rendered with their remaining counts and with the server's own honesty flags — approximate, skipped, degraded — never swallowed; keyset pagination with the window refusal named; DSA Art. 26 `promoted` marking carried into every card slot and the P2B Art. 5 ranking disclosure exposed as data. Zero visual opinion in the main entry; an opt-in /default subpath ships the antd skin, and /router binds the codec to react-router's useSearchParams.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"limit": "14.5 KB"
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
"name": "default — the antd skin (query box + a typeahead that offers CATEGORY destinations with their live counts, filters incl. ranges/geo/category slots + the phone chip row with its leading category chip and the location summary row + the rail's evidence-ranked disclosure groups, panel search and sticky count/clear footer, results incl. the view switch, the card photo GALLERY as a SkinCarousel strip, the empty state's derived exits, ranking, the dictionary control for a vocabulary facet, the popular-values block, the partition row in both its chip and segmented variants, the select-style dictionary FIELD the desktop rail opens, the from/to pickers a bounded integer axis draws and the rail's own scrollbar sheet) must stay out of the main bundle. Raised 24.5 → 25.5 KB for those four controls, then 25.5 → 26.25 KB for the chip row's APPLIED mode — one chip per applied value and per numeric bound, each removing that one constraint beside a rail that is already on screen (a storefront was carrying its own copy of it), then 26.25 → 27 KB for the \"search in other categories\" LINE — which is a net deletion on the page that mounts it, replacing a full-width block of one row per section that arrived after the results and pushed them, then 27 → 27.75 KB for the two frames the page now tells apart: the dictionary FIELD reaching `<SearchPage>` at all (per-layout default, field in the rail and inline in the sheet) and the footer bar being static in a column and sticky in a sheet, where it used to be pinned over the last two groups everywhere, then 27.75 → 28.5 KB for `categoryHref` on the other-categories line — a real `<a href>` per row with a modifier-click left to the browser, instead of a `<button>` with no address a person could open in a new tab, then 28.5 → 29.25 KB for the phone's dictionary SHEET — a trigger row over the shared `SkinPickerSheet` with a recommended band, an alphabetical rest paged fifty at a time and a draft committed in one write, which is the control the composer's vocabulary picker already was while the buyer got a wall of checkboxes, then 29.25 → 30.5 KB for the panel that draws all of it: groups and ranges as one ordered sequence with one «Apply» for the panel rather than one per row, the empty-group heading rule, `categoryFilter={false}` and the `resultsLead` slot for a page reached by walking the catalogue, `PopularValues columns=\\\"responsive\\\"` on a container query, `SortSelect` annotating a blocked option at every width, a loading arm that covers the whole pane (0.34 CLS on a live host), and the chip row reserving its own box (a further 0.045). Measured with dependencies held constant, this package's src at the commit before that work and then at it: 29.05 -> 30.16 KB — 1.11 KB, and every part of it is a shift or a mislabelled control a host was living with, then 30.5 -> 31 KB for `<SearchResultsPane columns>` and its pass-through on `<SearchPage resultsColumns>`: a fixed track count or a per-breakpoint map, emitted as a hoisted container-query sheet (the results block is the window minus a 280px rail, so a media query would answer about a width the cards never have). Measured with dependencies held constant, this package's src before and after: 30.40 -> 30.65 KB — 250 B, and what it replaces is a host's `!important` rule against a grid declaration it could not read back, then 31 -> 31.25 KB for the segmented partition being antd's `Segmented` rather than a row of buttons wearing a border: the walker read `data-variant=\"segmented\"` with `role=\"radiogroup\"` and found `.ant-segmented` zero times and `input[type=radio]` zero times (D304), so the cells are the design system's now — real radios under one name, the browser's own arrow keys and Tab stop. Measured with dependencies held constant, this package's src before and after: 30.95 -> 31.05 KB — 100 B, against ~30 lines of hand-rolled joined-row geometry deleted, then 31.25 -> 31.5 KB for the two PINNING seams: `<SearchPage railTop>` (the rail's sticky offset and its height cap moved together, so a rail under a 64px header still ends at the foot of the window) and `<SearchResultsPane stickyToolbar>` with the toolbar's own element in both header shapes. Measured with dependencies held constant, this package's src before and after: 31.05 -> 31.2 KB — 150 B, and what it replaces in one deployment is an `!important` over the pair's own inline geometry, a `:has()`, a `display: contents` and this pair's rail breakpoint restated in the host's media query",
|
|
60
|
+
"name": "default — the antd skin (query box + a typeahead that offers CATEGORY destinations with their live counts, filters incl. ranges/geo/category slots + the phone chip row with its leading category chip and the location summary row + the rail's evidence-ranked disclosure groups, panel search and sticky count/clear footer, results incl. the view switch, the card photo GALLERY as a SkinCarousel strip, the empty state's derived exits, ranking, the dictionary control for a vocabulary facet, the popular-values block, the partition row in both its chip and segmented variants, the select-style dictionary FIELD the desktop rail opens, the from/to pickers a bounded integer axis draws and the rail's own scrollbar sheet) must stay out of the main bundle. Raised 24.5 → 25.5 KB for those four controls, then 25.5 → 26.25 KB for the chip row's APPLIED mode — one chip per applied value and per numeric bound, each removing that one constraint beside a rail that is already on screen (a storefront was carrying its own copy of it), then 26.25 → 27 KB for the \"search in other categories\" LINE — which is a net deletion on the page that mounts it, replacing a full-width block of one row per section that arrived after the results and pushed them, then 27 → 27.75 KB for the two frames the page now tells apart: the dictionary FIELD reaching `<SearchPage>` at all (per-layout default, field in the rail and inline in the sheet) and the footer bar being static in a column and sticky in a sheet, where it used to be pinned over the last two groups everywhere, then 27.75 → 28.5 KB for `categoryHref` on the other-categories line — a real `<a href>` per row with a modifier-click left to the browser, instead of a `<button>` with no address a person could open in a new tab, then 28.5 → 29.25 KB for the phone's dictionary SHEET — a trigger row over the shared `SkinPickerSheet` with a recommended band, an alphabetical rest paged fifty at a time and a draft committed in one write, which is the control the composer's vocabulary picker already was while the buyer got a wall of checkboxes, then 29.25 → 30.5 KB for the panel that draws all of it: groups and ranges as one ordered sequence with one «Apply» for the panel rather than one per row, the empty-group heading rule, `categoryFilter={false}` and the `resultsLead` slot for a page reached by walking the catalogue, `PopularValues columns=\\\"responsive\\\"` on a container query, `SortSelect` annotating a blocked option at every width, a loading arm that covers the whole pane (0.34 CLS on a live host), and the chip row reserving its own box (a further 0.045). Measured with dependencies held constant, this package's src at the commit before that work and then at it: 29.05 -> 30.16 KB — 1.11 KB, and every part of it is a shift or a mislabelled control a host was living with, then 30.5 -> 31 KB for `<SearchResultsPane columns>` and its pass-through on `<SearchPage resultsColumns>`: a fixed track count or a per-breakpoint map, emitted as a hoisted container-query sheet (the results block is the window minus a 280px rail, so a media query would answer about a width the cards never have). Measured with dependencies held constant, this package's src before and after: 30.40 -> 30.65 KB — 250 B, and what it replaces is a host's `!important` rule against a grid declaration it could not read back, then 31 -> 31.25 KB for the segmented partition being antd's `Segmented` rather than a row of buttons wearing a border: the walker read `data-variant=\"segmented\"` with `role=\"radiogroup\"` and found `.ant-segmented` zero times and `input[type=radio]` zero times (D304), so the cells are the design system's now — real radios under one name, the browser's own arrow keys and Tab stop. Measured with dependencies held constant, this package's src before and after: 30.95 -> 31.05 KB — 100 B, against ~30 lines of hand-rolled joined-row geometry deleted, then 31.25 -> 31.5 KB for the two PINNING seams: `<SearchPage railTop>` (the rail's sticky offset and its height cap moved together, so a rail under a 64px header still ends at the foot of the window) and `<SearchResultsPane stickyToolbar>` with the toolbar's own element in both header shapes. Measured with dependencies held constant, this package's src before and after: 31.05 -> 31.2 KB — 150 B, and what it replaces in one deployment is an `!important` over the pair's own inline geometry, a `:has()`, a `display: contents` and this pair's rail breakpoint restated in the host's media query, then 31.5 -> 31.75 KB for the rail saying when its answer is IN FLIGHT: `FacetPanelBag.refreshing` off `loadStateFromQuery(…, { keepPrevious })`, `data-facets-refreshing` on the rail, and each facet group standing on its own last measured height (a `min-block-size` floor held in a ref) until the new answer lands. Measured with dependencies held constant, this package's src before and after: 31.43 -> 31.51 KB — 80 B, against 0.0586 CLS on a partition press (p43), where the groups survive and RESIZE",
|
|
61
61
|
"path": "dist/default/index.js",
|
|
62
|
-
"limit": "31.
|
|
62
|
+
"limit": "31.75 KB"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"name": "router — the react-router binding is opt-in; the main entry must never pull a router",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
],
|
|
80
80
|
"peerDependencies": {
|
|
81
81
|
"@stapel/attributes-react": ">=0.4.0",
|
|
82
|
-
"@stapel/core": ">=0.
|
|
82
|
+
"@stapel/core": ">=0.26.0 <1.0.0",
|
|
83
83
|
"@stapel/image": ">=0.3.0",
|
|
84
84
|
"@stapel/tokens-antd": ">=0.12.0",
|
|
85
85
|
"@tanstack/react-query": "^5.0.0",
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"typescript": "^5.8.3",
|
|
117
117
|
"vitest": "^3.2.4",
|
|
118
118
|
"@stapel/attributes-react": "^0.16.5",
|
|
119
|
-
"@stapel/core": "^0.
|
|
119
|
+
"@stapel/core": "^0.26.0",
|
|
120
120
|
"@stapel/image": "^0.4.2",
|
|
121
|
-
"@stapel/showcase": "^0.3.0",
|
|
122
121
|
"@stapel/tokens": "^0.8.0",
|
|
123
|
-
"@stapel/
|
|
122
|
+
"@stapel/showcase": "^0.3.0",
|
|
123
|
+
"@stapel/tokens-antd": "^0.18.0"
|
|
124
124
|
},
|
|
125
125
|
"engines": {
|
|
126
126
|
"node": ">=22"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
* them visible as before: folding everything would leave a heading over
|
|
63
63
|
* nothing. Chosen options are always visible, wherever their count went.
|
|
64
64
|
*/
|
|
65
|
-
import { useMemo, useState } from "react";
|
|
65
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
66
66
|
import type { CSSProperties, ReactElement } from "react";
|
|
67
67
|
import { Button, Checkbox, Flex, Input, Typography } from "antd";
|
|
68
68
|
import { useT } from "@stapel/core";
|
|
@@ -982,6 +982,19 @@ export interface FacetGroupControlProps {
|
|
|
982
982
|
* only `dictionaryMode: "sheet"` reads it.
|
|
983
983
|
*/
|
|
984
984
|
readonly onSetValues?: (slug: string, values: readonly string[]) => void;
|
|
985
|
+
/**
|
|
986
|
+
* A newer facet answer is in flight and what is drawn is the previous one —
|
|
987
|
+
* `FacetPanelBag.refreshing`.
|
|
988
|
+
*
|
|
989
|
+
* The group then RESERVES the height it was last measured at
|
|
990
|
+
* (`min-block-size`), so that whatever changes under it while the answer
|
|
991
|
+
* settles — an option count, a label the host's vocabulary resolved, an axis
|
|
992
|
+
* arriving with the category schema — cannot move the groups below it. It is
|
|
993
|
+
* a floor and never a cap: a group that needs more room still takes it.
|
|
994
|
+
*
|
|
995
|
+
* Off (the default), nothing is reserved and nothing is measured.
|
|
996
|
+
*/
|
|
997
|
+
readonly refreshing?: boolean;
|
|
985
998
|
}
|
|
986
999
|
|
|
987
1000
|
/**
|
|
@@ -1014,6 +1027,36 @@ export function FacetGroupControl(
|
|
|
1014
1027
|
const shape = facetGroupShape(group);
|
|
1015
1028
|
const nodes = facetOptionNodes(group);
|
|
1016
1029
|
|
|
1030
|
+
/*
|
|
1031
|
+
* THE GROUP'S OWN FLOOR WHILE AN ANSWER IS IN FLIGHT (p43).
|
|
1032
|
+
*
|
|
1033
|
+
* The rail keeps the previous answer's groups on screen while the next one
|
|
1034
|
+
* loads — `FacetPanelBag.refreshing` — and the shift it was measured at is
|
|
1035
|
+
* what happens INSIDE that window: a group whose option count changes resizes
|
|
1036
|
+
* and takes every group under it with it.
|
|
1037
|
+
*
|
|
1038
|
+
* So each group remembers the height it was last SETTLED at and stands on it
|
|
1039
|
+
* until the answer lands. Its own last height and never a guess: the whole
|
|
1040
|
+
* point is that this box was that tall a moment ago, on this deployment, at
|
|
1041
|
+
* this width, with this category's options in it.
|
|
1042
|
+
*
|
|
1043
|
+
* Measured in an effect and held in a ref: nothing is written during a
|
|
1044
|
+
* render, and the measurement is deliberately not taken while refreshing —
|
|
1045
|
+
* a reserved box would otherwise remember its own reservation and the floor
|
|
1046
|
+
* could only ever ratchet upwards.
|
|
1047
|
+
*/
|
|
1048
|
+
const boxRef = useRef<HTMLDivElement | null>(null);
|
|
1049
|
+
const settledHeight = useRef<number | undefined>(undefined);
|
|
1050
|
+
const refreshing = props.refreshing === true;
|
|
1051
|
+
useEffect(() => {
|
|
1052
|
+
if (refreshing) return;
|
|
1053
|
+
const node = boxRef.current;
|
|
1054
|
+
// `offsetHeight` is 0 in a layout-free environment (jsdom, a server
|
|
1055
|
+
// render): a floor of zero is not a reservation, so nothing is remembered.
|
|
1056
|
+
if (node !== null && node.offsetHeight > 0) settledHeight.current = node.offsetHeight;
|
|
1057
|
+
});
|
|
1058
|
+
const reserved = refreshing ? settledHeight.current : undefined;
|
|
1059
|
+
|
|
1017
1060
|
const disclosure = props.collapsible === true && props.heading !== false;
|
|
1018
1061
|
const open = !disclosure || openState;
|
|
1019
1062
|
|
|
@@ -1045,11 +1088,19 @@ export function FacetGroupControl(
|
|
|
1045
1088
|
|
|
1046
1089
|
return (
|
|
1047
1090
|
<Flex
|
|
1091
|
+
ref={boxRef}
|
|
1048
1092
|
vertical
|
|
1049
1093
|
gap={shape === "segmented" ? spacing[2] : spacing[1]}
|
|
1094
|
+
// A FLOOR, not a height: `min-block-size` lets a group that needs more
|
|
1095
|
+
// room take it, and holds the box it had for one that would shrink.
|
|
1096
|
+
{...(reserved !== undefined ? { style: { minBlockSize: reserved } } : {})}
|
|
1050
1097
|
data-testid={`facet-group-${group.slug}`}
|
|
1051
1098
|
data-counted={group.counted ? "true" : "false"}
|
|
1052
1099
|
data-shape={shape}
|
|
1100
|
+
// The reservation, readable from a stand: `data-reserved` is the height
|
|
1101
|
+
// this group is standing on while the next answer is in flight.
|
|
1102
|
+
{...(refreshing ? { "data-refreshing": "true" } : {})}
|
|
1103
|
+
{...(reserved !== undefined ? { "data-reserved": String(reserved) } : {})}
|
|
1053
1104
|
// Who named this heading — `none` means the raw slug is on screen
|
|
1054
1105
|
// because the answer sent no label and the schema defines none. It is
|
|
1055
1106
|
// drawn (a heading a person cannot read still beats none) and it is
|
|
@@ -735,7 +735,20 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
735
735
|
</GatedButton>
|
|
736
736
|
);
|
|
737
737
|
return (
|
|
738
|
-
<Flex
|
|
738
|
+
<Flex
|
|
739
|
+
vertical
|
|
740
|
+
gap={spacing[3]}
|
|
741
|
+
data-testid="search-facets"
|
|
742
|
+
/* THE RAIL SAYS WHEN ITS ANSWER IS IN FLIGHT (p43).
|
|
743
|
+
A partition press measured 0.0586 CLS here: the rail survives —
|
|
744
|
+
the groups are the previous answer's and stay mounted — and the
|
|
745
|
+
groups RESIZE as the new axis's facets land. Each group holds
|
|
746
|
+
its own floor while this is on (see `FacetGroupControl
|
|
747
|
+
refreshing`), and the attribute is the host's half: a storefront
|
|
748
|
+
that dims or freezes the column has one thing to hang it on
|
|
749
|
+
instead of racing the pair's own queries to find out. */
|
|
750
|
+
data-facets-refreshing={bag.refreshing ? "true" : "false"}
|
|
751
|
+
>
|
|
739
752
|
{/* In a 280px rail this row laid the word "Filters" out in a
|
|
740
753
|
43x78 box, three lines, one syllable each — see FACET_HEADING.
|
|
741
754
|
`wrap` is the row's half of the fix: the long sentence drops to
|
|
@@ -1042,6 +1055,10 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
1042
1055
|
group={item.group}
|
|
1043
1056
|
onToggle={bag.toggle}
|
|
1044
1057
|
onSetValues={bag.setValues}
|
|
1058
|
+
// Its own last height, held until the answer lands,
|
|
1059
|
+
// so a group that changes option count does not move
|
|
1060
|
+
// the groups under it.
|
|
1061
|
+
refreshing={bag.refreshing}
|
|
1045
1062
|
collapsible
|
|
1046
1063
|
defaultOpen={
|
|
1047
1064
|
needle !== "" ||
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
* they were, plus `data-checked`, so a probe that reads a snapshot still has
|
|
49
49
|
* the chosen cell without asking the accessibility tree.
|
|
50
50
|
*/
|
|
51
|
-
import { useRef } from "react";
|
|
51
|
+
import { useEffect, useRef } from "react";
|
|
52
52
|
import type {
|
|
53
53
|
CSSProperties,
|
|
54
54
|
KeyboardEvent as ReactKeyboardEvent,
|
|
@@ -111,6 +111,47 @@ const ROW: CSSProperties = {
|
|
|
111
111
|
gap: spacing[2],
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
+
/** The keys that move the choice, in both variants. */
|
|
115
|
+
const ARROW_KEYS = new Set(["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]);
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* D454 — WHEN AN ARROW KEY LAST MOVED A PARTITION, AS A TIMESTAMP.
|
|
119
|
+
*
|
|
120
|
+
* Module-scoped, and that is the load-bearing part rather than an oversight.
|
|
121
|
+
*
|
|
122
|
+
* Measured on the stand: the first `ArrowRight` moved "all" -> "new" AND
|
|
123
|
+
* navigated to `/c/novye` — which is what the control is FOR, the choice is a
|
|
124
|
+
* `category` in the URL — and after that navigation `document.activeElement`
|
|
125
|
+
* was `BODY`, so every further arrow press did nothing. The row is not the
|
|
126
|
+
* same row afterwards: the storefront resolves the new category's children,
|
|
127
|
+
* the rail unmounts while that is in flight and mounts again with fresh
|
|
128
|
+
* `items`, and antd's `Segmented` takes a new `useId()` name and renders new
|
|
129
|
+
* `input`s. A ref, a piece of state, a `useEffect` cleanup — everything that
|
|
130
|
+
* lives INSIDE the component instance dies with it, so the one fact that has
|
|
131
|
+
* to cross the remount cannot be kept there.
|
|
132
|
+
*
|
|
133
|
+
* The window is short and the flag is spent on use ({@link takeArrowMove}), so
|
|
134
|
+
* this can restore focus exactly once per keypress and never steals it from a
|
|
135
|
+
* page nobody was driving from the keyboard.
|
|
136
|
+
*/
|
|
137
|
+
let lastArrowMove = 0;
|
|
138
|
+
|
|
139
|
+
/** How long after an arrow press the row will still take its focus back. Long
|
|
140
|
+
* enough for a navigation and a refetch, short enough that a page left alone
|
|
141
|
+
* and returned to later is never grabbed. */
|
|
142
|
+
const FOCUS_RESTORE_WINDOW_MS = 2000;
|
|
143
|
+
|
|
144
|
+
function noteArrowMove(key: string): void {
|
|
145
|
+
if (ARROW_KEYS.has(key)) lastArrowMove = Date.now();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** True once, for the row that acts on it. */
|
|
149
|
+
function takeArrowMove(): boolean {
|
|
150
|
+
const fresh = lastArrowMove !== 0 && Date.now() - lastArrowMove < FOCUS_RESTORE_WINDOW_MS;
|
|
151
|
+
if (fresh) lastArrowMove = 0;
|
|
152
|
+
return fresh;
|
|
153
|
+
}
|
|
154
|
+
|
|
114
155
|
/** The row's cells, as `[value, label]` — the parent first, then the
|
|
115
156
|
* children in catalogue order. */
|
|
116
157
|
function cells(
|
|
@@ -154,6 +195,7 @@ export function PartitionChips(props: PartitionChipsProps): ReactElement {
|
|
|
154
195
|
const next = (index + step + options.length) % options.length;
|
|
155
196
|
const cell = options[next];
|
|
156
197
|
if (cell === undefined) return;
|
|
198
|
+
noteArrowMove(event.key);
|
|
157
199
|
props.onChange(cell[0]);
|
|
158
200
|
const buttons = row.current?.querySelectorAll<HTMLElement>('[role="radio"]');
|
|
159
201
|
buttons?.[next]?.focus();
|
|
@@ -165,6 +207,40 @@ export function PartitionChips(props: PartitionChipsProps): ReactElement {
|
|
|
165
207
|
const active = options.findIndex(([value]) => value === props.value);
|
|
166
208
|
const stop = active >= 0 ? active : 0;
|
|
167
209
|
|
|
210
|
+
/**
|
|
211
|
+
* D454 — after an arrow press, the CHOSEN cell holds the focus.
|
|
212
|
+
*
|
|
213
|
+
* Two different things are repaired by one effect, and the second is the one
|
|
214
|
+
* the stand measured:
|
|
215
|
+
*
|
|
216
|
+
* - within one mount, `Segmented`'s own handler moves the VALUE and leaves
|
|
217
|
+
* the focus on the cell it started from, so the focused radio and the
|
|
218
|
+
* checked radio disagree — and the control paints its focus ring on the
|
|
219
|
+
* checked one, which is not where the keyboard is;
|
|
220
|
+
* - across a REMOUNT — the choice is a `category`, so choosing navigates,
|
|
221
|
+
* and the rail comes back as new elements — the focus is on `<body>` and
|
|
222
|
+
* the row is unreachable by every further arrow press without a Tab.
|
|
223
|
+
*
|
|
224
|
+
* Keyed on `props.value` and on mount, gated by {@link takeArrowMove}, so a
|
|
225
|
+
* page loaded, clicked, or scrolled is never grabbed: only the row whose
|
|
226
|
+
* arrow key started this takes the focus, and it takes it once.
|
|
227
|
+
*/
|
|
228
|
+
useEffect(() => {
|
|
229
|
+
const root = row.current;
|
|
230
|
+
if (root === null) return;
|
|
231
|
+
if (!takeArrowMove()) return;
|
|
232
|
+
const focused = document.activeElement;
|
|
233
|
+
// Somewhere else on purpose — a dialog, a field the person tabbed into
|
|
234
|
+
// while the answer was in flight — is not ours to overrule. `<body>` is
|
|
235
|
+
// what a remount leaves behind, and inside the row is the intra-mount case
|
|
236
|
+
// where focus and selection have to be brought back together.
|
|
237
|
+
if (focused !== null && focused !== document.body && !root.contains(focused)) return;
|
|
238
|
+
const cells_ = root.querySelectorAll<HTMLElement>(
|
|
239
|
+
'input[type="radio"], [role="radio"]'
|
|
240
|
+
);
|
|
241
|
+
cells_[stop]?.focus();
|
|
242
|
+
}, [props.value, stop]);
|
|
243
|
+
|
|
168
244
|
const name = props.label ?? t(SEARCH_I18N_KEYS.partitionLabel);
|
|
169
245
|
|
|
170
246
|
if (props.variant === "segmented") {
|
|
@@ -178,10 +254,19 @@ export function PartitionChips(props: PartitionChipsProps): ReactElement {
|
|
|
178
254
|
<Segmented
|
|
179
255
|
block
|
|
180
256
|
size="small"
|
|
257
|
+
ref={row}
|
|
181
258
|
role="radiogroup"
|
|
182
259
|
aria-label={name}
|
|
183
260
|
data-variant="segmented"
|
|
184
261
|
data-testid="partition-chips"
|
|
262
|
+
/* The keypress is noted where it HAPPENS, before antd's own handler
|
|
263
|
+
turns it into a value change and the host turns that into a
|
|
264
|
+
navigation. Capture, because the cell's `input` is where the event
|
|
265
|
+
lands and the row is only its ancestor — and note only, so the
|
|
266
|
+
control's own arrow handling is untouched. */
|
|
267
|
+
onKeyDownCapture={(event) => {
|
|
268
|
+
noteArrowMove(event.key);
|
|
269
|
+
}}
|
|
185
270
|
value={props.value ?? ALL}
|
|
186
271
|
options={options.map(([value, label]) => ({
|
|
187
272
|
value: value ?? ALL,
|