@stapel/search-react 0.33.0 → 0.33.1

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 CHANGED
@@ -1,5 +1,50 @@
1
1
  # @stapel/search-react
2
2
 
3
+ ## 0.33.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 182a3b4: search: what pins on a results page is one row of controls, and the partition's arrow keys work more than once (D452, D454)
8
+
9
+ **D452 — the heading is out of the pinned block, and has the column to itself.**
10
+ Measured on the stand: the pinned results block on `/s` was **100px** at 1440
11
+ and **150px** at 1280. Both numbers are one `<h1>` wrapped to two lines. In the
12
+ wide header shape the heading was the leading flex item of the very block that
13
+ pins, the `nowrap` controls row beside it (count, sort, page size, view switch)
14
+ took the width it needed, and the heading was left a **415px** sub-column of a
15
+ 1200px measure — so the page pinned a third of a laptop's fold under the header
16
+ while the feed scrolled past it.
17
+
18
+ The heading is now a row of its own at the column's full width
19
+ (`search-results-heading-row`, `inline-size: 100%`), and
20
+ `search-results-toolbar` — the element `stickyToolbar` acts on — is the
21
+ controls' line alone, which is what `header="compact"` already did. Nothing
22
+ about a heading belongs in a pinned bar: it is read once, and its length is the
23
+ HOST's (`resultsHeading` carries a surface's own sentence), so it is the one
24
+ element on the page whose height this pair cannot bound.
25
+
26
+ Visible change for a wide-shape host: the heading and the controls are two rows
27
+ rather than one line, separated by the results column's own gap. `resultsHeading`,
28
+ `resultsHeadingLevel`, `resultsHeadingVisible`, `RESULTS_TOOLBAR_CLASS` and
29
+ `stickyToolbar` are unchanged; a host reaching _into_ the toolbar for the
30
+ heading with a descendant selector must aim at `search-results-heading` instead.
31
+
32
+ **D454 — the segmented partition keeps the focus across the choice it just
33
+ made.** Measured on the stand: the first `ArrowRight` moved the rail from "all"
34
+ to "new" and navigated — correct, the choice IS a `category` in the URL — and
35
+ after the navigation `document.activeElement` was `BODY`. Every further arrow
36
+ press then did nothing, so a keyboard user got exactly one move per Tab into the
37
+ row.
38
+
39
+ Choosing re-renders the surface and, while the new category's children are
40
+ resolved, takes the rail down and puts a new one up: new `input`s, a new antd
41
+ `useId()` name, and the focus left on `<body>`. `<PartitionChips>` now restores
42
+ it to the chosen cell after an arrow press — in both variants, on a re-render
43
+ and across a remount — and only after an arrow press, so a page that was loaded,
44
+ clicked or scrolled is never grabbed. Within one mount it also brings the focus
45
+ and the selection back together, which is what makes the control's own focus
46
+ ring (painted on the checked cell) agree with where the keyboard actually is.
47
+
3
48
  ## 0.33.0
4
49
 
5
50
  ### Minor Changes
package/README.md CHANGED
@@ -497,14 +497,24 @@ header shapes it drew and a sheet has to guess:
497
497
 
498
498
  | Header shape | What the class `stapel-search-results-toolbar` / `data-testid="search-results-toolbar"` is on | What pins |
499
499
  |---|---|---|
500
- | `"banner"` (wide) | the header blockheading at one end, count and controls at the other, one line | the block; it is already a direct child of the results column |
500
+ | `"banner"` (wide) | the controls' linecount at one end, the `toolbar` slot at the other | the row; the heading is a sibling ahead of it, in its own full-width row |
501
501
  | `"compact"` (phone) | the toolbar row alone | the row — one line, the height of one phone control |
502
502
 
503
+ In BOTH shapes the pin acts on the controls' line and never on the heading
504
+ (D452). It used to be the wide header BLOCK, heading included, and an `<h1>`
505
+ squeezed into a 415px flex item beside a `nowrap` controls row wrapped to two
506
+ lines: the pinned block measured 100px at 1440 and 150px at 1280 on a live
507
+ storefront. The wide heading now takes a row of its own
508
+ (`data-testid="search-results-heading-row"`, `inline-size: 100%`) so it has the
509
+ column's full measure to set its line in, and what stands under the header
510
+ while the feed scrolls is one row of controls.
511
+
503
512
  The compact stack draws no box of its own (`display: contents`), so its three
504
513
  rows are items of the results COLUMN: `position: sticky` travels inside its
