@akanjs/ui 0.9.13 → 0.9.14
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/Field.d.ts +4 -4
- package/Select.d.ts +8 -10
- package/ToggleSelect.d.ts +6 -6
- package/cjs/Data/QueryMaker.js +1 -1
- package/cjs/Field.js +17 -3
- package/cjs/Select.js +4 -1
- package/cjs/System/CSR.js +4 -6
- package/cjs/ToggleSelect.js +2 -2
- package/esm/Data/QueryMaker.js +1 -1
- package/esm/Field.js +17 -3
- package/esm/Select.js +4 -1
- package/esm/System/CSR.js +4 -6
- package/esm/ToggleSelect.js +2 -2
- package/package.json +1 -1
package/Field.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export declare const Field: {
|
|
|
26
26
|
Price: import("react").MemoExoticComponent<({ label, desc, labelClassName, className, value, onChange, placeholder, nullable, disabled, minlength, maxlength, transform, validate, onPressEnter, inputClassName, inputStyleType, }: PriceProps) => import("react/jsx-runtime").JSX.Element>;
|
|
27
27
|
TextArea: import("react").MemoExoticComponent<({ label, desc, labelClassName, className, value, onChange, placeholder, nullable, disabled, rows, minlength, maxlength, transform, validate, onPressEnter, cache, inputClassName, }: TextAreaProps) => import("react/jsx-runtime").JSX.Element>;
|
|
28
28
|
Switch: ({ label, desc, labelClassName, className, value, onChange, disabled, inputClassName, onDesc, offDesc, }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
-
ToggleSelect: <I extends string>({ className, labelClassName, label, desc, model, field, items, value, validate, onChange, nullable, disabled, btnClassName, }: ToggleSelectProps<I>) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
MultiToggleSelect: <I>({ className, labelClassName, label, desc, model, field, items, value, minlength, maxlength, validate, onChange, disabled, }: MultiToggleSelectProps<I>) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
ToggleSelect: <I extends string | number | boolean | null>({ className, labelClassName, label, desc, model, field, items, value, validate, onChange, nullable, disabled, btnClassName, }: ToggleSelectProps<I>) => import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
MultiToggleSelect: <I extends string | number | boolean>({ className, labelClassName, label, desc, model, field, items, value, minlength, maxlength, validate, onChange, disabled, }: MultiToggleSelectProps<I>) => import("react/jsx-runtime").JSX.Element;
|
|
31
31
|
TextList: ({ label, desc, labelClassName, className, value, onChange, placeholder, disabled, transform, minlength, maxlength, minTextlength, maxTextlength, cache, validate, inputClassName, }: TextListProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
32
|
Tags: ({ label, desc, labelClassName, className, value, onChange, placeholder, disabled, transform, minlength, maxlength, minTextlength, maxTextlength, validate, inputClassName, }: TagsProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
33
|
Date: <Nullable extends boolean>({ className, labelClassName, nullable, label, desc, value, min, max, onChange, showTime, dateClassName, }: DateProps<Nullable>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -148,14 +148,14 @@ interface ToggleSelectProps<I> {
|
|
|
148
148
|
label: string;
|
|
149
149
|
value: I;
|
|
150
150
|
}[] | readonly I[] | I[] | Enum<I>;
|
|
151
|
-
value: I
|
|
151
|
+
value: I;
|
|
152
152
|
nullable?: boolean;
|
|
153
153
|
disabled?: boolean;
|
|
154
154
|
validate?: (value: I) => boolean | string;
|
|
155
155
|
onChange: (value: I) => void;
|
|
156
156
|
btnClassName?: string;
|
|
157
157
|
}
|
|
158
|
-
interface MultiToggleSelectProps<I> {
|
|
158
|
+
interface MultiToggleSelectProps<I extends string | number | boolean> {
|
|
159
159
|
className?: string;
|
|
160
160
|
labelClassName?: string;
|
|
161
161
|
label?: string;
|
package/Select.d.ts
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { Enum } from "@akanjs/base";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
|
-
|
|
3
|
+
interface LabelOption<T> {
|
|
4
4
|
label: string | boolean | number;
|
|
5
5
|
value: T;
|
|
6
|
-
}
|
|
7
|
-
|
|
6
|
+
}
|
|
7
|
+
type Options<T> = T[] | LabelOption<T>[] | Enum<T>;
|
|
8
|
+
interface SelectProps<T extends string | number | boolean | null | undefined, Multiple extends boolean = false, Searchable extends boolean = false, Option extends Options<T> = Options<T>> {
|
|
8
9
|
label?: string;
|
|
9
10
|
desc?: string;
|
|
10
11
|
labelClassName?: string;
|
|
11
12
|
className?: string;
|
|
12
|
-
value: Multiple extends true ? T[] : T
|
|
13
|
-
options: Searchable extends true ? T extends string ?
|
|
14
|
-
label: string | boolean | number;
|
|
15
|
-
value: T;
|
|
16
|
-
}[] : Options<T>;
|
|
13
|
+
value: Multiple extends true ? T[] : T;
|
|
14
|
+
options: Searchable extends true ? (T extends string ? Option : LabelOption<T>[]) : Option;
|
|
17
15
|
multiple?: Multiple;
|
|
18
16
|
searchable?: Searchable;
|
|
19
17
|
placeholder?: string;
|
|
@@ -23,10 +21,10 @@ interface SelectProps<T, Multiple extends boolean = false, Searchable extends bo
|
|
|
23
21
|
nullable?: boolean;
|
|
24
22
|
disabled?: boolean;
|
|
25
23
|
onOpen?: () => void;
|
|
26
|
-
onChange: Multiple extends true ? (value: T[], prev: T[]) => void : (value: T
|
|
24
|
+
onChange: Multiple extends true ? (value: T[], prev: T[]) => void : (value: T, prev: T) => void;
|
|
27
25
|
onSearch?: (text: string) => void;
|
|
28
26
|
renderOption?: (value: T) => ReactNode;
|
|
29
27
|
renderSelected?: (value: T) => ReactNode;
|
|
30
28
|
}
|
|
31
|
-
export declare const Select: <T, Multiple extends boolean = false, Searchable extends boolean = false>({ label, desc, labelClassName, className, value, options, nullable, disabled, multiple, searchable, placeholder, selectClassName, selectorClassName, selectedClassName, onOpen, onChange, onSearch, renderOption, renderSelected, }: SelectProps<T, Multiple, Searchable>) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export declare const Select: <T extends string | number | boolean | null | undefined, Multiple extends boolean = false, Searchable extends boolean = false, Option extends Options<T> = Options<T>>({ label, desc, labelClassName, className, value, options, nullable, disabled, multiple, searchable, placeholder, selectClassName, selectorClassName, selectedClassName, onOpen, onChange, onSearch, renderOption, renderSelected, }: SelectProps<T, Multiple, Searchable, Option>) => import("react/jsx-runtime").JSX.Element;
|
|
32
30
|
export {};
|
package/ToggleSelect.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
interface ToggleSelectProps {
|
|
1
|
+
interface ToggleSelectProps<I extends string | number | boolean | null> {
|
|
2
2
|
className?: string;
|
|
3
3
|
btnClassName?: string;
|
|
4
4
|
items: string[] | {
|
|
5
5
|
label: string;
|
|
6
|
-
value:
|
|
6
|
+
value: I;
|
|
7
7
|
}[];
|
|
8
|
-
value:
|
|
8
|
+
value: I;
|
|
9
9
|
nullable: boolean;
|
|
10
|
-
validate: (value:
|
|
11
|
-
onChange: (value:
|
|
10
|
+
validate: (value: I) => boolean | string;
|
|
11
|
+
onChange: (value: I, idx: number) => void;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
}
|
|
14
14
|
export declare const ToggleSelect: {
|
|
15
|
-
({ className, btnClassName, items, nullable, validate, value, onChange, disabled, }: ToggleSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
<I extends string | number | boolean | null>({ className, btnClassName, items, nullable, validate, value, onChange, disabled, }: ToggleSelectProps<I>): import("react/jsx-runtime").JSX.Element;
|
|
16
16
|
Multi: ({ className, btnClassName, items, nullable, validate, value, onChange, disabled }: MultiProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
};
|
|
18
18
|
interface MultiProps {
|
package/cjs/Data/QueryMaker.js
CHANGED
|
@@ -223,11 +223,11 @@ const SelectIDWithRef = ({ queryArgMeta, value, onChange }) => {
|
|
|
223
223
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
224
224
|
import_Select.Select,
|
|
225
225
|
{
|
|
226
|
+
value,
|
|
226
227
|
options: modelList.map((model) => ({
|
|
227
228
|
label: renderOption(model),
|
|
228
229
|
value: model.id
|
|
229
230
|
})),
|
|
230
|
-
value,
|
|
231
231
|
onChange: (value2) => {
|
|
232
232
|
onChange(value2);
|
|
233
233
|
}
|
package/cjs/Field.js
CHANGED
|
@@ -990,26 +990,33 @@ const Parent = ({
|
|
|
990
990
|
desc,
|
|
991
991
|
labelClassName,
|
|
992
992
|
selectClassName,
|
|
993
|
-
value: value?.id,
|
|
993
|
+
value: value?.id ?? null,
|
|
994
994
|
searchable: true,
|
|
995
995
|
options: modelList.map((model) => {
|
|
996
996
|
const render = renderOption(model);
|
|
997
997
|
return { label: typeof render === "string" ? render : model.id, value: model.id };
|
|
998
998
|
}),
|
|
999
999
|
renderOption: (modelId) => {
|
|
1000
|
+
if (!modelId)
|
|
1001
|
+
return null;
|
|
1000
1002
|
const model = modelList.get(modelId);
|
|
1001
1003
|
if (!model)
|
|
1002
1004
|
return null;
|
|
1003
1005
|
return renderOption(model);
|
|
1004
1006
|
},
|
|
1005
1007
|
renderSelected: (modelId) => {
|
|
1008
|
+
if (!modelId)
|
|
1009
|
+
return null;
|
|
1006
1010
|
const model = modelList.get(modelId);
|
|
1007
1011
|
if (!model)
|
|
1008
1012
|
return null;
|
|
1009
1013
|
return renderSelected(model);
|
|
1010
1014
|
},
|
|
1011
1015
|
onChange: (modelId) => {
|
|
1012
|
-
|
|
1016
|
+
if (modelId)
|
|
1017
|
+
onChange(modelList.get(modelId) ?? null);
|
|
1018
|
+
else
|
|
1019
|
+
onChange(null);
|
|
1013
1020
|
},
|
|
1014
1021
|
onOpen: () => {
|
|
1015
1022
|
if (!disabled)
|
|
@@ -1072,12 +1079,16 @@ const ParentId = ({
|
|
|
1072
1079
|
return { label: typeof label2 === "string" ? label2 : model.id, value: model.id };
|
|
1073
1080
|
}),
|
|
1074
1081
|
renderOption: (renderId) => {
|
|
1082
|
+
if (!renderId)
|
|
1083
|
+
return null;
|
|
1075
1084
|
const model = modelList.get(renderId);
|
|
1076
1085
|
if (!model)
|
|
1077
1086
|
return null;
|
|
1078
1087
|
return renderOption?.(model) ?? null;
|
|
1079
1088
|
},
|
|
1080
1089
|
renderSelected: (renderId) => {
|
|
1090
|
+
if (!renderId)
|
|
1091
|
+
return null;
|
|
1081
1092
|
const model = modelList.get(renderId);
|
|
1082
1093
|
if (!model)
|
|
1083
1094
|
return null;
|
|
@@ -1088,7 +1099,10 @@ const ParentId = ({
|
|
|
1088
1099
|
void storeDo[namesOfSlice.initModel](...initArgs ?? []);
|
|
1089
1100
|
},
|
|
1090
1101
|
onChange: (modelId) => {
|
|
1091
|
-
|
|
1102
|
+
if (modelId)
|
|
1103
|
+
onChange(modelId, modelList.get(modelId));
|
|
1104
|
+
else
|
|
1105
|
+
onChange(null, null);
|
|
1092
1106
|
},
|
|
1093
1107
|
onSearch
|
|
1094
1108
|
}
|
package/cjs/Select.js
CHANGED
|
@@ -53,7 +53,10 @@ const Select = ({
|
|
|
53
53
|
const { l } = (0, import_next.usePage)();
|
|
54
54
|
const [isOpen, setIsOpen] = (0, import_react.useState)(false);
|
|
55
55
|
const labeledOptions = (0, import_react.useMemo)(
|
|
56
|
-
() => options instanceof import_base.Enum ? options.values.map((v) => ({
|
|
56
|
+
() => options instanceof import_base.Enum ? options.values.map((v) => ({
|
|
57
|
+
label: typeof v === "string" ? v : typeof v === "object" ? JSON.stringify(v) : String(v),
|
|
58
|
+
value: v
|
|
59
|
+
})) : options[0]?.label && options[0]?.value ? options : options.map((v) => ({ label: v, value: v })),
|
|
57
60
|
[options]
|
|
58
61
|
);
|
|
59
62
|
const [selectedValues, setSelectedValues] = (0, import_react.useState)(multiple ? value : [value]);
|
package/cjs/System/CSR.js
CHANGED
|
@@ -64,7 +64,7 @@ const CSRProvider = ({
|
|
|
64
64
|
return { lang };
|
|
65
65
|
},
|
|
66
66
|
render: ({ lang }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
67
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Client.Client.Wrapper, { theme, children: /* @__PURE__ */ (0, import_jsx_runtime.
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Client.Client.Wrapper, { theme, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
68
68
|
CSRWrapper,
|
|
69
69
|
{
|
|
70
70
|
className,
|
|
@@ -74,11 +74,7 @@ const CSRProvider = ({
|
|
|
74
74
|
fonts,
|
|
75
75
|
prefix,
|
|
76
76
|
layoutStyle,
|
|
77
|
-
children
|
|
78
|
-
children,
|
|
79
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Client.Client.Inner, {}),
|
|
80
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CSRInner, {})
|
|
81
|
-
]
|
|
77
|
+
children
|
|
82
78
|
}
|
|
83
79
|
) }),
|
|
84
80
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -90,6 +86,8 @@ const CSRProvider = ({
|
|
|
90
86
|
fetchMe,
|
|
91
87
|
fetchSelf,
|
|
92
88
|
render: ({ mePromise, selfPromise }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
89
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Client.Client.Inner, {}),
|
|
90
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CSRInner, {}),
|
|
93
91
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
94
92
|
import_Client.Client.Bridge,
|
|
95
93
|
{
|
package/cjs/ToggleSelect.js
CHANGED
|
@@ -34,8 +34,8 @@ const ToggleSelect = ({
|
|
|
34
34
|
disabled
|
|
35
35
|
}) => {
|
|
36
36
|
const { l } = (0, import_next.usePage)();
|
|
37
|
-
const validateResult = validate(value
|
|
38
|
-
const invalidMessage = !value
|
|
37
|
+
const validateResult = value ? validate(value) : false;
|
|
38
|
+
const invalidMessage = value === null || typeof value === "string" && !value.length || validateResult === true ? null : validateResult === false ? l("util.invalidValueError") : validateResult;
|
|
39
39
|
const options = items.map(
|
|
40
40
|
(item) => typeof item === "string" ? { label: item, value: item } : item
|
|
41
41
|
);
|
package/esm/Data/QueryMaker.js
CHANGED
|
@@ -209,11 +209,11 @@ const SelectIDWithRef = ({ queryArgMeta, value, onChange }) => {
|
|
|
209
209
|
/* @__PURE__ */ jsx(
|
|
210
210
|
Select,
|
|
211
211
|
{
|
|
212
|
+
value,
|
|
212
213
|
options: modelList.map((model) => ({
|
|
213
214
|
label: renderOption(model),
|
|
214
215
|
value: model.id
|
|
215
216
|
})),
|
|
216
|
-
value,
|
|
217
217
|
onChange: (value2) => {
|
|
218
218
|
onChange(value2);
|
|
219
219
|
}
|
package/esm/Field.js
CHANGED
|
@@ -968,26 +968,33 @@ const Parent = ({
|
|
|
968
968
|
desc,
|
|
969
969
|
labelClassName,
|
|
970
970
|
selectClassName,
|
|
971
|
-
value: value?.id,
|
|
971
|
+
value: value?.id ?? null,
|
|
972
972
|
searchable: true,
|
|
973
973
|
options: modelList.map((model) => {
|
|
974
974
|
const render = renderOption(model);
|
|
975
975
|
return { label: typeof render === "string" ? render : model.id, value: model.id };
|
|
976
976
|
}),
|
|
977
977
|
renderOption: (modelId) => {
|
|
978
|
+
if (!modelId)
|
|
979
|
+
return null;
|
|
978
980
|
const model = modelList.get(modelId);
|
|
979
981
|
if (!model)
|
|
980
982
|
return null;
|
|
981
983
|
return renderOption(model);
|
|
982
984
|
},
|
|
983
985
|
renderSelected: (modelId) => {
|
|
986
|
+
if (!modelId)
|
|
987
|
+
return null;
|
|
984
988
|
const model = modelList.get(modelId);
|
|
985
989
|
if (!model)
|
|
986
990
|
return null;
|
|
987
991
|
return renderSelected(model);
|
|
988
992
|
},
|
|
989
993
|
onChange: (modelId) => {
|
|
990
|
-
|
|
994
|
+
if (modelId)
|
|
995
|
+
onChange(modelList.get(modelId) ?? null);
|
|
996
|
+
else
|
|
997
|
+
onChange(null);
|
|
991
998
|
},
|
|
992
999
|
onOpen: () => {
|
|
993
1000
|
if (!disabled)
|
|
@@ -1050,12 +1057,16 @@ const ParentId = ({
|
|
|
1050
1057
|
return { label: typeof label2 === "string" ? label2 : model.id, value: model.id };
|
|
1051
1058
|
}),
|
|
1052
1059
|
renderOption: (renderId) => {
|
|
1060
|
+
if (!renderId)
|
|
1061
|
+
return null;
|
|
1053
1062
|
const model = modelList.get(renderId);
|
|
1054
1063
|
if (!model)
|
|
1055
1064
|
return null;
|
|
1056
1065
|
return renderOption?.(model) ?? null;
|
|
1057
1066
|
},
|
|
1058
1067
|
renderSelected: (renderId) => {
|
|
1068
|
+
if (!renderId)
|
|
1069
|
+
return null;
|
|
1059
1070
|
const model = modelList.get(renderId);
|
|
1060
1071
|
if (!model)
|
|
1061
1072
|
return null;
|
|
@@ -1066,7 +1077,10 @@ const ParentId = ({
|
|
|
1066
1077
|
void storeDo[namesOfSlice.initModel](...initArgs ?? []);
|
|
1067
1078
|
},
|
|
1068
1079
|
onChange: (modelId) => {
|
|
1069
|
-
|
|
1080
|
+
if (modelId)
|
|
1081
|
+
onChange(modelId, modelList.get(modelId));
|
|
1082
|
+
else
|
|
1083
|
+
onChange(null, null);
|
|
1070
1084
|
},
|
|
1071
1085
|
onSearch
|
|
1072
1086
|
}
|
package/esm/Select.js
CHANGED
|
@@ -31,7 +31,10 @@ const Select = ({
|
|
|
31
31
|
const { l } = usePage();
|
|
32
32
|
const [isOpen, setIsOpen] = useState(false);
|
|
33
33
|
const labeledOptions = useMemo(
|
|
34
|
-
() => options instanceof Enum ? options.values.map((v) => ({
|
|
34
|
+
() => options instanceof Enum ? options.values.map((v) => ({
|
|
35
|
+
label: typeof v === "string" ? v : typeof v === "object" ? JSON.stringify(v) : String(v),
|
|
36
|
+
value: v
|
|
37
|
+
})) : options[0]?.label && options[0]?.value ? options : options.map((v) => ({ label: v, value: v })),
|
|
35
38
|
[options]
|
|
36
39
|
);
|
|
37
40
|
const [selectedValues, setSelectedValues] = useState(multiple ? value : [value]);
|
package/esm/System/CSR.js
CHANGED
|
@@ -41,7 +41,7 @@ const CSRProvider = ({
|
|
|
41
41
|
return { lang };
|
|
42
42
|
},
|
|
43
43
|
render: ({ lang }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsx(Client.Wrapper, { theme, children: /* @__PURE__ */
|
|
44
|
+
/* @__PURE__ */ jsx(Client.Wrapper, { theme, children: /* @__PURE__ */ jsx(
|
|
45
45
|
CSRWrapper,
|
|
46
46
|
{
|
|
47
47
|
className,
|
|
@@ -51,11 +51,7 @@ const CSRProvider = ({
|
|
|
51
51
|
fonts,
|
|
52
52
|
prefix,
|
|
53
53
|
layoutStyle,
|
|
54
|
-
children
|
|
55
|
-
children,
|
|
56
|
-
/* @__PURE__ */ jsx(Client.Inner, {}),
|
|
57
|
-
/* @__PURE__ */ jsx(CSRInner, {})
|
|
58
|
-
]
|
|
54
|
+
children
|
|
59
55
|
}
|
|
60
56
|
) }),
|
|
61
57
|
/* @__PURE__ */ jsx(
|
|
@@ -67,6 +63,8 @@ const CSRProvider = ({
|
|
|
67
63
|
fetchMe,
|
|
68
64
|
fetchSelf,
|
|
69
65
|
render: ({ mePromise, selfPromise }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66
|
+
/* @__PURE__ */ jsx(Client.Inner, {}),
|
|
67
|
+
/* @__PURE__ */ jsx(CSRInner, {}),
|
|
70
68
|
/* @__PURE__ */ jsx(
|
|
71
69
|
Client.Bridge,
|
|
72
70
|
{
|
package/esm/ToggleSelect.js
CHANGED
|
@@ -12,8 +12,8 @@ const ToggleSelect = ({
|
|
|
12
12
|
disabled
|
|
13
13
|
}) => {
|
|
14
14
|
const { l } = usePage();
|
|
15
|
-
const validateResult = validate(value
|
|
16
|
-
const invalidMessage = !value
|
|
15
|
+
const validateResult = value ? validate(value) : false;
|
|
16
|
+
const invalidMessage = value === null || typeof value === "string" && !value.length || validateResult === true ? null : validateResult === false ? l("util.invalidValueError") : validateResult;
|
|
17
17
|
const options = items.map(
|
|
18
18
|
(item) => typeof item === "string" ? { label: item, value: item } : item
|
|
19
19
|
);
|