@cratis/components 4.1.3 → 4.2.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.
@@ -0,0 +1,60 @@
1
+ import type { FilterOption } from './types.js';
2
+ /**
3
+ * Props for {@link CheckboxListFilter}.
4
+ */
5
+ export interface CheckboxListFilterProps {
6
+ /** Everything that can be picked. */
7
+ options: FilterOption[];
8
+ /** Keys of the currently selected options. */
9
+ selected: Set<string>;
10
+ /** Allow selecting more than one option (checkbox behaviour). Defaults to false (radio behaviour). */
11
+ multi?: boolean;
12
+ /** Called with the toggled option's key whenever a row is picked. */
13
+ onToggle: (optionKey: string) => void;
14
+ /**
15
+ * Whether to show a search box for narrowing the list by label.
16
+ *
17
+ * - `true` always shows it.
18
+ * - `false` never shows it, no matter how long the list gets.
19
+ * - `undefined` (the default) shows it only when there are more options than fit inside the
20
+ * list's box - the search box grows out of the list needing one, rather than the caller
21
+ * having to predict that ahead of time.
22
+ */
23
+ searchable?: boolean;
24
+ /** Placeholder text for the search input. Defaults to 'Search…'. */
25
+ searchPlaceholder?: string;
26
+ /** Shown in place of the list when there are no options at all. */
27
+ emptyMessage?: string;
28
+ /** Shown in place of the list when a search matches nothing. */
29
+ noMatchesMessage?: string;
30
+ /**
31
+ * The `name` attribute grouping single-select (`multi={false}`) options into one radio group.
32
+ * Generated automatically when omitted; only needs to be supplied to coordinate with markup
33
+ * outside this component.
34
+ */
35
+ name?: string;
36
+ }
37
+ /**
38
+ * A bounded, scrollable list of checkboxes or radio buttons for picking from a set of options.
39
+ *
40
+ * The list is capped at a fixed height so it cannot swallow whatever it sits in. When picking
41
+ * from it would otherwise mean scrolling past more rows than fit in that box, a search input
42
+ * appears, pinned to the top of the list so it stays reachable while the rows beneath it scroll.
43
+ * A short list that already fits gets no search box at all - one is only ever shown because the
44
+ * list needs it, not because the caller guessed it might.
45
+ *
46
+ * Used by {@link FilterPanel} to render its string/option filter groups, and equally usable
47
+ * standalone wherever an application needs a checkbox/radio picker with the same behaviour.
48
+ *
49
+ * ```tsx
50
+ * <CheckboxListFilter
51
+ * options={repositories}
52
+ * selected={selectedRepositoryKeys}
53
+ * multi
54
+ * onToggle={(key) => toggleRepository(key)}
55
+ * />
56
+ * ```
57
+ *
58
+ * @param props - {@link CheckboxListFilterProps}.
59
+ */
60
+ export declare function CheckboxListFilter({ options, selected, multi, onToggle, searchable, searchPlaceholder, emptyMessage, noMatchesMessage, name, }: CheckboxListFilterProps): import("react").JSX.Element;
@@ -0,0 +1,31 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState, useRef, useId, useMemo } from 'react';
3
+ import { useOptionListOverflow } from './useOptionListOverflow.js';
4
+
5
+ function renderOptionCount(count) {
6
+ return typeof count === 'number' ? count : '';
7
+ }
8
+ function CheckboxListFilter({ options, selected, multi = false, onToggle, searchable, searchPlaceholder = 'Search…', emptyMessage = 'Nothing to choose from.', noMatchesMessage = 'No matches.', name, }) {
9
+ const [search, setSearch] = useState('');
10
+ const containerRef = useRef(null);
11
+ const mirrorRef = useRef(null);
12
+ const generatedName = useId();
13
+ const groupName = name ?? generatedName;
14
+ const autoDetect = searchable === undefined;
15
+ const overflows = useOptionListOverflow(containerRef, mirrorRef, autoDetect);
16
+ const showSearch = searchable === true || (autoDetect && overflows);
17
+ const normalized = search.trim().toLowerCase();
18
+ const visibleOptions = useMemo(() => showSearch && normalized.length > 0
19
+ ? options.filter((option) => option.label.toLowerCase().includes(normalized))
20
+ : options, [options, showSearch, normalized]);
21
+ if (options.length === 0) {
22
+ return jsx("p", { className: 'pv-option-list-empty', children: emptyMessage });
23
+ }
24
+ return (jsxs("div", { className: 'pv-option-list', ref: containerRef, children: [showSearch && (jsx("div", { className: 'pv-filter-group-search pv-option-list-search', children: jsx("input", { type: 'search', placeholder: searchPlaceholder, value: search, onChange: (event) => setSearch(event.target.value) }) })), jsxs("ul", { className: 'pv-option-list-options', children: [visibleOptions.map((option) => {
25
+ const checked = selected.has(option.key);
26
+ return (jsx("li", { "data-selected": checked || undefined, children: jsxs("label", { "data-selected": checked || undefined, children: [jsx("input", { type: multi ? 'checkbox' : 'radio', "data-selected": checked || undefined, name: groupName, checked: checked, onChange: () => onToggle(option.key) }), jsx("span", { children: option.label }), jsx("span", { className: 'pv-option-count', children: renderOptionCount(option.count) })] }) }, option.key));
27
+ }), visibleOptions.length === 0 && (jsx("li", { className: 'pv-option-list-empty', children: jsx("span", { children: noMatchesMessage }) }))] }), autoDetect && (jsx("ul", { className: 'pv-option-list-mirror', ref: mirrorRef, "aria-hidden": 'true', children: options.map((option) => (jsx("li", { children: jsxs("label", { children: [jsx("input", { type: multi ? 'checkbox' : 'radio', disabled: true, tabIndex: -1 }), jsx("span", { className: 'pv-option-mirror-label', "data-label": option.label }), jsx("span", { className: 'pv-option-count pv-option-mirror-label', "data-label": renderOptionCount(option.count) })] }) }, option.key))) }))] }));
28
+ }
29
+
30
+ export { CheckboxListFilter };
31
+ //# sourceMappingURL=CheckboxListFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxListFilter.js","sources":["../../../Filter/CheckboxListFilter.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useSyncExternalStore, useRef, useState, useMemo, useEffect, Children, isValidElement } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
4
  import { AnimatePresence, motion } from 'framer-motion';