505
514
  parent, and a toolbar nested in a ~112px stack can move 112px and no further.
506
515
  The one visible consequence is that the gap between heading, toolbar and count
507
- is the column's rather than the stack's.
516
+ is the column's rather than the stack's — and the wide shape now takes the same
517
+ gap between its heading row and its toolbar.
508
518
 
509
519
  Two things the pin does NOT do, both deliberate:
510
520
 
@@ -598,6 +608,13 @@ come with them. The contract does not vary with the variant, and the per-cell
598
608
  test ids (`partition-chip-<path>`, `partition-chip-all`, each with
599
609
  `data-checked`) are the same in both.
600
610
 
611
+ An arrow press leaves the focus on the CHOSEN cell — including when choosing
612
+ tore the row down and built it again, which is what a `category` change does to
613
+ it on a real storefront. Without that, the live rail moved once and dropped the
614
+ focus to `<body>`, so a keyboard user got one move per Tab (D454). The row takes
615
+ the focus back only after an arrow press of its own, so a page that was loaded,
616
+ clicked or scrolled is never grabbed.
617
+
601
618
  ```tsx
602
619
  <PartitionChips items={children} value={state.category ?? null}
603
620
  variant={isPhone ? "chips" : "segmented"}
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionChips.d.ts","sourceRoot":"","sources":["../../src/default/PartitionChips.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAGV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAMf;;oDAEoD;AACpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C;iFAC6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC1C;AA8BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAsHvE"}
1
+ {"version":3,"file":"PartitionChips.d.ts","sourceRoot":"","sources":["../../src/default/PartitionChips.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAGV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAMf;;oDAEoD;AACpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C;iFAC6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC1C;AAuED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAkKvE"}
@@ -49,7 +49,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
49
49
  * they were, plus `data-checked`, so a probe that reads a snapshot still has
50
50
  * the chosen cell without asking the accessibility tree.
51
51
  */
52
- import { useRef } from "react";
52
+ import { useEffect, useRef } from "react";
53
53
  import { Button, Segmented } from "antd";
54
54
  import { useT } from "@stapel/core";
55
55
  import { radii, spacing } from "@stapel/tokens";
@@ -67,6 +67,44 @@ const ROW = {
67
67
  flexWrap: "wrap",
68
68
  gap: spacing[2],
69
69
  };
70
+ /** The keys that move the choice, in both variants. */
71
+ const ARROW_KEYS = new Set(["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"]);
72
+ /**
73
+ * D454 — WHEN AN ARROW KEY LAST MOVED A PARTITION, AS A TIMESTAMP.
74
+ *
75
+ * Module-scoped, and that is the load-bearing part rather than an oversight.
76
+ *
77
+ * Measured on the stand: the first `ArrowRight` moved "all" -> "new" AND
78
+ * navigated to `/c/novye` — which is what the control is FOR, the choice is a
79
+ * `category` in the URL — and after that navigation `document.activeElement`
80
+ * was `BODY`, so every further arrow press did nothing. The row is not the
81
+ * same row afterwards: the storefront resolves the new category's children,
82
+ * the rail unmounts while that is in flight and mounts again with fresh
83
+ * `items`, and antd's `Segmented` takes a new `useId()` name and renders new
84
+ * `input`s. A ref, a piece of state, a `useEffect` cleanup — everything that
85
+ * lives INSIDE the component instance dies with it, so the one fact that has
86
+ * to cross the remount cannot be kept there.
87
+ *
88
+ * The window is short and the flag is spent on use ({@link takeArrowMove}), so
89
+ * this can restore focus exactly once per keypress and never steals it from a
90
+ * page nobody was driving from the keyboard.
91
+ */
92
+ let lastArrowMove = 0;
93
+ /** How long after an arrow press the row will still take its focus back. Long
94
+ * enough for a navigation and a refetch, short enough that a page left alone
95
+ * and returned to later is never grabbed. */
96
+ const FOCUS_RESTORE_WINDOW_MS = 2000;
97
+ function noteArrowMove(key) {
98
+ if (ARROW_KEYS.has(key))
99
+ lastArrowMove = Date.now();
100
+ }
101
+ /** True once, for the row that acts on it. */
102
+ function takeArrowMove() {
103
+ const fresh = lastArrowMove !== 0 && Date.now() - lastArrowMove < FOCUS_RESTORE_WINDOW_MS;
104
+ if (fresh)
105
+ lastArrowMove = 0;
106
+ return fresh;
107
+ }
70
108
  /** The row's cells, as `[value, label]` — the parent first, then the
71
109
  * children in catalogue order. */
72
110
  function cells(items, allLabel) {
@@ -101,6 +139,7 @@ export function PartitionChips(props) {
101
139
  const cell = options[next];
102
140
  if (cell === undefined)
103
141
  return;
142
+ noteArrowMove(event.key);
104
143
  props.onChange(cell[0]);
105
144
  const buttons = row.current?.querySelectorAll('[role="radio"]');
106
145
  buttons?.[next]?.focus();
@@ -110,6 +149,40 @@ export function PartitionChips(props) {
110
149
  // parent chip rather than vanishing.
111
150
  const active = options.findIndex(([value]) => value === props.value);
112
151
  const stop = active >= 0 ? active : 0;
152
+ /**
153
+ * D454 — after an arrow press, the CHOSEN cell holds the focus.
154
+ *
155
+ * Two different things are repaired by one effect, and the second is the one
156
+ * the stand measured:
157
+ *
158
+ * - within one mount, `Segmented`'s own handler moves the VALUE and leaves
159
+ * the focus on the cell it started from, so the focused radio and the
160
+ * checked radio disagree — and the control paints its focus ring on the
161
+ * checked one, which is not where the keyboard is;
162
+ * - across a REMOUNT — the choice is a `category`, so choosing navigates,
163
+ * and the rail comes back as new elements — the focus is on `<body>` and
164
+ * the row is unreachable by every further arrow press without a Tab.
165
+ *
166
+ * Keyed on `props.value` and on mount, gated by {@link takeArrowMove}, so a
167
+ * page loaded, clicked, or scrolled is never grabbed: only the row whose
168
+ * arrow key started this takes the focus, and it takes it once.
169
+ */
170
+ useEffect(() => {
171
+ const root = row.current;
172
+ if (root === null)
173
+ return;
174
+ if (!takeArrowMove())
175
+ return;
176
+ const focused = document.activeElement;
177
+ // Somewhere else on purpose — a dialog, a field the person tabbed into
178
+ // while the answer was in flight — is not ours to overrule. `<body>` is
179
+ // what a remount leaves behind, and inside the row is the intra-mount case
180
+ // where focus and selection have to be brought back together.
181
+ if (focused !== null && focused !== document.body && !root.contains(focused))
182
+ return;
183
+ const cells_ = root.querySelectorAll('input[type="radio"], [role="radio"]');
184
+ cells_[stop]?.focus();
185
+ }, [props.value, stop]);
113
186
  const name = props.label ?? t(SEARCH_I18N_KEYS.partitionLabel);
114
187
  if (props.variant === "segmented") {
115
188
  // antd's own control: `.ant-segmented`, one `input[type=radio]` per cell
@@ -118,7 +191,15 @@ export function PartitionChips(props) {
118
191
  // `aria-label` reach the root because the component spreads what it is
119
192
  // given over its own defaults (which are `radiogroup` and the string
120
193
  // "segmented control").
121
- return (_jsx(Segmented, { block: true, size: "small", role: "radiogroup", "aria-label": name, "data-variant": "segmented", "data-testid": "partition-chips", value: props.value ?? ALL, options: options.map(([value, label]) => ({
194
+ return (_jsx(Segmented, { block: true, size: "small", ref: row, role: "radiogroup", "aria-label": name, "data-variant": "segmented", "data-testid": "partition-chips",
195
+ /* The keypress is noted where it HAPPENS, before antd's own handler
196
+ turns it into a value change and the host turns that into a
197
+ navigation. Capture, because the cell's `input` is where the event
198
+ lands and the row is only its ancestor — and note only, so the
199
+ control's own arrow handling is untouched. */
200
+ onKeyDownCapture: (event) => {
201
+ noteArrowMove(event.key);
202
+ }, value: props.value ?? ALL, options: options.map(([value, label]) => ({
122
203
  value: value ?? ALL,
123
204
  label: (
124
205
  // The cell's test id and its chosen state, on the one node inside
@@ -1 +1 @@
1
- {"version":3,"file":"PartitionChips.js","sourceRoot":"","sources":["../../src/default/PartitionChips.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PartitionChips.js","sourceRoot":"","sources":["../../src/default/PartitionChips.tsx"],"names":[],"mappings":"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"}
@@ -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 the row that
92
- * would pin: the WIDE header block (heading, count and toolbar on one line
93
- * the block IS the row) and, in `header="compact"`, the toolbar alone, because
94
- * pinning the compact stack would put ~112px of chrome under a 56px header on a
95
- * 390px screen.
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":"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"}
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 the row that
44
- * would pin: the WIDE header block (heading, count and toolbar on one line
45
- * the block IS the row) and, in `header="compact"`, the toolbar alone, because
46
- * pinning the compact stack would put ~112px of chrome under a 56px header on a
47
- * 390px screen.
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
- /* The wide shape's header block IS the toolbar row: one line,
287
- heading at one end, count and controls at the other, and a
288
- direct child of the results column so it pins as it stands. */
289
- _jsxs(Flex, { justify: "space-between", align: "center", gap: spacing[2], className: RESULTS_TOOLBAR_CLASS, "data-testid": "search-results-toolbar", ...(toolbarPin !== undefined ? { style: toolbarPin } : {}), children: [_jsx(Typography.Title, { level: props.headingLevel ?? 4, style: { margin: 0, minInlineSize: 0 }, "data-testid": "search-results-heading", children: props.heading ?? t(SEARCH_I18N_KEYS.resultsTitle) }), _jsxs(Flex, { align: "center", gap: spacing[3], style: TOOLBAR_ROW, children: [_jsx(Count, { bag: bag }), 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
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":"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"}
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # @stapel/search-react 0.33.0
1
+ # @stapel/search-react 0.33.1
2
2
 
3
3
  Headless React flow pair for stapel-search (contract >=0.16 <0.17) — business + state, zero visual opinion.
4
4
  Built on @stapel/core: typed client + StapelApiError envelope, auth token refresh,
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
3
3
  "package": "@stapel/search-react",
4
- "version": "0.33.0",
4
+ "version": "0.33.1",
5
5
  "backend": {
6
6
  "module": "stapel-search",
7
7
  "contract": ">=0.16 <0.17"
package/nav-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@stapel/search-react",
3
- "version": "0.33.0",
3
+ "version": "0.33.1",
4
4
  "entries": [
5
5
  {
6
6
  "id": "search.results",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stapel/search-react",
3
- "version": "0.33.0",
3
+ "version": "0.33.1",
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": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-events.mjs — do not edit; drift-gated (pnpm gen:events:check)",
3
3
  "package": "@stapel/search-react",
4
- "version": "0.33.0",
4
+ "version": "0.33.1",
5
5
  "defined": [],
6
6
  "flows": []
7
7
  }
@@ -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,
@@ -120,11 +120,11 @@ export const RESULTS_MAX_WIDTH = 1400;
120
120
  * pane's own breakpoint restated in a media query — three rules aimed at a
121
121
  * shape the pane could change under them at any release.
122
122
  *
123
- * It is the same class in BOTH header shapes, and in both it names the row that
124
- * would pin: the WIDE header block (heading, count and toolbar on one line
125
- * the block IS the row) and, in `header="compact"`, the toolbar alone, because
126
- * pinning the compact stack would put ~112px of chrome under a 56px header on a
127
- * 390px screen.
123
+ * It is the same class in BOTH header shapes, and in both it names THE SAME
124
+ * THING: the controls' own line, and never the heading beside it (D452). The
125
+ * compact shape always drew it that way; the wide shape did not, and pinning a
126
+ * block that carried the `<h1>` pinned 100px of chrome at 1440 and 150px at
127
+ * 1280 — see `WIDE_HEADING_ROW`.
128
128
  */
129
129
  export const RESULTS_TOOLBAR_CLASS = "stapel-search-results-toolbar";
130
130
 
@@ -173,6 +173,49 @@ const TOOLBAR_ROW: CSSProperties = {
173
173
  */
174
174
  const COMPACT_STACK: CSSProperties = { display: "contents" };
175
175
 
176
+ /**
177
+ * The WIDE shape's heading row — a row of its own, at the results column's
178
+ * full measure (D452).
179
+ *
180
+ * The heading used to be the leading flex item of the block that pins, with
181
+ * the controls as the trailing one. Two things followed, and both were
182
+ * measured on the stand:
183
+ *
184
+ * - the controls row is `nowrap` and holds a count, a sort select, a page
185
+ * size and a view switch, so it took whatever width it needed and left the
186
+ * heading **415px** of a 1200px column. An `<h1>` at 42px (50 at 1280) then
187
+ * wrapped to TWO LINES;
188
+ * - those two lines were inside the pinned box, so what stood under the
189
+ * header while the feed scrolled was **100px** of chrome at 1440 and
190
+ * **150px** at 1280 — a third of the fold on a laptop.
191
+ *
192
+ * Nothing about the heading belongs in a pinned bar: it names the page once,
193
+ * it is read once, and it is the one element on the page whose length the pair
194
+ * does not control (`resultsHeading` is the host's sentence — "Buy a
195
+ * Samsung Galaxy S23 in Kazan"). So it takes its own line at the full width,
196
+ * where it has room not to wrap, and the pin acts on the controls alone —
197
+ * which is what `header="compact"` already did.
198
+ *
199
+ * `100%` is DECLARED rather than left to the column's `align-items: stretch`:
200
+ * the row is what a host reads to know the heading is not in the pinned box,
201
+ * and a width that only happens to be full is not a contract.
202
+ */
203
+ const WIDE_HEADING_ROW: CSSProperties = { inlineSize: "100%", minInlineSize: 0 };
204
+
205
+ /** The wide heading itself: no margin of its own — the column's gap is the
206
+ * rhythm — and free to shrink inside its row rather than forcing it wider. */
207
+ const WIDE_HEADING: CSSProperties = { margin: 0, minInlineSize: 0 };
208
+
209
+ /**
210
+ * The wide row's trailing group — the surface's controls.
211
+ *
212
+ * `flex: 0 0 auto`: the count on the leading end is the elastic half (it is
213
+ * one short string and it arrives late), and the controls keep every pixel
214
+ * they need. Both ends shrinking is how a sort select ends up narrower than
215
+ * its own longest option.
216
+ */
217
+ const TOOLBAR_END: CSSProperties = { flex: "0 0 auto" };
218
+
176
219
  /** The compact shape's toolbar box — the row the pin acts on. */
177
220
  const COMPACT_TOOLBAR: CSSProperties = {
178
221
  display: "flex",
@@ -692,29 +735,35 @@ export function SearchResultsPane(props: SearchResultsPaneProps): ReactElement {
692
735
  <Count bag={bag} />
693
736
  </Flex>
694
737
  ) : (
695
- /* The wide shape's header block IS the toolbar row: one line,
696
- heading at one end, count and controls at the other, and a
697
- direct child of the results column so it pins as it stands. */
698
- <Flex
699
- justify="space-between"
700
- align="center"
701
- gap={spacing[2]}
702
- className={RESULTS_TOOLBAR_CLASS}
703
- data-testid="search-results-toolbar"
704
- {...(toolbarPin !== undefined ? { style: toolbarPin } : {})}
705
- >
706
- <Typography.Title
707
- level={props.headingLevel ?? 4}
708
- style={{ margin: 0, minInlineSize: 0 }}
709
- data-testid="search-results-heading"
738
+ /* D452 the heading is its OWN row, at the column's full width,
739
+ and the row that pins is the controls. See `WIDE_HEADING_ROW`.
740
+ Both are direct children of the results column: the toolbar
741
+ has a parent as tall as the feed to travel in, and the heading
742
+ has the whole measure to set its line in. */
743
+ <>
744
+ <div style={WIDE_HEADING_ROW} data-testid="search-results-heading-row">
745
+ <Typography.Title
746
+ level={props.headingLevel ?? 4}
747
+ style={WIDE_HEADING}
748
+ data-testid="search-results-heading"
749
+ >
750
+ {props.heading ?? t(SEARCH_I18N_KEYS.resultsTitle)}
751
+ </Typography.Title>
752
+ </div>
753
+ <Flex
754
+ justify="space-between"
755
+ align="center"
756
+ gap={spacing[3]}
757
+ className={RESULTS_TOOLBAR_CLASS}
758
+ data-testid="search-results-toolbar"
759
+ style={{ ...TOOLBAR_ROW, ...toolbarPin }}
710
760
  >
711
- {props.heading ?? t(SEARCH_I18N_KEYS.resultsTitle)}
712
- </Typography.Title>
713
- <Flex align="center" gap={spacing[3]} style={TOOLBAR_ROW}>
714
761
  <Count bag={bag} />
715
- {props.toolbar}
762
+ <Flex align="center" gap={spacing[3]} style={TOOLBAR_END}>
763
+ {props.toolbar}
764
+ </Flex>
716
765
  </Flex>
717
- </Flex>
766
+ </>
718
767
  )}
719
768
 
720
769
  <DegradationNotice