@flanksource/clicky-ui 0.2.15 → 0.2.17
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/dist/chat.cjs +16 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +17 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +34 -11
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +8 -0
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +34 -11
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +3 -0
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.d.ts +6 -2
- package/dist/components/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker.js +3 -0
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/Field.cjs +33 -0
- package/dist/components/Field.cjs.map +1 -0
- package/dist/components/Field.d.ts +27 -0
- package/dist/components/Field.d.ts.map +1 -0
- package/dist/components/Field.js +33 -0
- package/dist/components/Field.js.map +1 -0
- package/dist/components/FilterBar.cjs +81 -20
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +30 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +83 -22
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +26 -3
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +26 -3
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +2 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts +5 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +2 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +15 -8
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +15 -8
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-preferences.cjs +4 -0
- package/dist/components/json-schema-form-preferences.cjs.map +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +2 -0
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
- package/dist/components/json-schema-form-preferences.js +4 -0
- package/dist/components/json-schema-form-preferences.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +1 -1
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +2 -2
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -2
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +13 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +2 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +13 -0
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.cjs +21 -8
- package/dist/components/loading.cjs.map +1 -1
- package/dist/components/loading.d.ts +6 -4
- package/dist/components/loading.d.ts.map +1 -1
- package/dist/components/loading.js +21 -8
- package/dist/components/loading.js.map +1 -1
- package/dist/components/use-form.cjs +27 -0
- package/dist/components/use-form.cjs.map +1 -0
- package/dist/components/use-form.d.ts +30 -0
- package/dist/components/use-form.d.ts.map +1 -0
- package/dist/components/use-form.js +27 -0
- package/dist/components/use-form.js.map +1 -0
- package/dist/components.cjs +7 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +4 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +8 -1
- package/dist/components.js.map +1 -1
- package/dist/data/Markdown.cjs +14 -40
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -0
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +14 -40
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/TaskProgress.cjs +22 -0
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.js +22 -0
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +5 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/Tree.cjs +32 -1
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +9 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +32 -1
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/chat/Attachment.cjs +79 -0
- package/dist/data/chat/Attachment.cjs.map +1 -0
- package/dist/data/chat/Attachment.d.ts +18 -0
- package/dist/data/chat/Attachment.d.ts.map +1 -0
- package/dist/data/chat/Attachment.js +79 -0
- package/dist/data/chat/Attachment.js.map +1 -0
- package/dist/data/chat/Chat.cjs +71 -14
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +30 -12
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.d.ts +9 -0
- package/dist/data/chat/Chat.fixtures.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +73 -16
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +32 -14
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +5 -3
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +34 -16
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/Message.cjs +73 -14
- package/dist/data/chat/Message.cjs.map +1 -1
- package/dist/data/chat/Message.d.ts +11 -4
- package/dist/data/chat/Message.d.ts.map +1 -1
- package/dist/data/chat/Message.js +75 -16
- package/dist/data/chat/Message.js.map +1 -1
- package/dist/data/chat/MessageActions.cjs +54 -0
- package/dist/data/chat/MessageActions.cjs.map +1 -0
- package/dist/data/chat/MessageActions.d.ts +11 -0
- package/dist/data/chat/MessageActions.d.ts.map +1 -0
- package/dist/data/chat/MessageActions.js +54 -0
- package/dist/data/chat/MessageActions.js.map +1 -0
- package/dist/data/chat/ModelSelector.cjs +43 -0
- package/dist/data/chat/ModelSelector.cjs.map +1 -0
- package/dist/data/chat/ModelSelector.d.ts +22 -0
- package/dist/data/chat/ModelSelector.d.ts.map +1 -0
- package/dist/data/chat/ModelSelector.js +43 -0
- package/dist/data/chat/ModelSelector.js.map +1 -0
- package/dist/data/chat/PromptInput.cjs +28 -15
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +14 -8
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +28 -15
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/Reasoning.cjs +37 -0
- package/dist/data/chat/Reasoning.cjs.map +1 -0
- package/dist/data/chat/Reasoning.d.ts +11 -0
- package/dist/data/chat/Reasoning.d.ts.map +1 -0
- package/dist/data/chat/Reasoning.js +37 -0
- package/dist/data/chat/Reasoning.js.map +1 -0
- package/dist/data/chat/Suggestion.cjs +20 -0
- package/dist/data/chat/Suggestion.cjs.map +1 -0
- package/dist/data/chat/Suggestion.d.ts +10 -0
- package/dist/data/chat/Suggestion.d.ts.map +1 -0
- package/dist/data/chat/Suggestion.js +20 -0
- package/dist/data/chat/Suggestion.js.map +1 -0
- package/dist/data/chat/ToolCall.cjs +26 -3
- package/dist/data/chat/ToolCall.cjs.map +1 -1
- package/dist/data/chat/ToolCall.d.ts +5 -1
- package/dist/data/chat/ToolCall.d.ts.map +1 -1
- package/dist/data/chat/ToolCall.js +26 -3
- package/dist/data/chat/ToolCall.js.map +1 -1
- package/dist/data/chat/index.d.ts +7 -2
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/types.cjs +16 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +29 -2
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +16 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/hooks/use-task-run.cjs +33 -20
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +33 -20
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/index.cjs +7 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/overlay/Modal.cjs +27 -23
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +7 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +27 -23
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +4 -4
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.js +4 -4
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +17 -21
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -3
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +18 -22
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/formMetadata.cjs +5 -3
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +5 -3
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
|
@@ -122,6 +122,13 @@ export type FilterBarMultiFilter = {
|
|
|
122
122
|
* absent, the search box filters the static `options` client-side only.
|
|
123
123
|
*/
|
|
124
124
|
onSearch?: (query: string) => Promise<MultiSelectOption[]> | void;
|
|
125
|
+
/**
|
|
126
|
+
* Lets the user commit a value absent from `options` (a free-typed name or a
|
|
127
|
+
* `*` wildcard). The option search box stays visible and an "Add" row appears
|
|
128
|
+
* when the query matches no listed option; committed customs pin to the top so
|
|
129
|
+
* they stay toggleable. Use for MatchItem-style filters (table/login patterns).
|
|
130
|
+
*/
|
|
131
|
+
allowCustomValue?: boolean;
|
|
125
132
|
disabled?: boolean;
|
|
126
133
|
className?: string;
|
|
127
134
|
};
|
|
@@ -229,6 +236,8 @@ export type FilterBarBooleanFilter = {
|
|
|
229
236
|
className?: string;
|
|
230
237
|
};
|
|
231
238
|
export type FilterBarFilter = FilterBarTextFilter | FilterBarLookupFilter | FilterBarLookupMultiFilter | FilterBarMultiFilter | FilterBarNestedMultiFilter | FilterBarSelectMultiFilter | FilterBarNumberFilter | FilterBarEnumFilter | FilterBarBooleanFilter;
|
|
239
|
+
export type FilterExtension = (filter: FilterBarFilter) => FilterBarFilter;
|
|
240
|
+
export declare function applyFilterExtensions(filter: FilterBarFilter, extensions: FilterExtension[] | undefined): FilterBarFilter;
|
|
232
241
|
export type FilterBarRangePreset = {
|
|
233
242
|
/** Visible preset label. */
|
|
234
243
|
label: string;
|
|
@@ -299,5 +308,26 @@ export declare function FilterBarRangePanel({ kind, label, from, to, onApply, pr
|
|
|
299
308
|
kind: "date" | "time";
|
|
300
309
|
label: string;
|
|
301
310
|
}): import("react/jsx-runtime").JSX.Element;
|
|
311
|
+
export type TriStateMultiSelectProps = {
|
|
312
|
+
/** Trigger label and popover heading. */
|
|
313
|
+
label: string;
|
|
314
|
+
/** Map of option value → include/exclude. Neutral options are absent. */
|
|
315
|
+
value: Record<string, FilterBarMultiFilterMode>;
|
|
316
|
+
onChange: (value: Record<string, FilterBarMultiFilterMode>) => void;
|
|
317
|
+
/** Chip options. When `truncated`, this is only the head set. */
|
|
318
|
+
options: MultiSelectOption[];
|
|
319
|
+
icon?: LabelIconSpec;
|
|
320
|
+
description?: string;
|
|
321
|
+
truncated?: boolean;
|
|
322
|
+
total?: number;
|
|
323
|
+
onSearch?: (query: string) => Promise<MultiSelectOption[]> | void;
|
|
324
|
+
/** Allow committing free-typed / `*`-wildcard values absent from `options`. */
|
|
325
|
+
allowCustomValue?: boolean;
|
|
326
|
+
disabled?: boolean;
|
|
327
|
+
className?: string;
|
|
328
|
+
/** Fill the available width (form field) vs. shrink to content. Default true. */
|
|
329
|
+
grow?: boolean;
|
|
330
|
+
};
|
|
331
|
+
export declare function TriStateMultiSelect({ grow, ...rest }: TriStateMultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
302
332
|
export {};
|
|
303
333
|
//# sourceMappingURL=FilterBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo, useRef, useState, useLayoutEffect, useCallback, useEffect, createContext, useContext } from "react";
|
|
2
|
+
import { useMemo, useRef, useState, useLayoutEffect, useCallback, useEffect, createContext, useContext, isValidElement, cloneElement } from "react";
|
|
3
3
|
import { FilterPill } from "../data/FilterPill.js";
|
|
4
4
|
import { isFilterBarFilterActive, clearFilterBarFilter } from "./filter-bar-utils.js";
|
|
5
5
|
import { Icon, LabelIcon } from "../data/Icon.js";
|
|
@@ -23,6 +23,10 @@ const FILTER_BAR_OVERFLOW_TRIGGER_ESTIMATE_PX = 44;
|
|
|
23
23
|
const FilterBarContext = createContext({
|
|
24
24
|
autoSubmit: true
|
|
25
25
|
});
|
|
26
|
+
function applyFilterExtensions(filter, extensions) {
|
|
27
|
+
if (!extensions || extensions.length === 0) return filter;
|
|
28
|
+
return extensions.reduce((current, ext) => ext(current), filter);
|
|
29
|
+
}
|
|
26
30
|
function FilterBar({
|
|
27
31
|
search,
|
|
28
32
|
filters,
|
|
@@ -363,7 +367,13 @@ function OverflowFiltersMenu({
|
|
|
363
367
|
className: "flex min-w-0 items-center gap-1 truncate text-[10px] font-medium uppercase tracking-wide text-muted-foreground",
|
|
364
368
|
title: filter.description ?? filter.label,
|
|
365
369
|
children: [
|
|
366
|
-
/* @__PURE__ */ jsx(
|
|
370
|
+
/* @__PURE__ */ jsx(
|
|
371
|
+
LabelIcon,
|
|
372
|
+
{
|
|
373
|
+
icon: sizedIcon(filter.icon, 12),
|
|
374
|
+
className: "text-[12px] normal-case"
|
|
375
|
+
}
|
|
376
|
+
),
|
|
367
377
|
/* @__PURE__ */ jsx("span", { className: "truncate", children: filter.label })
|
|
368
378
|
]
|
|
369
379
|
}
|
|
@@ -474,7 +484,7 @@ function TextFilterValueControl({ filter }) {
|
|
|
474
484
|
type: "text",
|
|
475
485
|
"aria-label": filter.label,
|
|
476
486
|
className: valueInputClassName(filter.disabled),
|
|
477
|
-
placeholder: filter.placeholder
|
|
487
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
478
488
|
value: draft,
|
|
479
489
|
disabled: filter.disabled,
|
|
480
490
|
onChange: (event) => setDraft(event.target.value)
|
|
@@ -559,7 +569,7 @@ function EnumFilterValueControl({ filter }) {
|
|
|
559
569
|
value: filter.value,
|
|
560
570
|
onChange: filter.onChange,
|
|
561
571
|
allowCustomValue: false,
|
|
562
|
-
placeholder: filter.placeholder
|
|
572
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
563
573
|
className: "w-full",
|
|
564
574
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
|
|
565
575
|
}
|
|
@@ -586,7 +596,8 @@ function SelectMultiFilterValueControl({ filter }) {
|
|
|
586
596
|
options: filter.options,
|
|
587
597
|
value: filter.value,
|
|
588
598
|
onChange: filter.onChange,
|
|
589
|
-
|
|
599
|
+
ariaLabel: `${filter.label} filter`,
|
|
600
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
590
601
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {},
|
|
591
602
|
triggerClassName: "h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none",
|
|
592
603
|
menuClassName: "left-auto right-0"
|
|
@@ -631,12 +642,12 @@ function EnumFilterField({ filter, grow }) {
|
|
|
631
642
|
return /* @__PURE__ */ jsx(
|
|
632
643
|
Combobox,
|
|
633
644
|
{
|
|
634
|
-
|
|
645
|
+
...comboboxLabelProps(filter),
|
|
635
646
|
options: enumOptionsToCombobox(filter.options),
|
|
636
647
|
value: filter.value,
|
|
637
648
|
onChange: filter.onChange,
|
|
638
649
|
allowCustomValue: false,
|
|
639
|
-
placeholder: filter.placeholder
|
|
650
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
640
651
|
className: cn(lookupFieldWidthClass(grow), filter.className),
|
|
641
652
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
|
|
642
653
|
}
|
|
@@ -715,7 +726,7 @@ function TextFilterField({ filter, grow }) {
|
|
|
715
726
|
type: "text",
|
|
716
727
|
"aria-label": filter.label,
|
|
717
728
|
className: "w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
|
|
718
|
-
placeholder: filter.placeholder
|
|
729
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
719
730
|
value: draft,
|
|
720
731
|
disabled: filter.disabled,
|
|
721
732
|
onChange: (event) => setDraft(event.target.value)
|
|
@@ -731,6 +742,20 @@ function FilterFieldLabel({ icon, label }) {
|
|
|
731
742
|
label
|
|
732
743
|
] });
|
|
733
744
|
}
|
|
745
|
+
function sizedIcon(icon, px) {
|
|
746
|
+
if (!isValidElement(icon)) return icon;
|
|
747
|
+
const el = icon;
|
|
748
|
+
return cloneElement(el, {
|
|
749
|
+
style: { width: `${px}px`, height: `${px}px`, ...el.props.style ?? {} }
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
function comboboxLabelProps(filter) {
|
|
753
|
+
if (filter.icon == null) return { label: filter.label };
|
|
754
|
+
return {
|
|
755
|
+
label: /* @__PURE__ */ jsx("span", { title: filter.label, className: "inline-flex items-center text-[10px]", children: /* @__PURE__ */ jsx(LabelIcon, { icon: sizedIcon(filter.icon, 10), className: "normal-case" }) }),
|
|
756
|
+
ariaLabel: filter.label
|
|
757
|
+
};
|
|
758
|
+
}
|
|
734
759
|
function lookupFieldWidthClass(grow) {
|
|
735
760
|
return grow ? "min-w-[12rem] max-w-[18rem] flex-1" : "min-w-[11rem] max-w-[15rem] shrink-0";
|
|
736
761
|
}
|
|
@@ -781,7 +806,7 @@ function LookupFilterField({ filter, grow }) {
|
|
|
781
806
|
return /* @__PURE__ */ jsx(
|
|
782
807
|
Combobox,
|
|
783
808
|
{
|
|
784
|
-
|
|
809
|
+
...comboboxLabelProps(filter),
|
|
785
810
|
options: lookupOptionsToCombobox(filter.options),
|
|
786
811
|
value: filter.value,
|
|
787
812
|
onChange: filter.onChange,
|
|
@@ -800,7 +825,7 @@ function LookupMultiFilterField({
|
|
|
800
825
|
Combobox,
|
|
801
826
|
{
|
|
802
827
|
multiple: true,
|
|
803
|
-
|
|
828
|
+
...comboboxLabelProps(filter),
|
|
804
829
|
options: lookupOptionsToCombobox(filter.options),
|
|
805
830
|
value: filter.value,
|
|
806
831
|
onChange: filter.onChange,
|
|
@@ -908,7 +933,7 @@ function NumberFilterField({ filter, grow }) {
|
|
|
908
933
|
step: bounds.step,
|
|
909
934
|
"aria-label": `${filter.label} minimum`,
|
|
910
935
|
className: "h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
911
|
-
placeholder: filter.minPlaceholder
|
|
936
|
+
...filter.minPlaceholder !== void 0 ? { placeholder: filter.minPlaceholder } : {},
|
|
912
937
|
value: draft.min ?? "",
|
|
913
938
|
onChange: (event) => setDraft(
|
|
914
939
|
normalizeNumberFilterValue(
|
|
@@ -929,7 +954,7 @@ function NumberFilterField({ filter, grow }) {
|
|
|
929
954
|
step: bounds.step,
|
|
930
955
|
"aria-label": `${filter.label} maximum`,
|
|
931
956
|
className: "h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
932
|
-
placeholder: filter.maxPlaceholder
|
|
957
|
+
...filter.maxPlaceholder !== void 0 ? { placeholder: filter.maxPlaceholder } : {},
|
|
933
958
|
value: draft.max ?? "",
|
|
934
959
|
onChange: (event) => setDraft(
|
|
935
960
|
normalizeNumberFilterValue(
|
|
@@ -1013,7 +1038,7 @@ function NumberFilterPanel({
|
|
|
1013
1038
|
step: bounds.step,
|
|
1014
1039
|
"aria-label": `${filter.label} minimum`,
|
|
1015
1040
|
className: "h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
1016
|
-
placeholder: filter.minPlaceholder
|
|
1041
|
+
...filter.minPlaceholder !== void 0 ? { placeholder: filter.minPlaceholder } : {},
|
|
1017
1042
|
value: draft.min ?? "",
|
|
1018
1043
|
onChange: (event) => setDraft(
|
|
1019
1044
|
normalizeNumberFilterValue(
|
|
@@ -1034,7 +1059,7 @@ function NumberFilterPanel({
|
|
|
1034
1059
|
step: bounds.step,
|
|
1035
1060
|
"aria-label": `${filter.label} maximum`,
|
|
1036
1061
|
className: "h-8 w-full rounded-md border border-input bg-background px-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
1037
|
-
placeholder: filter.maxPlaceholder
|
|
1062
|
+
...filter.maxPlaceholder !== void 0 ? { placeholder: filter.maxPlaceholder } : {},
|
|
1038
1063
|
value: draft.max ?? "",
|
|
1039
1064
|
onChange: (event) => setDraft(
|
|
1040
1065
|
normalizeNumberFilterValue(
|
|
@@ -1081,19 +1106,32 @@ function MultiFilterField({ filter, grow }) {
|
|
|
1081
1106
|
};
|
|
1082
1107
|
}, [onSearch, optionQuery]);
|
|
1083
1108
|
const summary = summarizeMultiFilter(filter.label, draft);
|
|
1084
|
-
const
|
|
1109
|
+
const allowCustomValue = Boolean(filter.allowCustomValue);
|
|
1110
|
+
const baseOptions = useMemo(() => {
|
|
1111
|
+
if (!allowCustomValue) return filter.options;
|
|
1112
|
+
const known = new Set(filter.options.map((o) => o.value));
|
|
1113
|
+
const pinned = Object.keys(draft).filter((v) => !known.has(v)).map((v) => ({ value: v, label: v }));
|
|
1114
|
+
return mergeMultiSelectOptions(pinned, filter.options);
|
|
1115
|
+
}, [allowCustomValue, filter.options, draft]);
|
|
1116
|
+
const showOptionFilter = filter.truncated || Boolean(onSearch) || allowCustomValue || filter.options.length > 7;
|
|
1085
1117
|
const visibleOptions = useMemo(() => {
|
|
1086
1118
|
const query = optionQuery.trim();
|
|
1087
|
-
if (!query) return
|
|
1119
|
+
if (!query) return baseOptions;
|
|
1088
1120
|
if (onSearch) {
|
|
1089
|
-
const selectedHead =
|
|
1121
|
+
const selectedHead = baseOptions.filter((o) => draft[o.value] !== void 0);
|
|
1090
1122
|
return mergeMultiSelectOptions(selectedHead, searchOptions);
|
|
1091
1123
|
}
|
|
1092
1124
|
const lowered = query.toLowerCase();
|
|
1093
|
-
return
|
|
1125
|
+
return baseOptions.filter(
|
|
1094
1126
|
(option) => multiSelectOptionText(option).toLowerCase().includes(lowered)
|
|
1095
1127
|
);
|
|
1096
|
-
}, [
|
|
1128
|
+
}, [baseOptions, searchOptions, optionQuery, onSearch, draft]);
|
|
1129
|
+
const trimmedQuery = optionQuery.trim();
|
|
1130
|
+
const canAddCustom = allowCustomValue && trimmedQuery !== "" && !visibleOptions.some((o) => o.value === trimmedQuery);
|
|
1131
|
+
const addCustom = () => {
|
|
1132
|
+
setDraft(updateMultiFilterValue(draft, trimmedQuery, "include"));
|
|
1133
|
+
setOptionQuery("");
|
|
1134
|
+
};
|
|
1097
1135
|
const moreCount = filter.truncated && filter.total ? Math.max(filter.total - filter.options.length, 0) : 0;
|
|
1098
1136
|
return /* @__PURE__ */ jsxs(
|
|
1099
1137
|
"div",
|
|
@@ -1192,7 +1230,28 @@ function MultiFilterField({ filter, grow }) {
|
|
|
1192
1230
|
option.value
|
|
1193
1231
|
);
|
|
1194
1232
|
}),
|
|
1195
|
-
|
|
1233
|
+
canAddCustom && /* @__PURE__ */ jsxs(
|
|
1234
|
+
"div",
|
|
1235
|
+
{
|
|
1236
|
+
role: "button",
|
|
1237
|
+
tabIndex: 0,
|
|
1238
|
+
"data-filter-add-custom": trimmedQuery,
|
|
1239
|
+
className: "rounded-md px-2 py-1 text-sm text-primary hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none",
|
|
1240
|
+
onClick: addCustom,
|
|
1241
|
+
onKeyDown: (event) => {
|
|
1242
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
1243
|
+
event.preventDefault();
|
|
1244
|
+
addCustom();
|
|
1245
|
+
}
|
|
1246
|
+
},
|
|
1247
|
+
children: [
|
|
1248
|
+
"Add “",
|
|
1249
|
+
trimmedQuery,
|
|
1250
|
+
"”"
|
|
1251
|
+
]
|
|
1252
|
+
}
|
|
1253
|
+
),
|
|
1254
|
+
visibleOptions.length === 0 && !canAddCustom && /* @__PURE__ */ jsx("div", { className: "px-2 py-3 text-sm text-muted-foreground", children: "No options found" })
|
|
1196
1255
|
] }),
|
|
1197
1256
|
moreCount > 0 && !optionQuery.trim() && /* @__PURE__ */ jsxs("div", { className: "mt-2 px-1.5 text-[11px] text-muted-foreground", children: [
|
|
1198
1257
|
"… and ",
|
|
@@ -1730,7 +1789,8 @@ function SelectMultiFilterField({
|
|
|
1730
1789
|
options: filter.options,
|
|
1731
1790
|
value: filter.value,
|
|
1732
1791
|
onChange: filter.onChange,
|
|
1733
|
-
|
|
1792
|
+
ariaLabel: `${filter.label} filter`,
|
|
1793
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
1734
1794
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {},
|
|
1735
1795
|
triggerClassName: "h-6 min-w-0 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0",
|
|
1736
1796
|
menuClassName: "left-auto right-0"
|
|
@@ -2109,6 +2169,7 @@ function estimateFilterWidth(filter) {
|
|
|
2109
2169
|
export {
|
|
2110
2170
|
FilterBar,
|
|
2111
2171
|
FilterBarFilterPanel,
|
|
2112
|
-
FilterBarRangePanel
|
|
2172
|
+
FilterBarRangePanel,
|
|
2173
|
+
applyFilterExtensions
|
|
2113
2174
|
};
|
|
2114
2175
|
//# sourceMappingURL=FilterBar.js.map
|