5
5
  import { resolveDropdownPosition } from './utils.js';
6
6
  import { FilterEditor } from './FilterEditor.js';
7
7
  import { RangeHistogramFilter } from './RangeHistogramFilter.js';
8
+ import { CheckboxListFilter } from './CheckboxListFilter.js';
8
9
 
9
10
  function buildEditorMap(children) {
10
11
  const map = {};
@@ -18,21 +19,8 @@ function buildEditorMap(children) {
18
19
  });
19
20
  return map;
20
21
  }
21
- function renderOptionCount(count) {
22
- return typeof count === 'number' ? count : '';
23
- }
24
22
  function OptionList({ filter, selections, onFilterToggle, searchPlaceholder, }) {
25
- const [groupSearch, setGroupSearch] = useState('');
26
- const allOptions = filter.options ?? [];
27
- const normalized = groupSearch.trim().toLowerCase();
28
- const visibleOptions = filter.searchable && normalized.length > 0
29
- ? allOptions.filter((option) => option.label.toLowerCase().includes(normalized))
30
- : allOptions;
31
- return (jsxs(Fragment, { children: [filter.searchable && (jsx("div", { className: 'pv-filter-group-search', children: jsx("input", { type: 'search', placeholder: filter.searchPlaceholder ?? searchPlaceholder, value: groupSearch, onChange: (event) => setGroupSearch(event.target.value) }) })), jsx("ul", { children: visibleOptions.map((option) => {
32
- const optionKey = option.key;
33
- const checked = selections.has(optionKey);
34
- return (jsx("li", { "data-selected": checked || undefined, children: jsxs("label", { "data-selected": checked || undefined, children: [jsx("input", { type: filter.multi ? 'checkbox' : 'radio', "data-selected": checked || undefined, name: `filter-${filter.key}`, checked: checked, onChange: () => onFilterToggle(filter.key, optionKey, filter.multi ?? false) }), jsx("span", { children: option.label }), jsx("span", { className: 'pv-option-count', children: renderOptionCount(option.count) })] }) }, option.key));
35
- }) })] }));
23
+ return (jsx(CheckboxListFilter, { options: filter.options ?? [], selected: selections, multi: filter.multi, searchable: filter.searchable, searchPlaceholder: filter.searchPlaceholder ?? searchPlaceholder, name: `filter-${filter.key}`, onToggle: (optionKey) => onFilterToggle(filter.key, optionKey, filter.multi ?? false) }));
36
24
  }
