@react-fabric/form 1.0.0-beta.5 → 1.0.0-beta.51

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.
Files changed (174) hide show
  1. package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
  2. package/css/_colorPicker.css +65 -0
  3. package/{src/internal/Field.module.css → css/_field.css} +64 -29
  4. package/{src/input/File.module.css → css/_file.css} +21 -6
  5. package/css/styles.css +27 -0
  6. package/dist/cjs/builder/FileField.js +37 -25
  7. package/dist/cjs/builder/FormField.js +50 -34
  8. package/dist/cjs/builder/SchemaEditor.js +72 -0
  9. package/dist/cjs/builder/components/AddSchemaFields.js +62 -0
  10. package/dist/cjs/builder/components/SchemaArrayForm.js +143 -0
  11. package/dist/cjs/builder/components/SchemaField.js +414 -0
  12. package/dist/cjs/form/Controller.js +1 -1
  13. package/dist/cjs/form/Form.js +11 -6
  14. package/dist/cjs/hooks/useFormBuilder.js +27 -15
  15. package/dist/cjs/index.js +11 -2
  16. package/dist/cjs/input/ArrayInput.js +61 -33
  17. package/dist/cjs/input/AvatarInput.js +9 -8
  18. package/dist/cjs/input/Checkbox.js +6 -5
  19. package/dist/cjs/input/ColorInput.js +95 -56
  20. package/dist/cjs/input/ColorPicker.js +1 -35
  21. package/dist/cjs/input/DateInput.js +186 -0
  22. package/dist/cjs/input/Field.js +5 -4
  23. package/dist/cjs/input/File.js +4 -7
  24. package/dist/cjs/input/Hidden.js +3 -1
  25. package/dist/cjs/input/Input.js +11 -7
  26. package/dist/cjs/input/Number.js +9 -7
  27. package/dist/cjs/input/Password.js +10 -8
  28. package/dist/cjs/input/Radio.js +2 -2
  29. package/dist/cjs/input/RadioGroup.js +6 -3
  30. package/dist/cjs/input/{Range.js → RangeSlider.js} +5 -5
  31. package/dist/cjs/input/Search.js +16 -16
  32. package/dist/cjs/input/Slider.js +3 -3
  33. package/dist/cjs/input/Switch.js +30 -7
  34. package/dist/cjs/input/Textarea.js +13 -4
  35. package/dist/cjs/internal/ErrorIcon.js +1 -1
  36. package/dist/cjs/internal/FieldWrapper.js +11 -4
  37. package/dist/cjs/internal/InputWrapper.js +19 -16
  38. package/dist/cjs/select/AutoComplete.js +12 -8
  39. package/dist/cjs/select/DualList.js +4 -1
  40. package/dist/cjs/select/List.js +45 -20
  41. package/dist/cjs/select/Options.js +2 -2
  42. package/dist/cjs/select/Select.js +14 -4
  43. package/dist/cjs/select/useSelect.js +10 -6
  44. package/dist/cjs/types/schema.js +43 -0
  45. package/dist/cjs/utils/eventHandlers.js +11 -5
  46. package/dist/cjs/utils/getColor.js +6 -0
  47. package/dist/esm/builder/FileField.js +39 -27
  48. package/dist/esm/builder/FormField.js +50 -34
  49. package/dist/esm/builder/SchemaEditor.js +72 -0
  50. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  51. package/dist/esm/builder/components/SchemaArrayForm.js +143 -0
  52. package/dist/esm/builder/components/SchemaField.js +414 -0
  53. package/dist/esm/form/Controller.js +1 -1
  54. package/dist/esm/form/Form.js +11 -6
  55. package/dist/esm/hooks/useFormBuilder.js +25 -13
  56. package/dist/esm/index.js +5 -1
  57. package/dist/esm/input/ArrayInput.js +61 -33
  58. package/dist/esm/input/AvatarInput.js +9 -8
  59. package/dist/esm/input/Checkbox.js +6 -5
  60. package/dist/esm/input/ColorInput.js +97 -58
  61. package/dist/esm/input/ColorPicker.js +1 -35
  62. package/dist/esm/input/DateInput.js +186 -0
  63. package/dist/esm/input/Field.js +6 -5
  64. package/dist/esm/input/File.js +6 -9
  65. package/dist/esm/input/Hidden.js +3 -1
  66. package/dist/esm/input/Input.js +13 -9
  67. package/dist/esm/input/Number.js +11 -9
  68. package/dist/esm/input/Password.js +12 -10
  69. package/dist/esm/input/Radio.js +2 -2
  70. package/dist/esm/input/RadioGroup.js +7 -4
  71. package/dist/esm/input/{Range.js → RangeSlider.js} +5 -5
  72. package/dist/esm/input/Search.js +18 -18
  73. package/dist/esm/input/Slider.js +3 -3
  74. package/dist/esm/input/Switch.js +32 -9
  75. package/dist/esm/input/Textarea.js +14 -5
  76. package/dist/esm/internal/ErrorIcon.js +1 -1
  77. package/dist/esm/internal/FieldWrapper.js +11 -4
  78. package/dist/esm/internal/InputWrapper.js +19 -16
  79. package/dist/esm/select/AutoComplete.js +12 -8
  80. package/dist/esm/select/DualList.js +4 -1
  81. package/dist/esm/select/List.js +46 -21
  82. package/dist/esm/select/Options.js +2 -2
  83. package/dist/esm/select/Select.js +14 -4
  84. package/dist/esm/select/useSelect.js +11 -7
  85. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  86. package/dist/esm/utils/eventHandlers.js +11 -5
  87. package/dist/esm/utils/getColor.js +6 -1
  88. package/dist/types/builder/FileField.d.ts +4 -2
  89. package/dist/types/builder/FormField.d.ts +3 -1
  90. package/dist/types/builder/SchemaEditor.d.ts +2 -0
  91. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  92. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  93. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  94. package/dist/types/form/Controller.d.ts +2 -2
  95. package/dist/types/form/Form.d.ts +5 -1
  96. package/dist/types/hooks/useFormBuilder.d.ts +3 -1
  97. package/dist/types/index.d.ts +5 -2
  98. package/dist/types/input/ArrayInput.d.ts +39 -6
  99. package/dist/types/input/AvatarInput.d.ts +6 -3
  100. package/dist/types/input/Checkbox.d.ts +4 -4
  101. package/dist/types/input/ColorInput.d.ts +2 -2
  102. package/dist/types/input/ColorPicker.d.ts +1 -1
  103. package/dist/types/input/DateInput.d.ts +19 -0
  104. package/dist/types/input/Field.d.ts +0 -1
  105. package/dist/types/input/Input.d.ts +1 -1
  106. package/dist/types/input/Number.d.ts +1 -1
  107. package/dist/types/input/Password.d.ts +1 -1
  108. package/dist/types/input/Radio.d.ts +0 -1
  109. package/dist/types/input/RadioGroup.d.ts +18 -3
  110. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +1 -1
  111. package/dist/types/input/Search.d.ts +5 -1
  112. package/dist/types/input/Switch.d.ts +7 -4
  113. package/dist/types/input/Textarea.d.ts +5 -1
  114. package/dist/types/internal/FieldWrapper.d.ts +1 -1
  115. package/dist/types/internal/InputWrapper.d.ts +1 -1
  116. package/dist/types/ranger/index.d.ts +2 -2
  117. package/dist/types/select/AutoComplete.d.ts +1 -1
  118. package/dist/types/select/DualList.d.ts +6 -2
  119. package/dist/types/select/List.d.ts +1 -1
  120. package/dist/types/select/Select.d.ts +1 -1
  121. package/dist/types/select/useSelect.d.ts +7 -15
  122. package/dist/types/types/index.d.ts +28 -7
  123. package/dist/types/types/schema.d.ts +78 -33
  124. package/dist/types/utils/eventHandlers.d.ts +1 -1
  125. package/package.json +15 -12
  126. package/src/builder/FileField.tsx +53 -27
  127. package/src/builder/FormField.tsx +52 -32
  128. package/src/builder/SchemaEditor.tsx +72 -0
  129. package/src/builder/components/AddSchemaFields.tsx +74 -0
  130. package/src/builder/components/SchemaArrayForm.tsx +158 -0
  131. package/src/builder/components/SchemaField.tsx +436 -0
  132. package/src/form/Controller.tsx +3 -3
  133. package/src/form/Form.tsx +14 -5
  134. package/src/hooks/useFormBuilder.tsx +29 -15
  135. package/src/index.ts +11 -2
  136. package/src/input/ArrayInput.tsx +130 -54
  137. package/src/input/AvatarInput.tsx +12 -8
  138. package/src/input/Checkbox.tsx +6 -5
  139. package/src/input/ColorInput.tsx +113 -69
  140. package/src/input/ColorPicker.tsx +2 -36
  141. package/src/input/DateInput.tsx +250 -0
  142. package/src/input/Field.tsx +10 -11
  143. package/src/input/File.tsx +7 -14
  144. package/src/input/Hidden.tsx +4 -1
  145. package/src/input/Input.tsx +15 -10
  146. package/src/input/Number.tsx +10 -10
  147. package/src/input/Password.tsx +13 -12
  148. package/src/input/Radio.tsx +2 -2
  149. package/src/input/RadioGroup.tsx +27 -4
  150. package/src/input/{Range.tsx → RangeSlider.tsx} +4 -4
  151. package/src/input/Search.tsx +20 -19
  152. package/src/input/Slider.tsx +3 -3
  153. package/src/input/Switch.tsx +43 -7
  154. package/src/input/Textarea.tsx +19 -5
  155. package/src/internal/ErrorIcon.tsx +1 -1
  156. package/src/internal/FieldWrapper.tsx +8 -4
  157. package/src/internal/InputWrapper.tsx +36 -20
  158. package/src/select/AutoComplete.tsx +5 -1
  159. package/src/select/DualList.tsx +8 -0
  160. package/src/select/List.tsx +41 -8
  161. package/src/select/Options.tsx +1 -1
  162. package/src/select/Select.tsx +13 -3
  163. package/src/select/useSelect.tsx +13 -5
  164. package/src/types/index.ts +34 -8
  165. package/src/types/schema.ts +96 -41
  166. package/src/utils/eventHandlers.ts +9 -3
  167. package/dist/cjs/input/ArrayInput.module.css +0 -1
  168. package/dist/cjs/input/ColorPicker.module.css +0 -1
  169. package/dist/cjs/input/File.module.css +0 -1
  170. package/dist/cjs/internal/Field.module.css +0 -1
  171. package/dist/esm/input/ArrayInput.module.css +0 -1
  172. package/dist/esm/input/ColorPicker.module.css +0 -1
  173. package/dist/esm/input/File.module.css +0 -1
  174. package/dist/esm/internal/Field.module.css +0 -1
