@firecms/ui 3.0.0-canary.210 → 3.0.0-canary.211
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/components/MultiSelect.d.ts +13 -21
- package/dist/components/Select.d.ts +9 -8
- package/dist/index.es.js +54 -40
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +54 -40
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
- package/src/components/MultiSelect.tsx +38 -46
- package/src/components/Select.tsx +62 -50
@@ -1,33 +1,25 @@
|
|
1
1
|
import * as React from "react";
|
2
2
|
import { ChangeEvent } from "react";
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
export type MultiSelectValue = string | number | boolean;
|
4
|
+
interface MultiSelectContextProps<T extends MultiSelectValue = string> {
|
5
|
+
fieldValue?: T[];
|
6
|
+
onItemClick: (v: T) => void;
|
6
7
|
}
|
7
|
-
export declare const MultiSelectContext: React.Context<MultiSelectContextProps
|
8
|
+
export declare const MultiSelectContext: React.Context<MultiSelectContextProps<any>>;
|
8
9
|
/**
|
9
10
|
* Props for MultiSelect component
|
10
11
|
*/
|
11
|
-
interface MultiSelectProps {
|
12
|
-
/**
|
13
|
-
* The modality of the popover. When set to true, interaction with outside elements
|
14
|
-
* will be disabled and only popover content will be visible to screen readers.
|
15
|
-
* Optional, defaults to false.
|
16
|
-
*/
|
12
|
+
interface MultiSelectProps<T extends MultiSelectValue = string> {
|
17
13
|
modalPopover?: boolean;
|
18
|
-
/**
|
19
|
-
* Additional class names to apply custom styles to the multi-select component.
|
20
|
-
* Optional, can be used to add custom styles.
|
21
|
-
*/
|
22
14
|
className?: string;
|
23
15
|
open?: boolean;
|
24
16
|
name?: string;
|
25
17
|
id?: string;
|
26
18
|
onOpenChange?: (open: boolean) => void;
|
27
|
-
value?:
|
19
|
+
value?: T[];
|
28
20
|
inputClassName?: string;
|
29
21
|
onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
|
30
|
-
onValueChange?: (updatedValue:
|
22
|
+
onValueChange?: (updatedValue: T[]) => void;
|
31
23
|
placeholder?: React.ReactNode;
|
32
24
|
size?: "small" | "medium";
|
33
25
|
useChips?: boolean;
|
@@ -43,13 +35,13 @@ interface MultiSelectProps {
|
|
43
35
|
padding?: boolean;
|
44
36
|
invisible?: boolean;
|
45
37
|
children: React.ReactNode;
|
46
|
-
renderValues?: (values:
|
38
|
+
renderValues?: (values: T[]) => React.ReactNode;
|
47
39
|
}
|
48
|
-
export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLButtonElement>>;
|
49
|
-
export interface MultiSelectItemProps {
|
50
|
-
value:
|
40
|
+
export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps<string> & React.RefAttributes<HTMLButtonElement>>;
|
41
|
+
export interface MultiSelectItemProps<T extends MultiSelectValue = string> {
|
42
|
+
value: T;
|
51
43
|
children?: React.ReactNode;
|
52
44
|
className?: string;
|
53
45
|
}
|
54
|
-
export declare function MultiSelectItem({ children, value, className }: MultiSelectItemProps): import("react/jsx-runtime").JSX.Element;
|
46
|
+
export declare function MultiSelectItem<T extends MultiSelectValue = string>({ children, value, className }: MultiSelectItemProps<T>): import("react/jsx-runtime").JSX.Element;
|
55
47
|
export {};
|
@@ -1,17 +1,18 @@
|
|
1
1
|
import React, { ChangeEvent } from "react";
|
2
|
-
export type
|
2
|
+
export type SelectValue = string | number | boolean;
|
3
|
+
export type SelectProps<T extends SelectValue = string> = {
|
3
4
|
open?: boolean;
|
4
5
|
name?: string;
|
5
6
|
fullWidth?: boolean;
|
6
7
|
id?: string;
|
7
8
|
onOpenChange?: (open: boolean) => void;
|
8
|
-
value?:
|
9
|
+
value?: T;
|
9
10
|
className?: string;
|
10
11
|
inputClassName?: string;
|
11
12
|
onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
|
12
|
-
onValueChange?: (updatedValue:
|
13
|
+
onValueChange?: (updatedValue: T) => void;
|
13
14
|
placeholder?: React.ReactNode;
|
14
|
-
renderValue?: (value:
|
15
|
+
renderValue?: (value: T) => React.ReactNode;
|
15
16
|
size?: "small" | "medium" | "large";
|
16
17
|
label?: React.ReactNode | string;
|
17
18
|
disabled?: boolean;
|
@@ -23,14 +24,14 @@ export type SelectProps = {
|
|
23
24
|
invisible?: boolean;
|
24
25
|
children?: React.ReactNode;
|
25
26
|
};
|
26
|
-
export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLDivElement>>;
|
27
|
-
export type SelectItemProps = {
|
28
|
-
value:
|
27
|
+
export declare const Select: React.ForwardRefExoticComponent<SelectProps<string> & React.RefAttributes<HTMLDivElement>>;
|
28
|
+
export type SelectItemProps<T extends SelectValue = string> = {
|
29
|
+
value: T;
|
29
30
|
children?: React.ReactNode;
|
30
31
|
disabled?: boolean;
|
31
32
|
className?: string;
|
32
33
|
};
|
33
|
-
export declare function SelectItem({ value, children, disabled, className }: SelectItemProps): import("react/jsx-runtime").JSX.Element;
|
34
|
+
export declare function SelectItem<T extends SelectValue = string>({ value, children, disabled, className }: SelectItemProps<T>): import("react/jsx-runtime").JSX.Element;
|
34
35
|
export type SelectGroupProps = {
|
35
36
|
label: React.ReactNode;
|
36
37
|
children: React.ReactNode;
|
package/dist/index.es.js
CHANGED
@@ -29713,8 +29713,8 @@ const MultiSelect = React.forwardRef((t0, ref) => {
|
|
29713
29713
|
if ($[12] !== onValueChange || $[13] !== selectedValues) {
|
29714
29714
|
onItemClick = function onItemClick2(newValue) {
|
29715
29715
|
let newSelectedValues;
|
29716
|
-
if (selectedValues.
|
29717
|
-
newSelectedValues = selectedValues.filter((v) => v !== newValue);
|
29716
|
+
if (selectedValues.some((v_0) => String(v_0) === String(newValue))) {
|
29717
|
+
newSelectedValues = selectedValues.filter((v) => String(v) !== String(newValue));
|
29718
29718
|
} else {
|
29719
29719
|
newSelectedValues = [...selectedValues, newValue];
|
29720
29720
|
}
|
@@ -29756,7 +29756,7 @@ const MultiSelect = React.forwardRef((t0, ref) => {
|
|
29756
29756
|
let t13;
|
29757
29757
|
if ($[20] !== selectedValues || $[21] !== updateValues) {
|
29758
29758
|
t13 = (value_0) => {
|
29759
|
-
const newSelectedValues_1 = selectedValues.
|
29759
|
+
const newSelectedValues_1 = selectedValues.some((v_2) => String(v_2) === String(value_0)) ? selectedValues.filter((v_1) => String(v_1) !== String(value_0)) : [...selectedValues, value_0];
|
29760
29760
|
updateValues(newSelectedValues_1);
|
29761
29761
|
};
|
29762
29762
|
$[20] = selectedValues;
|
@@ -29857,7 +29857,7 @@ const MultiSelect = React.forwardRef((t0, ref) => {
|
|
29857
29857
|
renderValues && renderValues(selectedValues),
|
29858
29858
|
!renderValues && selectedValues.map((value_1) => {
|
29859
29859
|
const childrenProps = Children.map(children, _temp2).filter(Boolean);
|
29860
|
-
const option = childrenProps.find((o) => o.value === value_1);
|
29860
|
+
const option = childrenProps.find((o) => String(o.value) === String(value_1));
|
29861
29861
|
if (!useChips) {
|
29862
29862
|
return option?.children;
|
29863
29863
|
}
|
@@ -29867,7 +29867,7 @@ const MultiSelect = React.forwardRef((t0, ref) => {
|
|
29867
29867
|
event_0.stopPropagation();
|
29868
29868
|
toggleOption(value_1);
|
29869
29869
|
} })
|
29870
|
-
] }, value_1);
|
29870
|
+
] }, String(value_1));
|
29871
29871
|
})
|
29872
29872
|
] }),
|
29873
29873
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
@@ -30053,7 +30053,7 @@ const MultiSelect = React.forwardRef((t0, ref) => {
|
|
30053
30053
|
});
|
30054
30054
|
MultiSelect.displayName = "MultiSelect";
|
30055
30055
|
function MultiSelectItem(t0) {
|
30056
|
-
const $ = c(
|
30056
|
+
const $ = c(20);
|
30057
30057
|
const {
|
30058
30058
|
children,
|
30059
30059
|
value,
|
@@ -30077,7 +30077,15 @@ function MultiSelectItem(t0) {
|
|
30077
30077
|
}
|
30078
30078
|
let t2;
|
30079
30079
|
if ($[2] !== t1 || $[3] !== value) {
|
30080
|
-
|
30080
|
+
let t32;
|
30081
|
+
if ($[5] !== value) {
|
30082
|
+
t32 = (v) => String(v) === String(value);
|
30083
|
+
$[5] = value;
|
30084
|
+
$[6] = t32;
|
30085
|
+
} else {
|
30086
|
+
t32 = $[6];
|
30087
|
+
}
|
30088
|
+
t2 = t1.some(t32);
|
30081
30089
|
$[2] = t1;
|
30082
30090
|
$[3] = value;
|
30083
30091
|
$[4] = t2;
|
@@ -30086,47 +30094,47 @@ function MultiSelectItem(t0) {
|
|
30086
30094
|
}
|
30087
30095
|
const isSelected = t2;
|
30088
30096
|
let t3;
|
30089
|
-
if ($[
|
30097
|
+
if ($[7] !== onItemClick || $[8] !== value) {
|
30090
30098
|
t3 = (_) => {
|
30091
30099
|
onItemClick(value);
|
30092
30100
|
};
|
30093
|
-
$[
|
30094
|
-
$[
|
30095
|
-
$[
|
30101
|
+
$[7] = onItemClick;
|
30102
|
+
$[8] = value;
|
30103
|
+
$[9] = t3;
|
30096
30104
|
} else {
|
30097
|
-
t3 = $[
|
30105
|
+
t3 = $[9];
|
30098
30106
|
}
|
30099
30107
|
const t4 = isSelected ? "bg-surface-accent-200 dark:bg-surface-accent-950" : "";
|
30100
30108
|
let t5;
|
30101
|
-
if ($[
|
30109
|
+
if ($[10] !== className || $[11] !== t4) {
|
30102
30110
|
t5 = cls("flex flex-row items-center gap-1.5", t4, "cursor-pointer", "m-1", "ring-offset-transparent", "p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-offset-2", "aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900", "cursor-pointer p-2 rounded aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900", className);
|
30103
|
-
$[
|
30104
|
-
$[
|
30105
|
-
$[
|
30111
|
+
$[10] = className;
|
30112
|
+
$[11] = t4;
|
30113
|
+
$[12] = t5;
|
30106
30114
|
} else {
|
30107
|
-
t5 = $[
|
30115
|
+
t5 = $[12];
|
30108
30116
|
}
|
30109
30117
|
let t6;
|
30110
|
-
if ($[
|
30118
|
+
if ($[13] !== isSelected) {
|
30111
30119
|
t6 = /* @__PURE__ */ jsx(InnerCheckBox, { checked: isSelected });
|
30112
|
-
$[
|
30113
|
-
$[
|
30120
|
+
$[13] = isSelected;
|
30121
|
+
$[14] = t6;
|
30114
30122
|
} else {
|
30115
|
-
t6 = $[
|
30123
|
+
t6 = $[14];
|
30116
30124
|
}
|
30117
30125
|
let t7;
|
30118
|
-
if ($[
|
30126
|
+
if ($[15] !== children || $[16] !== t3 || $[17] !== t5 || $[18] !== t6) {
|
30119
30127
|
t7 = /* @__PURE__ */ jsxs(Command.Item, { onMouseDown: _temp3, onSelect: t3, className: t5, children: [
|
30120
30128
|
t6,
|
30121
30129
|
children
|
30122
30130
|
] });
|
30123
|
-
$[
|
30124
|
-
$[
|
30125
|
-
$[
|
30126
|
-
$[
|
30127
|
-
$[
|
30131
|
+
$[15] = children;
|
30132
|
+
$[16] = t3;
|
30133
|
+
$[17] = t5;
|
30134
|
+
$[18] = t6;
|
30135
|
+
$[19] = t7;
|
30128
30136
|
} else {
|
30129
|
-
t7 = $[
|
30137
|
+
t7 = $[19];
|
30130
30138
|
}
|
30131
30139
|
return t7;
|
30132
30140
|
}
|
@@ -30488,19 +30496,24 @@ const Select = forwardRef(({
|
|
30488
30496
|
setOpenInternal(open ?? false);
|
30489
30497
|
}, [open]);
|
30490
30498
|
const onValueChangeInternal = useCallback((newValue) => {
|
30491
|
-
|
30499
|
+
let typedValue = newValue;
|
30500
|
+
if (newValue === "true") typedValue = true;
|
30501
|
+
else if (newValue === "false") typedValue = false;
|
30502
|
+
else if (!isNaN(Number(newValue)) && newValue.trim() !== "") typedValue = Number(newValue);
|
30503
|
+
onValueChange?.(typedValue);
|
30492
30504
|
if (onChange) {
|
30493
30505
|
const event = {
|
30494
30506
|
target: {
|
30495
30507
|
name,
|
30496
|
-
value:
|
30508
|
+
value: typedValue
|
30497
30509
|
}
|
30498
30510
|
};
|
30499
30511
|
onChange(event);
|
30500
30512
|
}
|
30501
|
-
}, [onChange,
|
30513
|
+
}, [onChange, onValueChange, name]);
|
30502
30514
|
const hasValue = Array.isArray(value) ? value.length > 0 : value != null && value !== "" && value !== void 0;
|
30503
|
-
|
30515
|
+
const stringValue = value !== void 0 ? String(value) : void 0;
|
30516
|
+
return /* @__PURE__ */ jsxs(SelectPrimitive.Root, { name, value: stringValue, open: openInternal, disabled, onValueChange: onValueChangeInternal, onOpenChange: (open_0) => {
|
30504
30517
|
onOpenChange?.(open_0);
|
30505
30518
|
setOpenInternal(open_0);
|
30506
30519
|
}, ...props, children: [
|
@@ -30530,14 +30543,14 @@ const Select = forwardRef(({
|
|
30530
30543
|
e.preventDefault();
|
30531
30544
|
e.stopPropagation();
|
30532
30545
|
}, placeholder, className: "w-full", children: [
|
30533
|
-
hasValue && value && renderValue ? renderValue(value) : placeholder,
|
30546
|
+
hasValue && value !== void 0 && renderValue ? renderValue(value) : placeholder,
|
30534
30547
|
hasValue && !renderValue && (() => {
|
30535
30548
|
const childrenProps = Children.map(children, (child) => {
|
30536
30549
|
if (React__default.isValidElement(child)) {
|
30537
30550
|
return child.props;
|
30538
30551
|
}
|
30539
30552
|
}).filter(Boolean);
|
30540
|
-
const option = childrenProps.find((o) => o.value === value);
|
30553
|
+
const option = childrenProps.find((o) => String(o.value) === String(value));
|
30541
30554
|
return option?.children;
|
30542
30555
|
})()
|
30543
30556
|
] }) }),
|
@@ -30564,6 +30577,7 @@ function SelectItem(t0) {
|
|
30564
30577
|
disabled,
|
30565
30578
|
className
|
30566
30579
|
} = t0;
|
30580
|
+
const stringValue = String(value);
|
30567
30581
|
const t1 = disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer";
|
30568
30582
|
let t2;
|
30569
30583
|
if ($[0] !== className || $[1] !== t1) {
|
@@ -30590,15 +30604,15 @@ function SelectItem(t0) {
|
|
30590
30604
|
t4 = $[5];
|
30591
30605
|
}
|
30592
30606
|
let t5;
|
30593
|
-
if ($[6] !== disabled || $[7] !==
|
30594
|
-
t5 = /* @__PURE__ */ jsxs(SelectPrimitive.Item, { value, disabled, className: t2, children: [
|
30607
|
+
if ($[6] !== disabled || $[7] !== stringValue || $[8] !== t2 || $[9] !== t3) {
|
30608
|
+
t5 = /* @__PURE__ */ jsxs(SelectPrimitive.Item, { value: stringValue, disabled, className: t2, children: [
|
30595
30609
|
t3,
|
30596
30610
|
t4
|
30597
|
-
] },
|
30611
|
+
] }, stringValue);
|
30598
30612
|
$[6] = disabled;
|
30599
|
-
$[7] =
|
30600
|
-
$[8] =
|
30601
|
-
$[9] =
|
30613
|
+
$[7] = stringValue;
|
30614
|
+
$[8] = t2;
|
30615
|
+
$[9] = t3;
|
30602
30616
|
$[10] = t5;
|
30603
30617
|
} else {
|
30604
30618
|
t5 = $[10];
|