37
25
  const subscribeToBrowserState = () => () => undefined;
38
26
  const browserSnapshot = () => true;
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPanel.js","sources":["../../../Filter/FilterPanel.tsx"],"sourcesContent":[null],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"FilterPanel.js","sources":["../../../Filter/FilterPanel.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export { FilterPanel } from './FilterPanel.js';
2
2
  export type { FilterPanelProps } from './FilterPanel.js';
3
+ export { CheckboxListFilter } from './CheckboxListFilter.js';
4
+ export type { CheckboxListFilterProps } from './CheckboxListFilter.js';
3
5
  export { FilterEditor } from './FilterEditor.js';
4
6
  export type { FilterEditorSlotProps } from './FilterEditor.js';
5
7
  export type { FilterEditorProps } from './FilterEditorProps.js';
@@ -1,4 +1,5 @@
1
1
  export { FilterPanel } from './FilterPanel.js';
2
+ export { CheckboxListFilter } from './CheckboxListFilter.js';
2
3
  export { FilterEditor } from './FilterEditor.js';
3
4
  export { RangeHistogramFilter } from './RangeHistogramFilter.js';
4
5
  export { useFilterState } from './useFilterState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -50,7 +50,14 @@ export interface FilterDefinition {
50
50
  };
51
51
  /** Number of histogram buckets. Defaults to 20. */
52
52
  buckets?: number;
53
- /** Show an inline search box that filters the displayed options for this group. */
53
+ /**
54
+ * Whether to show an inline search box that filters this group's options by label.
55
+ *
56
+ * - `true` always shows it.
57
+ * - `false` never shows it, no matter how long the option list gets.
58
+ * - `undefined` (the default) shows it only when there are more options than fit inside the
59
+ * group's box, pinned to the top of the list while the options beneath it scroll.
60
+ */
54
61
  searchable?: boolean;
55
62
  /** Placeholder shown in the inline search box. Defaults to 'Search…'. */
56
63
  searchPlaceholder?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../Filter/types.ts"],"names":[],"mappings":"AAGA,0FAA0F;AAC1F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9E,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IACzB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC5B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC7B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,kGAAkG;IAClG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;KACjC,CAAC;IACF,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAElE,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../Filter/types.ts"],"names":[],"mappings":"AAGA,0FAA0F;AAC1F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9E,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IACzB,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,WAAW,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC5B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC7B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,kGAAkG;IAClG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;KACjC,CAAC;IACF,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AAElE,sFAAsF;AACtF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { RefObject } from 'react';
