@camunda/design-system 0.51.0 → 0.52.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/dist/carbon-compat/accordion.js +1 -1
- package/dist/carbon-compat/c3-data-table.js +1 -1
- package/dist/carbon-compat/code-snippet.js +1 -1
- package/dist/carbon-compat/loading.js +1 -1
- package/dist/carbon-compat/menu-button.d.ts.map +1 -1
- package/dist/carbon-compat/menu-button.js +1 -1
- package/dist/carbon-compat/menu-button.js.map +1 -1
- package/dist/carbon-compat/overflow-menu.d.ts +2 -2
- package/dist/carbon-compat/overflow-menu.d.ts.map +1 -1
- package/dist/carbon-compat/overflow-menu.js +29 -13
- package/dist/carbon-compat/overflow-menu.js.map +1 -1
- package/dist/carbon-compat/search.js +1 -1
- package/dist/carbon-compat/table-expand.js +1 -1
- package/dist/src/components/ui/alert.d.ts +1 -1
- package/dist/src/components/ui/alert.js +1 -1
- package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
- package/dist/src/components/ui/app-sidebar.js +3 -3
- package/dist/src/components/ui/app-sidebar.js.map +1 -1
- package/dist/src/components/ui/avatar.js +1 -1
- package/dist/src/components/ui/breadcrumb.js +1 -1
- package/dist/src/components/ui/button.js +1 -1
- package/dist/src/components/ui/calendar.js +1 -1
- package/dist/src/components/ui/card.js +1 -1
- package/dist/src/components/ui/checkbox.js +1 -1
- package/dist/src/components/ui/choice-card.js +1 -1
- package/dist/src/components/ui/code-block.js +1 -1
- package/dist/src/components/ui/combobox.d.ts +20 -4
- package/dist/src/components/ui/combobox.d.ts.map +1 -1
- package/dist/src/components/ui/combobox.js +70 -21
- package/dist/src/components/ui/combobox.js.map +1 -1
- package/dist/src/components/ui/command.js +1 -1
- package/dist/src/components/ui/data-table.js +1 -1
- package/dist/src/components/ui/date-picker.js +1 -1
- package/dist/src/components/ui/date-range-picker.js +1 -1
- package/dist/src/components/ui/dialog.js +1 -1
- package/dist/src/components/ui/dropdown.js +1 -1
- package/dist/src/components/ui/file-uploader.js +1 -1
- package/dist/src/components/ui/inline-edit.js +1 -1
- package/dist/src/components/ui/link.d.ts +13 -0
- package/dist/src/components/ui/link.d.ts.map +1 -0
- package/dist/src/components/ui/link.js +65 -0
- package/dist/src/components/ui/link.js.map +1 -0
- package/dist/src/components/ui/multi-select.d.ts +17 -2
- package/dist/src/components/ui/multi-select.d.ts.map +1 -1
- package/dist/src/components/ui/multi-select.js +71 -15
- package/dist/src/components/ui/multi-select.js.map +1 -1
- package/dist/src/components/ui/nav-breadcrumb.js +1 -1
- package/dist/src/components/ui/nav-icon.assignability.js +1 -1
- package/dist/src/components/ui/notifications.js +1 -1
- package/dist/src/components/ui/radio-group.js +1 -1
- package/dist/src/components/ui/scorecard.js +1 -1
- package/dist/src/components/ui/search-input.js +1 -1
- package/dist/src/components/ui/select.js +1 -1
- package/dist/src/components/ui/sheet.js +1 -1
- package/dist/src/components/ui/sidebar-provider.js +1 -1
- package/dist/src/components/ui/split-button.js +1 -1
- package/dist/src/components/ui/stepper.js +1 -1
- package/dist/src/components/ui/toast.js +1 -1
- package/dist/src/components/ui/tree-view.js +1 -1
- package/dist/src/components/ui/user-menu.js +1 -1
- package/dist/src/examples/agent-control-plane-processes/DashboardPage.js +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.js +1 -1
- package/dist/src/examples/shared/AppShell.js +1 -1
- package/dist/src/examples/shared/DateRangePopover.js +1 -1
- package/dist/src/examples/shared/agent-control-plane-nav.js +1 -1
- package/dist/src/examples/shared/console-nav.js +1 -1
- package/dist/src/examples/shared/cost-nav.js +1 -1
- package/dist/src/icons/camunda-app-icons.d.ts.map +1 -1
- package/dist/src/icons/camunda-app-icons.js +1 -1
- package/dist/src/icons/camunda-app-icons.js.map +1 -1
- package/dist/src/icons/index.d.ts +1 -0
- package/dist/src/icons/index.d.ts.map +1 -1
- package/dist/src/icons/index.js +2 -0
- package/dist/src/icons/index.js.map +1 -1
- package/dist/src/icons/lucide.assignability.d.ts +2 -0
- package/dist/src/icons/lucide.assignability.d.ts.map +1 -0
- package/dist/src/icons/lucide.assignability.js +11 -0
- package/dist/src/icons/lucide.assignability.js.map +1 -0
- package/dist/src/icons/lucide.d.ts +2 -0
- package/dist/src/icons/lucide.d.ts.map +1 -0
- package/dist/src/icons/lucide.js +11 -0
- package/dist/src/icons/lucide.js.map +1 -0
- package/dist/src/icons/registry.d.ts +13 -13
- package/dist/src/icons/registry.d.ts.map +1 -1
- package/dist/src/icons/registry.js +14 -14
- package/dist/src/icons/registry.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/styles.css +3 -9
- package/package.json +9 -2
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
5
|
-
import { CheckIcon, ChevronDownIcon } from "lucide
|
|
5
|
+
import { CheckIcon, ChevronDownIcon } from "../../icons/lucide.js";
|
|
6
6
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
7
7
|
import { cn } from "../../lib/utils.js";
|
|
8
8
|
import { C4Provider } from "./c4-provider.js";
|
|
@@ -18,14 +18,16 @@ function defaultEmptyIndicator(allowCustomValue, query) {
|
|
|
18
18
|
}
|
|
19
19
|
// Mounted only when popover is open. Arrow-key nav is limited to DOM-visible items;
|
|
20
20
|
// primary UX is type-to-filter + click/Enter. Does not depend on cmdk.
|
|
21
|
-
function VirtualList({ items, selectedValue, filterValue, onFilterChange, onSelect, allowCustomValue, onCommitCustomValue, searchPlaceholder, emptyIndicator, }) {
|
|
21
|
+
function VirtualList({ items, selectedValue, filterValue, onFilterChange, onSelect, allowCustomValue, onCommitCustomValue, searchPlaceholder, emptyIndicator, externalFiltering, }) {
|
|
22
22
|
const inputRef = React.useRef(null);
|
|
23
23
|
React.useEffect(() => {
|
|
24
24
|
inputRef.current?.focus();
|
|
25
25
|
}, []);
|
|
26
|
-
const filtered = React.useMemo(() =>
|
|
27
|
-
? items
|
|
28
|
-
:
|
|
26
|
+
const filtered = React.useMemo(() => externalFiltering
|
|
27
|
+
? items
|
|
28
|
+
: filterValue
|
|
29
|
+
? items.filter((o) => o.label.toLowerCase().includes(filterValue.toLowerCase()))
|
|
30
|
+
: items, [items, filterValue, externalFiltering]);
|
|
29
31
|
const listRef = React.useRef(null);
|
|
30
32
|
// eslint-disable-next-line react-hooks/incompatible-library
|
|
31
33
|
const virtualizer = useVirtualizer({
|
|
@@ -74,7 +76,7 @@ function VirtualList({ items, selectedValue, filterValue, onFilterChange, onSele
|
|
|
74
76
|
}, children: [_jsx(CheckIcon, { className: cn("size-4 shrink-0", isSelected ? "opacity-100" : "opacity-0"), "aria-hidden": "true" }), option.label] }, vItem.key));
|
|
75
77
|
}) }) }))] }));
|
|
76
78
|
}
|
|
77
|
-
function Combobox({ options, value: controlledValue, defaultValue, onValueChange, onInputChange, allowCustomValue = false, direction = "bottom", placeholder = "Select an option…", searchPlaceholder = "Search…", sortFn = defaultSortFn, emptyIndicator, size = "default", disabled = false, virtualized = false, className, ...rest }) {
|
|
79
|
+
function Combobox({ options, value: controlledValue, defaultValue, onValueChange, onInputChange, allowCustomValue = false, externalFiltering = false, direction = "bottom", placeholder = "Select an option…", searchPlaceholder = "Search…", sortFn = defaultSortFn, emptyIndicator, size = "default", disabled = false, virtualized = false, className, ...rest }) {
|
|
78
80
|
if (process.env.NODE_ENV === "development" &&
|
|
79
81
|
!virtualized &&
|
|
80
82
|
options.length > 500) {
|
|
@@ -108,22 +110,59 @@ function Combobox({ options, value: controlledValue, defaultValue, onValueChange
|
|
|
108
110
|
}, [open]);
|
|
109
111
|
const isControlled = controlledValue !== undefined;
|
|
110
112
|
const selected = isControlled ? controlledValue : internalValue;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
// The server's rank order (under `externalFiltering`) is trusted as-is;
|
|
114
|
+
// otherwise apply `sortFn` (alphabetical by default).
|
|
115
|
+
const orderedOptions = React.useMemo(() => (externalFiltering ? options : [...options].sort(sortFn)), [options, sortFn, externalFiltering]);
|
|
116
|
+
// Accumulates label lookups across renders instead of reading only the
|
|
117
|
+
// current `options` (mirrors MultiSelect's `optionLabelMap` fix for the
|
|
118
|
+
// same defect, camunda/design-system#537): under `externalFiltering`,
|
|
119
|
+
// `options` is only the current query's result page, so a value selected
|
|
120
|
+
// on a prior query would otherwise lose its label — and with it, the
|
|
121
|
+
// trigger's entire "something is selected" state — the moment it drops off
|
|
122
|
+
// the page. Known labels are never evicted, so this is also safe (a no-op)
|
|
123
|
+
// for the non-external, fully-loaded `options` case. Uses the
|
|
124
|
+
// React-sanctioned "adjust state during render" pattern so the merged map
|
|
125
|
+
// is available on this same render.
|
|
126
|
+
const [labelCache, setLabelCache] = React.useState(() => new Map());
|
|
127
|
+
const mergedLabelMap = new Map(labelCache);
|
|
128
|
+
for (const o of options) {
|
|
129
|
+
mergedLabelMap.set(o.value, o.label);
|
|
130
|
+
}
|
|
131
|
+
let labelMapChanged = mergedLabelMap.size !== labelCache.size;
|
|
132
|
+
if (!labelMapChanged) {
|
|
133
|
+
for (const [key, label] of mergedLabelMap) {
|
|
134
|
+
if (labelCache.get(key) !== label) {
|
|
135
|
+
labelMapChanged = true;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const optionLabelMap = labelMapChanged ? mergedLabelMap : labelCache;
|
|
141
|
+
if (labelMapChanged) {
|
|
142
|
+
setLabelCache(mergedLabelMap);
|
|
143
|
+
}
|
|
144
|
+
const cachedLabel = selected !== undefined ? optionLabelMap.get(selected) : undefined;
|
|
113
145
|
// `selected` is empty string, not just `undefined`, for the "nothing
|
|
114
146
|
// selected yet" case in controlled usages that follow the
|
|
115
147
|
// `value ?? ""` pattern (this component's own flagship example) — an
|
|
116
148
|
// empty string must NOT be treated as a committed custom value, or the
|
|
117
149
|
// trigger renders blank instead of the placeholder on first render.
|
|
118
|
-
const isCustomValue = Boolean(allowCustomValue && selected &&
|
|
119
|
-
const hasValue = Boolean(
|
|
120
|
-
const triggerLabel =
|
|
150
|
+
const isCustomValue = Boolean(allowCustomValue && selected && cachedLabel === undefined);
|
|
151
|
+
const hasValue = Boolean(cachedLabel) || isCustomValue;
|
|
152
|
+
const triggerLabel = cachedLabel ?? (isCustomValue ? selected : placeholder);
|
|
121
153
|
const filteredCount = React.useMemo(() => {
|
|
154
|
+
// Under `externalFiltering`, "no matches" means the server's current
|
|
155
|
+
// result page is empty — a client-side substring recount over that same
|
|
156
|
+
// page would be redundant and, worse, diverge from it (e.g. if the
|
|
157
|
+
// server matches on a field other than `label`).
|
|
158
|
+
if (externalFiltering)
|
|
159
|
+
return options.length;
|
|
122
160
|
if (!filterValue)
|
|
123
|
-
return
|
|
161
|
+
return orderedOptions.length;
|
|
124
162
|
const query = filterValue.toLowerCase();
|
|
125
|
-
return
|
|
126
|
-
|
|
163
|
+
return orderedOptions.filter((o) => o.label.toLowerCase().includes(query))
|
|
164
|
+
.length;
|
|
165
|
+
}, [orderedOptions, filterValue, externalFiltering, options.length]);
|
|
127
166
|
const resolvedEmptyIndicator = emptyIndicator ?? defaultEmptyIndicator(allowCustomValue, filterValue);
|
|
128
167
|
function commitValue(next) {
|
|
129
168
|
if (!isControlled)
|
|
@@ -144,10 +183,14 @@ function Combobox({ options, value: controlledValue, defaultValue, onValueChange
|
|
|
144
183
|
else if (allowCustomValue && filterValue && filterValue !== selected) {
|
|
145
184
|
commitValue(filterValue);
|
|
146
185
|
}
|
|
147
|
-
|
|
186
|
+
// Route the reset through handleInputChange (not a bare
|
|
187
|
+
// setFilterValue) so `onInputChange` observes the reset too — see its
|
|
188
|
+
// broadened contract on the prop's own JSDoc. Applies to every close
|
|
189
|
+
// path (Escape, outside click, blur), not just this one.
|
|
190
|
+
handleInputChange("");
|
|
148
191
|
}
|
|
149
192
|
else if (isCustomValue && selected !== undefined) {
|
|
150
|
-
|
|
193
|
+
handleInputChange(selected);
|
|
151
194
|
}
|
|
152
195
|
setOpen(nextOpen);
|
|
153
196
|
}
|
|
@@ -157,12 +200,18 @@ function Combobox({ options, value: controlledValue, defaultValue, onValueChange
|
|
|
157
200
|
setInternalValue(next);
|
|
158
201
|
onValueChange?.(next);
|
|
159
202
|
setOpen(false);
|
|
160
|
-
|
|
203
|
+
// A selection closes the popover through a path separate from
|
|
204
|
+
// handleOpenChange (Radix's onOpenChange is only invoked for its own
|
|
205
|
+
// dismiss gestures, not this explicit setOpen(false)) — reset here too,
|
|
206
|
+
// or a server-search consumer's state stays stale after every pick.
|
|
207
|
+
handleInputChange("");
|
|
161
208
|
}
|
|
162
209
|
function handleCommitCustomValue(text) {
|
|
163
210
|
commitValue(text);
|
|
164
211
|
setOpen(false);
|
|
165
|
-
|
|
212
|
+
// Same reasoning as handleSelect: this close path bypasses
|
|
213
|
+
// handleOpenChange too.
|
|
214
|
+
handleInputChange("");
|
|
166
215
|
}
|
|
167
216
|
function handleCommandKeyDown(e) {
|
|
168
217
|
if (e.key === "Tab") {
|
|
@@ -184,14 +233,14 @@ function Combobox({ options, value: controlledValue, defaultValue, onValueChange
|
|
|
184
233
|
handleCommitCustomValue(filterValue);
|
|
185
234
|
}
|
|
186
235
|
}
|
|
187
|
-
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: handleOpenChange, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("button", { ...rest, "data-slot": "combobox", "data-size": size, type: "button", role: "combobox", "aria-expanded": open, "aria-haspopup": "listbox", "aria-disabled": disabled ? "true" : undefined, disabled: disabled, className: cn("flex w-fit min-w-0 items-center justify-between gap-2 rounded-lg border border-input bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-all duration-200 outline-none select-none", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/20 dark:focus-visible:ring-ring/40", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-danger-action-default aria-invalid:ring-3 aria-invalid:ring-danger-action-default/20 dark:aria-invalid:border-danger-action-default/50 dark:aria-invalid:ring-danger-action-default/40", "data-[size=default]:h-9 data-[size=sm]:h-8", !hasValue && "text-muted-foreground", className), children: [_jsx("span", { className: "truncate", children: triggerLabel }), _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 opacity-50", "aria-hidden": "true" })] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsx(C4Provider, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "combobox-content", align: "start", side: direction, sideOffset: 4, className: cn("z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: virtualized ? (open && (_jsx(VirtualList, { items:
|
|
188
|
-
const option =
|
|
236
|
+
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: handleOpenChange, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("button", { ...rest, "data-slot": "combobox", "data-size": size, type: "button", role: "combobox", "aria-expanded": open, "aria-haspopup": "listbox", "aria-disabled": disabled ? "true" : undefined, disabled: disabled, className: cn("flex w-fit min-w-0 items-center justify-between gap-2 rounded-lg border border-input bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-all duration-200 outline-none select-none", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/20 dark:focus-visible:ring-ring/40", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-danger-action-default aria-invalid:ring-3 aria-invalid:ring-danger-action-default/20 dark:aria-invalid:border-danger-action-default/50 dark:aria-invalid:ring-danger-action-default/40", "data-[size=default]:h-9 data-[size=sm]:h-8", !hasValue && "text-muted-foreground", className), children: [_jsx("span", { className: "truncate", children: triggerLabel }), _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 opacity-50", "aria-hidden": "true" })] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsx(C4Provider, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "combobox-content", align: "start", side: direction, sideOffset: 4, className: cn("z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: virtualized ? (open && (_jsx(VirtualList, { items: orderedOptions, selectedValue: selected, filterValue: filterValue, onFilterChange: handleInputChange, onSelect: handleSelect, allowCustomValue: allowCustomValue, onCommitCustomValue: handleCommitCustomValue, searchPlaceholder: searchPlaceholder, emptyIndicator: resolvedEmptyIndicator, externalFiltering: externalFiltering }))) : (_jsxs(Command, { shouldFilter: !externalFiltering, onKeyDown: handleCommandKeyDown, filter: (value, search) => {
|
|
237
|
+
const option = orderedOptions.find((o) => o.value === value);
|
|
189
238
|
return option?.label
|
|
190
239
|
.toLowerCase()
|
|
191
240
|
.includes(search.toLowerCase())
|
|
192
241
|
? 1
|
|
193
242
|
: 0;
|
|
194
|
-
}, children: [_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder, value: filterValue, onValueChange: handleInputChange }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: resolvedEmptyIndicator }), _jsx(CommandGroup, { children:
|
|
243
|
+
}, children: [_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder, value: filterValue, onValueChange: handleInputChange }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: resolvedEmptyIndicator }), _jsx(CommandGroup, { children: orderedOptions.map((option) => (_jsxs(CommandItem, { value: option.value, disabled: option.disabled, onSelect: handleSelect, className: "gap-2", children: [_jsx(CheckIcon, { className: cn("size-4 shrink-0", selected === option.value
|
|
195
244
|
? "opacity-100"
|
|
196
245
|
: "opacity-0"), "aria-hidden": "true" }), option.label] }, option.value))) })] })] })) }) }) })] }));
|
|
197
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../../../src/components/ui/combobox.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../../../src/components/ui/combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { Command as CommandPrimitive } from "cmdk";
|
|
5
|
-
import { SearchIcon } from "lucide
|
|
5
|
+
import { SearchIcon } from "../../icons/lucide.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
import { withRef } from "../../lib/with-ref.js";
|
|
8
8
|
function Command({ className, ...props }) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { flexRender, getCoreRowModel, getExpandedRowModel, getPaginationRowModel, getSortedRowModel, useReactTable, } from "@tanstack/react-table";
|
|
5
|
-
import { ChevronDown, ChevronRight, ChevronsUpDown, ChevronUp, MoreVertical, } from "lucide
|
|
5
|
+
import { ChevronDown, ChevronRight, ChevronsUpDown, ChevronUp, MoreVertical, } from "../../icons/lucide.js";
|
|
6
6
|
import { cn, renderIconNode } from "../../lib/utils.js";
|
|
7
7
|
import { typographyVariants } from "./typography.js";
|
|
8
8
|
import { Button } from "./button.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { format as formatDate } from "date-fns";
|
|
5
|
-
import { CalendarIcon } from "lucide
|
|
5
|
+
import { CalendarIcon } from "../../icons/lucide.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
import { withRef } from "../../lib/with-ref.js";
|
|
8
8
|
import { Button } from "./button.js";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { format as formatDate } from "date-fns";
|
|
5
|
-
import { CalendarIcon, XIcon } from "lucide
|
|
5
|
+
import { CalendarIcon, XIcon } from "../../icons/lucide.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
import { withRef } from "../../lib/with-ref.js";
|
|
8
8
|
import { Button } from "./button.js";
|
|
@@ -7,7 +7,7 @@ import { cn } from "../../lib/utils.js";
|
|
|
7
7
|
import { composeCloseAutoFocus, composeOpenAutoFocus, useDialogFocusReturn, } from "../../lib/focus-visible-on-close.js";
|
|
8
8
|
import { C4Provider } from "./c4-provider.js";
|
|
9
9
|
import { Button } from "../ui/button.js";
|
|
10
|
-
import { XIcon } from "lucide
|
|
10
|
+
import { XIcon } from "../../icons/lucide.js";
|
|
11
11
|
import { typographyVariants } from "./typography.js";
|
|
12
12
|
function Dialog({ ...props }) {
|
|
13
13
|
return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
5
|
-
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide
|
|
5
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from "../../icons/lucide.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
import { composeCloseAutoFocus, useDialogFocusReturn, } from "../../lib/focus-visible-on-close.js";
|
|
8
8
|
import { C4Provider } from "./c4-provider.js";
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
// 1. Imports
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
|
-
import { CheckCircle2, Loader2, UploadCloud, X, XCircle } from "lucide
|
|
5
|
+
import { CheckCircle2, Loader2, UploadCloud, X, XCircle } from "../../icons/lucide.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
7
|
import { Text } from "./typography.js";
|
|
8
8
|
import { Button, buttonVariants } from "./button.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import { Check, Pencil } from "lucide
|
|
4
|
+
import { Check, Pencil } from "../../icons/lucide.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
6
|
import { Button } from "./button.js";
|
|
7
7
|
import { Input } from "./input.js";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const linkVariants: (props?: ({
|
|
3
|
+
inline?: boolean | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
type LinkProps = React.ComponentProps<"a"> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
inline?: boolean;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const Link: React.ForwardRefExoticComponent<Omit<LinkProps, "ref"> & React.RefAttributes<HTMLAnchorElement>>;
|
|
11
|
+
export { Link, linkVariants };
|
|
12
|
+
export type { LinkProps };
|
|
13
|
+
//# sourceMappingURL=link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,QAAA,MAAM,YAAY;;8EAcjB,CAAC;AAEF,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmEF,QAAA,MAAM,IAAI,kGAAkD,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Slot } from "radix-ui";
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import { withRef } from "../../lib/with-ref.js";
|
|
7
|
+
const linkVariants = cva("text-info-action-default underline-offset-4 outline-none focus-visible:ring-2 focus-visible:ring-ring aria-disabled:opacity-50", {
|
|
8
|
+
variants: {
|
|
9
|
+
inline: {
|
|
10
|
+
true: "inline underline",
|
|
11
|
+
false: "inline-flex items-center gap-1.5 whitespace-nowrap text-sm hover:underline focus-visible:underline [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
inline: false,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
function LinkImpl({ ref, className, inline = false, asChild = false, disabled = false, href, target, rel, role, tabIndex, onClick, ...props }) {
|
|
19
|
+
const Comp = asChild ? Slot.Root : "a";
|
|
20
|
+
const resolvedRel = rel ?? (target === "_blank" ? "noopener" : undefined);
|
|
21
|
+
// Disabled semantics (stripped href, aria-disabled, blocked click) apply to
|
|
22
|
+
// the native <a> we render directly. `asChild` hands rendering to a Radix
|
|
23
|
+
// Slot around a consumer-supplied element (e.g. a router Link), whose own
|
|
24
|
+
// href/onClick wins the prop merge and would still navigate — same class of
|
|
25
|
+
// gap as Button's `loading && !asChild`. Disabling a slotted child is the
|
|
26
|
+
// consumer's responsibility.
|
|
27
|
+
const isDisabled = disabled && !asChild;
|
|
28
|
+
const handleClick = (event) => {
|
|
29
|
+
if (isDisabled) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
onClick?.(event);
|
|
34
|
+
};
|
|
35
|
+
// Built as a plain object rather than written out as JSX attributes so an
|
|
36
|
+
// unset value is an absent key, not an explicit `undefined`. On the native
|
|
37
|
+
// <a> both forms render identically, but with `asChild` an explicit
|
|
38
|
+
// `undefined` still clones onto the child element via Radix Slot and can
|
|
39
|
+
// shadow a value the child computes internally (e.g. a router Link
|
|
40
|
+
// deriving `href` from its own `to` prop) if the child spreads its own
|
|
41
|
+
// rest props after that value.
|
|
42
|
+
const attrs = {};
|
|
43
|
+
if (isDisabled) {
|
|
44
|
+
attrs.href = undefined;
|
|
45
|
+
attrs.role = "link";
|
|
46
|
+
attrs["aria-disabled"] = true;
|
|
47
|
+
attrs.tabIndex = 0;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if (href !== undefined)
|
|
51
|
+
attrs.href = href;
|
|
52
|
+
if (role !== undefined)
|
|
53
|
+
attrs.role = role;
|
|
54
|
+
if (tabIndex !== undefined)
|
|
55
|
+
attrs.tabIndex = tabIndex;
|
|
56
|
+
}
|
|
57
|
+
if (target !== undefined)
|
|
58
|
+
attrs.target = target;
|
|
59
|
+
if (resolvedRel !== undefined)
|
|
60
|
+
attrs.rel = resolvedRel;
|
|
61
|
+
return (_jsx(Comp, { ref: ref, "data-slot": "link", className: cn(linkVariants({ inline, className })), ...props, ...attrs, onClick: handleClick }));
|
|
62
|
+
}
|
|
63
|
+
const Link = withRef(LinkImpl);
|
|
64
|
+
export { Link, linkVariants };
|
|
65
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../src/components/ui/link.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,YAAY,GAAG,GAAG,CACtB,gIAAgI,EAChI;IACE,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,IAAI,EAAE,kBAAkB;YACxB,KAAK,EACH,sLAAsL;SACzL;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE,KAAK;KACd;CACF,CACF,CAAC;AAQF,SAAS,QAAQ,CAAC,EAChB,GAAG,EACH,SAAS,EACT,MAAM,GAAG,KAAK,EACd,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,MAAM,EACN,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACE;IACV,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,0EAA0E;IAC1E,6BAA6B;IAC7B,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,OAAO,CAAC;IAExC,MAAM,WAAW,GAAG,CAAC,KAA0C,EAAE,EAAE;QACjE,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,0EAA0E;IAC1E,2EAA2E;IAC3E,oEAAoE;IACpE,yEAAyE;IACzE,mEAAmE;IACnE,uEAAuE;IACvE,+BAA+B;IAC/B,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;QACvB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QAC9B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1C,IAAI,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1C,IAAI,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAChD,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC;IAEvD,OAAO,CACL,KAAC,IAAI,IACH,GAAG,EAAE,GAAG,eACE,MAAM,EAChB,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAC9C,KAAK,KACL,KAAK,EACT,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAA+B,QAAQ,CAAC,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { type LucideIcon } from "lucide
|
|
2
|
+
import { type LucideIcon } from "../../icons/lucide.js";
|
|
3
3
|
export interface MultiSelectOption {
|
|
4
4
|
label: string;
|
|
5
5
|
value: string;
|
|
@@ -30,7 +30,22 @@ export interface MultiSelectProps {
|
|
|
30
30
|
className?: string;
|
|
31
31
|
"aria-label"?: string;
|
|
32
32
|
"aria-labelledby"?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Fires on every keystroke in the internal search input with the raw typed
|
|
35
|
+
* text. Named to match the identical-purpose prop on `Combobox`.
|
|
36
|
+
*/
|
|
37
|
+
onInputChange?: (value: string) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Trusts `options` as already filtered by the consumer (e.g. a server-side
|
|
40
|
+
* search query) instead of re-filtering it against the typed text with
|
|
41
|
+
* cmdk's internal scorer. Also disables the alphabetical resort — the
|
|
42
|
+
* consumer's `options` order (server rank) is preserved as-is — and forces
|
|
43
|
+
* Select All / Clear All off, because "Clear All" on a partial/paginated
|
|
44
|
+
* `options` page would destroy selections made on pages no longer present
|
|
45
|
+
* in `options`. Defaults to false.
|
|
46
|
+
*/
|
|
47
|
+
externalFiltering?: boolean;
|
|
33
48
|
}
|
|
34
|
-
declare function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder, searchable, searchPlaceholder, sorted, maxCount, hideSelectAll, closeOnSelect, emptyIndicator, size, disabled, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }: MultiSelectProps): React.JSX.Element;
|
|
49
|
+
declare function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder, searchable, searchPlaceholder, sorted, maxCount, hideSelectAll, closeOnSelect, emptyIndicator, size, disabled, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onInputChange, externalFiltering, }: MultiSelectProps): React.JSX.Element;
|
|
35
50
|
export { MultiSelect };
|
|
36
51
|
//# sourceMappingURL=multi-select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAe/C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"multi-select.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAe/C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAcD,iBAAS,WAAW,CAAC,EACnB,OAAO,EACP,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,aAAa,EACb,WAA+B,EAC/B,UAAiB,EACjB,iBAA6B,EAC7B,MAAa,EACb,QAAY,EACZ,aAAqB,EACrB,aAAqB,EACrB,cAAc,EACd,IAAgB,EAChB,QAAgB,EAChB,EAAE,EACF,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,aAAa,EACb,iBAAyB,GAC1B,EAAE,gBAAgB,qBAuXlB;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { Popover as PopoverPrimitive } from "radix-ui";
|
|
5
|
-
import { ChevronDownIcon, XIcon, ListChecksIcon } from "lucide
|
|
6
|
-
import {} from "lucide
|
|
5
|
+
import { ChevronDownIcon, XIcon, ListChecksIcon } from "../../icons/lucide.js";
|
|
6
|
+
import {} from "../../icons/lucide.js";
|
|
7
7
|
import { cn } from "../../lib/utils.js";
|
|
8
8
|
import { Badge } from "./badge.js";
|
|
9
9
|
import { C4Provider } from "./c4-provider.js";
|
|
@@ -15,11 +15,35 @@ function isGroup(item) {
|
|
|
15
15
|
function getAllOptions(options) {
|
|
16
16
|
return options.flatMap((item) => (isGroup(item) ? item.options : [item]));
|
|
17
17
|
}
|
|
18
|
-
function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder = "Select options…", searchable = true, searchPlaceholder = "Search…", sorted = true, maxCount = 3, hideSelectAll = false, closeOnSelect = false, emptyIndicator, size = "default", disabled = false, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }) {
|
|
18
|
+
function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder = "Select options…", searchable = true, searchPlaceholder = "Search…", sorted = true, maxCount = 3, hideSelectAll = false, closeOnSelect = false, emptyIndicator, size = "default", disabled = false, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onInputChange, externalFiltering = false, }) {
|
|
19
19
|
const [open, setOpen] = React.useState(false);
|
|
20
20
|
const [internalValue, setInternalValue] = React.useState(defaultValue ?? []);
|
|
21
|
+
const [searchValue, setSearchValue] = React.useState("");
|
|
21
22
|
const isControlled = controlledValue !== undefined;
|
|
22
23
|
const selected = isControlled ? controlledValue : internalValue;
|
|
24
|
+
// Select All/Clear All on a partial (paginated/server-filtered) `options`
|
|
25
|
+
// page would destroy selections made on pages no longer present in
|
|
26
|
+
// `options` — force it off regardless of the literal `hideSelectAll` prop.
|
|
27
|
+
const effectiveHideSelectAll = hideSelectAll || externalFiltering;
|
|
28
|
+
// The consumer's `options` order is the server rank; don't clobber it.
|
|
29
|
+
const effectiveSorted = sorted && !externalFiltering;
|
|
30
|
+
function handleInputChange(next) {
|
|
31
|
+
setSearchValue(next);
|
|
32
|
+
onInputChange?.(next);
|
|
33
|
+
}
|
|
34
|
+
function handleOpenChange(nextOpen) {
|
|
35
|
+
if (disabled)
|
|
36
|
+
return;
|
|
37
|
+
if (!nextOpen) {
|
|
38
|
+
// The search input is controlled (for `onInputChange`), so its value now
|
|
39
|
+
// lives in MultiSelect's own state instead of dying with cmdk's internal
|
|
40
|
+
// state on popover unmount — reset explicitly or a reopen shows the
|
|
41
|
+
// stale query and stale filtered results.
|
|
42
|
+
setSearchValue("");
|
|
43
|
+
onInputChange?.("");
|
|
44
|
+
}
|
|
45
|
+
setOpen(nextOpen);
|
|
46
|
+
}
|
|
23
47
|
function updateSelected(next) {
|
|
24
48
|
if (!isControlled) {
|
|
25
49
|
setInternalValue(next);
|
|
@@ -32,7 +56,10 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
|
|
|
32
56
|
: [...selected, optionValue];
|
|
33
57
|
updateSelected(next);
|
|
34
58
|
if (closeOnSelect) {
|
|
35
|
-
setOpen(false)
|
|
59
|
+
// Same reasoning as handleTriggerKeyDown: a raw setOpen(false) here
|
|
60
|
+
// never reaches Radix's onOpenChange, so the search-input reset would
|
|
61
|
+
// be skipped and a reopen would show the stale query.
|
|
62
|
+
handleOpenChange(false);
|
|
36
63
|
}
|
|
37
64
|
}
|
|
38
65
|
const allOptions = getAllOptions(options);
|
|
@@ -69,28 +96,57 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
|
|
|
69
96
|
// keyboard-to-click behaviour; drive open state manually (preventDefault
|
|
70
97
|
// stops Space from scrolling the page).
|
|
71
98
|
e.preventDefault();
|
|
72
|
-
setOpen
|
|
99
|
+
// Route through handleOpenChange, not a raw setOpen — closing must
|
|
100
|
+
// still reset the (now-controlled) search input, and Radix's own
|
|
101
|
+
// onOpenChange is only invoked for its own-initiated changes.
|
|
102
|
+
handleOpenChange(!open);
|
|
73
103
|
return;
|
|
74
104
|
}
|
|
75
105
|
if (e.key === "Backspace" && !open && selected.length > 0) {
|
|
76
106
|
updateSelected(selected.slice(0, -1));
|
|
77
107
|
}
|
|
78
108
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
109
|
+
// Accumulates label lookups across renders instead of rebuilding from the
|
|
110
|
+
// current `options` alone: in `externalFiltering` mode `options` is only
|
|
111
|
+
// the current query's result page, so a value selected on a prior query
|
|
112
|
+
// (e.g. "Alice") would otherwise lose its label the moment the query
|
|
113
|
+
// changes and she drops out of the page (falls back to the raw value/UUID).
|
|
114
|
+
// Known values are never evicted, so this is safe for the non-external
|
|
115
|
+
// (fully-loaded `options`) case too. Uses the React-sanctioned "adjust
|
|
116
|
+
// state during render" pattern (a setState call gated on a diff, not a
|
|
117
|
+
// ref write) so the merged map is available on this same render.
|
|
118
|
+
const [labelCache, setLabelCache] = React.useState(() => new Map());
|
|
119
|
+
const currentOptions = getAllOptions(options);
|
|
120
|
+
const mergedLabelMap = new Map(labelCache);
|
|
121
|
+
for (const o of currentOptions) {
|
|
122
|
+
mergedLabelMap.set(o.value, o.label);
|
|
123
|
+
}
|
|
124
|
+
// Compare the fully-merged result against the cache, not option-by-option
|
|
125
|
+
// against stale intermediate state — an options array with a repeated
|
|
126
|
+
// `value` carrying different labels would otherwise never converge (each
|
|
127
|
+
// render's per-option comparison would flag a "change" even though the
|
|
128
|
+
// last-wins merge always lands on the same final value).
|
|
129
|
+
let labelMapChanged = mergedLabelMap.size !== labelCache.size;
|
|
130
|
+
if (!labelMapChanged) {
|
|
131
|
+
for (const [key, label] of mergedLabelMap) {
|
|
132
|
+
if (labelCache.get(key) !== label) {
|
|
133
|
+
labelMapChanged = true;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
83
136
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
137
|
+
}
|
|
138
|
+
const optionLabelMap = labelMapChanged ? mergedLabelMap : labelCache;
|
|
139
|
+
if (labelMapChanged) {
|
|
140
|
+
setLabelCache(mergedLabelMap);
|
|
141
|
+
}
|
|
142
|
+
const groupedItems = options.filter(isGroup).map((g) => effectiveSorted
|
|
87
143
|
? {
|
|
88
144
|
...g,
|
|
89
145
|
options: [...g.options].sort((a, b) => a.label.localeCompare(b.label)),
|
|
90
146
|
}
|
|
91
147
|
: g);
|
|
92
148
|
const rawFlatItems = options.filter((o) => !isGroup(o));
|
|
93
|
-
const flatItems =
|
|
149
|
+
const flatItems = effectiveSorted
|
|
94
150
|
? [...rawFlatItems].sort((a, b) => a.label.localeCompare(b.label))
|
|
95
151
|
: rawFlatItems;
|
|
96
152
|
// Dev-only migration warning (#496). The trigger became a <div role="combobox">,
|
|
@@ -108,7 +164,7 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
|
|
|
108
164
|
"Pass `aria-labelledby` (pointing at the label's id) or `aria-label` to give it an accessible name (#496).");
|
|
109
165
|
}
|
|
110
166
|
}, [id, ariaLabel, ariaLabelledBy]);
|
|
111
|
-
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: disabled ? undefined :
|
|
167
|
+
return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: disabled ? undefined : handleOpenChange, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("div", { ...{
|
|
112
168
|
type: undefined,
|
|
113
169
|
}, "data-slot": "multi-select", "data-size": size, id: id, role: "combobox", tabIndex: disabled ? undefined : 0, "aria-expanded": open, "aria-haspopup": "listbox", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-disabled": disabled ? "true" : undefined, onKeyDown: handleTriggerKeyDown, className: cn("flex w-full min-h-9 flex-wrap items-center gap-1 rounded-lg border border-input bg-input-background px-2 py-1 text-sm text-left transition-all duration-200 outline-none", "focus-visible:border-primary-border-strong dark:focus-visible:border-primary-border-subtle focus-visible:ring-2 focus-visible:ring-ring", "aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none", "data-[size=sm]:min-h-8", selected.length === 0 && "text-neutral-foreground-subtle", className), children: [selected.length === 0 ? (_jsx("span", { className: "flex-1 truncate", children: placeholder })) : (_jsxs(_Fragment, { children: [visibleChips.map((v) => {
|
|
114
170
|
const label = optionLabelMap.get(v) ?? v;
|
|
@@ -117,7 +173,7 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
|
|
|
117
173
|
// `pointer-events-auto` restores interactivity inside a Dialog:
|
|
118
174
|
// the popover portals as a sibling of the dialog, so it inherits
|
|
119
175
|
// `pointer-events: none` from the scroll-locked <body> (#496).
|
|
120
|
-
"pointer-events-auto z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: _jsxs(Command, { children: [searchable && (_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder })), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyIndicator ?? "No results found" }), !
|
|
176
|
+
"pointer-events-auto z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: _jsxs(Command, { shouldFilter: !externalFiltering, children: [searchable && (_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder, value: searchValue, onValueChange: handleInputChange })), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyIndicator ?? "No results found" }), !effectiveHideSelectAll && (_jsx(CommandGroup, { children: _jsxs(CommandItem, { onSelect: handleSelectAll, className: "gap-2", children: [_jsx(Checkbox, { checked: allSelected, "aria-hidden": "true", tabIndex: -1, className: "pointer-events-none" }), _jsx(ListChecksIcon, { className: "size-4 text-neutral-foreground-subtle", "aria-hidden": "true" }), allSelected ? "Clear All" : "Select All"] }) })), flatItems.length > 0 && (_jsx(CommandGroup, { children: flatItems.map((option) => {
|
|
121
177
|
const isSelected = selected.includes(option.value);
|
|
122
178
|
const Icon = option.icon;
|
|
123
179
|
return (_jsxs(CommandItem, { value: option.value, keywords: [option.label], disabled: option.disabled, onSelect: () => toggleOption(option.value), className: "gap-2", children: [_jsx(Checkbox, { checked: isSelected, "aria-hidden": "true", tabIndex: -1, className: "pointer-events-none" }), Icon && (_jsx(Icon, { className: "size-4 text-neutral-foreground-subtle", "aria-hidden": "true" })), option.label] }, option.value));
|