@stapel/search-react 0.18.1 → 0.20.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 +51 -0
- package/dist/default/FacetPanelPane.d.ts +0 -19
- package/dist/default/FacetPanelPane.d.ts.map +1 -1
- package/dist/default/FacetPanelPane.js +33 -65
- package/dist/default/FacetPanelPane.js.map +1 -1
- package/dist/default/FilterChips.d.ts +1 -24
- package/dist/default/FilterChips.d.ts.map +1 -1
- package/dist/default/FilterChips.js +11 -20
- package/dist/default/FilterChips.js.map +1 -1
- package/dist/default/LocationSummaryLine.d.ts +9 -0
- package/dist/default/LocationSummaryLine.d.ts.map +1 -1
- package/dist/default/LocationSummaryLine.js +29 -2
- package/dist/default/LocationSummaryLine.js.map +1 -1
- package/dist/default/SearchPage.d.ts +14 -5
- package/dist/default/SearchPage.d.ts.map +1 -1
- package/dist/default/SearchPage.js +27 -22
- package/dist/default/SearchPage.js.map +1 -1
- package/dist/default/SearchResultsPane.d.ts +37 -0
- package/dist/default/SearchResultsPane.d.ts.map +1 -1
- package/dist/default/SearchResultsPane.js +7 -2
- package/dist/default/SearchResultsPane.js.map +1 -1
- package/dist/default/geoSheet.d.ts +12 -6
- package/dist/default/geoSheet.d.ts.map +1 -1
- package/dist/default/geoSheet.js +14 -3
- package/dist/default/geoSheet.js.map +1 -1
- package/dist/default/index.d.ts +5 -4
- package/dist/default/index.d.ts.map +1 -1
- package/dist/default/index.js +4 -3
- package/dist/default/index.js.map +1 -1
- package/dist/headless/SearchStateProvider.d.ts +42 -30
- package/dist/headless/SearchStateProvider.d.ts.map +1 -1
- package/dist/headless/SearchStateProvider.js +16 -36
- package/dist/headless/SearchStateProvider.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +1 -0
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/keys.d.ts +1 -0
- package/dist/i18n/keys.d.ts.map +1 -1
- package/dist/i18n/keys.js +2 -0
- package/dist/i18n/keys.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +1 -0
- package/dist/i18n/ru.js.map +1 -1
- package/dist/state/facets.d.ts +18 -0
- package/dist/state/facets.d.ts.map +1 -1
- package/dist/state/facets.js +25 -0
- package/dist/state/facets.js.map +1 -1
- package/dist/state/urlState.d.ts +20 -2
- package/dist/state/urlState.d.ts.map +1 -1
- package/dist/state/urlState.js +26 -5
- package/dist/state/urlState.js.map +1 -1
- package/llms.txt +1 -1
- package/manifest.json +2 -1
- package/nav-manifest.json +1 -1
- package/package.json +3 -3
- package/src/analytics/generated/events.json +1 -1
- package/src/default/FacetPanelPane.tsx +72 -136
- package/src/default/FilterChips.tsx +12 -72
- package/src/default/LocationSummaryLine.tsx +65 -1
- package/src/default/SearchPage.tsx +64 -31
- package/src/default/SearchResultsPane.tsx +54 -7
- package/src/default/geoSheet.tsx +46 -7
- package/src/default/index.ts +5 -3
- package/src/headless/SearchStateProvider.tsx +57 -66
- package/src/i18n/es.ts +1 -0
- package/src/i18n/keys.ts +2 -0
- package/src/i18n/ru.ts +1 -0
- package/src/state/facets.ts +28 -0
- package/src/state/urlState.ts +26 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlState.js","sourceRoot":"","sources":["../../src/state/urlState.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"urlState.js","sourceRoot":"","sources":["../../src/state/urlState.ts"],"names":[],"mappings":"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"}
|
package/llms.txt
CHANGED
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.
|
|
4
|
+
"version": "0.20.0",
|
|
5
5
|
"backend": {
|
|
6
6
|
"module": "stapel-search",
|
|
7
7
|
"contract": ">=0.10 <0.11"
|
|
@@ -797,6 +797,7 @@
|
|
|
797
797
|
"search.geo.chosen_place",
|
|
798
798
|
"search.geo.clear",
|
|
799
799
|
"search.geo.everywhere",
|
|
800
|
+
"search.geo.near_me",
|
|
800
801
|
"search.geo.radius_km",
|
|
801
802
|
"search.geo.radius_label",
|
|
802
803
|
"search.geo.title",
|
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.20.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": {
|
|
@@ -115,8 +115,8 @@
|
|
|
115
115
|
"size-limit": "^11.2.0",
|
|
116
116
|
"typescript": "^5.8.3",
|
|
117
117
|
"vitest": "^3.2.4",
|
|
118
|
-
"@stapel/attributes-react": "^0.
|
|
119
|
-
"@stapel/core": "^0.
|
|
118
|
+
"@stapel/attributes-react": "^0.14.1",
|
|
119
|
+
"@stapel/core": "^0.24.0",
|
|
120
120
|
"@stapel/image": "^0.4.2",
|
|
121
121
|
"@stapel/showcase": "^0.3.0",
|
|
122
122
|
"@stapel/tokens": "^0.7.0",
|
|
@@ -22,19 +22,27 @@
|
|
|
22
22
|
* filters on a slug it never counted; the engine's own list of skipped
|
|
23
23
|
* slugs is a developer's note and lives behind `skippedNotice`.
|
|
24
24
|
*
|
|
25
|
-
* ──
|
|
25
|
+
* ── One slot, and why it is a slot ────────────────────────────────────────
|
|
26
26
|
*
|
|
27
|
-
* `renderCategoryFilter`
|
|
28
|
-
*
|
|
29
|
-
* and
|
|
30
|
-
*
|
|
31
|
-
*
|
|
27
|
+
* `renderCategoryFilter` is filled by ANOTHER pair: choosing a category means
|
|
28
|
+
* walking the catalogue tree (`categories-react`), which does not belong in a
|
|
29
|
+
* search package, and importing it would tie a storefront's search to a
|
|
30
|
+
* catalogue it might not have.
|
|
31
|
+
*
|
|
32
|
+
* There used to be a second one, `renderGeoFilter`, and a "Location" group
|
|
33
|
+
* around it with the radius under it. Both are gone from this panel. A place
|
|
34
|
+
* is not a filter — a coordinate pair is the machine form of somewhere, and
|
|
35
|
+
* putting it in the filter list is what let a landing announce "clear all
|
|
36
|
+
* filters (2)" over an empty page with two constraints that had no name.
|
|
37
|
+
* The place and its radius are ONE control of their own
|
|
38
|
+
* (`<LocationSummaryLine>`), the way a search box is, and `<SearchPage>`
|
|
39
|
+
* still takes `renderGeoFilter` — it hands it there.
|
|
32
40
|
*
|
|
33
41
|
* What this panel does NOT do is pretend the slot is optional. An unfilled
|
|
34
42
|
* slot renders `SlotPlaceholder` in development — a named, visible hole rather
|
|
35
43
|
* than a silent absence — and, in every build, any constraint the URL already
|
|
36
44
|
* carries gets a control that REMOVES it. A shared link that narrows to a
|
|
37
|
-
* category
|
|
45
|
+
* category must never leave a person with no way to widen it again.
|
|
38
46
|
*
|
|
39
47
|
* ── The panel opens what the answer argues for, and closes the rest ────────
|
|
40
48
|
*
|
|
@@ -68,11 +76,10 @@ import {
|
|
|
68
76
|
Divider,
|
|
69
77
|
Flex,
|
|
70
78
|
Input,
|
|
71
|
-
InputNumber,
|
|
72
79
|
Typography,
|
|
73
80
|
theme,
|
|
74
81
|
} from "antd";
|
|
75
|
-
import { SlotPlaceholder,
|
|
82
|
+
import { SlotPlaceholder, useT, useTPlural } from "@stapel/core";
|
|
76
83
|
import {
|
|
77
84
|
EmptyState,
|
|
78
85
|
ErrorAlert,
|
|
@@ -87,7 +94,7 @@ import { FacetPanel } from "../headless/FacetPanel.js";
|
|
|
87
94
|
import type { FacetLabelResolver } from "../headless/useFacetLabels.js";
|
|
88
95
|
import { useSearchState } from "../headless/SearchStateProvider.js";
|
|
89
96
|
import { useAppliedCount } from "../headless/useAppliedCount.js";
|
|
90
|
-
import { facetCoverage } from "../state/facets.js";
|
|
97
|
+
import { facetCoverage, orderFacetGroups } from "../state/facets.js";
|
|
91
98
|
import type { FacetGroup } from "../state/facets.js";
|
|
92
99
|
import { FacetGroupControl } from "./FacetGroupControl.js";
|
|
93
100
|
import { buildRangeGroups } from "../state/ranges.js";
|
|
@@ -202,25 +209,6 @@ export interface FacetPanelPaneProps extends ThemeModeProp {
|
|
|
202
209
|
/** The catalogue picker (`categories-react`'s `CategoryPickerField`, bound
|
|
203
210
|
* to a path). Unfilled, an active category still gets a "clear" control. */
|
|
204
211
|
readonly renderCategoryFilter?: (slot: CategoryFilterSlotProps) => ReactNode;
|
|
205
|
-
/** The location control (`geo-react`). Unfilled, a location that arrived in
|
|
206
|
-
* the URL still gets its radius and a "clear" control. */
|
|
207
|
-
readonly renderGeoFilter?: (slot: GeoFilterSlotProps) => ReactNode;
|
|
208
|
-
/**
|
|
209
|
-
* What the current location constraint is CALLED, in words — the address or
|
|
210
|
-
* the city the host resolved.
|
|
211
|
-
*
|
|
212
|
-
* The panel owns `lat`/`lon`/`radius_km` as URL state and must never render
|
|
213
|
-
* them: a coordinate is what gets STORED, and storage is not a display
|
|
214
|
-
* concern. `55.756, 37.617` is unreadable to the one person who could have
|
|
215
|
-
* caught the mistake, so a wrong point looks as authoritative as a right one
|
|
216
|
-
* and a right one looks like machinery.
|
|
217
|
-
*
|
|
218
|
-
* Whoever turned an address into that point still has the address — the
|
|
219
|
-
* geocoder's own answer, the city an IP guess named, the label on the map
|
|
220
|
-
* pin — and hands it back here. Absent, the panel says a location is applied
|
|
221
|
-
* without pretending to name it (`search.geo.chosen_place`).
|
|
222
|
-
*/
|
|
223
|
-
readonly geoLabel?: ReactNode;
|
|
224
212
|
/** BCP-47 tags this deployment indexes — see {@link LanguageSelect}. */
|
|
225
213
|
readonly languages?: readonly string[];
|
|
226
214
|
/**
|
|
@@ -407,97 +395,6 @@ export function geoSummaryFallback(
|
|
|
407
395
|
: t(SEARCH_I18N_KEYS.geoChosenPlace);
|
|
408
396
|
}
|
|
409
397
|
|
|
410
|
-
/**
|
|
411
|
-
* The location constraint.
|
|
412
|
-
*
|
|
413
|
-
* SETTING a centre needs a geocoder, which is the deployment's and
|
|
414
|
-
* `geo-react`'s. ADJUSTING one that already exists does not: the radius is a
|
|
415
|
-
* number in the URL, and a link shared with `lat/lon/radius_km` is a link this
|
|
416
|
-
* panel can widen, tighten and clear without knowing what a map is. That is the
|
|
417
|
-
* difference between a slot and a hole.
|
|
418
|
-
*
|
|
419
|
-
* NAMING the centre is a third thing again, and it is the host's: this panel
|
|
420
|
-
* has two numbers and no way to turn them into a place. So it either says the
|
|
421
|
-
* name it was handed (`label`) or says that a place is chosen — never the
|
|
422
|
-
* numbers themselves. See {@link FacetPanelPaneProps.geoLabel}.
|
|
423
|
-
*/
|
|
424
|
-
function GeoFilter(props: {
|
|
425
|
-
render?: (slot: GeoFilterSlotProps) => ReactNode;
|
|
426
|
-
label?: ReactNode;
|
|
427
|
-
}): ReactElement | null {
|
|
428
|
-
const t = useT();
|
|
429
|
-
const { state, setGeo } = useSearchState();
|
|
430
|
-
const geo = state.geo;
|
|
431
|
-
|
|
432
|
-
const slot =
|
|
433
|
-
props.render !== undefined
|
|
434
|
-
? props.render({
|
|
435
|
-
value: geo,
|
|
436
|
-
onChange: (next) => {
|
|
437
|
-
setGeo(next);
|
|
438
|
-
},
|
|
439
|
-
})
|
|
440
|
-
: geo === undefined
|
|
441
|
-
? <SlotPlaceholder name="renderGeoFilter" data-testid="search-geo-slot" />
|
|
442
|
-
: null;
|
|
443
|
-
|
|
444
|
-
if (geo === undefined) {
|
|
445
|
-
// An unfilled slot is a NAMED hole in development and nothing at all in a
|
|
446
|
-
// production build — so the heading has to follow the placeholder rather
|
|
447
|
-
// than outlive it. It did not, and the live desktop panel printed
|
|
448
|
-
// "Location" over empty space with no location control under it
|
|
449
|
-
// (class NC-ORPHANFIELD): a label is a promise that a control follows.
|
|
450
|
-
if (props.render === undefined && !isDevBuild()) return null;
|
|
451
|
-
return slot === null ? null : (
|
|
452
|
-
<Flex vertical gap={spacing[1]} data-testid="search-geo">
|
|
453
|
-
<Typography.Text strong>{t(SEARCH_I18N_KEYS.geoTitle)}</Typography.Text>
|
|
454
|
-
{slot}
|
|
455
|
-
</Flex>
|
|
456
|
-
);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
return (
|
|
460
|
-
<Flex vertical gap={spacing[1]} data-testid="search-geo">
|
|
461
|
-
<Typography.Text strong>{t(SEARCH_I18N_KEYS.geoTitle)}</Typography.Text>
|
|
462
|
-
{slot}
|
|
463
|
-
<Typography.Text type="secondary" data-testid="search-geo-summary">
|
|
464
|
-
{props.label ?? geoSummaryFallback(geo, t)}
|
|
465
|
-
</Typography.Text>
|
|
466
|
-
{geo.kind === "center" && (
|
|
467
|
-
<Flex gap={spacing[2]} align="center" wrap>
|
|
468
|
-
<Typography.Text type="secondary" aria-hidden="true">
|
|
469
|
-
{t(SEARCH_I18N_KEYS.geoRadiusLabel)}
|
|
470
|
-
</Typography.Text>
|
|
471
|
-
<InputNumber
|
|
472
|
-
min={1}
|
|
473
|
-
value={geo.radiusKm ?? null}
|
|
474
|
-
aria-label={t(SEARCH_I18N_KEYS.geoRadiusLabel)}
|
|
475
|
-
data-testid="search-geo-radius"
|
|
476
|
-
onChange={(value) => {
|
|
477
|
-
setGeo({
|
|
478
|
-
kind: "center",
|
|
479
|
-
lat: geo.lat,
|
|
480
|
-
lon: geo.lon,
|
|
481
|
-
...(typeof value === "number" ? { radiusKm: value } : {}),
|
|
482
|
-
});
|
|
483
|
-
}}
|
|
484
|
-
/>
|
|
485
|
-
</Flex>
|
|
486
|
-
)}
|
|
487
|
-
<Button
|
|
488
|
-
style={{ alignSelf: "flex-start" }}
|
|
489
|
-
data-testid="search-geo-clear"
|
|
490
|
-
data-analytics="none"
|
|
491
|
-
data-analytics-reason="a filter is a read, not a flow step"
|
|
492
|
-
onClick={() => {
|
|
493
|
-
setGeo(null);
|
|
494
|
-
}}
|
|
495
|
-
>
|
|
496
|
-
{t(SEARCH_I18N_KEYS.geoClear)}
|
|
497
|
-
</Button>
|
|
498
|
-
</Flex>
|
|
499
|
-
);
|
|
500
|
-
}
|
|
501
398
|
|
|
502
399
|
/**
|
|
503
400
|
* The slugs the server skipped, named the way the panel names everything else.
|
|
@@ -561,6 +458,13 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
561
458
|
...(bag.currency !== undefined ? { currency: bag.currency } : {}),
|
|
562
459
|
t,
|
|
563
460
|
});
|
|
461
|
+
// The band split, and it is the whole of D120/D121: `RangeGroup.core`
|
|
462
|
+
// is the server's own declaration that an axis exists for every
|
|
463
|
+
// document in every category (the price). Everything else is a
|
|
464
|
+
// number this category happens to declare, which on an imported
|
|
465
|
+
// classified catalogue means parcel weight and wholesale packing.
|
|
466
|
+
const coreRanges = ranges.filter((group) => group.core);
|
|
467
|
+
const attributeRanges = ranges.filter((group) => !group.core);
|
|
564
468
|
return (
|
|
565
469
|
<Flex vertical gap={spacing[3]} data-testid="search-facets">
|
|
566
470
|
{/* In a 280px rail this row laid the word "Filters" out in a
|
|
@@ -609,21 +513,21 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
609
513
|
<LanguageSelect
|
|
610
514
|
{...(props.languages !== undefined ? { languages: props.languages } : {})}
|
|
611
515
|
/>
|
|
612
|
-
<GeoFilter
|
|
613
|
-
{...(props.renderGeoFilter !== undefined
|
|
614
|
-
? { render: props.renderGeoFilter }
|
|
615
|
-
: {})}
|
|
616
|
-
{...(props.geoLabel !== undefined ? { label: props.geoLabel } : {})}
|
|
617
|
-
/>
|
|
618
516
|
|
|
619
|
-
{/* Price
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
517
|
+
{/* Price, and only the CORE axes — the ones the server declares
|
|
518
|
+
for every document in every category.
|
|
519
|
+
|
|
520
|
+
Every other numeric row is an ATTRIBUTE the category happens
|
|
521
|
+
to declare, and on the deployed phones leaf all seven were
|
|
522
|
+
parcel dimensions and wholesale packing. They used to render
|
|
523
|
+
here, immediately under the price, which put 908px of
|
|
524
|
+
shipping-weight and packing-count rows between the buyer and
|
|
525
|
+
the brand (D120/D121).
|
|
526
|
+
They now render AFTER the facets, which is the band order the
|
|
527
|
+
chip row has used since D16 — see `CHIP_BAND_ORDER`. */}
|
|
528
|
+
{coreRanges.length > 0 && (
|
|
625
529
|
<Flex vertical gap={spacing[3]} data-testid="search-ranges">
|
|
626
|
-
{
|
|
530
|
+
{coreRanges.map((group) => (
|
|
627
531
|
<RangeFilterRow
|
|
628
532
|
key={group.slug}
|
|
629
533
|
group={group}
|
|
@@ -633,7 +537,7 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
633
537
|
</Flex>
|
|
634
538
|
)}
|
|
635
539
|
|
|
636
|
-
{
|
|
540
|
+
{coreRanges.length > 0 && <Divider style={{ margin: 0 }} />}
|
|
637
541
|
|
|
638
542
|
{/* Honesty flags, not failures: the counts ARE approximate and
|
|
639
543
|
those slugs WERE skipped, and a red box would teach a person
|
|
@@ -678,8 +582,12 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
678
582
|
// case: a `ref_select` whose config is a bare pointer into
|
|
679
583
|
// a vocabulary this pair cannot read. A heading with no
|
|
680
584
|
// control under it names nothing, so it is not drawn.
|
|
681
|
-
|
|
682
|
-
|
|
585
|
+
// Evidence order, the chip row's rule applied to the rail:
|
|
586
|
+
// answered axes first, then the ones this corpus actually
|
|
587
|
+
// fills. Schema order is the catalogue importer's, and an
|
|
588
|
+
// imported catalogue's is alphabetical-by-accident.
|
|
589
|
+
const drawable = orderFacetGroups(
|
|
590
|
+
groups.filter((group) => group.options.length > 0)
|
|
683
591
|
);
|
|
684
592
|
// Which groups OPEN — see the module note. Chosen groups are
|
|
685
593
|
// open unconditionally below; here the answer's evidence
|
|
@@ -762,6 +670,34 @@ export function FacetPanelPane(props: FacetPanelPaneProps): ReactElement {
|
|
|
762
670
|
}}
|
|
763
671
|
</LoadList>
|
|
764
672
|
|
|
673
|
+
{/* The numeric tail, below the axes people actually narrow by.
|
|
674
|
+
On the deployed mobile-phones leaf this block is 908px of
|
|
675
|
+
battery health, four parcel dimensions and two wholesale
|
|
676
|
+
packing counts — and while it
|
|
677
|
+
rendered directly under the price it was the ONLY thing a
|
|
678
|
+
buyer could see in a viewport-tall rail (D120/D121, D74 on the
|
|
679
|
+
phone). It is a real filter for the person who wants it, so it
|
|
680
|
+
is not deleted; it is ranked where the chip row already ranks
|
|
681
|
+
it. */}
|
|
682
|
+
{attributeRanges.length > 0 && (
|
|
683
|
+
<>
|
|
684
|
+
<Divider style={{ margin: 0 }} />
|
|
685
|
+
<Flex
|
|
686
|
+
vertical
|
|
687
|
+
gap={spacing[3]}
|
|
688
|
+
data-testid="search-ranges-attributes"
|
|
689
|
+
>
|
|
690
|
+
{attributeRanges.map((group) => (
|
|
691
|
+
<RangeFilterRow
|
|
692
|
+
key={group.slug}
|
|
693
|
+
group={group}
|
|
694
|
+
onApply={bag.setRange}
|
|
695
|
+
/>
|
|
696
|
+
))}
|
|
697
|
+
</Flex>
|
|
698
|
+
</>
|
|
699
|
+
)}
|
|
700
|
+
|
|
765
701
|
{props.footerBar === true && (
|
|
766
702
|
<RailFooterBar
|
|
767
703
|
activeFilters={bag.activeFilters}
|
|
@@ -133,17 +133,13 @@ import type { FacetLabelResolver } from "../headless/useFacetLabels.js";
|
|
|
133
133
|
import { useSearchState } from "../headless/SearchStateProvider.js";
|
|
134
134
|
import { buildRangeGroups } from "../state/ranges.js";
|
|
135
135
|
import type { RangeGroup } from "../state/ranges.js";
|
|
136
|
-
import {
|
|
136
|
+
import { compareFacetsByEvidence } from "../state/facets.js";
|
|
137
137
|
import type { FacetGroup } from "../state/facets.js";
|
|
138
138
|
import { SEARCH_I18N_KEYS } from "../i18n/keys.js";
|
|
139
139
|
import { FacetGroupControl } from "./FacetGroupControl.js";
|
|
140
140
|
import { RangeFilterRow } from "./RangeFilterRow.js";
|
|
141
|
-
import {
|
|
142
|
-
import
|
|
143
|
-
CategoryFilterSlotProps,
|
|
144
|
-
GeoFilterSlotProps,
|
|
145
|
-
} from "./FacetPanelPane.js";
|
|
146
|
-
import { CHIP_GEO_TEST_IDS, GeoSheet, useApplyLabel } from "./geoSheet.js";
|
|
141
|
+
import type { CategoryFilterSlotProps } from "./FacetPanelPane.js";
|
|
142
|
+
import { useApplyLabel } from "./geoSheet.js";
|
|
147
143
|
|
|
148
144
|
/** The class the scroller carries, for {@link chipRowCss}. */
|
|
149
145
|
export const CHIP_ROW_CLASS = "stapel-filter-chips";
|
|
@@ -179,6 +175,7 @@ const ROW: CSSProperties = {
|
|
|
179
175
|
|
|
180
176
|
const CHIP: CSSProperties = { flex: "0 0 auto", borderRadius: radii.full };
|
|
181
177
|
|
|
178
|
+
|
|
182
179
|
/** Which picker is open, if any. `null` closes everything. */
|
|
183
180
|
type OpenChip = string | null;
|
|
184
181
|
|
|
@@ -251,8 +248,13 @@ export function orderChipFilters(
|
|
|
251
248
|
// plumbing, and schema order put them ahead of the brand). A group the
|
|
252
249
|
// server did not count sums to zero and trails every counted one; ties
|
|
253
250
|
// keep the authored order because the sort is stable.
|
|
251
|
+
//
|
|
252
|
+
// The comparator lives in `state/facets.ts` because the RAIL needs the
|
|
253
|
+
// same one and did not have it: this row ranked by evidence and the panel
|
|
254
|
+
// rendered schema order, so the two surfaces disagreed about which axes
|
|
255
|
+
// matter on the same search (D120/D121).
|
|
254
256
|
if (a.band === "facet" && b.band === "facet") {
|
|
255
|
-
return
|
|
257
|
+
return compareFacetsByEvidence(a.facet, b.facet);
|
|
256
258
|
}
|
|
257
259
|
return 0;
|
|
258
260
|
});
|
|
@@ -318,19 +320,6 @@ export interface FilterChipsProps {
|
|
|
318
320
|
* does not, and it is never invented.
|
|
319
321
|
*/
|
|
320
322
|
readonly categoryLabel?: ReactNode;
|
|
321
|
-
/** The location control (`geo-react`), same slot the panel takes. Without
|
|
322
|
-
* it the location chip appears only when the URL already carries a point,
|
|
323
|
-
* so a shared link can still be widened. */
|
|
324
|
-
readonly renderGeoFilter?: (slot: GeoFilterSlotProps) => ReactNode;
|
|
325
|
-
/**
|
|
326
|
-
* What the current location constraint is CALLED — see
|
|
327
|
-
* {@link FacetPanelPaneProps.geoLabel}. The chip carries it as its own text,
|
|
328
|
-
* which is the whole point of a chip row: "Berlin Mitte" states the filter
|
|
329
|
-
* on the results page, where `55.756, 37.617` stated only that a machine was
|
|
330
|
-
* involved. Absent, the chip reads `search.geo.chosen_place`; never a
|
|
331
|
-
* coordinate, on either surface.
|
|
332
|
-
*/
|
|
333
|
-
readonly geoLabel?: ReactNode;
|
|
334
323
|
/** Open the whole panel — the leading chip's action. The page owns that
|
|
335
324
|
* sheet, because the page is the surface it covers. */
|
|
336
325
|
readonly onOpenAll: () => void;
|
|
@@ -341,16 +330,6 @@ export interface FilterChipsProps {
|
|
|
341
330
|
* they are always drawn.
|
|
342
331
|
*/
|
|
343
332
|
readonly maxRowChips?: number | null;
|
|
344
|
-
/**
|
|
345
|
-
* Draw the location chip. Default `true`.
|
|
346
|
-
*
|
|
347
|
-
* `false` for a surface that already states the location ABOVE this row —
|
|
348
|
-
* `<LocationSummaryLine>` is that surface, and the phone SERP mounts both.
|
|
349
|
-
* Together they printed two location controls one line apart — the summary
|
|
350
|
-
* sentence over the chip's own prompt — opening two different sheets over
|
|
351
|
-
* one filter, which is the same constraint asked about twice.
|
|
352
|
-
*/
|
|
353
|
-
readonly geoChip?: boolean;
|
|
354
333
|
}
|
|
355
334
|
|
|
356
335
|
/**
|
|
@@ -489,18 +468,6 @@ export function FilterChips(props: FilterChipsProps): ReactElement | null {
|
|
|
489
468
|
props.maxRowChips === undefined ? CHIP_ROW_CAP : props.maxRowChips
|
|
490
469
|
);
|
|
491
470
|
|
|
492
|
-
const geo = state.geo;
|
|
493
|
-
const showGeoChip =
|
|
494
|
-
props.geoChip !== false &&
|
|
495
|
-
(props.renderGeoFilter !== undefined || geo !== undefined);
|
|
496
|
-
// Nothing applied: the chip is the FILTER's name ("Location"), because there
|
|
497
|
-
// is no constraint to describe yet. Applied: the host's name for the place,
|
|
498
|
-
// and failing that the sentence that admits the pair does not know it.
|
|
499
|
-
const geoChipLabel: ReactNode =
|
|
500
|
-
geo === undefined
|
|
501
|
-
? t(SEARCH_I18N_KEYS.geoTitle)
|
|
502
|
-
: (props.geoLabel ?? geoSummaryFallback(geo, t));
|
|
503
|
-
|
|
504
471
|
/*
|
|
505
472
|
* A row of one button is not a chip row.
|
|
506
473
|
*
|
|
@@ -513,7 +480,7 @@ export function FilterChips(props: FilterChipsProps): ReactElement | null {
|
|
|
513
480
|
* there is nothing to state, the row states nothing and the surface above
|
|
514
481
|
* keeps its own door.
|
|
515
482
|
*/
|
|
516
|
-
const hasChips = showCategoryChip ||
|
|
483
|
+
const hasChips = showCategoryChip || ordered.length > 0;
|
|
517
484
|
if (!hasChips) return null;
|
|
518
485
|
|
|
519
486
|
return (
|
|
@@ -565,21 +532,6 @@ export function FilterChips(props: FilterChipsProps): ReactElement | null {
|
|
|
565
532
|
</Button>
|
|
566
533
|
)}
|
|
567
534
|
|
|
568
|
-
{showGeoChip && (
|
|
569
|
-
<Button
|
|
570
|
-
style={CHIP}
|
|
571
|
-
shape="round"
|
|
572
|
-
type={geo !== undefined ? "primary" : "default"}
|
|
573
|
-
data-testid="search-chip-geo"
|
|
574
|
-
data-analytics="none"
|
|
575
|
-
data-analytics-reason="a filter is a read, not a flow step"
|
|
576
|
-
onClick={() => {
|
|
577
|
-
setOpen("geo");
|
|
578
|
-
}}
|
|
579
|
-
>
|
|
580
|
-
{geoChipLabel}
|
|
581
|
-
</Button>
|
|
582
|
-
)}
|
|
583
535
|
|
|
584
536
|
{/* One list, in the row's stated order — see this module's ordering
|
|
585
537
|
note. Rendering ranges and facets as two separate `.map`s is what
|
|
@@ -685,19 +637,6 @@ export function FilterChips(props: FilterChipsProps): ReactElement | null {
|
|
|
685
637
|
<RangeFilterRow group={group} onApply={bag.setRange} />
|
|
686
638
|
);
|
|
687
639
|
})()}
|
|
688
|
-
|
|
689
|
-
{/* The LOCATION sheet is shared with `<LocationSummaryLine>` — the ref
|
|
690
|
-
puts a location control on both rows, and they must land in the same
|
|
691
|
-
place. See `geoSheet.tsx`. */}
|
|
692
|
-
<GeoSheet
|
|
693
|
-
open={open === "geo"}
|
|
694
|
-
onClose={close}
|
|
695
|
-
testIds={CHIP_GEO_TEST_IDS}
|
|
696
|
-
{...(props.renderGeoFilter !== undefined
|
|
697
|
-
? { renderGeoFilter: props.renderGeoFilter }
|
|
698
|
-
: {})}
|
|
699
|
-
{...(props.geoLabel !== undefined ? { geoLabel: props.geoLabel } : {})}
|
|
700
|
-
/>
|
|
701
640
|
</>
|
|
702
641
|
);
|
|
703
642
|
}
|
|
@@ -705,6 +644,7 @@ export function FilterChips(props: FilterChipsProps): ReactElement | null {
|
|
|
705
644
|
/** The mark on the "all filters" chip: something is applied. Not a count —
|
|
706
645
|
* the counts are on the chips beside it, and a number inside a 32px circle is
|
|
707
646
|
* a number nobody reads. */
|
|
647
|
+
|
|
708
648
|
function ActiveDot(): ReactElement {
|
|
709
649
|
return (
|
|
710
650
|
<span
|