2
+ /**
3
+ * Tracks whether an option list's full content is taller than the box it renders in.
4
+ *
5
+ * `contentRef` should point at an off-screen element holding every option - not the live,
6
+ * possibly search-filtered list - so a user typing into the search box this hook decided to show
7
+ * never itself shrinks the measured content below the threshold and un-decides that the box
8
+ * needed a search in the first place. `containerRef`'s own `scrollHeight`/`clientHeight` are not
9
+ * used for the same reason: they move as the search box appears and disappears, which would make
10
+ * the decision chase itself. Instead the container's resolved CSS `max-height` is read directly,
11
+ * since that value does not depend on what is currently rendered inside it.
12
+ *
13
+ * Pass `enabled: false` to skip measuring entirely - for callers that already know whether they
14
+ * want a search box and do not need this hook to decide for them.
15
+ */
16
+ export declare function useOptionListOverflow(containerRef: RefObject<HTMLElement | null>, contentRef: RefObject<HTMLElement | null>, enabled: boolean): boolean;
17
+ //# sourceMappingURL=useOptionListOverflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOptionListOverflow.d.ts","sourceRoot":"","sources":["../../../Filter/useOptionListOverflow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAC3C,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EACzC,OAAO,EAAE,OAAO,GACjB,OAAO,CAgCT"}
@@ -0,0 +1,31 @@
1
+ import { useState, useLayoutEffect } from 'react';
2
+ import { optionListOverflows } from './utils.js';
3
+
4
+ function useOptionListOverflow(containerRef, contentRef, enabled) {
5
+ const [overflows, setOverflows] = useState(false);
6
+ useLayoutEffect(() => {
7
+ if (!enabled) {
8
+ setOverflows(false);
9
+ return;
10
+ }
11
+ const container = containerRef.current;
12
+ const content = contentRef.current;
13
+ if (!container || !content)
14
+ return;
15
+ const measure = () => {
16
+ const maxHeight = parseFloat(getComputedStyle(container).maxHeight) || 0;
17
+ setOverflows(optionListOverflows({ contentHeight: content.scrollHeight, maxHeight }));
18
+ };
19
+ measure();
20
+ if (typeof ResizeObserver === 'undefined')
21
+ return;
22
+ const observer = new ResizeObserver(measure);
23
+ observer.observe(container);
24
+ observer.observe(content);
25
+ return () => observer.disconnect();
26
+ }, [containerRef, contentRef, enabled]);
27
+ return overflows;
28
+ }
29
+
30
+ export { useOptionListOverflow };
31
+ //# sourceMappingURL=useOptionListOverflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOptionListOverflow.js","sources":["../../../Filter/useOptionListOverflow.ts"],"sourcesContent":[null],"names":[],"mappings":";;;SAqBgB,qBAAqB,CACjC,YAA2C,EAC3C,UAAyC,EACzC,OAAgB,EAAA;IAEhB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEjD,eAAe,CAAC,MAAK;QACjB,IAAI,CAAC,OAAO,EAAE;YACV,YAAY,CAAC,KAAK,CAAC;YACnB;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO;AACtC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;AAClC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;YAAE;QAE5B,MAAM,OAAO,GAAG,MAAK;AACjB,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACxE,YAAA,YAAY,CACR,mBAAmB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAC1E;AACL,QAAA,CAAC;AAED,QAAA,OAAO,EAAE;QAET,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE;AAE3C,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC;AAC5C,QAAA,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3B,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;AAEzB,QAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE;IACtC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAEvC,IAAA,OAAO,SAAS;AACpB;;"}
@@ -14,6 +14,13 @@ export interface DropdownViewport {
14
14
  width: number;
15
15
  height: number;
16
16
  }
17
+ /** The measured height budget behind the decision to show an option list's search box. */
18
+ export interface OptionListOverflowMetrics {
19
+ /** The combined natural height of every option row, in pixels. */
20
+ contentHeight: number;
21
+ /** The maximum height the option list box is allowed to grow to, in pixels. */
22
+ maxHeight: number;
23
+ }
17
24
  /** Fixed-position coordinates and bounds for the filter dropdown. */
