@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
|
@@ -25,6 +25,10 @@ const FILTER_BAR_OVERFLOW_TRIGGER_ESTIMATE_PX = 44;
|
|
|
25
25
|
const FilterBarContext = react.createContext({
|
|
26
26
|
autoSubmit: true
|
|
27
27
|
});
|
|
28
|
+
function applyFilterExtensions(filter, extensions) {
|
|
29
|
+
if (!extensions || extensions.length === 0) return filter;
|
|
30
|
+
return extensions.reduce((current, ext) => ext(current), filter);
|
|
31
|
+
}
|
|
28
32
|
function FilterBar({
|
|
29
33
|
search,
|
|
30
34
|
filters,
|
|
@@ -365,7 +369,13 @@ function OverflowFiltersMenu({
|
|
|
365
369
|
className: "flex min-w-0 items-center gap-1 truncate text-[10px] font-medium uppercase tracking-wide text-muted-foreground",
|
|
366
370
|
title: filter.description ?? filter.label,
|
|
367
371
|
children: [
|
|
368
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
372
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
373
|
+
Icon.LabelIcon,
|
|
374
|
+
{
|
|
375
|
+
icon: sizedIcon(filter.icon, 12),
|
|
376
|
+
className: "text-[12px] normal-case"
|
|
377
|
+
}
|
|
378
|
+
),
|
|
369
379
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: filter.label })
|
|
370
380
|
]
|
|
371
381
|
}
|
|
@@ -476,7 +486,7 @@ function TextFilterValueControl({ filter }) {
|
|
|
476
486
|
type: "text",
|
|
477
487
|
"aria-label": filter.label,
|
|
478
488
|
className: valueInputClassName(filter.disabled),
|
|
479
|
-
placeholder: filter.placeholder
|
|
489
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
480
490
|
value: draft,
|
|
481
491
|
disabled: filter.disabled,
|
|
482
492
|
onChange: (event) => setDraft(event.target.value)
|
|
@@ -561,7 +571,7 @@ function EnumFilterValueControl({ filter }) {
|
|
|
561
571
|
value: filter.value,
|
|
562
572
|
onChange: filter.onChange,
|
|
563
573
|
allowCustomValue: false,
|
|
564
|
-
placeholder: filter.placeholder
|
|
574
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
565
575
|
className: "w-full",
|
|
566
576
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
|
|
567
577
|
}
|
|
@@ -588,7 +598,8 @@ function SelectMultiFilterValueControl({ filter }) {
|
|
|
588
598
|
options: filter.options,
|
|
589
599
|
value: filter.value,
|
|
590
600
|
onChange: filter.onChange,
|
|
591
|
-
|
|
601
|
+
ariaLabel: `${filter.label} filter`,
|
|
602
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
592
603
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {},
|
|
593
604
|
triggerClassName: "h-8 w-full rounded-md border border-input bg-background px-2 text-sm shadow-none",
|
|
594
605
|
menuClassName: "left-auto right-0"
|
|
@@ -633,12 +644,12 @@ function EnumFilterField({ filter, grow }) {
|
|
|
633
644
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
634
645
|
Combobox.Combobox,
|
|
635
646
|
{
|
|
636
|
-
|
|
647
|
+
...comboboxLabelProps(filter),
|
|
637
648
|
options: enumOptionsToCombobox(filter.options),
|
|
638
649
|
value: filter.value,
|
|
639
650
|
onChange: filter.onChange,
|
|
640
651
|
allowCustomValue: false,
|
|
641
|
-
placeholder: filter.placeholder
|
|
652
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
642
653
|
className: utils.cn(lookupFieldWidthClass(grow), filter.className),
|
|
643
654
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {}
|
|
644
655
|
}
|
|
@@ -717,7 +728,7 @@ function TextFilterField({ filter, grow }) {
|
|
|
717
728
|
type: "text",
|
|
718
729
|
"aria-label": filter.label,
|
|
719
730
|
className: "w-full min-w-0 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed",
|
|
720
|
-
placeholder: filter.placeholder
|
|
731
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
721
732
|
value: draft,
|
|
722
733
|
disabled: filter.disabled,
|
|
723
734
|
onChange: (event) => setDraft(event.target.value)
|
|
@@ -733,6 +744,20 @@ function FilterFieldLabel({ icon, label }) {
|
|
|
733
744
|
label
|
|
734
745
|
] });
|
|
735
746
|
}
|
|
747
|
+
function sizedIcon(icon, px) {
|
|
748
|
+
if (!react.isValidElement(icon)) return icon;
|
|
749
|
+
const el = icon;
|
|
750
|
+
return react.cloneElement(el, {
|
|
751
|
+
style: { width: `${px}px`, height: `${px}px`, ...el.props.style ?? {} }
|
|
752
|
+
});
|
|
753
|
+
}
|
|
754
|
+
function comboboxLabelProps(filter) {
|
|
755
|
+
if (filter.icon == null) return { label: filter.label };
|
|
756
|
+
return {
|
|
757
|
+
label: /* @__PURE__ */ jsxRuntime.jsx("span", { title: filter.label, className: "inline-flex items-center text-[10px]", children: /* @__PURE__ */ jsxRuntime.jsx(Icon.LabelIcon, { icon: sizedIcon(filter.icon, 10), className: "normal-case" }) }),
|
|
758
|
+
ariaLabel: filter.label
|
|
759
|
+
};
|
|
760
|
+
}
|
|
736
761
|
function lookupFieldWidthClass(grow) {
|
|
737
762
|
return grow ? "min-w-[12rem] max-w-[18rem] flex-1" : "min-w-[11rem] max-w-[15rem] shrink-0";
|
|
738
763
|
}
|
|
@@ -783,7 +808,7 @@ function LookupFilterField({ filter, grow }) {
|
|
|
783
808
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
784
809
|
Combobox.Combobox,
|
|
785
810
|
{
|
|
786
|
-
|
|
811
|
+
...comboboxLabelProps(filter),
|
|
787
812
|
options: lookupOptionsToCombobox(filter.options),
|
|
788
813
|
value: filter.value,
|
|
789
814
|
onChange: filter.onChange,
|
|
@@ -802,7 +827,7 @@ function LookupMultiFilterField({
|
|
|
802
827
|
Combobox.Combobox,
|
|
803
828
|
{
|
|
804
829
|
multiple: true,
|
|
805
|
-
|
|
830
|
+
...comboboxLabelProps(filter),
|
|
806
831
|
options: lookupOptionsToCombobox(filter.options),
|
|
807
832
|
value: filter.value,
|
|
808
833
|
onChange: filter.onChange,
|
|
@@ -910,7 +935,7 @@ function NumberFilterField({ filter, grow }) {
|
|
|
910
935
|
step: bounds.step,
|
|
911
936
|
"aria-label": `${filter.label} minimum`,
|
|
912
937
|
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",
|
|
913
|
-
placeholder: filter.minPlaceholder
|
|
938
|
+
...filter.minPlaceholder !== void 0 ? { placeholder: filter.minPlaceholder } : {},
|
|
914
939
|
value: draft.min ?? "",
|
|
915
940
|
onChange: (event) => setDraft(
|
|
916
941
|
normalizeNumberFilterValue(
|
|
@@ -931,7 +956,7 @@ function NumberFilterField({ filter, grow }) {
|
|
|
931
956
|
step: bounds.step,
|
|
932
957
|
"aria-label": `${filter.label} maximum`,
|
|
933
958
|
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",
|
|
934
|
-
placeholder: filter.maxPlaceholder
|
|
959
|
+
...filter.maxPlaceholder !== void 0 ? { placeholder: filter.maxPlaceholder } : {},
|
|
935
960
|
value: draft.max ?? "",
|
|
936
961
|
onChange: (event) => setDraft(
|
|
937
962
|
normalizeNumberFilterValue(
|
|
@@ -1015,7 +1040,7 @@ function NumberFilterPanel({
|
|
|
1015
1040
|
step: bounds.step,
|
|
1016
1041
|
"aria-label": `${filter.label} minimum`,
|
|
1017
1042
|
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",
|
|
1018
|
-
placeholder: filter.minPlaceholder
|
|
1043
|
+
...filter.minPlaceholder !== void 0 ? { placeholder: filter.minPlaceholder } : {},
|
|
1019
1044
|
value: draft.min ?? "",
|
|
1020
1045
|
onChange: (event) => setDraft(
|
|
1021
1046
|
normalizeNumberFilterValue(
|
|
@@ -1036,7 +1061,7 @@ function NumberFilterPanel({
|
|
|
1036
1061
|
step: bounds.step,
|
|
1037
1062
|
"aria-label": `${filter.label} maximum`,
|
|
1038
1063
|
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",
|
|
1039
|
-
placeholder: filter.maxPlaceholder
|
|
1064
|
+
...filter.maxPlaceholder !== void 0 ? { placeholder: filter.maxPlaceholder } : {},
|
|
1040
1065
|
value: draft.max ?? "",
|
|
1041
1066
|
onChange: (event) => setDraft(
|
|
1042
1067
|
normalizeNumberFilterValue(
|
|
@@ -1083,19 +1108,32 @@ function MultiFilterField({ filter, grow }) {
|
|
|
1083
1108
|
};
|
|
1084
1109
|
}, [onSearch, optionQuery]);
|
|
1085
1110
|
const summary = summarizeMultiFilter(filter.label, draft);
|
|
1086
|
-
const
|
|
1111
|
+
const allowCustomValue = Boolean(filter.allowCustomValue);
|
|
1112
|
+
const baseOptions = react.useMemo(() => {
|
|
1113
|
+
if (!allowCustomValue) return filter.options;
|
|
1114
|
+
const known = new Set(filter.options.map((o) => o.value));
|
|
1115
|
+
const pinned = Object.keys(draft).filter((v) => !known.has(v)).map((v) => ({ value: v, label: v }));
|
|
1116
|
+
return mergeMultiSelectOptions(pinned, filter.options);
|
|
1117
|
+
}, [allowCustomValue, filter.options, draft]);
|
|
1118
|
+
const showOptionFilter = filter.truncated || Boolean(onSearch) || allowCustomValue || filter.options.length > 7;
|
|
1087
1119
|
const visibleOptions = react.useMemo(() => {
|
|
1088
1120
|
const query = optionQuery.trim();
|
|
1089
|
-
if (!query) return
|
|
1121
|
+
if (!query) return baseOptions;
|
|
1090
1122
|
if (onSearch) {
|
|
1091
|
-
const selectedHead =
|
|
1123
|
+
const selectedHead = baseOptions.filter((o) => draft[o.value] !== void 0);
|
|
1092
1124
|
return mergeMultiSelectOptions(selectedHead, searchOptions);
|
|
1093
1125
|
}
|
|
1094
1126
|
const lowered = query.toLowerCase();
|
|
1095
|
-
return
|
|
1127
|
+
return baseOptions.filter(
|
|
1096
1128
|
(option) => multiSelectOptionText(option).toLowerCase().includes(lowered)
|
|
1097
1129
|
);
|
|
1098
|
-
}, [
|
|
1130
|
+
}, [baseOptions, searchOptions, optionQuery, onSearch, draft]);
|
|
1131
|
+
const trimmedQuery = optionQuery.trim();
|
|
1132
|
+
const canAddCustom = allowCustomValue && trimmedQuery !== "" && !visibleOptions.some((o) => o.value === trimmedQuery);
|
|
1133
|
+
const addCustom = () => {
|
|
1134
|
+
setDraft(updateMultiFilterValue(draft, trimmedQuery, "include"));
|
|
1135
|
+
setOptionQuery("");
|
|
1136
|
+
};
|
|
1099
1137
|
const moreCount = filter.truncated && filter.total ? Math.max(filter.total - filter.options.length, 0) : 0;
|
|
1100
1138
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1101
1139
|
"div",
|
|
@@ -1194,7 +1232,28 @@ function MultiFilterField({ filter, grow }) {
|
|
|
1194
1232
|
option.value
|
|
1195
1233
|
);
|
|
1196
1234
|
}),
|
|
1197
|
-
|
|
1235
|
+
canAddCustom && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1236
|
+
"div",
|
|
1237
|
+
{
|
|
1238
|
+
role: "button",
|
|
1239
|
+
tabIndex: 0,
|
|
1240
|
+
"data-filter-add-custom": trimmedQuery,
|
|
1241
|
+
className: "rounded-md px-2 py-1 text-sm text-primary hover:bg-accent/50 focus-visible:bg-accent/50 focus-visible:outline-none",
|
|
1242
|
+
onClick: addCustom,
|
|
1243
|
+
onKeyDown: (event) => {
|
|
1244
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
1245
|
+
event.preventDefault();
|
|
1246
|
+
addCustom();
|
|
1247
|
+
}
|
|
1248
|
+
},
|
|
1249
|
+
children: [
|
|
1250
|
+
"Add “",
|
|
1251
|
+
trimmedQuery,
|
|
1252
|
+
"”"
|
|
1253
|
+
]
|
|
1254
|
+
}
|
|
1255
|
+
),
|
|
1256
|
+
visibleOptions.length === 0 && !canAddCustom && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-3 text-sm text-muted-foreground", children: "No options found" })
|
|
1198
1257
|
] }),
|
|
1199
1258
|
moreCount > 0 && !optionQuery.trim() && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 px-1.5 text-[11px] text-muted-foreground", children: [
|
|
1200
1259
|
"… and ",
|
|
@@ -1732,7 +1791,8 @@ function SelectMultiFilterField({
|
|
|
1732
1791
|
options: filter.options,
|
|
1733
1792
|
value: filter.value,
|
|
1734
1793
|
onChange: filter.onChange,
|
|
1735
|
-
|
|
1794
|
+
ariaLabel: `${filter.label} filter`,
|
|
1795
|
+
...filter.placeholder !== void 0 ? { placeholder: filter.placeholder } : {},
|
|
1736
1796
|
...filter.disabled !== void 0 ? { disabled: filter.disabled } : {},
|
|
1737
1797
|
triggerClassName: "h-6 min-w-0 border-0 bg-transparent px-1 text-xs shadow-none focus-visible:ring-0",
|
|
1738
1798
|
menuClassName: "left-auto right-0"
|
|
@@ -2111,4 +2171,5 @@ function estimateFilterWidth(filter) {
|
|
|
2111
2171
|
exports.FilterBar = FilterBar;
|
|
2112
2172
|
exports.FilterBarFilterPanel = FilterBarFilterPanel;
|
|
2113
2173
|
exports.FilterBarRangePanel = FilterBarRangePanel;
|
|
2174
|
+
exports.applyFilterExtensions = applyFilterExtensions;
|
|
2114
2175
|
//# sourceMappingURL=FilterBar.cjs.map
|