@stapel/search-react 0.7.0 → 0.9.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 +61 -0
- package/dist/default/FacetGroupControl.d.ts +40 -0
- package/dist/default/FacetGroupControl.d.ts.map +1 -0
- package/dist/default/FacetGroupControl.js +176 -0
- package/dist/default/FacetGroupControl.js.map +1 -0
- package/dist/default/FacetPanelPane.d.ts +30 -0
- package/dist/default/FacetPanelPane.d.ts.map +1 -1
- package/dist/default/FacetPanelPane.js +28 -16
- package/dist/default/FacetPanelPane.js.map +1 -1
- package/dist/default/FilterChips.d.ts +37 -0
- package/dist/default/FilterChips.d.ts.map +1 -0
- package/dist/default/FilterChips.js +203 -0
- package/dist/default/FilterChips.js.map +1 -0
- package/dist/default/SearchPage.d.ts +59 -0
- package/dist/default/SearchPage.d.ts.map +1 -1
- package/dist/default/SearchPage.js +60 -10
- package/dist/default/SearchPage.js.map +1 -1
- package/dist/default/SearchResultsPane.d.ts +19 -0
- package/dist/default/SearchResultsPane.d.ts.map +1 -1
- package/dist/default/SearchResultsPane.js +15 -2
- package/dist/default/SearchResultsPane.js.map +1 -1
- package/dist/default/ViewSwitch.d.ts +66 -0
- package/dist/default/ViewSwitch.d.ts.map +1 -0
- package/dist/default/ViewSwitch.js +49 -0
- package/dist/default/ViewSwitch.js.map +1 -0
- package/dist/default/index.d.ts +12 -1
- package/dist/default/index.d.ts.map +1 -1
- package/dist/default/index.js +9 -1
- package/dist/default/index.js.map +1 -1
- package/dist/headless/SearchStateProvider.d.ts +35 -0
- package/dist/headless/SearchStateProvider.d.ts.map +1 -1
- package/dist/headless/SearchStateProvider.js +38 -3
- package/dist/headless/SearchStateProvider.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +9 -1
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/keys.d.ts +32 -1
- package/dist/i18n/keys.d.ts.map +1 -1
- package/dist/i18n/keys.js +42 -2
- package/dist/i18n/keys.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +9 -1
- package/dist/i18n/ru.js.map +1 -1
- package/llms.txt +2 -1
- package/manifest.json +32 -3
- package/nav-manifest.json +1 -1
- package/package.json +8 -8
- package/src/analytics/generated/events.json +1 -1
- package/src/default/FacetGroupControl.tsx +312 -0
- package/src/default/FacetPanelPane.tsx +57 -63
- package/src/default/FilterChips.tsx +423 -0
- package/src/default/SearchPage.tsx +158 -16
- package/src/default/SearchResultsPane.tsx +39 -2
- package/src/default/ViewSwitch.tsx +147 -0
- package/src/default/index.ts +23 -1
- package/src/headless/SearchStateProvider.tsx +80 -3
- package/src/i18n/es.ts +10 -1
- package/src/i18n/keys.ts +44 -2
- package/src/i18n/ru.ts +10 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<ViewSwitch>` — how the results are ARRANGED: a list, a grid, or something
|
|
3
|
+
* the deployment brought with it.
|
|
4
|
+
*
|
|
5
|
+
* ## Why two of the three views ship and the third is a slot
|
|
6
|
+
*
|
|
7
|
+
* A list and a grid are the SAME data in two arrangements: one column of wide
|
|
8
|
+
* rows, or as many card columns as fit. That is a layout decision and a search
|
|
9
|
+
* pair can take it. A MAP is not — it needs a tile source, a projection, a
|
|
10
|
+
* marker layer and a geocoder, all of which live in `geo-react` and none of
|
|
11
|
+
* which a search package may depend on. So the third view arrives as a
|
|
12
|
+
* {@link SearchView} the host declares, with its own `render`, and this
|
|
13
|
+
* component treats it exactly like the two it ships. A pair that hardcoded a
|
|
14
|
+
* "map" button and then had nothing to draw would be offering a control that
|
|
15
|
+
* cannot work — the defect class the fleet calls a silent slot.
|
|
16
|
+
*
|
|
17
|
+
* ## The view is not URL state, and that is deliberate
|
|
18
|
+
*
|
|
19
|
+
* `sort`, `page size`, every filter and the cursor are in the query string,
|
|
20
|
+
* because they change WHAT the answer is and a shared link has to carry them.
|
|
21
|
+
* The view changes only how the same answer is drawn. Putting it in the URL
|
|
22
|
+
* would make every arrangement flip a new history entry and would rewrite the
|
|
23
|
+
* meaning of a link somebody sent. The page holds it in component state and
|
|
24
|
+
* offers `defaultView`/`onViewChange` so a host that wants it remembered can
|
|
25
|
+
* persist it wherever it keeps preferences.
|
|
26
|
+
*/
|
|
27
|
+
import type { ReactElement, ReactNode } from "react";
|
|
28
|
+
import type { SearchResultsRenderer } from "./SearchResultsPane.js";
|
|
29
|
+
/** How the pane's own arrangements lay a page of results out. */
|
|
30
|
+
export type SearchResultsLayout = "grid" | "list";
|
|
31
|
+
/** One arrangement offered by the switch. */
|
|
32
|
+
export interface SearchView {
|
|
33
|
+
/** Stable id — what `defaultView`/`onViewChange` speak in. */
|
|
34
|
+
readonly id: string;
|
|
35
|
+
/** i18n KEY for the view's name (never a literal: the switch is chrome). */
|
|
36
|
+
readonly labelKey: string;
|
|
37
|
+
/** The glyph beside the name. Omitted, the name stands alone. */
|
|
38
|
+
readonly icon?: ReactNode;
|
|
39
|
+
/**
|
|
40
|
+
* One of the pane's own arrangements. Ignored when {@link SearchView.render}
|
|
41
|
+
* is present, which replaces the arrangement entirely.
|
|
42
|
+
*/
|
|
43
|
+
readonly layout?: SearchResultsLayout;
|
|
44
|
+
/**
|
|
45
|
+
* The whole result surface, for a view the pair cannot draw — a map, a
|
|
46
|
+
* comparison table. It receives the loaded rows; the pane keeps its four
|
|
47
|
+
* load arms around it, so "nothing found" and "we could not run this search"
|
|
48
|
+
* stay the pane's sentences rather than the slot's problem.
|
|
49
|
+
*/
|
|
50
|
+
readonly render?: SearchResultsRenderer;
|
|
51
|
+
}
|
|
52
|
+
/** The two arrangements the pair itself can draw. */
|
|
53
|
+
export declare const SEARCH_BUILTIN_VIEWS: readonly SearchView[];
|
|
54
|
+
/** The view `id` currently in force, or the first offered one. */
|
|
55
|
+
export declare function resolveView(views: readonly SearchView[], id: string | undefined): SearchView | undefined;
|
|
56
|
+
export interface ViewSwitchProps {
|
|
57
|
+
readonly views: readonly SearchView[];
|
|
58
|
+
readonly value: string;
|
|
59
|
+
readonly onChange: (id: string) => void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The switch itself. Renders nothing for a single view: a control offering one
|
|
63
|
+
* choice is not a control, it is a label that can be clicked.
|
|
64
|
+
*/
|
|
65
|
+
export declare function ViewSwitch(props: ViewSwitchProps): ReactElement | null;
|
|
66
|
+
//# sourceMappingURL=ViewSwitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewSwitch.d.ts","sourceRoot":"","sources":["../../src/default/ViewSwitch.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,6CAA6C;AAC7C,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAyCD,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAAE,SAAS,UAAU,EAarD,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,EAAE,EAAE,MAAM,GAAG,SAAS,GACrB,UAAU,GAAG,SAAS,CAExB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAgBtE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Segmented } from "antd";
|
|
3
|
+
import { useT } from "@stapel/core";
|
|
4
|
+
import { SEARCH_I18N_KEYS } from "../i18n/keys.js";
|
|
5
|
+
/** Rows — one wide row per result, the arrangement a scan reads fastest. */
|
|
6
|
+
function ListGlyph() {
|
|
7
|
+
return (_jsx(ViewGlyph, { children: _jsx("path", { d: "M4 6.5h16M4 12h16M4 17.5h16" }) }));
|
|
8
|
+
}
|
|
9
|
+
/** Cards — as many columns as fit. */
|
|
10
|
+
function GridGlyph() {
|
|
11
|
+
return (_jsxs(ViewGlyph, { children: [_jsx("rect", { x: "4", y: "4", width: "7", height: "7", rx: "1.5" }), _jsx("rect", { x: "13", y: "4", width: "7", height: "7", rx: "1.5" }), _jsx("rect", { x: "4", y: "13", width: "7", height: "7", rx: "1.5" }), _jsx("rect", { x: "13", y: "13", width: "7", height: "7", rx: "1.5" })] }));
|
|
12
|
+
}
|
|
13
|
+
function ViewGlyph(props) {
|
|
14
|
+
return (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", role: "img", "aria-hidden": "true", children: props.children }));
|
|
15
|
+
}
|
|
16
|
+
/** The two arrangements the pair itself can draw. */
|
|
17
|
+
export const SEARCH_BUILTIN_VIEWS = [
|
|
18
|
+
{
|
|
19
|
+
id: "list",
|
|
20
|
+
labelKey: SEARCH_I18N_KEYS.viewList,
|
|
21
|
+
icon: _jsx(ListGlyph, {}),
|
|
22
|
+
layout: "list",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: "grid",
|
|
26
|
+
labelKey: SEARCH_I18N_KEYS.viewGrid,
|
|
27
|
+
icon: _jsx(GridGlyph, {}),
|
|
28
|
+
layout: "grid",
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
/** The view `id` currently in force, or the first offered one. */
|
|
32
|
+
export function resolveView(views, id) {
|
|
33
|
+
return views.find((view) => view.id === id) ?? views[0];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The switch itself. Renders nothing for a single view: a control offering one
|
|
37
|
+
* choice is not a control, it is a label that can be clicked.
|
|
38
|
+
*/
|
|
39
|
+
export function ViewSwitch(props) {
|
|
40
|
+
const t = useT();
|
|
41
|
+
if (props.views.length < 2)
|
|
42
|
+
return null;
|
|
43
|
+
return (_jsx(Segmented, { "aria-label": t(SEARCH_I18N_KEYS.viewLabel), value: props.value, "data-testid": "search-view-switch", onChange: props.onChange, options: props.views.map((view) => ({
|
|
44
|
+
value: view.id,
|
|
45
|
+
label: t(view.labelKey),
|
|
46
|
+
...(view.icon !== undefined ? { icon: view.icon } : {}),
|
|
47
|
+
})) }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ViewSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewSwitch.js","sourceRoot":"","sources":["../../src/default/ViewSwitch.tsx"],"names":[],"mappings":"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"}
|
package/dist/default/index.d.ts
CHANGED
|
@@ -21,7 +21,12 @@
|
|
|
21
21
|
* owns walking the tree; this pair owns the `category` parameter.
|
|
22
22
|
* 4. **`renderGeoFilter`** — the location control. `geo-react` owns the map
|
|
23
23
|
* and the geocoder; this pair owns `lat`/`lon`/`radius_km`/`bbox`, and
|
|
24
|
-
* keeps the controls that WIDEN a location a link already carries.
|
|
24
|
+
* keeps the controls that WIDEN a location a link already carries. Its two
|
|
25
|
+
* companions divide the same seam the same way: `geoLabel` is what the
|
|
26
|
+
* current place is CALLED (owning a coordinate is not permission to print
|
|
27
|
+
* one), and `defaultGeo` is where a fresh search opens when the URL names
|
|
28
|
+
* nowhere — the visitor's own position, resolved by whoever is allowed to
|
|
29
|
+
* ask for it.
|
|
25
30
|
* 5. **retheming through the §68 token JSON** — every surface wraps itself
|
|
26
31
|
* in the shared `SkinTheme`, so a host's regenerated `--stapel-*` custom
|
|
27
32
|
* properties reach this skin with zero code.
|
|
@@ -36,6 +41,10 @@ export { SearchPage } from "./SearchPage.js";
|
|
|
36
41
|
export type { SearchPageProps, SearchFiltersLayout } from "./SearchPage.js";
|
|
37
42
|
export { SearchResultsPane, RESULTS_MAX_WIDTH } from "./SearchResultsPane.js";
|
|
38
43
|
export type { SearchResultsPaneProps, SearchResultsRenderer, } from "./SearchResultsPane.js";
|
|
44
|
+
export { FilterChips, CHIP_ROW_CLASS, CHIP_ROW_STYLE_HREF, chipRowCss } from "./FilterChips.js";
|
|
45
|
+
export type { FilterChipsProps } from "./FilterChips.js";
|
|
46
|
+
export { FacetGroupControl, facetGroupShape, facetOptionNodes, FACET_VISIBLE_OPTIONS, } from "./FacetGroupControl.js";
|
|
47
|
+
export type { FacetGroupControlProps, FacetGroupShape, FacetOptionNode, } from "./FacetGroupControl.js";
|
|
39
48
|
export { FacetPanelPane } from "./FacetPanelPane.js";
|
|
40
49
|
export type { FacetPanelPaneProps, CategoryFilterSlotProps, GeoFilterSlotProps, } from "./FacetPanelPane.js";
|
|
41
50
|
export { RankingDisclosurePane, RANKING_MAX_WIDTH } from "./RankingDisclosurePane.js";
|
|
@@ -44,6 +53,8 @@ export { SearchBox } from "./SearchBox.js";
|
|
|
44
53
|
export type { SearchBoxProps } from "./SearchBox.js";
|
|
45
54
|
export { SortSelect, SORT_SELECT_MIN_WIDTH } from "./SortSelect.js";
|
|
46
55
|
export type { SortSelectProps } from "./SortSelect.js";
|
|
56
|
+
export { ViewSwitch, SEARCH_BUILTIN_VIEWS, resolveView } from "./ViewSwitch.js";
|
|
57
|
+
export type { ViewSwitchProps, SearchView, SearchResultsLayout } from "./ViewSwitch.js";
|
|
47
58
|
export { PageSizeSelect, SEARCH_PAGE_SIZES } from "./PageSizeSelect.js";
|
|
48
59
|
export type { PageSizeSelectProps } from "./PageSizeSelect.js";
|
|
49
60
|
export { LanguageSelect } from "./LanguageSelect.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChG,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/default/index.js
CHANGED
|
@@ -21,7 +21,12 @@
|
|
|
21
21
|
* owns walking the tree; this pair owns the `category` parameter.
|
|
22
22
|
* 4. **`renderGeoFilter`** — the location control. `geo-react` owns the map
|
|
23
23
|
* and the geocoder; this pair owns `lat`/`lon`/`radius_km`/`bbox`, and
|
|
24
|
-
* keeps the controls that WIDEN a location a link already carries.
|
|
24
|
+
* keeps the controls that WIDEN a location a link already carries. Its two
|
|
25
|
+
* companions divide the same seam the same way: `geoLabel` is what the
|
|
26
|
+
* current place is CALLED (owning a coordinate is not permission to print
|
|
27
|
+
* one), and `defaultGeo` is where a fresh search opens when the URL names
|
|
28
|
+
* nowhere — the visitor's own position, resolved by whoever is allowed to
|
|
29
|
+
* ask for it.
|
|
25
30
|
* 5. **retheming through the §68 token JSON** — every surface wraps itself
|
|
26
31
|
* in the shared `SkinTheme`, so a host's regenerated `--stapel-*` custom
|
|
27
32
|
* properties reach this skin with zero code.
|
|
@@ -35,11 +40,14 @@
|
|
|
35
40
|
// ── surfaces ────────────────────────────────────────────────────────────────
|
|
36
41
|
export { SearchPage } from "./SearchPage.js";
|
|
37
42
|
export { SearchResultsPane, RESULTS_MAX_WIDTH } from "./SearchResultsPane.js";
|
|
43
|
+
export { FilterChips, CHIP_ROW_CLASS, CHIP_ROW_STYLE_HREF, chipRowCss } from "./FilterChips.js";
|
|
44
|
+
export { FacetGroupControl, facetGroupShape, facetOptionNodes, FACET_VISIBLE_OPTIONS, } from "./FacetGroupControl.js";
|
|
38
45
|
export { FacetPanelPane } from "./FacetPanelPane.js";
|
|
39
46
|
export { RankingDisclosurePane, RANKING_MAX_WIDTH } from "./RankingDisclosurePane.js";
|
|
40
47
|
// ── controls, exported so a host can compose its own layout ─────────────────
|
|
41
48
|
export { SearchBox } from "./SearchBox.js";
|
|
42
49
|
export { SortSelect, SORT_SELECT_MIN_WIDTH } from "./SortSelect.js";
|
|
50
|
+
export { ViewSwitch, SEARCH_BUILTIN_VIEWS, resolveView } from "./ViewSwitch.js";
|
|
43
51
|
export { PageSizeSelect, SEARCH_PAGE_SIZES } from "./PageSizeSelect.js";
|
|
44
52
|
export { LanguageSelect } from "./LanguageSelect.js";
|
|
45
53
|
// ── parts, exported so a host can compose or wrap one ───────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,+EAA+E;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM9E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGhG,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGtF,+EAA+E;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -51,6 +51,41 @@ export interface SearchStateBag {
|
|
|
51
51
|
}
|
|
52
52
|
export interface SearchStateProviderProps extends ParseSearchStateOptions {
|
|
53
53
|
readonly adapter: SearchParamsAdapter;
|
|
54
|
+
/**
|
|
55
|
+
* Where to centre the results when the URL says nothing about location —
|
|
56
|
+
* the visitor's own position, as the HOST resolved it (a granted browser
|
|
57
|
+
* geolocation prompt, or the server's IP guess when there was none).
|
|
58
|
+
*
|
|
59
|
+
* Opt-in, and it is deliberately not one of the `default*` parse options
|
|
60
|
+
* beside it. Those are read-time fallbacks: `defaultCategory` fills a gap in
|
|
61
|
+
* the parsed state and never reaches the query string. A location cannot
|
|
62
|
+
* work that way. It has to be WRITTEN, once, because the URL is the state:
|
|
63
|
+
* a centre that lived only in the parse would vanish from a link the visitor
|
|
64
|
+
* shares, and — worse — would be re-applied on the very next render after
|
|
65
|
+
* they cleared it, which is a filter that will not come off.
|
|
66
|
+
*
|
|
67
|
+
* So the rules, all four of which are about not overruling a person:
|
|
68
|
+
*
|
|
69
|
+
* - **Only into an empty URL.** A link that carries `lat`/`lon` or `bbox`
|
|
70
|
+
* already means a place, and it must mean the same place for everybody
|
|
71
|
+
* who opens it. A default that overwrote it would make one address bar
|
|
72
|
+
* two different searches.
|
|
73
|
+
* - **Once.** Tracked as "has anyone spoken about location yet", in a ref —
|
|
74
|
+
* not by comparing the default against the current value, which cannot
|
|
75
|
+
* tell "the visitor cleared it" from "it has not been applied".
|
|
76
|
+
* - **Never after a clear.** `setGeo` marks the question answered, so a
|
|
77
|
+
* person who widens the search back to everywhere stays there.
|
|
78
|
+
* - **Late is fine.** A browser prompt and an IP round trip both resolve
|
|
79
|
+
* after the first paint, so `undefined` now and a value three renders
|
|
80
|
+
* later still applies — provided the URL is still empty of geo at that
|
|
81
|
+
* moment.
|
|
82
|
+
*
|
|
83
|
+
* It REPLACES the history entry rather than pushing one: the visitor did not
|
|
84
|
+
* perform this change, and Back should leave the page, not undo a centring
|
|
85
|
+
* they never asked for. The adapter's `setParams` takes `{ replace: true }`
|
|
86
|
+
* for exactly this, and the react-router binding honours it.
|
|
87
|
+
*/
|
|
88
|
+
readonly defaultGeo?: SearchGeo | undefined;
|
|
54
89
|
readonly children: ReactNode;
|
|
55
90
|
}
|
|
56
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchStateProvider.d.ts","sourceRoot":"","sources":["../../src/headless/SearchStateProvider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchStateProvider.d.ts","sourceRoot":"","sources":["../../src/headless/SearchStateProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAWzB,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC;;;;;;;OAOG;IACH,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAClF;AAED,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,0DAA0D;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,QAAQ,IAAI,IAAI,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpE;6EACyE;IACzE,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACtC;AAID,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACvE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,YAAY,CA2Gd;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,cAAc,CAQ/C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useCallback, useContext, useMemo } from "react";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, } from "react";
|
|
3
3
|
import { activeFilterCount, clearFilters, parseSearchState, patchSearchState, setFilterValues, setRangeValue, toggleFilterValue, writeSearchState, } from "../state/urlState.js";
|
|
4
4
|
const StateContext = createContext(null);
|
|
5
5
|
/**
|
|
@@ -9,7 +9,7 @@ const StateContext = createContext(null);
|
|
|
9
9
|
* same page by construction rather than by discipline.
|
|
10
10
|
*/
|
|
11
11
|
export function SearchStateProvider(props) {
|
|
12
|
-
const { adapter, children, ...parseOptions } = props;
|
|
12
|
+
const { adapter, children, defaultGeo, ...parseOptions } = props;
|
|
13
13
|
const { params, setParams } = adapter;
|
|
14
14
|
// The parse options are spread into a stable dependency: a host that builds
|
|
15
15
|
// the object inline (the normal way to write it) must not reparse on every
|
|
@@ -27,6 +27,16 @@ export function SearchStateProvider(props) {
|
|
|
27
27
|
const commit = useCallback((next, options) => {
|
|
28
28
|
setParams(writeSearchState(next, new URLSearchParams(search)), options);
|
|
29
29
|
}, [setParams, search]);
|
|
30
|
+
/**
|
|
31
|
+
* Has anything at all said where to search yet?
|
|
32
|
+
*
|
|
33
|
+
* `true` once the URL was seen carrying a location, once `defaultGeo` has
|
|
34
|
+
* been applied, or once anybody called `setGeo` — including with `null`.
|
|
35
|
+
* That last one is the whole reason this is a ref and not a comparison: a
|
|
36
|
+
* cleared location and an unapplied default look identical in the state, and
|
|
37
|
+
* only the record of who spoke tells them apart.
|
|
38
|
+
*/
|
|
39
|
+
const geoSettled = useRef(false);
|
|
30
40
|
const bag = useMemo(() => {
|
|
31
41
|
const state = parsed.state;
|
|
32
42
|
const apply = (next, options) => {
|
|
@@ -46,7 +56,13 @@ export function SearchStateProvider(props) {
|
|
|
46
56
|
toggleFilter: (slug, value) => apply(toggleFilterValue(state, slug, value)),
|
|
47
57
|
setFilter: (slug, values) => apply(setFilterValues(state, slug, values)),
|
|
48
58
|
setRange: (slug, range) => apply(setRangeValue(state, slug, range)),
|
|
49
|
-
setGeo: (geo) =>
|
|
59
|
+
setGeo: (geo) => {
|
|
60
|
+
// The person has now answered the location question themselves —
|
|
61
|
+
// including by answering "anywhere". `defaultGeo` does not get to ask
|
|
62
|
+
// it again.
|
|
63
|
+
geoSettled.current = true;
|
|
64
|
+
apply(patchSearchState(state, { geo }));
|
|
65
|
+
},
|
|
50
66
|
// A page size is a preference, not a step through the results.
|
|
51
67
|
setLimit: (limit) => apply(patchSearchState(state, { limit }), { replace: true }),
|
|
52
68
|
clearAll: () => apply(clearFilters(state)),
|
|
@@ -54,6 +70,25 @@ export function SearchStateProvider(props) {
|
|
|
54
70
|
patch: (patch) => apply(patchSearchState(state, patch)),
|
|
55
71
|
};
|
|
56
72
|
}, [parsed, commit]);
|
|
73
|
+
// An effect, not a render-time write: this puts a value in the URL, and a
|
|
74
|
+
// router asked to navigate during a render is a warning at best and a loop
|
|
75
|
+
// at worst. It runs after every commit, which is what makes a `defaultGeo`
|
|
76
|
+
// that arrives on the fourth render — the browser prompt finally answered —
|
|
77
|
+
// land as reliably as one present on the first.
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (geoSettled.current)
|
|
80
|
+
return;
|
|
81
|
+
if (parsed.state.geo !== undefined) {
|
|
82
|
+
// The link brought its own place. That settles the question for this
|
|
83
|
+
// visit even if the host is still resolving one of its own.
|
|
84
|
+
geoSettled.current = true;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (defaultGeo === undefined)
|
|
88
|
+
return;
|
|
89
|
+
geoSettled.current = true;
|
|
90
|
+
commit(patchSearchState(parsed.state, { geo: defaultGeo }), { replace: true });
|
|
91
|
+
}, [defaultGeo, parsed.state, commit]);
|
|
57
92
|
return _jsx(StateContext.Provider, { value: bag, children: children });
|
|
58
93
|
}
|
|
59
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchStateProvider.js","sourceRoot":"","sources":["../../src/headless/SearchStateProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SearchStateProvider.js","sourceRoot":"","sources":["../../src/headless/SearchStateProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/i18n/es.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,cA0IhC,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAE7D"}
|
package/dist/i18n/es.js
CHANGED
|
@@ -45,6 +45,9 @@ export const searchI18nBundleEs = {
|
|
|
45
45
|
"search.sort.price_desc": "Precio: de mayor a menor",
|
|
46
46
|
"search.sort.distance": "Más cercanos",
|
|
47
47
|
"search.sort.server_chose": "Ordenado por {sort}",
|
|
48
|
+
"search.view.label": "Vista",
|
|
49
|
+
"search.view.list": "Lista",
|
|
50
|
+
"search.view.grid": "Cuadrícula",
|
|
48
51
|
"search.facets.title": "Filtros",
|
|
49
52
|
"search.facets.loading": "Cargando filtros…",
|
|
50
53
|
"search.facets.load_failed": "No pudimos cargar los filtros.",
|
|
@@ -61,6 +64,8 @@ export const searchI18nBundleEs = {
|
|
|
61
64
|
"search.facets.range_clear": "Quitar",
|
|
62
65
|
"search.facets.range_from_aria": "{feature}, desde",
|
|
63
66
|
"search.facets.range_to_aria": "{feature}, hasta",
|
|
67
|
+
"search.facets.show_all": "Ver todos ({count})",
|
|
68
|
+
"search.facets.show_less": "Ver menos",
|
|
64
69
|
"search.facets.range_invalid": "«Desde» es mayor que «hasta», así que nada podría coincidir. Intercámbialos para aplicar el rango.",
|
|
65
70
|
"search.filters.open": "Filtros ({count})",
|
|
66
71
|
"search.filters.apply": "Ver resultados",
|
|
@@ -69,6 +74,9 @@ export const searchI18nBundleEs = {
|
|
|
69
74
|
"search.filters.show_count_at_least.one": "Ver {count}+ resultado",
|
|
70
75
|
"search.filters.show_count_at_least.other": "Ver {count}+ resultados",
|
|
71
76
|
"search.filters.dismiss": "Cerrar los filtros",
|
|
77
|
+
"search.filters.chips_label": "Filtros",
|
|
78
|
+
"search.filters.all": "Todos los filtros",
|
|
79
|
+
"search.filters.chip_more": ", +{count}",
|
|
72
80
|
"search.category.title": "Categoría",
|
|
73
81
|
"search.category.clear": "Buscar en todo el catálogo",
|
|
74
82
|
"search.category.current": "Buscando dentro de {path}",
|
|
@@ -82,7 +90,7 @@ export const searchI18nBundleEs = {
|
|
|
82
90
|
"search.geo.radius_label": "Radio, km",
|
|
83
91
|
"search.geo.clear": "En cualquier lugar",
|
|
84
92
|
"search.geo.box": "Dentro del área mostrada",
|
|
85
|
-
"search.geo.
|
|
93
|
+
"search.geo.chosen_place": "Un lugar elegido en el mapa",
|
|
86
94
|
"search.url.issues_title": "Parte de este enlace no se pudo leer",
|
|
87
95
|
"search.url.issue.not_a_number": "«{param}» en este enlace no es un número, así que se ignoró",
|
|
88
96
|
"search.url.issue.geo_incomplete": "la ubicación de este enlace está incompleta, así que se ignoró",
|
package/dist/i18n/es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,GAAG,mBAAmB;IAEtB,sBAAsB,EAAE,4BAA4B;IAEpD,sBAAsB,EAAE,YAAY;IACpC,wBAAwB,EAAE,WAAW;IACrC,4BAA4B,EAAE,oCAAoC;IAClE,sBAAsB,EAAE,6CAA6C;IACrE,sBAAsB,EAAE,YAAY;IACpC,sCAAsC,EAAE,mCAAmC;IAC3E,wCAAwC,EAAE,yBAAyB;IACnE,mCAAmC,EAAE,oBAAoB;IACzD,qCAAqC,EAAE,qBAAqB;IAC5D,gCAAgC,EAAE,mBAAmB;IACrD,kCAAkC,EAAE,oBAAoB;IACxD,wBAAwB,EAAE,SAAS;IACnC,qBAAqB,EAAE,kBAAkB;IACzC,qBAAqB,EAAE,iBAAiB;IACxC,+BAA+B,EAAE,0BAA0B;IAC3D,iCAAiC,EAAE,2BAA2B;IAC9D,gCAAgC,EAC9B,iHAAiH;IACnH,yBAAyB,EAAE,cAAc;IACzC,8BAA8B,EAC5B,yGAAyG;IAC3G,4BAA4B,EAAE,WAAW;IACzC,yBAAyB,EAAE,YAAY;IACvC,qBAAqB,EAAE,OAAO;IAC9B,0BAA0B,EAAE,iBAAiB;IAE7C,kBAAkB,EAAE,QAAQ;IAC5B,wBAAwB,EAAE,sBAAsB;IAChD,mBAAmB,EAAE,QAAQ;IAC7B,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,aAAa;IAEvC,mBAAmB,EAAE,OAAO;IAC5B,uBAAuB,EAAE,gBAAgB;IACzC,oBAAoB,EAAE,eAAe;IACrC,uBAAuB,EAAE,0BAA0B;IACnD,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,cAAc;IACtC,0BAA0B,EAAE,qBAAqB;IAEjD,qBAAqB,EAAE,SAAS;IAChC,uBAAuB,EAAE,mBAAmB;IAC5C,2BAA2B,EAAE,gCAAgC;IAC7D,qBAAqB,EAAE,kCAAkC;IACzD,qBAAqB,EAAE,QAAQ;IAC/B,yBAAyB,EAAE,oCAAoC;IAC/D,2BAA2B,EACzB,kFAAkF;IACpF,uBAAuB,EACrB,0DAA0D;IAC5D,2BAA2B,EAAE,YAAY;IACzC,+BAA+B,EAC7B,6EAA6E;IAC/E,0BAA0B,EAAE,OAAO;IACnC,wBAAwB,EAAE,OAAO;IACjC,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,QAAQ;IACrC,+BAA+B,EAAE,kBAAkB;IACnD,6BAA6B,EAAE,kBAAkB;IACjD,6BAA6B,EAC3B,oGAAoG;IAEtG,qBAAqB,EAAE,mBAAmB;IAC1C,sBAAsB,EAAE,gBAAgB;IACxC,+BAA+B,EAAE,uBAAuB;IACxD,iCAAiC,EAAE,wBAAwB;IAC3D,wCAAwC,EAAE,wBAAwB;IAClE,0CAA0C,EAAE,yBAAyB;IACrE,wBAAwB,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/keys.d.ts
CHANGED
|
@@ -65,6 +65,11 @@ export declare const SEARCH_I18N_KEYS: {
|
|
|
65
65
|
readonly sortPriceDesc: "search.sort.price_desc";
|
|
66
66
|
readonly sortDistance: "search.sort.distance";
|
|
67
67
|
readonly sortServerChose: "search.sort.server_chose";
|
|
68
|
+
/** The switch's own accessible name — a `Segmented` renders a radiogroup
|
|
69
|
+
* with no `<label for>` to name it. */
|
|
70
|
+
readonly viewLabel: "search.view.label";
|
|
71
|
+
readonly viewList: "search.view.list";
|
|
72
|
+
readonly viewGrid: "search.view.grid";
|
|
68
73
|
readonly facetsTitle: "search.facets.title";
|
|
69
74
|
readonly facetsLoading: "search.facets.loading";
|
|
70
75
|
readonly facetsLoadFailed: "search.facets.load_failed";
|
|
@@ -86,6 +91,12 @@ export declare const SEARCH_I18N_KEYS: {
|
|
|
86
91
|
readonly facetsRangeToAria: "search.facets.range_to_aria";
|
|
87
92
|
/** The reason "Apply" is off: the range reads backwards. */
|
|
88
93
|
readonly facetsRangeInvalid: "search.facets.range_invalid";
|
|
94
|
+
/** The fold on a long facet group: "Show all (46)". The number is in
|
|
95
|
+
* brackets and not a counted noun, so this is one message and not a plural
|
|
96
|
+
* family — "(1)" never renders, because a group is only folded when the
|
|
97
|
+
* tail is longer than one row. */
|
|
98
|
+
readonly facetsShowAll: "search.facets.show_all";
|
|
99
|
+
readonly facetsShowLess: "search.facets.show_less";
|
|
89
100
|
readonly filtersOpen: "search.filters.open";
|
|
90
101
|
/** The sheet's commit button when the count is unknown. */
|
|
91
102
|
readonly filtersApply: "search.filters.apply";
|
|
@@ -95,6 +106,15 @@ export declare const SEARCH_I18N_KEYS: {
|
|
|
95
106
|
/** "Show N+ results" — a FLOOR on the same button. A PLURAL FAMILY. */
|
|
96
107
|
readonly filtersShowCountAtLeast: "search.filters.show_count_at_least";
|
|
97
108
|
readonly filtersDismiss: "search.filters.dismiss";
|
|
109
|
+
/** The accessible name of the phone chip ROW — a `role="group"` holding a
|
|
110
|
+
* dozen buttons is announced as nothing at all without one. */
|
|
111
|
+
readonly filtersChipsLabel: "search.filters.chips_label";
|
|
112
|
+
/** The leading, icon-only chip: the whole panel. Icon-only means the name
|
|
113
|
+
* exists ONLY here, so this key is the control's entire accessibility. */
|
|
114
|
+
readonly filtersAll: "search.filters.all";
|
|
115
|
+
/** A chip filtering on more than one value: "Bosch, +2". Not a plural
|
|
116
|
+
* family — nothing is being counted in words. */
|
|
117
|
+
readonly filtersChipMore: "search.filters.chip_more";
|
|
98
118
|
readonly categoryTitle: "search.category.title";
|
|
99
119
|
readonly categoryClear: "search.category.clear";
|
|
100
120
|
readonly categoryCurrent: "search.category.current";
|
|
@@ -110,7 +130,18 @@ export declare const SEARCH_I18N_KEYS: {
|
|
|
110
130
|
readonly geoRadiusLabel: "search.geo.radius_label";
|
|
111
131
|
readonly geoClear: "search.geo.clear";
|
|
112
132
|
readonly geoBox: "search.geo.box";
|
|
113
|
-
|
|
133
|
+
/**
|
|
134
|
+
* What a location constraint is called when nobody has given it a NAME.
|
|
135
|
+
*
|
|
136
|
+
* It replaces `search.geo.center` ("Around {lat}, {lon}"), which printed the
|
|
137
|
+
* two numbers the URL happens to store — `55.756, 37.617` — to a person who
|
|
138
|
+
* chose a place. A coordinate is storage, not a description: it cannot be
|
|
139
|
+
* checked by the one reader who could check an address, so a wrong point
|
|
140
|
+
* reads as authoritative and a right one reads as machinery. Hosts that HAVE
|
|
141
|
+
* the name (the geocoder that resolved it, the IP guess's city) pass
|
|
142
|
+
* `geoLabel` and this sentence never appears.
|
|
143
|
+
*/
|
|
144
|
+
readonly geoChosenPlace: "search.geo.chosen_place";
|
|
114
145
|
readonly urlIssuesTitle: "search.url.issues_title";
|
|
115
146
|
readonly urlIssueNotANumber: "search.url.issue.not_a_number";
|
|
116
147
|
readonly urlIssueGeoIncomplete: "search.url.issue.geo_incomplete";
|
package/dist/i18n/keys.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;IAS3B;;;;;;;OAOG;;IAEH;kEAC8D;;IAE9D,sEAAsE;;;;;;;IAOtE,yDAAyD;;;;;;;IAOzD,yEAAyE;;;;;;IAQzE,4DAA4D
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;IAS3B;;;;;;;OAOG;;IAEH;kEAC8D;;IAE9D,sEAAsE;;;;;;;IAOtE,yDAAyD;;;;;;;IAOzD,yEAAyE;;;;;;IAQzE,4DAA4D;;;;;;;;;IAa5D;2CACuC;;;;;;;;;;;;IAcvC,oEAAoE;;;;;;;IAOpE;kEAC8D;;;IAG9D,4DAA4D;;IAE5D;;;sCAGkC;;;;IAMlC,2DAA2D;;IAE3D;0BACsB;;IAEtB,uEAAuE;;;IAGvE;mEAC+D;;IAE/D;8EAC0E;;IAE1E;qDACiD;;;;;;;;;IAejD;iFAC6E;;;;;;;IAS7E;;;;;;;;;;OAUG;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCK,CAAC;AAEX,MAAM,MAAM,aAAa,GACvB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,aAAa,EAM3D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyIrD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAEzD"}
|
package/dist/i18n/keys.js
CHANGED
|
@@ -68,6 +68,12 @@ export const SEARCH_I18N_KEYS = {
|
|
|
68
68
|
sortPriceDesc: "search.sort.price_desc",
|
|
69
69
|
sortDistance: "search.sort.distance",
|
|
70
70
|
sortServerChose: "search.sort.server_chose",
|
|
71
|
+
// ── how the results are ARRANGED (see ViewSwitch) ────────────────────────
|
|
72
|
+
/** The switch's own accessible name — a `Segmented` renders a radiogroup
|
|
73
|
+
* with no `<label for>` to name it. */
|
|
74
|
+
viewLabel: "search.view.label",
|
|
75
|
+
viewList: "search.view.list",
|
|
76
|
+
viewGrid: "search.view.grid",
|
|
71
77
|
// ── facets ───────────────────────────────────────────────────────────────
|
|
72
78
|
facetsTitle: "search.facets.title",
|
|
73
79
|
facetsLoading: "search.facets.loading",
|
|
@@ -90,6 +96,12 @@ export const SEARCH_I18N_KEYS = {
|
|
|
90
96
|
facetsRangeToAria: "search.facets.range_to_aria",
|
|
91
97
|
/** The reason "Apply" is off: the range reads backwards. */
|
|
92
98
|
facetsRangeInvalid: "search.facets.range_invalid",
|
|
99
|
+
/** The fold on a long facet group: "Show all (46)". The number is in
|
|
100
|
+
* brackets and not a counted noun, so this is one message and not a plural
|
|
101
|
+
* family — "(1)" never renders, because a group is only folded when the
|
|
102
|
+
* tail is longer than one row. */
|
|
103
|
+
facetsShowAll: "search.facets.show_all",
|
|
104
|
+
facetsShowLess: "search.facets.show_less",
|
|
93
105
|
// ── the filter panel as a whole (phone sheet + host slots) ───────────────
|
|
94
106
|
filtersOpen: "search.filters.open",
|
|
95
107
|
/** The sheet's commit button when the count is unknown. */
|
|
@@ -100,6 +112,15 @@ export const SEARCH_I18N_KEYS = {
|
|
|
100
112
|
/** "Show N+ results" — a FLOOR on the same button. A PLURAL FAMILY. */
|
|
101
113
|
filtersShowCountAtLeast: "search.filters.show_count_at_least",
|
|
102
114
|
filtersDismiss: "search.filters.dismiss",
|
|
115
|
+
/** The accessible name of the phone chip ROW — a `role="group"` holding a
|
|
116
|
+
* dozen buttons is announced as nothing at all without one. */
|
|
117
|
+
filtersChipsLabel: "search.filters.chips_label",
|
|
118
|
+
/** The leading, icon-only chip: the whole panel. Icon-only means the name
|
|
119
|
+
* exists ONLY here, so this key is the control's entire accessibility. */
|
|
120
|
+
filtersAll: "search.filters.all",
|
|
121
|
+
/** A chip filtering on more than one value: "Bosch, +2". Not a plural
|
|
122
|
+
* family — nothing is being counted in words. */
|
|
123
|
+
filtersChipMore: "search.filters.chip_more",
|
|
103
124
|
// ── category (a host slot, plus the control that removes it) ─────────────
|
|
104
125
|
categoryTitle: "search.category.title",
|
|
105
126
|
categoryClear: "search.category.clear",
|
|
@@ -119,7 +140,18 @@ export const SEARCH_I18N_KEYS = {
|
|
|
119
140
|
geoRadiusLabel: "search.geo.radius_label",
|
|
120
141
|
geoClear: "search.geo.clear",
|
|
121
142
|
geoBox: "search.geo.box",
|
|
122
|
-
|
|
143
|
+
/**
|
|
144
|
+
* What a location constraint is called when nobody has given it a NAME.
|
|
145
|
+
*
|
|
146
|
+
* It replaces `search.geo.center` ("Around {lat}, {lon}"), which printed the
|
|
147
|
+
* two numbers the URL happens to store — `55.756, 37.617` — to a person who
|
|
148
|
+
* chose a place. A coordinate is storage, not a description: it cannot be
|
|
149
|
+
* checked by the one reader who could check an address, so a wrong point
|
|
150
|
+
* reads as authoritative and a right one reads as machinery. Hosts that HAVE
|
|
151
|
+
* the name (the geocoder that resolved it, the IP guess's city) pass
|
|
152
|
+
* `geoLabel` and this sentence never appears.
|
|
153
|
+
*/
|
|
154
|
+
geoChosenPlace: "search.geo.chosen_place",
|
|
123
155
|
// ── the URL that could not be read ───────────────────────────────────────
|
|
124
156
|
urlIssuesTitle: "search.url.issues_title",
|
|
125
157
|
urlIssueNotANumber: "search.url.issue.not_a_number",
|
|
@@ -213,6 +245,9 @@ export const searchI18nBundleEn = {
|
|
|
213
245
|
"search.sort.price_desc": "Price: high to low",
|
|
214
246
|
"search.sort.distance": "Nearest first",
|
|
215
247
|
"search.sort.server_chose": "Sorted by {sort}",
|
|
248
|
+
"search.view.label": "View",
|
|
249
|
+
"search.view.list": "List",
|
|
250
|
+
"search.view.grid": "Grid",
|
|
216
251
|
"search.facets.title": "Filters",
|
|
217
252
|
"search.facets.loading": "Loading filters…",
|
|
218
253
|
"search.facets.load_failed": "We could not load the filters",
|
|
@@ -229,6 +264,8 @@ export const searchI18nBundleEn = {
|
|
|
229
264
|
"search.facets.range_clear": "Clear",
|
|
230
265
|
"search.facets.range_from_aria": "{feature}, from",
|
|
231
266
|
"search.facets.range_to_aria": "{feature}, up to",
|
|
267
|
+
"search.facets.show_all": "Show all ({count})",
|
|
268
|
+
"search.facets.show_less": "Show fewer",
|
|
232
269
|
"search.facets.range_invalid": "“From” is larger than “to”, so nothing could match. Swap them to apply this range.",
|
|
233
270
|
"search.filters.open": "Filters ({count})",
|
|
234
271
|
"search.filters.apply": "Show results",
|
|
@@ -237,6 +274,9 @@ export const searchI18nBundleEn = {
|
|
|
237
274
|
"search.filters.show_count_at_least.one": "Show {count}+ result",
|
|
238
275
|
"search.filters.show_count_at_least.other": "Show {count}+ results",
|
|
239
276
|
"search.filters.dismiss": "Close the filters",
|
|
277
|
+
"search.filters.chips_label": "Filters",
|
|
278
|
+
"search.filters.all": "All filters",
|
|
279
|
+
"search.filters.chip_more": ", +{count}",
|
|
240
280
|
"search.category.title": "Category",
|
|
241
281
|
"search.category.clear": "Search the whole catalogue",
|
|
242
282
|
"search.category.current": "Searching inside {path}",
|
|
@@ -250,7 +290,7 @@ export const searchI18nBundleEn = {
|
|
|
250
290
|
"search.geo.radius_label": "Radius, km",
|
|
251
291
|
"search.geo.clear": "Anywhere",
|
|
252
292
|
"search.geo.box": "Inside the shown area",
|
|
253
|
-
"search.geo.
|
|
293
|
+
"search.geo.chosen_place": "A chosen place on the map",
|
|
254
294
|
"search.url.issues_title": "Part of this link could not be read",
|
|
255
295
|
"search.url.issue.not_a_number": "“{param}” in this link is not a number, so it was ignored",
|
|
256
296
|
"search.url.issue.geo_incomplete": "the location in this link is only half there, so it was ignored",
|
package/dist/i18n/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,sBAAsB;IAEpC,4EAA4E;IAC5E,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,wBAAwB;IACxC,iBAAiB,EAAE,4BAA4B;IAC/C,YAAY,EAAE,sBAAsB;IACpC,YAAY,EAAE,sBAAsB;IACpC;;;;;;;OAOG;IACH,uBAAuB,EAAE,kCAAkC;IAC3D;kEAC8D;IAC9D,mBAAmB,EAAE,+BAA+B;IACpD,sEAAsE;IACtE,iBAAiB,EAAE,4BAA4B;IAC/C,aAAa,EAAE,wBAAwB;IACvC,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,qBAAqB;IAClC,mBAAmB,EAAE,+BAA+B;IACpD,qBAAqB,EAAE,iCAAiC;IACxD,yDAAyD;IACzD,qBAAqB,EAAE,gCAAgC;IACvD,eAAe,EAAE,yBAAyB;IAC1C,mBAAmB,EAAE,8BAA8B;IACnD,iBAAiB,EAAE,4BAA4B;IAC/C,eAAe,EAAE,yBAAyB;IAC1C,WAAW,EAAE,qBAAqB;IAClC,yEAAyE;IACzE,eAAe,EAAE,0BAA0B;IAE3C,4EAA4E;IAC5E,QAAQ,EAAE,kBAAkB;IAC5B,cAAc,EAAE,wBAAwB;IACxC,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,kBAAkB;IAC5B,4DAA4D;IAC5D,cAAc,EAAE,wBAAwB;IAExC,4EAA4E;IAC5E,SAAS,EAAE,mBAAmB;IAC9B,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,oBAAoB;IAChC,YAAY,EAAE,uBAAuB;IACrC,aAAa,EAAE,wBAAwB;IACvC,YAAY,EAAE,sBAAsB;IACpC,eAAe,EAAE,0BAA0B;IAE3C,4EAA4E;IAC5E,WAAW,EAAE,qBAAqB;IAClC,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,2BAA2B;IAC7C,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,qBAAqB;IAClC,cAAc,EAAE,yBAAyB;IACzC,iBAAiB,EAAE,2BAA2B;IAC9C,aAAa,EAAE,uBAAuB;IACtC,oEAAoE;IACpE,gBAAgB,EAAE,2BAA2B;IAC7C,mBAAmB,EAAE,+BAA+B;IACpD,eAAe,EAAE,0BAA0B;IAC3C,aAAa,EAAE,wBAAwB;IACvC,gBAAgB,EAAE,2BAA2B;IAC7C,gBAAgB,EAAE,2BAA2B;IAC7C;kEAC8D;IAC9D,mBAAmB,EAAE,+BAA+B;IACpD,iBAAiB,EAAE,6BAA6B;IAChD,4DAA4D;IAC5D,kBAAkB,EAAE,6BAA6B;
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"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"}
|