18
25
  export interface DropdownPosition {
19
26
  left: number;
@@ -31,6 +38,14 @@ export interface DropdownPosition {
31
38
  * attached to the trigger. The selected side also supplies an explicit maximum height.
32
39
  */
33
40
  export declare function resolveDropdownPosition(anchor: DropdownAnchorRect, viewport: DropdownViewport): DropdownPosition;
41
+ /**
42
+ * Whether an option list has more rows than fit inside its box - the signal a filter group uses to
43
+ * grow a search box the caller did not explicitly ask for. `maxHeight` of zero means the box has not
44
+ * been measured yet (e.g. before first layout), so the answer defaults to "not overflowing" rather
45
+ * than flashing a search box speculatively. Pulled out of the measuring hook so the decision is
46
+ * testable on plain numbers, without a real layout engine.
47
+ */
48
+ export declare function optionListOverflows({ contentHeight, maxHeight, }: OptionListOverflowMetrics): boolean;
34
49
  /** Initialise the string/option selection map for all string/date filters. */
35
50
  export declare function buildFilterValues(filters: FilterDefinition[] | undefined): FilterValues;
36
51
  /** Initialise the numeric range map for all number filters. */
@@ -31,6 +31,9 @@ function resolveDropdownPosition(anchor, viewport) {
31
31
  maxHeight: Math.min(roomAbove, configuredMaxHeight),
32
32
  };
33
33
  }
34
+ function optionListOverflows({ contentHeight, maxHeight, }) {
35
+ return maxHeight > 0 && contentHeight > maxHeight;
36
+ }
34
37
  function buildFilterValues(filters) {
35
38
  const state = {};
36
39
  filters?.forEach((filter) => {
@@ -75,5 +78,5 @@ function buildHistogram(values, min, max, bucketCount, provided) {
75
78
  }));
76
79
  }
77
80
 
78
- export { buildFilterValues, buildHistogram, buildRangeValues, resolveDropdownPosition };
81
+ export { buildFilterValues, buildHistogram, buildRangeValues, optionListOverflows, resolveDropdownPosition };
79
82
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../Filter/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../Filter/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -4350,6 +4350,49 @@
4350
4350
  box-shadow: var(--cratis-focus-ring);
4351
4351
  }
4352
4352
 
4353
+ /* Reusable checkbox/radio option list (CheckboxListFilter) */
4354
+ .pv-option-list {
4355
+ position: relative;
4356
+ display: flex;
4357
+ flex-direction: column;
4358
+ max-height: var(--cratis-filter-option-list-max-height, 14rem);
4359
+ overflow-y: auto;
4360
+ }
4361
+
4362
+ /* Off-screen clone of every option, used only to measure whether the real (possibly
4363
+ search-filtered) list would overflow the box - see useOptionListOverflow. */
4364
+ .pv-option-list-mirror {
4365
+ position: absolute;
4366
+ inset: 0;
4367
+ margin: 0;
4368
+ padding: 0;
4369
+ list-style: none;
4370
+ visibility: hidden;
4371
+ pointer-events: none;
4372
+ max-height: none;
4373
+ overflow: visible;
4374
+ }
4375
+
4376
+ /* Rendered via `content: attr(...)` rather than a DOM text node - see CheckboxListFilter.tsx -
4377
+ so a mirror row's label/count can never be found by a text-content query. */
4378
+ .pv-option-mirror-label::before {
4379
+ content: attr(data-label);
4380
+ }
4381
+
4382
+ .pv-option-list-search {
4383
+ position: sticky;
4384
+ top: 0;
4385
+ z-index: 1;
4386
+ background: var(--cratis-surface-overlay);
4387
+ }
4388
+
4389
+ .pv-option-list-empty {
4390
+ margin: 0;
4391
+ padding: 0.45rem 0.5rem;
4392
+ font-size: 0.85rem;
4393
+ color: var(--cratis-text-color-secondary);
4394
+ }
4395
+
4353
4396
  .pv-filter-groups {
4354
4397
  display: flex;
4355
4398
  flex-direction: column;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/components",
3
- "version": "4.1.3",
3
+ "version": "4.2.0",
4
4
  "description": "React components for CQRS and event-sourced apps — command dialogs, typed forms, and query-backed data tables for Cratis Arc",
5
5
  "keywords": [
6
6
  "react",