@egose/shadcn-theme 0.1.5 → 0.1.7
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/chunk-2NUE7GJ3.js +44 -0
- package/chunk-2NUE7GJ3.js.map +1 -0
- package/chunk-3PZY5HRH.mjs +82 -0
- package/chunk-3PZY5HRH.mjs.map +1 -0
- package/{components/ui/extension/multi-select.js → chunk-3TG6ZVFG.js} +63 -62
- package/chunk-3TG6ZVFG.js.map +1 -0
- package/{chunk-UQJ4A4H2.mjs → chunk-4IDPSNL3.mjs} +2 -2
- package/{chunk-GAJQQPUC.mjs → chunk-5CBMRDT7.mjs} +3 -3
- package/{components/ui/extension/multi-select.mjs → chunk-7JYFZETL.mjs} +64 -63
- package/chunk-7JYFZETL.mjs.map +1 -0
- package/{chunk-FCE22MQI.js → chunk-AQIBLBXW.js} +9 -9
- package/{chunk-FCE22MQI.js.map → chunk-AQIBLBXW.js.map} +1 -1
- package/{chunk-6C4NHVD6.js → chunk-BMAIJZN6.js} +3 -2
- package/chunk-BMAIJZN6.js.map +1 -0
- package/{chunk-S3CRUBGL.mjs → chunk-CNYC22IA.mjs} +2 -2
- package/{chunk-E5TF7QLI.mjs → chunk-D6YGFMSG.mjs} +5 -5
- package/{chunk-WHQINNUB.js → chunk-FOEQYO2Q.js} +5 -5
- package/{chunk-WHQINNUB.js.map → chunk-FOEQYO2Q.js.map} +1 -1
- package/chunk-FSU3BKPK.js +130 -0
- package/chunk-FSU3BKPK.js.map +1 -0
- package/{chunk-3ZN766EW.js → chunk-G6WKPZTL.js} +3 -3
- package/{chunk-3ZN766EW.js.map → chunk-G6WKPZTL.js.map} +1 -1
- package/chunk-IQIHYWXX.js +83 -0
- package/chunk-IQIHYWXX.js.map +1 -0
- package/{chunk-AJLAS62X.js → chunk-LAIO3QZX.js} +4 -4
- package/{chunk-AJLAS62X.js.map → chunk-LAIO3QZX.js.map} +1 -1
- package/{chunk-MJT6B7OJ.js → chunk-LPDYWZN6.js} +3 -3
- package/{chunk-MJT6B7OJ.js.map → chunk-LPDYWZN6.js.map} +1 -1
- package/{chunk-KO4TIQLS.mjs → chunk-M6UKU56L.mjs} +2 -1
- package/chunk-M6UKU56L.mjs.map +1 -0
- package/{chunk-Y6CUGIQB.js → chunk-NRCL342G.js} +9 -9
- package/{chunk-Y6CUGIQB.js.map → chunk-NRCL342G.js.map} +1 -1
- package/{chunk-4I6SLZWT.mjs → chunk-O6PHWGJH.mjs} +2 -1
- package/chunk-O6PHWGJH.mjs.map +1 -0
- package/{chunk-KUD4Z2MZ.mjs → chunk-P4DW3EEW.mjs} +2 -2
- package/{chunk-WREXRSAA.js → chunk-P4EDRIBH.js} +4 -4
- package/{chunk-WREXRSAA.js.map → chunk-P4EDRIBH.js.map} +1 -1
- package/{chunk-432PQWGO.mjs → chunk-RJVQU443.mjs} +2 -2
- package/{chunk-2UTAR6ZA.js → chunk-SC6IX6NJ.js} +3 -2
- package/chunk-SC6IX6NJ.js.map +1 -0
- package/chunk-USW6AILM.mjs +43 -0
- package/chunk-USW6AILM.mjs.map +1 -0
- package/{chunk-SLADFPSL.js → chunk-VBPJD7U3.js} +5 -5
- package/{chunk-SLADFPSL.js.map → chunk-VBPJD7U3.js.map} +1 -1
- package/{chunk-HKZRXGJ7.mjs → chunk-YDRPNCWF.mjs} +4 -4
- package/{chunk-ZMMYQNQV.mjs → chunk-ZFBUIBJH.mjs} +2 -2
- package/chunk-ZQK6REIM.mjs +129 -0
- package/chunk-ZQK6REIM.mjs.map +1 -0
- package/components/form/hook-multi-select.d.mts +14 -0
- package/components/form/hook-multi-select.d.ts +14 -0
- package/components/form/hook-multi-select.js +76 -0
- package/components/form/hook-multi-select.js.map +1 -0
- package/components/form/hook-multi-select.mjs +75 -0
- package/components/form/hook-multi-select.mjs.map +1 -0
- package/components/form/hook-searchable-select.js +5 -5
- package/components/form/hook-searchable-select.mjs +4 -4
- package/components/form/hook-tag-picker.d.mts +12 -0
- package/components/form/hook-tag-picker.d.ts +12 -0
- package/components/form/hook-tag-picker.js +66 -0
- package/components/form/hook-tag-picker.js.map +1 -0
- package/components/form/hook-tag-picker.mjs +65 -0
- package/components/form/hook-tag-picker.mjs.map +1 -0
- package/components/form/multi-select.d.mts +25 -1
- package/components/form/multi-select.d.ts +25 -1
- package/components/form/multi-select.js +20 -1
- package/components/form/multi-select.js.map +1 -1
- package/components/form/multi-select.mjs +19 -0
- package/components/form/searchable-select.js +5 -5
- package/components/form/searchable-select.mjs +4 -4
- package/components/form/tag-picker.d.mts +21 -0
- package/components/form/tag-picker.d.ts +21 -0
- package/components/form/tag-picker.js +14 -0
- package/components/form/tag-picker.js.map +1 -0
- package/components/form/tag-picker.mjs +13 -0
- package/components/form/tag-picker.mjs.map +1 -0
- package/components/ui/aspect-ratio.d.mts +2 -2
- package/components/ui/aspect-ratio.d.ts +2 -2
- package/components/ui/aspect-ratio.js +2 -1
- package/components/ui/aspect-ratio.js.map +1 -1
- package/components/ui/aspect-ratio.mjs +1 -0
- package/components/ui/aspect-ratio.mjs.map +1 -1
- package/components/ui/button-group.d.mts +4 -4
- package/components/ui/button-group.d.ts +4 -4
- package/components/ui/button-group.js +2 -1
- package/components/ui/button-group.js.map +1 -1
- package/components/ui/button-group.mjs +1 -0
- package/components/ui/button-group.mjs.map +1 -1
- package/components/ui/collapsible.d.mts +4 -4
- package/components/ui/collapsible.d.ts +4 -4
- package/components/ui/collapsible.js +2 -2
- package/components/ui/collapsible.mjs +1 -1
- package/components/ui/combobox.js +5 -5
- package/components/ui/combobox.mjs +2 -2
- package/components/ui/command.js +4 -4
- package/components/ui/command.mjs +3 -3
- package/components/ui/copy-button.d.mts +3 -3
- package/components/ui/copy-button.d.ts +3 -3
- package/components/ui/copy-button.js +12 -12
- package/components/ui/copy-button.js.map +1 -1
- package/components/ui/copy-button.mjs +2 -2
- package/components/ui/copy-button.mjs.map +1 -1
- package/components/ui/empty.d.mts +7 -7
- package/components/ui/empty.d.ts +7 -7
- package/components/ui/empty.js +2 -1
- package/components/ui/empty.js.map +1 -1
- package/components/ui/empty.mjs +1 -0
- package/components/ui/empty.mjs.map +1 -1
- package/components/ui/field.d.mts +11 -11
- package/components/ui/field.d.ts +11 -11
- package/components/ui/field.js +3 -3
- package/components/ui/field.js.map +1 -1
- package/components/ui/field.mjs +2 -2
- package/components/ui/field.mjs.map +1 -1
- package/components/ui/input-group.js +3 -3
- package/components/ui/input-group.mjs +2 -2
- package/components/ui/kbd.d.mts +3 -3
- package/components/ui/kbd.d.ts +3 -3
- package/components/ui/kbd.js +2 -1
- package/components/ui/kbd.js.map +1 -1
- package/components/ui/kbd.mjs +1 -0
- package/components/ui/kbd.mjs.map +1 -1
- package/components/ui/{extension/multi-select.d.mts → multi-select.d.mts} +4 -3
- package/components/ui/{extension/multi-select.d.ts → multi-select.d.ts} +4 -3
- package/components/ui/multi-select.js +29 -0
- package/components/ui/multi-select.js.map +1 -0
- package/components/ui/multi-select.mjs +28 -0
- package/components/ui/multi-select.mjs.map +1 -0
- package/components/ui/native-select.d.mts +4 -4
- package/components/ui/native-select.d.ts +4 -4
- package/components/ui/native-select.js +2 -1
- package/components/ui/native-select.js.map +1 -1
- package/components/ui/native-select.mjs +1 -0
- package/components/ui/native-select.mjs.map +1 -1
- package/components/ui/resizable.js +1 -0
- package/components/ui/resizable.js.map +1 -1
- package/components/ui/resizable.mjs +1 -0
- package/components/ui/resizable.mjs.map +1 -1
- package/components/ui/sidebar.js +3 -3
- package/components/ui/sidebar.mjs +2 -2
- package/components/ui/skeleton.d.mts +2 -2
- package/components/ui/skeleton.d.ts +2 -2
- package/components/ui/skeleton.js +2 -2
- package/components/ui/skeleton.mjs +1 -1
- package/components/ui/tag-picker.d.mts +14 -0
- package/components/ui/tag-picker.d.ts +14 -0
- package/components/ui/tag-picker.js +12 -0
- package/components/ui/tag-picker.js.map +1 -0
- package/components/ui/tag-picker.mjs +11 -0
- package/components/ui/tag-picker.mjs.map +1 -0
- package/components/widgets/dialog-manager/index.js +1 -1
- package/components/widgets/dialog-manager/index.js.map +1 -1
- package/components/widgets/dialog-manager/index.mjs +1 -1
- package/layouts/sidebar1/app-sidebar.js +10 -10
- package/layouts/sidebar1/app-sidebar.mjs +9 -9
- package/layouts/sidebar1/context-switcher.js +5 -5
- package/layouts/sidebar1/context-switcher.mjs +4 -4
- package/layouts/sidebar1/index.js +11 -11
- package/layouts/sidebar1/index.js.map +1 -1
- package/layouts/sidebar1/index.mjs +9 -9
- package/layouts/sidebar1/nav-menus.js +5 -5
- package/layouts/sidebar1/nav-menus.mjs +4 -4
- package/layouts/sidebar1/nav-user.js +6 -6
- package/layouts/sidebar1/nav-user.mjs +5 -5
- package/layouts/simple/index.js +2 -2
- package/layouts/simple/index.mjs +3 -3
- package/package.json +1 -1
- package/chunk-2UTAR6ZA.js.map +0 -1
- package/chunk-4I6SLZWT.mjs.map +0 -1
- package/chunk-6C4NHVD6.js.map +0 -1
- package/chunk-KO4TIQLS.mjs.map +0 -1
- package/components/ui/extension/multi-select.js.map +0 -1
- package/components/ui/extension/multi-select.mjs.map +0 -1
- /package/{chunk-UQJ4A4H2.mjs.map → chunk-4IDPSNL3.mjs.map} +0 -0
- /package/{chunk-GAJQQPUC.mjs.map → chunk-5CBMRDT7.mjs.map} +0 -0
- /package/{chunk-S3CRUBGL.mjs.map → chunk-CNYC22IA.mjs.map} +0 -0
- /package/{chunk-E5TF7QLI.mjs.map → chunk-D6YGFMSG.mjs.map} +0 -0
- /package/{chunk-KUD4Z2MZ.mjs.map → chunk-P4DW3EEW.mjs.map} +0 -0
- /package/{chunk-432PQWGO.mjs.map → chunk-RJVQU443.mjs.map} +0 -0
- /package/{chunk-HKZRXGJ7.mjs.map → chunk-YDRPNCWF.mjs.map} +0 -0
- /package/{chunk-ZMMYQNQV.mjs.map → chunk-ZFBUIBJH.mjs.map} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
3
|
+
|
|
4
|
+
var _chunkFSU3BKPKjs = require('./chunk-FSU3BKPK.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkCKGMFUU2js = require('./chunk-CKGMFUU2.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkPSPAJNNBjs = require('./chunk-PSPAJNNB.js');
|
|
11
|
+
|
|
12
|
+
// components/form/tag-picker.tsx
|
|
13
|
+
var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
|
|
14
|
+
function FormTagPicker({
|
|
15
|
+
id,
|
|
16
|
+
name,
|
|
17
|
+
label,
|
|
18
|
+
value,
|
|
19
|
+
onChange,
|
|
20
|
+
suggestions = [],
|
|
21
|
+
placeholder = "Add tags...",
|
|
22
|
+
disabled = false,
|
|
23
|
+
required = false,
|
|
24
|
+
classNames
|
|
25
|
+
}) {
|
|
26
|
+
if (!id) id = _kebabCase3.default.call(void 0, name);
|
|
27
|
+
return /* @__PURE__ */ React.createElement("div", { className: _chunkPSPAJNNBjs.cn.call(void 0, "space-y-2", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ React.createElement(_chunkCKGMFUU2js.Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ React.createElement(
|
|
28
|
+
_chunkFSU3BKPKjs.TagPicker,
|
|
29
|
+
{
|
|
30
|
+
id,
|
|
31
|
+
value,
|
|
32
|
+
onChange,
|
|
33
|
+
suggestions,
|
|
34
|
+
placeholder,
|
|
35
|
+
disabled,
|
|
36
|
+
className: classNames == null ? void 0 : classNames.input
|
|
37
|
+
}
|
|
38
|
+
));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
exports.FormTagPicker = FormTagPicker;
|
|
44
|
+
//# sourceMappingURL=chunk-2NUE7GJ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2NUE7GJ3.js","../components/form/tag-picker.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACTA,wGAAuB;AAuBhB,SAAS,aAAA,CAAc;AAAA,EAC5B,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,CAAC,CAAA;AAAA,EACf,YAAA,EAAc,aAAA;AAAA,EACd,SAAA,EAAW,KAAA;AAAA,EACX,SAAA,EAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAuB;AACrB,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA,EAAK,iCAAA,IAAe,CAAA;AAE7B,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,WAAG,EAAa,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,OAAO,EAAA,CAAA,EAChD,MAAA,mBACC,KAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,KAAA,EAAO,SAAA,CAAA,EAC/C,KACH,CAAA,kBAGF,KAAA,CAAA,aAAA;AAAA,IAAC,0BAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY;AAAA,IAAA;AAAA,EACzB,CACF,CAAA;AAEJ;ADnBA;AACA;AACE;AACF,sCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-2NUE7GJ3.js","sourcesContent":[null,"\"use client\";\nimport _kebabCase from 'lodash-es/kebabCase';\n\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport { TagPicker } from '../ui/tag-picker';\n\nexport interface FormTagPickerProps {\n id?: string;\n name: string;\n label?: string;\n value: string[];\n onChange: (values: string[]) => void;\n suggestions?: string[];\n placeholder?: string;\n disabled?: boolean;\n required?: boolean;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n}\n\nexport function FormTagPicker({\n id,\n name,\n label,\n value,\n onChange,\n suggestions = [],\n placeholder = 'Add tags...',\n disabled = false,\n required = false,\n classNames,\n}: FormTagPickerProps) {\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('space-y-2', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <TagPicker\n id={id}\n value={value}\n onChange={onChange}\n suggestions={suggestions}\n placeholder={placeholder}\n disabled={disabled}\n className={classNames?.input}\n />\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MultiSelector,
|
|
3
|
+
MultiSelectorInput,
|
|
4
|
+
MultiSelectorItem,
|
|
5
|
+
MultiSelectorList,
|
|
6
|
+
MultiSelectorTrigger
|
|
7
|
+
} from "./chunk-7JYFZETL.mjs";
|
|
8
|
+
import {
|
|
9
|
+
Popover,
|
|
10
|
+
PopoverContent,
|
|
11
|
+
PopoverTrigger
|
|
12
|
+
} from "./chunk-CSL3CTEN.mjs";
|
|
13
|
+
import {
|
|
14
|
+
Label
|
|
15
|
+
} from "./chunk-MM5OJOOR.mjs";
|
|
16
|
+
import {
|
|
17
|
+
cn
|
|
18
|
+
} from "./chunk-KGUUDFJE.mjs";
|
|
19
|
+
|
|
20
|
+
// components/form/multi-select.tsx
|
|
21
|
+
import _isString from "lodash-es/isString";
|
|
22
|
+
import _kebabCase from "lodash-es/kebabCase";
|
|
23
|
+
import React from "react";
|
|
24
|
+
function FormMultiSelect({
|
|
25
|
+
id,
|
|
26
|
+
name,
|
|
27
|
+
label,
|
|
28
|
+
placeholder = "Select options...",
|
|
29
|
+
data,
|
|
30
|
+
value = [],
|
|
31
|
+
onChange,
|
|
32
|
+
classNames,
|
|
33
|
+
required,
|
|
34
|
+
disabled,
|
|
35
|
+
loop = false
|
|
36
|
+
}) {
|
|
37
|
+
const options = React.useMemo(() => {
|
|
38
|
+
if (!data || data.length === 0) return [];
|
|
39
|
+
if (_isString(data[0])) {
|
|
40
|
+
return data.map((currentValue) => ({ label: currentValue, value: currentValue }));
|
|
41
|
+
}
|
|
42
|
+
return data;
|
|
43
|
+
}, [data]);
|
|
44
|
+
const selectedValues = React.useMemo(() => {
|
|
45
|
+
return value.map((currentValue) => options.find((option) => option.value === currentValue)).filter((option) => !!option);
|
|
46
|
+
}, [options, value]);
|
|
47
|
+
const handleValueChange = (newValues) => {
|
|
48
|
+
onChange(newValues.map((currentValue) => currentValue.value));
|
|
49
|
+
};
|
|
50
|
+
if (!id) id = _kebabCase(name);
|
|
51
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-2", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ React.createElement(Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ React.createElement(
|
|
52
|
+
MultiSelector,
|
|
53
|
+
{
|
|
54
|
+
values: selectedValues,
|
|
55
|
+
onValuesChange: handleValueChange,
|
|
56
|
+
loop,
|
|
57
|
+
disabled,
|
|
58
|
+
className: "p-0"
|
|
59
|
+
},
|
|
60
|
+
/* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(MultiSelectorTrigger, { className: cn("cursor-pointer", classNames == null ? void 0 : classNames.trigger) }, /* @__PURE__ */ React.createElement(
|
|
61
|
+
MultiSelectorInput,
|
|
62
|
+
{
|
|
63
|
+
id,
|
|
64
|
+
disabled,
|
|
65
|
+
placeholder: selectedValues.length === 0 ? placeholder : "",
|
|
66
|
+
className: classNames == null ? void 0 : classNames.input
|
|
67
|
+
}
|
|
68
|
+
))), /* @__PURE__ */ React.createElement(
|
|
69
|
+
PopoverContent,
|
|
70
|
+
{
|
|
71
|
+
align: "start",
|
|
72
|
+
className: cn("w-[var(--radix-popover-trigger-width)] p-0", classNames == null ? void 0 : classNames.content)
|
|
73
|
+
},
|
|
74
|
+
/* @__PURE__ */ React.createElement(MultiSelectorList, { className: "static relative border-none shadow-none" }, options.map((option) => /* @__PURE__ */ React.createElement(MultiSelectorItem, { key: option.value, value: option.value, label: option.label }, /* @__PURE__ */ React.createElement("span", null, option.label))))
|
|
75
|
+
))
|
|
76
|
+
));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export {
|
|
80
|
+
FormMultiSelect
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=chunk-3PZY5HRH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/multi-select.tsx"],"sourcesContent":["\"use client\";\nimport _isString from 'lodash-es/isString';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport React from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport {\n MultiSelector,\n MultiSelectorInput,\n MultiSelectorItem,\n MultiSelectorList,\n MultiSelectorTrigger,\n type MultiSelectValue,\n} from '../ui/multi-select';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nexport interface FormMultiSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: MultiSelectValue[] | string[];\n value: string[];\n onChange: (values: string[]) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n trigger?: string;\n input?: string;\n content?: string;\n };\n required?: boolean;\n disabled?: boolean;\n loop?: boolean;\n}\n\nexport function FormMultiSelect({\n id,\n name,\n label,\n placeholder = 'Select options...',\n data,\n value = [],\n onChange,\n classNames,\n required,\n disabled,\n loop = false,\n}: FormMultiSelectProps) {\n const options: MultiSelectValue[] = React.useMemo(() => {\n if (!data || data.length === 0) return [];\n if (_isString(data[0])) {\n return (data as string[]).map((currentValue) => ({ label: currentValue, value: currentValue }));\n }\n return data as MultiSelectValue[];\n }, [data]);\n\n const selectedValues = React.useMemo(() => {\n return value\n .map((currentValue) => options.find((option) => option.value === currentValue))\n .filter((option): option is MultiSelectValue => !!option);\n }, [options, value]);\n\n const handleValueChange = (newValues: MultiSelectValue[]) => {\n onChange(newValues.map((currentValue) => currentValue.value));\n };\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('flex flex-col gap-2', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <MultiSelector\n values={selectedValues}\n onValuesChange={handleValueChange}\n loop={loop}\n disabled={disabled}\n className=\"p-0\"\n >\n <Popover>\n <PopoverTrigger asChild>\n <MultiSelectorTrigger className={cn('cursor-pointer', classNames?.trigger)}>\n <MultiSelectorInput\n id={id}\n disabled={disabled}\n placeholder={selectedValues.length === 0 ? placeholder : ''}\n className={classNames?.input}\n />\n </MultiSelectorTrigger>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <MultiSelectorList className=\"static relative border-none shadow-none\">\n {options.map((option) => (\n <MultiSelectorItem key={option.value} value={option.value} label={option.label}>\n <span>{option.label}</span>\n </MultiSelectorItem>\n ))}\n </MultiSelectorList>\n </PopoverContent>\n </Popover>\n </MultiSelector>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,WAAW;AAkCX,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AACT,GAAyB;AACvB,QAAM,UAA8B,MAAM,QAAQ,MAAM;AACtD,QAAI,CAAC,QAAQ,KAAK,WAAW,EAAG,QAAO,CAAC;AACxC,QAAI,UAAU,KAAK,CAAC,CAAC,GAAG;AACtB,aAAQ,KAAkB,IAAI,CAAC,kBAAkB,EAAE,OAAO,cAAc,OAAO,aAAa,EAAE;AAAA,IAChG;AACA,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,iBAAiB,MAAM,QAAQ,MAAM;AACzC,WAAO,MACJ,IAAI,CAAC,iBAAiB,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,YAAY,CAAC,EAC7E,OAAO,CAAC,WAAuC,CAAC,CAAC,MAAM;AAAA,EAC5D,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,QAAM,oBAAoB,CAAC,cAAkC;AAC3D,aAAS,UAAU,IAAI,CAAC,iBAAiB,aAAa,KAAK,CAAC;AAAA,EAC9D;AAEA,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,uBAAuB,yCAAY,OAAO,KAC1D,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA,WAAU;AAAA;AAAA,IAEV,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB,oCAAC,wBAAqB,WAAW,GAAG,kBAAkB,yCAAY,OAAO,KACvE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,aAAa,eAAe,WAAW,IAAI,cAAc;AAAA,QACzD,WAAW,yCAAY;AAAA;AAAA,IACzB,CACF,CACF,GAEA;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,WAAW,GAAG,8CAA8C,yCAAY,OAAO;AAAA;AAAA,MAE/E,oCAAC,qBAAkB,WAAU,6CAC1B,QAAQ,IAAI,CAAC,WACZ,oCAAC,qBAAkB,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,SACvE,oCAAC,cAAM,OAAO,KAAM,CACtB,CACD,CACH;AAAA,IACF,CACF;AAAA,EACF,CACF;AAEJ;","names":[]}
|
|
@@ -2,29 +2,22 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var _chunk2YMMYND2js = require('../../../chunk-2YMMYND2.js');
|
|
6
5
|
|
|
7
6
|
|
|
7
|
+
var _chunkLAIO3QZXjs = require('./chunk-LAIO3QZX.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
var _chunk2YMMYND2js = require('./chunk-2YMMYND2.js');
|
|
10
11
|
|
|
11
|
-
var _chunkAJLAS62Xjs = require('../../../chunk-AJLAS62X.js');
|
|
12
|
-
require('../../../chunk-MJT6B7OJ.js');
|
|
13
|
-
require('../../../chunk-RFORRZRN.js');
|
|
14
|
-
require('../../../chunk-UFRPUC7K.js');
|
|
15
|
-
require('../../../chunk-RJG7QLDD.js');
|
|
16
|
-
require('../../../chunk-KB6BX6LA.js');
|
|
17
|
-
require('../../../chunk-GV62APQ6.js');
|
|
18
12
|
|
|
13
|
+
var _chunkPSPAJNNBjs = require('./chunk-PSPAJNNB.js');
|
|
19
14
|
|
|
20
|
-
var _chunkPSPAJNNBjs = require('../../../chunk-PSPAJNNB.js');
|
|
21
15
|
|
|
22
16
|
|
|
23
17
|
|
|
18
|
+
var _chunk2NMEKWO5js = require('./chunk-2NMEKWO5.js');
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// components/ui/extension/multi-select.tsx
|
|
20
|
+
// components/ui/multi-select.tsx
|
|
28
21
|
var _iconsreact = require('@tabler/icons-react');
|
|
29
22
|
var _cmdk = require('cmdk');
|
|
30
23
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
@@ -51,14 +44,16 @@ var MultiSelector = (_a) => {
|
|
|
51
44
|
loop = false,
|
|
52
45
|
className,
|
|
53
46
|
children,
|
|
54
|
-
dir
|
|
47
|
+
dir,
|
|
48
|
+
disabled = false
|
|
55
49
|
} = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, [
|
|
56
50
|
"values",
|
|
57
51
|
"onValuesChange",
|
|
58
52
|
"loop",
|
|
59
53
|
"className",
|
|
60
54
|
"children",
|
|
61
|
-
"dir"
|
|
55
|
+
"dir",
|
|
56
|
+
"disabled"
|
|
62
57
|
]);
|
|
63
58
|
const [inputValue, setInputValue] = _react.useState.call(void 0, "");
|
|
64
59
|
const [open, setOpen] = _react.useState.call(void 0, false);
|
|
@@ -66,20 +61,21 @@ var MultiSelector = (_a) => {
|
|
|
66
61
|
const inputRef = _react2.default.useRef(null);
|
|
67
62
|
const onValueChangeHandler = _react.useCallback.call(void 0,
|
|
68
63
|
(val) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
if (disabled) return;
|
|
65
|
+
const exists = value.some((currentValue) => currentValue.value === val.value);
|
|
66
|
+
if (exists) {
|
|
67
|
+
onValueChange(value.filter((currentValue) => currentValue.value !== val.value));
|
|
72
68
|
} else {
|
|
73
69
|
onValueChange([...value, val]);
|
|
74
70
|
}
|
|
75
71
|
},
|
|
76
|
-
|
|
77
|
-
[value]
|
|
72
|
+
[disabled, onValueChange, value]
|
|
78
73
|
);
|
|
79
74
|
const handleKeyDown = _react.useCallback.call(void 0,
|
|
80
75
|
(e) => {
|
|
81
76
|
var _a2, _b2;
|
|
82
77
|
e.stopPropagation();
|
|
78
|
+
if (disabled) return;
|
|
83
79
|
const target = inputRef.current;
|
|
84
80
|
if (!target) return;
|
|
85
81
|
const selectionStart = (_a2 = target.selectionStart) != null ? _a2 : 0;
|
|
@@ -105,10 +101,8 @@ var MultiSelector = (_a) => {
|
|
|
105
101
|
if (value.length > 0 && (activeIndex !== -1 || loop)) {
|
|
106
102
|
moveNext();
|
|
107
103
|
}
|
|
108
|
-
} else {
|
|
109
|
-
|
|
110
|
-
movePrev();
|
|
111
|
-
}
|
|
104
|
+
} else if (value.length > 0 && target.selectionStart === 0) {
|
|
105
|
+
movePrev();
|
|
112
106
|
}
|
|
113
107
|
break;
|
|
114
108
|
case "ArrowRight":
|
|
@@ -116,10 +110,8 @@ var MultiSelector = (_a) => {
|
|
|
116
110
|
if (value.length > 0 && target.selectionStart === 0) {
|
|
117
111
|
movePrev();
|
|
118
112
|
}
|
|
119
|
-
} else {
|
|
120
|
-
|
|
121
|
-
moveNext();
|
|
122
|
-
}
|
|
113
|
+
} else if (value.length > 0 && (activeIndex !== -1 || loop)) {
|
|
114
|
+
moveNext();
|
|
123
115
|
}
|
|
124
116
|
break;
|
|
125
117
|
case "Backspace":
|
|
@@ -128,10 +120,8 @@ var MultiSelector = (_a) => {
|
|
|
128
120
|
if (activeIndex !== -1 && activeIndex < value.length) {
|
|
129
121
|
onValueChangeHandler(value[activeIndex]);
|
|
130
122
|
moveCurrent();
|
|
131
|
-
} else {
|
|
132
|
-
|
|
133
|
-
onValueChangeHandler(value[value.length - 1]);
|
|
134
|
-
}
|
|
123
|
+
} else if (target.selectionStart === 0) {
|
|
124
|
+
onValueChangeHandler(value[value.length - 1]);
|
|
135
125
|
}
|
|
136
126
|
}
|
|
137
127
|
break;
|
|
@@ -148,7 +138,7 @@ var MultiSelector = (_a) => {
|
|
|
148
138
|
break;
|
|
149
139
|
}
|
|
150
140
|
},
|
|
151
|
-
[
|
|
141
|
+
[activeIndex, dir, disabled, loop, onValueChangeHandler, open, value]
|
|
152
142
|
);
|
|
153
143
|
return /* @__PURE__ */ _react2.default.createElement(
|
|
154
144
|
MultiSelectContext.Provider,
|
|
@@ -162,14 +152,15 @@ var MultiSelector = (_a) => {
|
|
|
162
152
|
setInputValue,
|
|
163
153
|
activeIndex,
|
|
164
154
|
setActiveIndex,
|
|
165
|
-
ref: inputRef
|
|
155
|
+
ref: inputRef,
|
|
156
|
+
disabled
|
|
166
157
|
}
|
|
167
158
|
},
|
|
168
159
|
/* @__PURE__ */ _react2.default.createElement(
|
|
169
|
-
|
|
160
|
+
_chunkLAIO3QZXjs.Command,
|
|
170
161
|
_chunk2NMEKWO5js.__spreadValues.call(void 0, {
|
|
171
162
|
onKeyDown: handleKeyDown,
|
|
172
|
-
className: _chunkPSPAJNNBjs.cn.call(void 0, "
|
|
163
|
+
className: _chunkPSPAJNNBjs.cn.call(void 0, "flex flex-col overflow-visible bg-transparent", className),
|
|
173
164
|
dir
|
|
174
165
|
}, props),
|
|
175
166
|
children
|
|
@@ -179,7 +170,7 @@ var MultiSelector = (_a) => {
|
|
|
179
170
|
var MultiSelectorTrigger = _react.forwardRef.call(void 0,
|
|
180
171
|
(_a, ref) => {
|
|
181
172
|
var _b = _a, { className, children } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className", "children"]);
|
|
182
|
-
const { value, onValueChange, activeIndex } = useMultiSelect();
|
|
173
|
+
const { value, onValueChange, activeIndex, disabled } = useMultiSelect();
|
|
183
174
|
const mousePreventDefault = _react.useCallback.call(void 0, (e) => {
|
|
184
175
|
e.preventDefault();
|
|
185
176
|
e.stopPropagation();
|
|
@@ -189,10 +180,9 @@ var MultiSelectorTrigger = _react.forwardRef.call(void 0,
|
|
|
189
180
|
_chunk2NMEKWO5js.__spreadValues.call(void 0, {
|
|
190
181
|
ref,
|
|
191
182
|
className: _chunkPSPAJNNBjs.cn.call(void 0,
|
|
192
|
-
"flex flex-wrap gap-1
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
},
|
|
183
|
+
"flex flex-wrap gap-1 rounded-lg border bg-background px-2 py-1",
|
|
184
|
+
activeIndex === -1 && "focus-within:ring-1 focus-within:ring-ring",
|
|
185
|
+
disabled && "cursor-not-allowed opacity-60",
|
|
196
186
|
className
|
|
197
187
|
)
|
|
198
188
|
}, props),
|
|
@@ -201,8 +191,8 @@ var MultiSelectorTrigger = _react.forwardRef.call(void 0,
|
|
|
201
191
|
{
|
|
202
192
|
key: item.value,
|
|
203
193
|
className: _chunkPSPAJNNBjs.cn.call(void 0,
|
|
204
|
-
"
|
|
205
|
-
activeIndex === index && "ring-2 ring-muted-foreground
|
|
194
|
+
"flex items-center gap-1 rounded-md px-1.5",
|
|
195
|
+
activeIndex === index && "ring-2 ring-muted-foreground"
|
|
206
196
|
),
|
|
207
197
|
variant: "secondary"
|
|
208
198
|
},
|
|
@@ -210,14 +200,19 @@ var MultiSelectorTrigger = _react.forwardRef.call(void 0,
|
|
|
210
200
|
/* @__PURE__ */ _react2.default.createElement(
|
|
211
201
|
"button",
|
|
212
202
|
{
|
|
213
|
-
"aria-label": `Remove ${item} option`,
|
|
214
|
-
"aria-roledescription": "button to remove option",
|
|
203
|
+
"aria-label": `Remove ${item.label} option`,
|
|
215
204
|
type: "button",
|
|
205
|
+
disabled,
|
|
216
206
|
onMouseDown: mousePreventDefault,
|
|
217
|
-
onClick: () =>
|
|
207
|
+
onClick: (event) => {
|
|
208
|
+
event.preventDefault();
|
|
209
|
+
event.stopPropagation();
|
|
210
|
+
onValueChange(item);
|
|
211
|
+
},
|
|
212
|
+
className: "inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none disabled:cursor-not-allowed"
|
|
218
213
|
},
|
|
219
214
|
/* @__PURE__ */ _react2.default.createElement("span", { className: "sr-only" }, "Remove ", item.label, " option"),
|
|
220
|
-
/* @__PURE__ */ _react2.default.createElement(_iconsreact.IconX, { className: "h-
|
|
215
|
+
/* @__PURE__ */ _react2.default.createElement(_iconsreact.IconX, { className: "h-3.5 w-3.5" })
|
|
221
216
|
)
|
|
222
217
|
)),
|
|
223
218
|
children
|
|
@@ -226,14 +221,15 @@ var MultiSelectorTrigger = _react.forwardRef.call(void 0,
|
|
|
226
221
|
);
|
|
227
222
|
MultiSelectorTrigger.displayName = "MultiSelectorTrigger";
|
|
228
223
|
var MultiSelectorInput = _react.forwardRef.call(void 0, (_a, ref) => {
|
|
229
|
-
var _b = _a, { className } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className"]);
|
|
230
|
-
const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef } = useMultiSelect();
|
|
224
|
+
var _b = _a, { className, disabled: disabledProp } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className", "disabled"]);
|
|
225
|
+
const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef, disabled } = useMultiSelect();
|
|
231
226
|
return /* @__PURE__ */ _react2.default.createElement(
|
|
232
227
|
_cmdk.Command.Input,
|
|
233
228
|
_chunk2NMEKWO5js.__spreadProps.call(void 0, _chunk2NMEKWO5js.__spreadValues.call(void 0, {}, props), {
|
|
234
229
|
tabIndex: 0,
|
|
235
230
|
ref: inputRef,
|
|
236
231
|
value: inputValue,
|
|
232
|
+
disabled: disabled || disabledProp,
|
|
237
233
|
onValueChange: activeIndex === -1 ? setInputValue : void 0,
|
|
238
234
|
onBlur: () => {
|
|
239
235
|
setInputValue("");
|
|
@@ -242,7 +238,7 @@ var MultiSelectorInput = _react.forwardRef.call(void 0, (_a, ref) => {
|
|
|
242
238
|
onFocus: () => setOpen(true),
|
|
243
239
|
onClick: () => setActiveIndex(-1),
|
|
244
240
|
className: _chunkPSPAJNNBjs.cn.call(void 0,
|
|
245
|
-
"
|
|
241
|
+
"flex-1 border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground focus:outline-none focus:ring-0",
|
|
246
242
|
className,
|
|
247
243
|
activeIndex !== -1 && "caret-transparent"
|
|
248
244
|
)
|
|
@@ -252,41 +248,45 @@ var MultiSelectorInput = _react.forwardRef.call(void 0, (_a, ref) => {
|
|
|
252
248
|
MultiSelectorInput.displayName = "MultiSelectorInput";
|
|
253
249
|
var MultiSelectorContent = _react.forwardRef.call(void 0, ({ children }, ref) => {
|
|
254
250
|
const { open } = useMultiSelect();
|
|
255
|
-
|
|
251
|
+
if (!open) return null;
|
|
252
|
+
return /* @__PURE__ */ _react2.default.createElement("div", { ref, className: "relative" }, children);
|
|
256
253
|
});
|
|
257
254
|
MultiSelectorContent.displayName = "MultiSelectorContent";
|
|
258
255
|
var MultiSelectorList = _react.forwardRef.call(void 0, ({ className, children }, ref) => {
|
|
259
256
|
return /* @__PURE__ */ _react2.default.createElement(
|
|
260
|
-
|
|
257
|
+
_chunkLAIO3QZXjs.CommandList,
|
|
261
258
|
{
|
|
262
259
|
ref,
|
|
263
260
|
className: _chunkPSPAJNNBjs.cn.call(void 0,
|
|
264
|
-
"
|
|
261
|
+
"absolute top-0 z-100 flex w-full flex-col gap-2 rounded-md border border-muted bg-background p-2 shadow-md scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-lg scrollbar-thumb-muted-foreground transition-colors dark:scrollbar-thumb-muted",
|
|
265
262
|
className
|
|
266
263
|
)
|
|
267
264
|
},
|
|
268
265
|
children,
|
|
269
|
-
/* @__PURE__ */ _react2.default.createElement(
|
|
266
|
+
/* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandEmpty, null, /* @__PURE__ */ _react2.default.createElement("span", { className: "text-muted-foreground" }, "No results found"))
|
|
270
267
|
);
|
|
271
268
|
});
|
|
272
269
|
MultiSelectorList.displayName = "MultiSelectorList";
|
|
273
270
|
var MultiSelectorItem = _react.forwardRef.call(void 0, (_a, ref) => {
|
|
274
|
-
var _b = _a, { className, value, label, children } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className", "value", "label", "children"]);
|
|
275
|
-
const { value:
|
|
271
|
+
var _b = _a, { className, value, label, children, disabled: disabledProp } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className", "value", "label", "children", "disabled"]);
|
|
272
|
+
const { value: options, onValueChange, setInputValue, disabled } = useMultiSelect();
|
|
276
273
|
const mousePreventDefault = _react.useCallback.call(void 0, (e) => {
|
|
277
274
|
e.preventDefault();
|
|
278
275
|
e.stopPropagation();
|
|
279
276
|
}, []);
|
|
280
|
-
const isIncluded = searchForValue(
|
|
277
|
+
const isIncluded = searchForValue(options, {
|
|
281
278
|
value,
|
|
282
279
|
label
|
|
283
280
|
}) !== -1;
|
|
281
|
+
const isDisabled = disabled || disabledProp;
|
|
284
282
|
return /* @__PURE__ */ _react2.default.createElement(
|
|
285
|
-
|
|
283
|
+
_chunkLAIO3QZXjs.CommandItem,
|
|
286
284
|
_chunk2NMEKWO5js.__spreadProps.call(void 0, _chunk2NMEKWO5js.__spreadValues.call(void 0, {
|
|
287
285
|
ref
|
|
288
286
|
}, props), {
|
|
287
|
+
disabled: isDisabled,
|
|
289
288
|
onSelect: () => {
|
|
289
|
+
if (isDisabled) return;
|
|
290
290
|
onValueChange({
|
|
291
291
|
value,
|
|
292
292
|
label
|
|
@@ -294,10 +294,10 @@ var MultiSelectorItem = _react.forwardRef.call(void 0, (_a, ref) => {
|
|
|
294
294
|
setInputValue("");
|
|
295
295
|
},
|
|
296
296
|
className: _chunkPSPAJNNBjs.cn.call(void 0,
|
|
297
|
-
"
|
|
297
|
+
"flex cursor-pointer justify-between rounded-md px-2 py-1 transition-colors",
|
|
298
298
|
className,
|
|
299
|
-
isIncluded && "opacity-50
|
|
300
|
-
|
|
299
|
+
isIncluded && "cursor-default opacity-50",
|
|
300
|
+
isDisabled && "cursor-not-allowed opacity-50"
|
|
301
301
|
),
|
|
302
302
|
onMouseDown: mousePreventDefault
|
|
303
303
|
}),
|
|
@@ -313,5 +313,6 @@ MultiSelectorItem.displayName = "MultiSelectorItem";
|
|
|
313
313
|
|
|
314
314
|
|
|
315
315
|
|
|
316
|
-
|
|
317
|
-
|
|
316
|
+
|
|
317
|
+
exports.MultiSelector = MultiSelector; exports.MultiSelectorTrigger = MultiSelectorTrigger; exports.MultiSelectorInput = MultiSelectorInput; exports.MultiSelectorContent = MultiSelectorContent; exports.MultiSelectorList = MultiSelectorList; exports.MultiSelectorItem = MultiSelectorItem;
|
|
318
|
+
//# sourceMappingURL=chunk-3TG6ZVFG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3TG6ZVFG.js","../components/ui/multi-select.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3TG6ZVFG.js","sourcesContent":[null,"\"use client\";\nimport { IconCheck, IconX } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport React, { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\nimport { Command, CommandEmpty, CommandItem, CommandList } from './command';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: MultiSelectValue) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n disabled = false,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n if (disabled) return;\n\n const exists = value.some((currentValue) => currentValue.value === val.value);\n if (exists) {\n onValueChange(value.filter((currentValue) => currentValue.value !== val.value));\n } else {\n onValueChange([...value, val]);\n }\n },\n [disabled, onValueChange, value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n\n if (disabled) return;\n\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [activeIndex, dir, disabled, loop, onValueChangeHandler, open, value],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n disabled,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('flex flex-col overflow-visible bg-transparent', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 rounded-lg border bg-background px-2 py-1',\n activeIndex === -1 && 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'flex items-center gap-1 rounded-md px-1.5',\n activeIndex === index && 'ring-2 ring-muted-foreground',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n <button\n aria-label={`Remove ${item.label} option`}\n type=\"button\"\n disabled={disabled}\n onMouseDown={mousePreventDefault}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n onValueChange(item);\n }}\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none disabled:cursor-not-allowed\"\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, disabled: disabledProp, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef, disabled } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n disabled={disabled || disabledProp}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'flex-1 border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground focus:outline-none focus:ring-0',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n\n if (!open) return null;\n\n return (\n <div ref={ref} className=\"relative\">\n {children}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'absolute top-0 z-100 flex w-full flex-col gap-2 rounded-md border border-muted bg-background p-2 shadow-md scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-lg scrollbar-thumb-muted-foreground transition-colors dark:scrollbar-thumb-muted',\n className,\n )}\n >\n {children}\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, disabled: disabledProp, ...props }, ref) => {\n const { value: options, onValueChange, setInputValue, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(options, {\n value,\n label,\n }) !== -1;\n\n const isDisabled = disabled || disabledProp;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n disabled={isDisabled}\n onSelect={() => {\n if (isDisabled) return;\n\n onValueChange({\n value,\n label,\n });\n setInputValue('');\n }}\n className={cn(\n 'flex cursor-pointer justify-between rounded-md px-2 py-1 transition-colors',\n className,\n isIncluded && 'cursor-default opacity-50',\n isDisabled && 'cursor-not-allowed opacity-50',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"]}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-ICOZ5BK7.mjs";
|
|
8
8
|
import {
|
|
9
9
|
Skeleton
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-O6PHWGJH.mjs";
|
|
11
11
|
import {
|
|
12
12
|
Tooltip,
|
|
13
13
|
TooltipContent,
|
|
@@ -621,4 +621,4 @@ export {
|
|
|
621
621
|
SidebarMenuSubItem,
|
|
622
622
|
SidebarMenuSubButton
|
|
623
623
|
};
|
|
624
|
-
//# sourceMappingURL=chunk-
|
|
624
|
+
//# sourceMappingURL=chunk-4IDPSNL3.mjs.map
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
SidebarMenuSubButton,
|
|
9
9
|
SidebarMenuSubItem,
|
|
10
10
|
useSidebar
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4IDPSNL3.mjs";
|
|
12
12
|
import {
|
|
13
13
|
Collapsible,
|
|
14
14
|
CollapsibleContent,
|
|
15
15
|
CollapsibleTrigger
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-M6UKU56L.mjs";
|
|
17
17
|
import {
|
|
18
18
|
cn
|
|
19
19
|
} from "./chunk-KGUUDFJE.mjs";
|
|
@@ -61,4 +61,4 @@ function NavMenus({ menus, aslink }) {
|
|
|
61
61
|
export {
|
|
62
62
|
NavMenus
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-5CBMRDT7.mjs.map
|