@@ -10,14 +10,17 @@ export interface Props extends RefProp {
10
10
  */
11
11
  value?: string;
12
12
  /**
13
- * avatar stream src
13
+ * avatar name
14
14
  */
15
- src?: string;
15
+ avatarName?: string;
16
16
  size?: string | number;
17
17
  /**
18
18
  * upload handler to store file in temp storage
19
19
  */
20
20
  uploadHandler: UploadHandler;
21
+ /**
22
+ * file stream path
23
+ */
21
24
  fileUrl?: (path: string) => string;
22
25
  /**
23
26
  * change handler
@@ -28,4 +31,4 @@ export interface Props extends RefProp {
28
31
  */
29
32
  onChange?: (path: string) => void;
30
33
  }
31
- export declare const AvatarInput: ({ src, size, fileUrl, uploadHandler, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
34
+ export declare const AvatarInput: ({ size, avatarName, value, fileUrl, uploadHandler, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { type RefProp } from "@react-fabric/core/dist/types/types";
3
- export interface CheckboxProps extends RefProp<HTMLInputElement> {
2
+ interface CheckboxProps extends RefProp<HTMLInputElement> {
4
3
  /**
5
4
  * checkbox label
6
5
  */
@@ -16,7 +15,7 @@ export interface CheckboxProps extends RefProp<HTMLInputElement> {
16
15
  /**
17
16
  * on checked change
18
17
  */
19
- onChange?: (checked: boolean | string | number) => void;
18
+ onChange?: (checked: boolean) => void;
20
19
  /**
21
20
  * disabled input
22
21
  */
@@ -43,4 +42,5 @@ export interface CheckboxProps extends RefProp<HTMLInputElement> {
43
42
  iconChecked?: string;
44
43
  name?: string;
45
44
  }
46
- export declare const Checkbox: ({ ref, label, value, name, checked, invalid, disabled, error, width, icon, iconChecked, onChange, ...rest }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
45
+ export declare const Checkbox: ({ ref, label, value, name, checked, invalid, disabled, error, width, icon, iconChecked, required, onChange, ...rest }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
46
+ export {};
@@ -1,10 +1,10 @@
1
1
  import { type RefProp } from "@react-fabric/core/dist/types/types";
2
2
  import { type InputProps } from "../types";
3
3
  import { type ColorProps } from "./ColorPicker";
4
- export interface ColorInputProps extends InputProps, ColorProps, RefProp {
4
+ export interface ColorInputProps extends InputProps, Omit<ColorProps, "onChange">, RefProp {
5
5
  /**
6
6
  * show eydrop picker
7
7
  */
8
8
  showPicker?: boolean;
9
9
  }
10
- export declare const ColorInput: ({ ref, required, disabled, allowClear, invalid, error, value, showPicker, defaultColor, decorateEnd, decorateStart, onChange, noOutline, ...rest }: ColorInputProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ColorInput: ({ ref, required, disabled, readOnly, invalid, error, value, showPicker, defaultColor, onBlur, onFocus, onChange, noOutline, ...rest }: ColorInputProps) => import("react/jsx-runtime").JSX.Element;
@@ -15,7 +15,7 @@ export interface ColorProps {
15
15
  /**
16
16
  * color value
17
17
  */
18
- value?: string;
18
+ value?: string | null;
19
19
  /**
20
20
  * change handler
21
21
  */
@@ -0,0 +1,19 @@
1
+ import { type RefProp } from "@react-fabric/core/dist/types/types";
2
+ import { type DateLike } from "@react-fabric/date";
3
+ import { type InputProps } from "../types";
4
+ export interface DateProps extends InputProps<string>, RefProp<HTMLInputElement> {
5
+ type?: "date" | "datetime";
6
+ /**
7
+ * date format
8
+ */
9
+ format?: string;
10
+ /**
11
+ * minimum value
12
+ */
13
+ min?: DateLike;
14
+ /**
15
+ * maximum value
16
+ */
17
+ max?: DateLike;
18
+ }
19
+ export declare const DateInput: ({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, error, type, onBlur, onFocus, onChange, onEnterPressed, format, min, max, ...rest }: DateProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { type ChildrenProp, type CssProp } from "@react-fabric/core/dist/types/types";
3
2
  export interface FieldProps extends ChildrenProp, CssProp {
4
3
  /**
@@ -6,4 +6,4 @@ export interface TextInputProps extends InputProps, RefProp<HTMLInputElement> {
6
6
  */
7
7
  type?: "email" | "file" | "search" | "tel" | "text" | "url";
8
8
  }
9
- export declare const Input: ({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, error, type, onChange, onEnterPressed, ...rest }: TextInputProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const Input: ({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, error, monospace, type, onBlur, onFocus, onChange, onEnterPressed, ...rest }: TextInputProps) => import("react/jsx-runtime").JSX.Element;
@@ -14,4 +14,4 @@ export interface NumberProps extends InputProps<number>, RefProp<HTMLInputElemen
14
14
  */
15
15
  step?: number;
16
16
  }
17
- export declare const Number: ({ ref, value, invalid, readOnly, disabled, required, placeholder, autoFocus, name, min, max, step, onChange, onEnterPressed, ...rest }: NumberProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const Number: ({ ref, value, invalid, readOnly, disabled, required, placeholder, autoFocus, name, min, max, step, onBlur, onFocus, onChange, onEnterPressed, ...rest }: NumberProps) => import("react/jsx-runtime").JSX.Element;
@@ -10,4 +10,4 @@ export interface PasswordProps extends InputProps, RefProp<HTMLInputElement> {
10
10
  */
11
11
  strength?: number;
12
12
  }
13
- export declare const Password: ({ ref, value, name, strength, invalid, readOnly, disabled, required, placeholder, autoFocus, showToggle, onChange, onEnterPressed, ...rest }: PasswordProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const Password: ({ ref, value, name, strength, invalid, readOnly, disabled, required, placeholder, autoFocus, showToggle, onBlur, onFocus, onChange, onEnterPressed, ...rest }: PasswordProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { type RefProp } from "@react-fabric/core/dist/types/types";
3
2
  export interface RadioProps extends RefProp<HTMLInputElement> {
4
3
  name?: string;
@@ -1,5 +1,4 @@
1
- /// <reference types="react" />
2
- import { type CssProp, type ChildrenProp } from "@react-fabric/core/dist/types/types";
1
+ import { type ChildrenProp, type CssProp } from "@react-fabric/core/dist/types/types";
3
2
  import { type Radio } from "./Radio";
4
3
  export interface RadioGroupProps extends ChildrenProp<typeof Radio>, CssProp {
5
4
  /**
@@ -14,6 +13,22 @@ export interface RadioGroupProps extends ChildrenProp<typeof Radio>, CssProp {
14
13
  * field info
15
14
  */
16
15
  info?: string;
16
+ /**
17
+ * field width
18
+ */
19
+ width?: number | string;
20
+ /**
21
+ * inline label and input
22
+ */
23
+ inline?: boolean;
24
+ /**
25
+ * label width for inline
26
+ */
27
+ labelWidth?: string;
28
+ /**
29
+ * label width for inline
30
+ */
31
+ optionWidth?: string;
17
32
  /**
18
33
  * field name
19
34
  */
@@ -27,4 +42,4 @@ export interface RadioGroupProps extends ChildrenProp<typeof Radio>, CssProp {
27
42
  */
28
43
  onChange?: (value: AnyObject) => void;
29
44
  }
30
- export declare const RadioGroup: ({ children, name, className, onChange, ...rest }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
45
+ export declare const RadioGroup: ({ children, name, className, optionWidth, onChange, ...rest }: RadioGroupProps) => import("react/jsx-runtime").JSX.Element;
@@ -56,4 +56,4 @@ export interface RangeProps extends Omit<InputProps<[number, number]>, "placehol
56
56
  /**
57
57
  * Number Range input
58
58
  */
59
- export declare const Range: ({ error, name, value, step, min, max, height, color, vertical, showLabels, showValue, minLabel, maxLabel, ranges, format, autoFocus, disabled, readOnly, onBlur, onChange, onEnterPressed, onFocus, onSlide, invalid, ...rest }: RangeProps) => import("react/jsx-runtime").JSX.Element;
59
+ export declare const RangeSlider: ({ error, name, value, step, min, max, height, color, vertical, showLabels, showValue, minLabel, maxLabel, ranges, format, autoFocus, disabled, readOnly, onBlur, onChange, onEnterPressed, onFocus, onSlide, invalid, ...rest }: RangeProps) => import("react/jsx-runtime").JSX.Element;
@@ -9,9 +9,13 @@ export interface SearchProps extends InputProps, RefProp<HTMLInputElement> {
9
9
  * search on value change
10
10
  */
11
11
  searchOnChange?: boolean;
12
+ /**
13
+ * hide search action handle
14
+ */
15
+ hideHandle?: boolean;
12
16
  /**
13
17
  * search handler
14
18
  */
15
19
  onSearch?: (query?: string) => void;
16
20
  }
17
- export declare const Search: ({ ref, value, name, invalid, readOnly, disabled, required, searching, placeholder, autoFocus, allowClear, searchOnChange, decorateEnd, decorateStart, onSearch, onChange, onEnterPressed, ...rest }: SearchProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const Search: ({ ref, value, name, invalid, readOnly, disabled, required, searching, placeholder, autoFocus, hideHandle, allowClear, searchOnChange, onBlur, onFocus, onSearch, onChange, onEnterPressed, ...rest }: SearchProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { type ColorType, type RefProp } from "@react-fabric/core/dist/types/types";
3
2
  export interface SwitchProps extends RefProp<HTMLInputElement> {
4
3
  /**
@@ -32,11 +31,15 @@ export interface SwitchProps extends RefProp<HTMLInputElement> {
32
31
  /**
33
32
  * cutom Switch icon
34
33
  */
35
- color?: ColorType;
34
+ color?: string | ColorType;
36
35
  /**
37
36
  * cutom Switch icon
38
37
  */
39
- defaultColor?: ColorType;
38
+ defaultColor?: string | ColorType;
40
39
  name?: string;
40
+ onLabel?: string;
41
+ onLabelColor?: string | ColorType;
42
+ offLabel?: string;
43
+ offLabelColor?: string | ColorType;
41
44
  }
42
- export declare const Switch: ({ ref, label, checked, invalid, disabled, error, width, color, name, defaultColor, onChange, ...rest }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
45
+ export declare const Switch: ({ ref, label, checked, invalid, disabled, error, width, color, name, onLabel, offLabel, onLabelColor, offLabelColor, defaultColor, required, onChange, ...rest }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
@@ -13,5 +13,9 @@ export interface TextareaProps extends InputProps, RefProp<HTMLTextAreaElement>
13
13
  * increment rows on value change
14
14
  */
15
15
  variableRows?: boolean;
16
+ /**
17
+ * expandable textarea
18
+ */
19
+ expandable?: boolean;
16
20
  }
17
- export declare const Textarea: ({ ref, value, name, invalid, readOnly, disabled, required, placeholder, autoFocus, rows, maxRows, variableRows, onChange, onEnterPressed, ...rest }: TextareaProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const Textarea: ({ ref, value, name, invalid, readOnly, disabled, required, placeholder, autoFocus, rows, maxRows, variableRows, expandable, onBlur, onFocus, onChange, onEnterPressed, ...rest }: TextareaProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare const FieldWrapper: ({ label, appendLabel, width, labelWidth, inline, info, disabled, required, children, listing, className, "data-inner": isInner, }: KeyValue) => import("react/jsx-runtime").JSX.Element;
1
+ export declare const FieldWrapper: ({ label, appendLabel, width, labelWidth, inline, info, disabled, required, children, listing, className, invalid, error, "data-inner": isInner, }: KeyValue) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- export declare const InputWrapper: ({ invalid, error, allowClear, showClear, decorateStart, decorateEnd, children, onClear, noOutline, noBorder, textarea, "data-inner": isInner, "data-open": isOpen, floatingExpand, wrapperRef, width, ...rest }: KeyValue) => import("react/jsx-runtime").JSX.Element;
1
+ export declare const InputWrapper: ({ invalid, error, allowClear, showClear, decorateStart, decorateEnd, decorateEndShowWhenEmpty, decorateEndHideWhenEmpty, children, onClear, noOutline, noBorder, actionButton, textarea, textareaExpandable, "data-inner": isInner, "data-open": isOpen, floatingExpand, wrapperRef, width, ...rest }: KeyValue) => import("react/jsx-runtime").JSX.Element;
@@ -18,7 +18,7 @@ type RangerConfig = {
18
18
  steps: number[];
19
19
  });
20
20
  export declare const useRanger: (opts: RangerConfig) => {
21
- trackElRef: import("react").RefObject<HTMLDivElement>;
21
+ trackElRef: import("react").RefObject<HTMLDivElement | null>;
22
22
  activeHandleIndex: number | undefined;
23
23
  ticks: {
24
24
  key: number;
@@ -33,7 +33,7 @@ export declare const useRanger: (opts: RangerConfig) => {
33
33
  value: number;
34
34
  active: boolean;
35
35
  props: {
36
- ref: import("react").RefObject<HTMLDivElement>;
36
+ ref: import("react").RefObject<HTMLDivElement | null>;
37
37
  onMouseDownCapture: (e: ME) => void;
38
38
  onTouchStartCapture: (e: TE) => void;
39
39
  } | {
@@ -13,5 +13,5 @@ type AutoCompleteProps = Omit<SelectProps<string>, "options" | "allowCreate" | "
13
13
  */
14
14
  onInput?: (query: string) => void;
15
15
  };
16
- export declare const AutoComplete: ({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, expandOnEdit, error, history, multiple, onChange, onSelect, onInput, onFocus, onBlur, onEnterPressed, ...rest }: AutoCompleteProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const AutoComplete: ({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, expandOnEdit, error, history, multiple, onChange, onSelect, onInput, onFocus, onBlur, onQuery, onEnterPressed, ...rest }: AutoCompleteProps) => import("react/jsx-runtime").JSX.Element;
17
17
  export {};
@@ -1,5 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { type RefProp } from "@react-fabric/core/dist/types/types";
2
+ import { type ReactElement } from "react";
3
3
  import { type FieldProps } from "../input/Field";
4
4
  export interface DualListProps<T> extends Omit<FieldProps, "children">, RefProp<HTMLInputElement> {
5
5
  /**
@@ -26,6 +26,10 @@ export interface DualListProps<T> extends Omit<FieldProps, "children">, RefProp<
26
26
  * value property name
27
27
  */
28
28
  valueProperty?: keyof T;
29
+ /**
30
+ * empty list display
31
+ */
32
+ emptyDisplay?: ReactElement;
29
33
  /**
30
34
  * item renderer
31
35
  */
@@ -35,4 +39,4 @@ export interface DualListProps<T> extends Omit<FieldProps, "children">, RefProp<
35
39
  */
36
40
  onChange?: (value?: string[]) => void;
37
41
  }
38
- export declare const DualList: <T extends unknown = string>({ ref, value, options, groupProperty, height, labelProperty, valueProperty, renderer, onChange, name, invalid, readOnly, disabled, placeholder, autoFocus, error, ...rest }: DualListProps<T>) => import("react/jsx-runtime").JSX.Element;
42
+ export declare const DualList: <T extends unknown = string>({ ref, value, options, emptyDisplay, groupProperty, height, labelProperty, valueProperty, renderer, onChange, name, invalid, readOnly, disabled, placeholder, autoFocus, error, ...rest }: DualListProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
1
  import { type SelectProps } from "../types";
2
- export declare const List: <T extends unknown = string>({ ref, name, value, readOnly, disabled, required, placeholder, autoFocus, options, height, groupProperty, labelProperty, valueProperty, multiple, allowCreate, createOption, matcher, renderer, onQuery, onChange, onSelect, onEnterPressed, invalid, error, allowClear, decorateStart, decorateEnd, "data-inner": isInner, "data-hide-selected": hideSelected, ...rest }: SelectProps<T> & {
2
+ export declare const List: <T extends unknown = string>({ ref, name, value, readOnly, disabled, required, placeholder, autoFocus, options, height, groupProperty, labelProperty, valueProperty, sortProperty, multiple, allowCreate, searchable, createOption, matcher, renderer, onQuery, onChange, onSelect, onEnterPressed, emptyDisplay, invalid, error, allowClear, decorateStart, decorateEnd, "data-inner": isInner, "data-hide-selected": hideSelected, ...rest }: Omit<SelectProps<T>, "defaultOpen" | "hideHandle"> & {
3
3
  height?: string | number;
4
4
  }) => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { type SelectProps } from "../types";
2
- export declare const Select: <T extends unknown = string>({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, error, options, groupProperty, labelProperty, valueProperty, multiple, searchable, allowCreate, createOption, matcher, renderer, onQuery, onChange, onSelect, onEnterPressed, ...rest }: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Select: <T extends unknown = string>({ ref, name, value, invalid, readOnly, disabled, required, placeholder, autoFocus, error, options, defaultOpen, hideHandle, groupProperty, labelProperty, valueProperty, sortProperty, multiple, searchable, allowCreate, emptyDisplay, createOption, matcher, renderer, onQuery, onChange, onSelect, onEnterPressed, ...rest }: SelectProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -10,14 +10,16 @@ interface State {
10
10
  query?: string;
11
11
  items: AnyObject[];
12
12
  }
13
- export declare const useSelect: ({ options, value, autoComplete, multiple, allowCreate, groupProperty, valueProperty, labelProperty, createOption, matcher, onQuery, onChange, onSelect, }: {
13
+ export declare const useSelect: ({ options, value, defaultOpen, autoComplete, multiple, allowCreate, groupProperty, valueProperty, labelProperty, sortProperty, createOption, matcher, onQuery, onChange, onSelect, }: {
14
14
  value?: AnyObject;
15
15
  options?: AnyObject[];
16
16
  multiple?: boolean;
17
+ defaultOpen?: boolean;
17
18
  allowCreate?: boolean;
18
19
  groupProperty?: AnyObject;
19
20
  valueProperty?: AnyObject;
20
21
  labelProperty?: AnyObject;
22
+ sortProperty?: AnyObject;
21
23
  autoComplete?: boolean;
22
24
  matcher?: (item: AnyObject, query: string) => boolean;
23
25
  createOption?: (query: string) => AnyObject;
@@ -25,20 +27,10 @@ export declare const useSelect: ({ options, value, autoComplete, multiple, allow
25
27
  onSelect?: (item: AnyObject) => void;
26
28
  onChange?: (value: AnyObject) => void;
27
29
  }) => {
28
- state: State | {
29
- value: any;
30
- activeIndex: null;
31
- selectedIndex: any;
32
- multiple: boolean;
33
- emptyValue: AnyObject;
34
- open: boolean;
35
- loading: boolean;
36
- query?: string | undefined;
37
- items: AnyObject[];
38
- };
39
- listRef: import("react").MutableRefObject<HTMLElement[]>;
40
- focusableRef: import("react").RefObject<HTMLElement>;
41
- listContentRef: import("react").MutableRefObject<any[]>;
30
+ state: State;
31
+ listRef: import("react").RefObject<HTMLElement[]>;
32
+ focusableRef: import("react").RefObject<HTMLElement | null>;
33
+ listContentRef: import("react").RefObject<any[]>;
42
34
  handleChange: (value?: AnyObject) => void;
43
35
  handleRemove: (index?: number) => void;
44
36
  handleQuery: (query: string) => void;
@@ -1,14 +1,14 @@
1
- /// <reference types="react" />
2
- import { type RefProp } from "@react-fabric/core/dist/types/types";
3
- export interface InputProps<V = string> {
1
+ import { type RefProp, type TestProps } from "@react-fabric/core/dist/types/types";
2
+ import { type ReactElement } from "react";
3
+ export interface InputProps<V = string> extends TestProps {
4
4
  /**
5
5
  * value
6
6
  */
7
- value?: V;
7
+ value?: V | null;
8
8
  /**
9
9
  * change handler
10
10
  */
11
- onChange?: (value?: V) => void;
11
+ onChange?: (value: V | null) => void;
12
12
  /**
13
13
  * on focus event handler
14
14
  */
@@ -45,10 +45,13 @@ export interface InputProps<V = string> {
45
45
  *
46
46
  */
47
47
  decorateEnd?: JSX.Element | string | number | boolean;
48
+ decorateEndShowWhenEmpty?: boolean;
49
+ decorateEndHideWhenEmpty?: boolean;
48
50
  /**
49
51
  * info label at bottom
50
52
  */
51
53
  info?: string;
54
+ monospace?: boolean;
52
55
  /**
53
56
  * required
54
57
  */
@@ -90,7 +93,15 @@ export interface InputProps<V = string> {
90
93
  */
91
94
  labelWidth?: string;
92
95
  }
93
- export interface BaseSelectProps<T> extends RefProp<HTMLInputElement>, Omit<InputProps, "value" | "onChange"> {
96
+ export interface BaseSelectProps<T extends AnyObject = string> {
97
+ /**
98
+ * open dropdown by default
99
+ */
100
+ defaultOpen?: boolean;
101
+ /**
102
+ * hide dropdown handle
103
+ */
104
+ hideHandle?: boolean;
94
105
  /**
95
106
  * list options
96
107
  */
@@ -107,6 +118,10 @@ export interface BaseSelectProps<T> extends RefProp<HTMLInputElement>, Omit<Inpu
107
118
  * value property name
108
119
  */
109
120
  valueProperty?: keyof T;
121
+ /**
122
+ * value property name
123
+ */
124
+ sortProperty?: keyof T | true;
110
125
  /**
111
126
  * searchable list
112
127
  */
@@ -115,6 +130,10 @@ export interface BaseSelectProps<T> extends RefProp<HTMLInputElement>, Omit<Inpu
115
130
  * allow create item
116
131
  */
117
132
  allowCreate?: boolean;
133
+ /**
134
+ * empty list display
135
+ */
136
+ emptyDisplay?: ReactElement;
118
137
  /**
119
138
  * create new item object
120
139
  */
@@ -132,7 +151,8 @@ export interface BaseSelectProps<T> extends RefProp<HTMLInputElement>, Omit<Inpu
132
151
  */
133
152
  matcher?: (option: T, query: string) => boolean;
134
153
  }
135
- export type SelectProps<T> = BaseSelectProps<T> & ({
154
+ type BaseSelectType<T> = BaseSelectProps<T> & RefProp<HTMLInputElement> & Omit<InputProps, "value" | "onChange">;
155
+ export type SelectProps<T> = BaseSelectType<T> & ({
136
156
  /**
137
157
  * is multiple selection
138
158
  */
@@ -167,3 +187,4 @@ export type SelectProps<T> = BaseSelectProps<T> & ({
167
187
  */
168
188
  onChange?: (value?: string[]) => void;
169
189
  });
190
+ export {};
@@ -1,59 +1,104 @@
1
- interface BaseSchemaDef {
1
+ import { type Elements } from "@react-fabric/core/dist/types/types";
2
+ import { type DateLike } from "@react-fabric/date";
3
+ export declare enum DATA_TYPES {
4
+ TEXT = "text",
5
+ COLOR = "color",
6
+ BOOL = "bool",
7
+ DATE = "date",
8
+ DATETIME = "datetime",
9
+ STRING = "string",
10
+ NUMBER = "number",
11
+ RANGE = "range",
12
+ FILE = "file",
13
+ AVATAR = "avatar",
14
+ SCHEMA = "schema"
15
+ }
16
+ export declare const SCHEMA_CUSTOM_LIST = "--CUSTOM--";
17
+ interface SingleValue {
18
+ multiple?: false;
19
+ minItems?: never;
20
+ maxItems?: never;
21
+ }
22
+ interface MultipleValue {
23
+ multiple: true;
24
+ minItems?: number;
25
+ maxItems?: number;
26
+ }
27
+ export type ValueType = SingleValue | MultipleValue;
28
+ interface BaseSchema {
2
29
  id: string;
3
30
  label: string;
4
31
  datatype: string;
5
32
  required?: boolean;
6
- multiple?: boolean;
7
- defaultValue?: AnyObject;
8
33
  }
9
- interface SchemaDef extends BaseSchemaDef {
10
- datatype: "text" | "color";
34
+ export interface DefaultSchema extends BaseSchema {
35
+ datatype: DATA_TYPES.TEXT | DATA_TYPES.COLOR;
11
36
  }
12
- interface BooleanSchema extends BaseSchemaDef {
13
- datatype: "boolean";
14
- defaultValue?: boolean;
37
+ export interface BooleanSchema extends BaseSchema {
38
+ datatype: DATA_TYPES.BOOL;
15
39
  }
16
- interface StringSchema extends BaseSchemaDef {
17
- datatype: "string";
18
- options?: string[];
40
+ export interface StringSchema extends BaseSchema {
41
+ datatype: DATA_TYPES.STRING;
19
42
  regex?: string;
20
- identifierType?: string;
43
+ options?: string[];
44
+ optionList?: string;
45
+ allowCustom?: boolean;
21
46
  }
22
- interface RangeSchema extends BaseSchemaDef {
23
- datatype: "range";
47
+ export interface RangeSchema extends BaseSchema {
48
+ datatype: DATA_TYPES.RANGE;
24
49
  min?: number;
25
50
  max?: number;
26
51
  step?: number;
27
- defaultValue?: [number, number];
28
52
  }
29
- interface NumberSchema extends BaseSchemaDef {
30
- datatype: "number";
31
- min?: number;
32
- max?: number;
33
- step?: number;
34
- defaultValue?: number;
53
+ export interface DateSchema extends BaseSchema {
54
+ datatype: DATA_TYPES.DATE | DATA_TYPES.DATETIME;
55
+ min?: DateLike;
56
+ max?: DateLike;
35
57
  }
36
- interface DecimalSchema extends BaseSchemaDef {
37
- datatype: "decimal";
58
+ export interface NumberSchema extends BaseSchema {
59
+ datatype: DATA_TYPES.NUMBER;
38
60
  min?: number;
39
61
  max?: number;
40
62
  step?: number;
41
- defaultValue?: number;
42
63
  }
43
- export interface FileSchema extends BaseSchemaDef {
44
- datatype: "file";
64
+ export interface FileSchema extends BaseSchema {
65
+ datatype: DATA_TYPES.FILE;
45
66
  accept?: string;
46
67
  }
47
- export interface AvatarSchema extends BaseSchemaDef {
48
- datatype: "avatar";
68
+ export interface AvatarSchema extends BaseSchema {
69
+ datatype: DATA_TYPES.AVATAR;
49
70
  multiple?: false;
50
71
  }
51
- export type SchemaType = SchemaDef | BooleanSchema | StringSchema | RangeSchema | NumberSchema | DecimalSchema | FileSchema | AvatarSchema;
52
- export interface ChildSchema extends BaseSchemaDef {
53
- datatype: "schema";
72
+ export type SchemaType = (DefaultSchema & ValueType) | (BooleanSchema & ValueType) | (StringSchema & ValueType) | (RangeSchema & ValueType) | (DateSchema & ValueType) | (NumberSchema & ValueType) | (FileSchema & ValueType) | (AvatarSchema & ValueType);
73
+ export interface ChildSchema extends BaseSchema {
74
+ datatype: DATA_TYPES.SCHEMA;
54
75
  inline?: boolean;
55
76
  schema: SchemaType[];
56
- defaultValue?: never;
57
77
  }
58
- export type FormSchema = SchemaType | ChildSchema;
78
+ export type SchemaDef = SchemaType | (ChildSchema & ValueType);
79
+ export type FormSchema = SchemaDef[];
80
+ export interface SchemaEditorProps {
81
+ /**
82
+ * default form schema
83
+ */
84
+ schemaDef: FormSchema;
85
+ /**
86
+ * is dynamic schema (allow add/remove)
87
+ */
88
+ dynamic?: boolean;
89
+ /**
90
+ * acceptable list of data types
91
+ */
92
+ acceptableTypes?: DATA_TYPES[];
93
+ /**
94
+ * available option lists in application
95
+ */
96
+ optionLists?: string[];
97
+ /**
98
+ * footer actions
99
+ */
100
+ children?: Elements<JSX.Element> | Array<Elements<JSX.Element>>;
101
+ onChange?: (schema: FormSchema) => void;
102
+ onSubmit?: (schema: FormSchema) => void;
103
+ }
59
104
  export {};
@@ -1,6 +1,6 @@
1
1
  import { type KeyboardEvent, type MouseEvent } from "react";
2
2
  /** ***************** common handler for enter press *******************/
3
- export declare const handleEnter: (callback?: (e: KeyboardEvent) => void, { stopPropagation, preventDefault, }?: {
3
+ export declare const useHandleEnter: (callback?: (e: KeyboardEvent) => void, { stopPropagation, preventDefault, }?: {
4
4
  stopPropagation?: boolean;
5
5
  preventDefault?: boolean;
6
6
  }) => (e: KeyboardEvent) => false | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-fabric/form",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.0-beta.51",
4
4
  "description": "RUF: Form package",
5
5
  "author": "Adarsh Pastakia <adarshpastakia@outlook.com>",
6
6
  "license": "MIT",
@@ -11,9 +11,11 @@
11
11
  "types": "dist/types/index.d.ts",
12
12
  "directories": {
13
13
  "src": "src",
14
+ "styles": "css",
14
15
  "test": "tests"
15
16
  },
16
17
  "files": [
18
+ "css",
17
19
  "src",
18
20
  "dist"
19
21
  ],
@@ -33,24 +35,25 @@
33
35
  "watch": "npm-run-all -p watch:rollup watch:dts"
34
36
  },
35
37
  "dependencies": {
36
- "@dnd-kit/core": "^6.1.0",
37
- "@dnd-kit/modifiers": "^7.0.0",
38
- "@dnd-kit/sortable": "^8.0.0",
38
+ "@dnd-kit/core": "^6.3.1",
39
+ "@dnd-kit/modifiers": "^9.0.0",
40
+ "@dnd-kit/sortable": "^10.0.0",
39
41
  "@dnd-kit/utilities": "^3.2.2",
40
- "@floating-ui/react": "0.26.24",
42
+ "@floating-ui/react": "^0.27.9",
41
43
  "@hookform/resolvers": "^3.9.0",
42
- "@react-fabric/core": "^1.0.0-beta.5",
43
- "@react-fabric/utilities": "^1.0.0-beta.5",
44
+ "@react-fabric/core": "^1.0.0-beta.51",
45
+ "@react-fabric/date": "^1.0.0-beta.51",
46
+ "@react-fabric/utilities": "^1.0.0-beta.50",
44
47
  "classnames": "^2.5.1",
45
48
  "color": "^4.2.3",
46
49
  "react-color": "^2.19.3",
47
50
  "react-hook-form": "^7.52.1"
48
51
  },
49
52
  "peerDependencies": {
50
- "i18next": "^23.15.1",
51
- "react": ">=18.0.0 <20.0.0",
52
- "react-dom": ">=18.0.0 <20.0.0",
53
- "react-i18next": "^15.0.2"
53
+ "i18next": "^25.2.1",
54
+ "react": "^19.0.0",
55
+ "react-dom": "^19.0.0",
56
+ "react-i18next": "^15.5.2"
54
57
  },
55
58
  "devDependencies": {
56
59
  "@types/axios": "^0.14.0",
@@ -60,5 +63,5 @@
60
63
  "node": ">=18.12.0",
61
64
  "npm": ">=8.19.0"
62
65
  },
63
- "gitHead": "7d4a7ed1ea9890652826bef58d01c31280d761c8"
66
+ "gitHead": "a1b04de4663045f82992bff2aef8db26608eac74"
64
67
  }