@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.
@@ -1,33 +1,25 @@
1
1
  import * as React from "react";
2
2
  import { ChangeEvent } from "react";
3
- interface MultiSelectContextProps {
4
- fieldValue?: string[];
5
- onItemClick: (v: string) => void;
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?: string[];
19
+ value?: T[];
28
20
  inputClassName?: string;
29
21
  onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
30
- onValueChange?: (updatedValue: string[]) => void;
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: string[]) => React.ReactNode;
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: string;
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 SelectProps = {
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?: string;
9
+ value?: T;
9
10
  className?: string;
10
11
  inputClassName?: string;
11
12
  onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
12
- onValueChange?: (updatedValue: string) => void;
13
+ onValueChange?: (updatedValue: T) => void;
13
14
  placeholder?: React.ReactNode;
14
- renderValue?: (value: string) => React.ReactNode;
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: string;
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.includes(newValue)) {
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.includes(value_0) ? selectedValues.filter((v_0) => v_0 !== value_0) : [...selectedValues, value_0];
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(18);
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
- t2 = t1.includes(value);
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 ($[5] !== onItemClick || $[6] !== value) {
30097
+ if ($[7] !== onItemClick || $[8] !== value) {
30090
30098
  t3 = (_) => {
30091
30099
  onItemClick(value);
30092
30100
  };
30093
- $[5] = onItemClick;
30094
- $[6] = value;
30095
- $[7] = t3;
30101
+ $[7] = onItemClick;
30102
+ $[8] = value;
30103
+ $[9] = t3;
30096
30104
  } else {
30097
- t3 = $[7];
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 ($[8] !== className || $[9] !== t4) {
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
- $[8] = className;
30104
- $[9] = t4;
30105
- $[10] = t5;
30111
+ $[10] = className;
30112
+ $[11] = t4;
30113
+ $[12] = t5;
30106
30114
  } else {
30107
- t5 = $[10];
30115
+ t5 = $[12];
30108
30116
  }
30109
30117
  let t6;
30110
- if ($[11] !== isSelected) {
30118
+ if ($[13] !== isSelected) {
30111
30119
  t6 = /* @__PURE__ */ jsx(InnerCheckBox, { checked: isSelected });
30112
- $[11] = isSelected;
30113
- $[12] = t6;
30120
+ $[13] = isSelected;
30121
+ $[14] = t6;
30114
30122
  } else {
30115
- t6 = $[12];
30123
+ t6 = $[14];
30116
30124
  }
30117
30125
  let t7;
30118
- if ($[13] !== children || $[14] !== t3 || $[15] !== t5 || $[16] !== t6) {
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
- $[13] = children;
30124
- $[14] = t3;
30125
- $[15] = t5;
30126
- $[16] = t6;
30127
- $[17] = t7;
30131
+ $[15] = children;
30132
+ $[16] = t3;
30133
+ $[17] = t5;
30134
+ $[18] = t6;
30135
+ $[19] = t7;
30128
30136
  } else {
30129
- t7 = $[17];
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
- onValueChange?.(newValue);
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: newValue
30508
+ value: typedValue
30497
30509
  }
30498
30510
  };
30499
30511
  onChange(event);
30500
30512
  }
30501
- }, [onChange, value, onValueChange]);
30513
+ }, [onChange, onValueChange, name]);
30502
30514
  const hasValue = Array.isArray(value) ? value.length > 0 : value != null && value !== "" && value !== void 0;
30503
- return /* @__PURE__ */ jsxs(SelectPrimitive.Root, { name, value, open: openInternal, disabled, onValueChange: onValueChangeInternal, onOpenChange: (open_0) => {
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] !== t2 || $[8] !== t3 || $[9] !== value) {
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
- ] }, value);
30611
+ ] }, stringValue);
30598
30612
  $[6] = disabled;
30599
- $[7] = t2;
30600
- $[8] = t3;
30601
- $[9] = value;
30613
+ $[7] = stringValue;
30614
+ $[8] = t2;
30615
+ $[9] = t3;
30602
30616
  $[10] = t5;
30603
30617
  } else {
30604
30618
  t5 = $[10];