@react-fabric/form 1.0.0-beta.9 → 1.0.1

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 (215) hide show
  1. package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
  2. package/css/_colorPicker.css +95 -0
  3. package/{src/internal/Field.module.css → css/_field.css} +94 -33
  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 +107 -78
  7. package/dist/cjs/builder/FormField.js +60 -39
  8. package/dist/cjs/builder/SchemaEditor.js +72 -0
  9. package/dist/cjs/builder/components/AddSchemaFields.js +64 -0
  10. package/dist/cjs/builder/components/SchemaArrayForm.js +146 -0
  11. package/dist/cjs/builder/components/SchemaField.js +423 -0
  12. package/dist/cjs/form/Controller.js +66 -19
  13. package/dist/cjs/form/Form.js +97 -39
  14. package/dist/cjs/form/useForm.js +32 -0
  15. package/dist/cjs/hooks/useFileUploader.js +74 -45
  16. package/dist/cjs/hooks/useFormBuilder.js +85 -31
  17. package/dist/cjs/i18n/{ar.json.js → ar/form.json.js} +5 -4
  18. package/dist/cjs/i18n/{en.json.js → en/form.json.js} +5 -5
  19. package/dist/cjs/i18n/index.js +4 -4
  20. package/dist/cjs/index.js +41 -2
  21. package/dist/cjs/input/ArrayInput.js +259 -135
  22. package/dist/cjs/input/AvatarInput.js +99 -63
  23. package/dist/cjs/input/Checkbox.js +24 -25
  24. package/dist/cjs/input/ColorInput.js +138 -81
  25. package/dist/cjs/input/ColorPicker.js +78 -95
  26. package/dist/cjs/input/DateInput.js +192 -0
  27. package/dist/cjs/input/Field.js +21 -20
  28. package/dist/cjs/input/File.js +85 -80
  29. package/dist/cjs/input/Hidden.js +27 -13
  30. package/dist/cjs/input/Input.js +49 -48
  31. package/dist/cjs/input/Number.js +46 -44
  32. package/dist/cjs/input/Password.js +51 -49
  33. package/dist/cjs/input/Radio.js +26 -16
  34. package/dist/cjs/input/RadioGroup.js +26 -11
  35. package/dist/cjs/input/{Range.js → RangeSlider.js} +61 -66
  36. package/dist/cjs/input/Search.js +58 -64
  37. package/dist/cjs/input/Slider.js +57 -66
  38. package/dist/cjs/input/Switch.js +29 -27
  39. package/dist/cjs/input/Textarea.js +65 -53
  40. package/dist/cjs/internal/ErrorIcon.js +9 -9
  41. package/dist/cjs/internal/FieldWrapper.js +23 -13
  42. package/dist/cjs/internal/InputWrapper.js +85 -87
  43. package/dist/cjs/ranger/index.js +7 -7
  44. package/dist/cjs/ranger/utils.js +9 -4
  45. package/dist/cjs/select/AutoComplete.js +93 -76
  46. package/dist/cjs/select/DualList.js +235 -154
  47. package/dist/cjs/select/List.js +122 -89
  48. package/dist/cjs/select/Options.js +58 -54
  49. package/dist/cjs/select/Select.js +119 -89
  50. package/dist/cjs/select/helpers.js +5 -5
  51. package/dist/cjs/select/useSelect.js +83 -58
  52. package/dist/cjs/types/schema.js +43 -0
  53. package/dist/cjs/utils/eventHandlers.js +16 -6
  54. package/dist/cjs/utils/getColor.js +6 -6
  55. package/dist/cjs/utils/getProps.js +49 -0
  56. package/dist/esm/builder/FileField.js +109 -80
  57. package/dist/esm/builder/FormField.js +60 -39
  58. package/dist/esm/builder/SchemaEditor.js +72 -0
  59. package/dist/esm/builder/components/AddSchemaFields.js +64 -0
  60. package/dist/esm/builder/components/SchemaArrayForm.js +146 -0
  61. package/dist/esm/builder/components/SchemaField.js +423 -0
  62. package/dist/esm/form/Controller.js +66 -19
  63. package/dist/esm/form/Form.js +97 -39
  64. package/dist/esm/form/useForm.js +32 -0
  65. package/dist/esm/hooks/useFileUploader.js +75 -46
  66. package/dist/esm/hooks/useFormBuilder.js +84 -30
  67. package/dist/esm/i18n/{ar.json.js → ar/form.json.js} +5 -4
  68. package/dist/esm/i18n/{en.json.js → en/form.json.js} +5 -5
  69. package/dist/esm/i18n/index.js +2 -2
  70. package/dist/esm/index.js +36 -1
  71. package/dist/esm/input/ArrayInput.js +260 -136
  72. package/dist/esm/input/AvatarInput.js +99 -63
  73. package/dist/esm/input/Checkbox.js +26 -27
  74. package/dist/esm/input/ColorInput.js +141 -84
  75. package/dist/esm/input/ColorPicker.js +80 -97
  76. package/dist/esm/input/DateInput.js +192 -0
  77. package/dist/esm/input/Field.js +21 -20
  78. package/dist/esm/input/File.js +89 -84
  79. package/dist/esm/input/Hidden.js +28 -14
  80. package/dist/esm/input/Input.js +51 -50
  81. package/dist/esm/input/Number.js +48 -46
  82. package/dist/esm/input/Password.js +54 -52
  83. package/dist/esm/input/Radio.js +27 -17
  84. package/dist/esm/input/RadioGroup.js +27 -12
  85. package/dist/esm/input/{Range.js → RangeSlider.js} +62 -67
  86. package/dist/esm/input/Search.js +61 -67
  87. package/dist/esm/input/Slider.js +58 -67
  88. package/dist/esm/input/Switch.js +31 -29
  89. package/dist/esm/input/Textarea.js +67 -55
  90. package/dist/esm/internal/ErrorIcon.js +11 -11
  91. package/dist/esm/internal/FieldWrapper.js +23 -13
  92. package/dist/esm/internal/InputWrapper.js +88 -90
  93. package/dist/esm/ranger/index.js +7 -7
  94. package/dist/esm/ranger/utils.js +9 -4
  95. package/dist/esm/select/AutoComplete.js +95 -78
  96. package/dist/esm/select/DualList.js +233 -152
  97. package/dist/esm/select/List.js +125 -92
  98. package/dist/esm/select/Options.js +58 -54
  99. package/dist/esm/select/Select.js +122 -92
  100. package/dist/esm/select/helpers.js +5 -5
  101. package/dist/esm/select/useSelect.js +84 -59
  102. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  103. package/dist/esm/utils/eventHandlers.js +16 -6
  104. package/dist/esm/utils/getColor.js +6 -6
  105. package/dist/esm/utils/getProps.js +49 -0
  106. package/dist/types/builder/FileField.d.ts +7 -4
  107. package/dist/types/builder/FormField.d.ts +4 -2
  108. package/dist/types/builder/SchemaEditor.d.ts +6 -0
  109. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  110. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  111. package/dist/types/builder/components/SchemaField.d.ts +12 -0
  112. package/dist/types/form/Controller.d.ts +45 -3
  113. package/dist/types/form/Form.d.ts +38 -7
  114. package/dist/types/form/useForm.d.ts +6 -0
  115. package/dist/types/hooks/useFileUploader.d.ts +24 -3
  116. package/dist/types/hooks/useFormBuilder.d.ts +41 -3
  117. package/dist/types/index.d.ts +32 -2
  118. package/dist/types/input/ArrayInput.d.ts +68 -13
  119. package/dist/types/input/AvatarInput.d.ts +23 -6
  120. package/dist/types/input/Checkbox.d.ts +12 -10
  121. package/dist/types/input/ColorInput.d.ts +15 -5
  122. package/dist/types/input/ColorPicker.d.ts +10 -2
  123. package/dist/types/input/DateInput.d.ts +21 -0
  124. package/dist/types/input/Field.d.ts +9 -36
  125. package/dist/types/input/File.d.ts +16 -4
  126. package/dist/types/input/Hidden.d.ts +7 -6
  127. package/dist/types/input/Input.d.ts +11 -4
  128. package/dist/types/input/Number.d.ts +9 -4
  129. package/dist/types/input/Password.d.ts +9 -4
  130. package/dist/types/input/Radio.d.ts +9 -4
  131. package/dist/types/input/RadioGroup.d.ts +14 -6
  132. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +11 -6
  133. package/dist/types/input/Search.d.ts +14 -4
  134. package/dist/types/input/Slider.d.ts +9 -6
  135. package/dist/types/input/Switch.d.ts +13 -8
  136. package/dist/types/input/Textarea.d.ts +15 -4
  137. package/dist/types/internal/ErrorIcon.d.ts +4 -1
  138. package/dist/types/internal/FieldWrapper.d.ts +10 -1
  139. package/dist/types/internal/InputWrapper.d.ts +19 -1
  140. package/dist/types/ranger/index.d.ts +7 -3
  141. package/dist/types/ranger/utils.d.ts +2 -2
  142. package/dist/types/select/AutoComplete.d.ts +7 -2
  143. package/dist/types/select/DualList.d.ts +11 -37
  144. package/dist/types/select/List.d.ts +7 -2
  145. package/dist/types/select/Options.d.ts +8 -7
  146. package/dist/types/select/Select.d.ts +7 -2
  147. package/dist/types/select/helpers.d.ts +2 -2
  148. package/dist/types/select/useSelect.d.ts +10 -28
  149. package/dist/types/types/index.d.ts +73 -39
  150. package/dist/types/types/schema.d.ts +78 -32
  151. package/dist/types/utils/eventHandlers.d.ts +4 -4
  152. package/dist/types/utils/getColor.d.ts +4 -4
  153. package/dist/types/utils/getProps.d.ts +26 -0
  154. package/dist/types/utils/index.d.ts +1 -0
  155. package/package.json +25 -25
  156. package/src/builder/FileField.tsx +73 -56
  157. package/src/builder/FormField.tsx +66 -58
  158. package/src/builder/SchemaEditor.tsx +78 -0
  159. package/src/builder/components/AddSchemaFields.tsx +64 -0
  160. package/src/builder/components/SchemaArrayForm.tsx +146 -0
  161. package/src/builder/components/SchemaField.tsx +405 -0
  162. package/src/form/Controller.tsx +61 -24
  163. package/src/form/Form.tsx +74 -50
  164. package/src/form/useForm.ts +53 -0
  165. package/src/hooks/useFileUploader.ts +115 -84
  166. package/src/hooks/useFormBuilder.tsx +80 -41
  167. package/src/i18n/{ar.json → ar/form.json} +5 -4
  168. package/src/i18n/{en.json → en/form.json} +5 -5
  169. package/src/i18n/index.ts +2 -2
  170. package/src/index.ts +34 -20
  171. package/src/input/ArrayInput.tsx +255 -173
  172. package/src/input/AvatarInput.tsx +82 -39
  173. package/src/input/Checkbox.tsx +30 -54
  174. package/src/input/ColorInput.tsx +146 -105
  175. package/src/input/ColorPicker.tsx +76 -102
  176. package/src/input/DateInput.tsx +225 -0
  177. package/src/input/Field.tsx +23 -65
  178. package/src/input/File.tsx +76 -98
  179. package/src/input/Hidden.tsx +36 -24
  180. package/src/input/Input.tsx +55 -53
  181. package/src/input/Number.tsx +49 -54
  182. package/src/input/Password.tsx +61 -66
  183. package/src/input/Radio.tsx +28 -37
  184. package/src/input/RadioGroup.tsx +30 -25
  185. package/src/input/{Range.tsx → RangeSlider.tsx} +81 -109
  186. package/src/input/Search.tsx +64 -77
  187. package/src/input/Slider.tsx +80 -109
  188. package/src/input/Switch.tsx +39 -53
  189. package/src/input/Textarea.tsx +72 -59
  190. package/src/internal/ErrorIcon.tsx +22 -21
  191. package/src/internal/FieldWrapper.tsx +33 -23
  192. package/src/internal/InputWrapper.tsx +132 -143
  193. package/src/ranger/index.tsx +37 -117
  194. package/src/ranger/utils.ts +12 -11
  195. package/src/select/AutoComplete.tsx +113 -123
  196. package/src/select/DualList.tsx +218 -204
  197. package/src/select/List.tsx +130 -97
  198. package/src/select/Options.tsx +59 -57
  199. package/src/select/Select.tsx +148 -122
  200. package/src/select/helpers.ts +13 -8
  201. package/src/select/useSelect.tsx +110 -127
  202. package/src/types/index.ts +76 -45
  203. package/src/types/schema.ts +97 -40
  204. package/src/utils/eventHandlers.ts +24 -26
  205. package/src/utils/getColor.ts +9 -8
  206. package/src/utils/getProps.ts +47 -0
  207. package/src/utils/index.ts +1 -0
  208. package/dist/cjs/input/ArrayInput.module.css +0 -1
  209. package/dist/cjs/input/ColorPicker.module.css +0 -1
  210. package/dist/cjs/input/File.module.css +0 -1
  211. package/dist/cjs/internal/Field.module.css +0 -1
  212. package/dist/esm/input/ArrayInput.module.css +0 -1
  213. package/dist/esm/input/ColorPicker.module.css +0 -1
  214. package/dist/esm/input/File.module.css +0 -1
  215. package/dist/esm/internal/Field.module.css +0 -1
@@ -1,122 +1,105 @@
1
1
  'use strict';
2
2
 
3
3
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
4
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var Color = require('color');
4
+ var core = require('@react-fabric/core');
5
+ var chroma = require('chroma-js');
6
6
  var react = require('react');
7
7
  var reactColor = require('react-color');
8
- var ColorPicker_module = require('./ColorPicker.module.css');
9
8
  var jsxRuntime = require('react/jsx-runtime');
10
9
 
11
10
  var _excluded = ["a"],
12
11
  _excluded2 = ["a"];
13
- var DEFAULT_SWATCHES = [Color("#d7323a").mix(Color("#171a1c"), 0.5).hex(), Color("#ff781c").mix(Color("#171a1c"), 0.5).hex(), Color("#f7b731").mix(Color("#171a1c"), 0.5).hex(), Color("#88ab1b").mix(Color("#171a1c"), 0.5).hex(), Color("#22aa85").mix(Color("#171a1c"), 0.5).hex(), Color("#399bec").mix(Color("#171a1c"), 0.5).hex(), Color("#4862c8").mix(Color("#171a1c"), 0.5).hex(), Color("#aa66cf").mix(Color("#171a1c"), 0.5).hex(), Color("#f43f7b").mix(Color("#171a1c"), 0.5).hex(), Color("#a37f4f").mix(Color("#171a1c"), 0.5).hex(), "#d7323a", "#ff781c", "#f7b731", "#88ab1b", "#22aa85", "#399bec", "#4862c8", "#aa66cf", "#f43f7b", "#a37f4f", Color("#d7323a").mix(Color("#f1f3f4"), 0.5).hex(), Color("#ff781c").mix(Color("#f1f3f4"), 0.5).hex(), Color("#f7b731").mix(Color("#f1f3f4"), 0.5).hex(), Color("#88ab1b").mix(Color("#f1f3f4"), 0.5).hex(), Color("#22aa85").mix(Color("#f1f3f4"), 0.5).hex(), Color("#399bec").mix(Color("#f1f3f4"), 0.5).hex(), Color("#4862c8").mix(Color("#f1f3f4"), 0.5).hex(), Color("#aa66cf").mix(Color("#f1f3f4"), 0.5).hex(), Color("#f43f7b").mix(Color("#f1f3f4"), 0.5).hex(), Color("#a37f4f").mix(Color("#f1f3f4"), 0.5).hex(), "#171a1c", "#2d3439", "#444e55", "#5b6971", "#71838e", "#86959e", "#9ca8b0", "#b8c1c6", "#d5dadd", "#f1f3f4"];
14
-
15
- // eslint-disable-next-line react/display-name
16
- var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
12
+ var DEFAULT_SWATCHES = [chroma.mix("#d7323a", "#171a1c", 0.5, "lab").hex(), chroma.mix("#ff781c", "#171a1c", 0.5, "lab").hex(), chroma.mix("#f7b731", "#171a1c", 0.5, "lab").hex(), chroma.mix("#88ab1b", "#171a1c", 0.5, "lab").hex(), chroma.mix("#22aa85", "#171a1c", 0.5, "lab").hex(), chroma.mix("#399bec", "#171a1c", 0.5, "lab").hex(), chroma.mix("#4862c8", "#171a1c", 0.5, "lab").hex(), chroma.mix("#aa66cf", "#171a1c", 0.5, "lab").hex(), chroma.mix("#f43f7b", "#171a1c", 0.5, "lab").hex(), chroma.mix("#a37f4f", "#171a1c", 0.5, "lab").hex(), "#d7323a", "#ff781c", "#f7b731", "#88ab1b", "#22aa85", "#399bec", "#4862c8", "#aa66cf", "#f43f7b", "#a37f4f", chroma.mix("#d7323a", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#ff781c", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#f7b731", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#88ab1b", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#22aa85", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#399bec", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#4862c8", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#aa66cf", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#f43f7b", "#f1f3f4", 0.5, "lab").hex(), chroma.mix("#a37f4f", "#f1f3f4", 0.5, "lab").hex(), "#171a1c", "#2d3439", "#444e55", "#5b6971", "#71838e", "#86959e", "#9ca8b0", "#b8c1c6", "#d5dadd", "#f1f3f4"];
13
+ var ColorPickerComponent = function ColorPickerComponent(_ref) {
17
14
  var value = _ref.value,
18
15
  onChange = _ref.onChange,
19
16
  hideAlpha = _ref.hideAlpha,
20
17
  _ref$defaultColor = _ref.defaultColor,
21
18
  defaultColor = _ref$defaultColor === void 0 ? "#fff" : _ref$defaultColor,
22
19
  _ref$swatches = _ref.swatches,
23
- swatches = _ref$swatches === void 0 ? DEFAULT_SWATCHES : _ref$swatches;
24
- var _useState = react.useState(""),
25
- _useState2 = _slicedToArray(_useState, 2),
26
- actualValue = _useState2[0],
27
- setActualValue = _useState2[1];
28
- var deferred = react.useDeferredValue(value !== null && value !== void 0 ? value : defaultColor);
29
- react.useEffect(function () {
30
- setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
31
- }, [deferred]);
20
+ swatches = _ref$swatches === void 0 ? DEFAULT_SWATCHES : _ref$swatches,
21
+ _ref$picker = _ref.picker,
22
+ picker = _ref$picker === void 0 ? "default" : _ref$picker;
23
+ var _useControlledValue = core.useControlledValue(value, defaultColor),
24
+ currentValue = _useControlledValue.currentValue,
25
+ updateValue = _useControlledValue.updateValue;
32
26
  var handleChange = react.useCallback(function (e) {
33
- setActualValue(e !== null && e !== void 0 ? e : defaultColor);
34
- onChange != null && react.startTransition(function () {
27
+ updateValue(e !== null && e !== void 0 ? e : defaultColor);
28
+ if (onChange) react.startTransition(function () {
35
29
  return onChange(e);
36
30
  });
37
- }, [onChange]);
38
- return /*#__PURE__*/jsxRuntime.jsx(reactColor.SketchPicker, {
39
- width: "16rem",
40
- className: ColorPicker_module.colorPicker,
41
- styles: {
42
- "default": {
43
- hue: {
44
- borderRadius: "99px",
45
- boxShadow: "0 0 1px 1px var(--color-shadow)"
46
- },
47
- alpha: {
48
- height: "1rem",
49
- borderRadius: "99px",
50
- backgroundColor: "var(--fabric-bg)",
51
- boxShadow: "0 0 1px 1px var(--color-shadow)"
52
- },
53
- color: {
54
- boxShadow: "0 0 1px 1px var(--color-shadow)"
55
- },
56
- saturation: {
57
- boxShadow: "0 0 1px 1px var(--color-shadow)"
58
- },
59
- activeColor: {
60
- boxShadow: "0 0 1px 1px var(--color-shadow)"
61
- },
62
- picker: {
63
- backgroundColor: "var(--fabric-bg)",
64
- boxShadow: "0 0 0 1px var(--color-shadow), 0 0 8px var(--fabric-shadow)"
65
- },
66
- Alpha: {
31
+ }, [defaultColor, onChange, updateValue]);
32
+ var E = picker === "swatches" ? reactColor.BlockPicker : reactColor.SketchPicker;
33
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
34
+ role: "none",
35
+ className: "fabric-colorPicker-container"
36
+ // prevent default on mouse down to avoid selection issues
37
+ ,
38
+ onMouseDown: function onMouseDown(e) {
39
+ return e.preventDefault();
40
+ },
41
+ style: {
42
+ "--color-selected": value
43
+ },
44
+ children: /*#__PURE__*/jsxRuntime.jsx(E, {
45
+ width: "16rem",
46
+ className: "fabric-colorPicker",
47
+ styles: {
48
+ "default": {
49
+ hue: {
50
+ boxShadow: "0 0 1px 1px var(--color-shadow)"
51
+ },
67
52
  alpha: {
68
- paddingRight: "calc(1rem - 2px)"
53
+ backgroundColor: "var(--fabric-bg)",
54
+ boxShadow: "0 0 1px 1px var(--color-shadow)"
69
55
  },
70
- slider: {
71
- width: "calc(1rem - 2px)",
72
- borderRadius: "99px",
73
- height: "calc(1rem - 2px)",
74
- transform: "none"
75
- }
76
- },
77
- Hue: {
78
- hue: {
79
- paddingRight: "calc(1rem - 2px)"
56
+ color: {
57
+ boxShadow: "0 0 1px 1px var(--color-shadow)"
80
58
  },
81
- slider: {
82
- width: "calc(1rem - 2px)",
83
- borderRadius: "99px",
84
- height: "calc(1rem - 2px)",
85
- transform: "none"
86
- }
87
- },
88
- Saturation: {
89
- circle: {
90
- width: "0.5rem",
91
- borderRadius: "99px",
92
- height: "0.5rem",
93
- transform: "translate(-0.25rem, -0.25rem)"
59
+ saturation: {
60
+ boxShadow: "0 0 1px 1px var(--color-shadow)"
61
+ },
62
+ activeColor: {
63
+ boxShadow: "0 0 1px 1px var(--color-shadow)"
64
+ },
65
+ picker: {
66
+ backgroundColor: "var(--fabric-bg)",
67
+ boxShadow: "0 0 0 1px var(--color-shadow), 0 0 8px var(--fabric-shadow)"
68
+ },
69
+ checkboard: {
70
+ white: "transparent",
71
+ black: "red"
94
72
  }
95
- },
96
- checkboard: {
97
- white: "transparent",
98
- black: "red"
99
73
  }
74
+ },
75
+ color: currentValue,
76
+ colors: swatches,
77
+ presetColors: swatches,
78
+ disableAlpha: hideAlpha,
79
+ onChange: function onChange(_ref2) {
80
+ var _ref2$rgb = _ref2.rgb,
81
+ _ref2$rgb$a = _ref2$rgb.a,
82
+ a = _ref2$rgb$a === void 0 ? 1 : _ref2$rgb$a,
83
+ rgb = _objectWithoutProperties(_ref2$rgb, _excluded);
84
+ return updateValue(chroma(rgb).alpha(a).hex());
85
+ },
86
+ onChangeComplete: function onChangeComplete(_ref3) {
87
+ var _ref3$rgb = _ref3.rgb,
88
+ _ref3$rgb$a = _ref3$rgb.a,
89
+ a = _ref3$rgb$a === void 0 ? 1 : _ref3$rgb$a,
90
+ rgb = _objectWithoutProperties(_ref3$rgb, _excluded2);
91
+ return handleChange(chroma(rgb).alpha(a).hex());
100
92
  }
101
- },
102
- color: actualValue,
103
- presetColors: swatches,
104
- disableAlpha: hideAlpha,
105
- onChange: function onChange(_ref2) {
106
- var _ref2$rgb = _ref2.rgb,
107
- _ref2$rgb$a = _ref2$rgb.a,
108
- a = _ref2$rgb$a === void 0 ? 1 : _ref2$rgb$a,
109
- rgb = _objectWithoutProperties(_ref2$rgb, _excluded);
110
- return setActualValue(Color(rgb).alpha(a)[a < 1 ? "hexa" : "hex"]());
111
- },
112
- onChangeComplete: function onChangeComplete(_ref3) {
113
- var _ref3$rgb = _ref3.rgb,
114
- _ref3$rgb$a = _ref3$rgb.a,
115
- a = _ref3$rgb$a === void 0 ? 1 : _ref3$rgb$a,
116
- rgb = _objectWithoutProperties(_ref3$rgb, _excluded2);
117
- return handleChange(Color(rgb).alpha(a)[a < 1 ? "hexa" : "hex"]());
118
- }
93
+ })
119
94
  });
120
- });
95
+ };
96
+
97
+ /**
98
+ * ColorPicker component allows users to select a color using a color picker UI.
99
+ * It supports swatches, alpha transparency, and custom styles.
100
+ * The component uses the `react-color` library for the color picker functionality.
101
+ */
102
+ var ColorPicker = /*#__PURE__*/react.memo(ColorPickerComponent);
103
+ ColorPicker.displayName = "ColorPicker";
121
104
 
122
105
  exports.ColorPicker = ColorPicker;
@@ -0,0 +1,192 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var react$1 = require('@floating-ui/react');
6
+ var core = require('@react-fabric/core');
7
+ var date = require('@react-fabric/date');
8
+ var utilities = require('@react-fabric/utilities');
9
+ var react = require('react');
10
+ var InputWrapper = require('../internal/InputWrapper.js');
11
+ var eventHandlers = require('../utils/eventHandlers.js');
12
+ var getProps = require('../utils/getProps.js');
13
+ var jsxRuntime = require('react/jsx-runtime');
14
+
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ /**
18
+ * Date input component that allows users to select a date or datetime.
19
+ * It uses the Floating UI library for positioning the date picker.
20
+ * It also provides a button to clear the selected date.
21
+ * The component supports both date and datetime types, with appropriate formatting.
22
+ */
23
+ function DateInput(props) {
24
+ var ref = props.ref,
25
+ name = props.name,
26
+ value = props.value,
27
+ invalid = props.invalid,
28
+ readOnly = props.readOnly,
29
+ disabled = props.disabled,
30
+ placeholder = props.placeholder,
31
+ defaultValue = props.defaultValue,
32
+ autoFocus = props.autoFocus,
33
+ error = props.error,
34
+ _props$type = props.type,
35
+ type = _props$type === void 0 ? "date" : _props$type,
36
+ onBlur = props.onBlur,
37
+ onFocus = props.onFocus,
38
+ onChange = props.onChange,
39
+ onEnterPressed = props.onEnterPressed,
40
+ allowClear = props.allowClear,
41
+ min = props.min,
42
+ max = props.max;
43
+ var id = react.useId();
44
+ var _useControlledValue = core.useControlledValue(value, defaultValue),
45
+ currentValue = _useControlledValue.currentValue,
46
+ updateValue = _useControlledValue.updateValue;
47
+ var _useState = react.useState(""),
48
+ _useState2 = _slicedToArray(_useState, 2),
49
+ inputValue = _useState2[0],
50
+ setInputValue = _useState2[1];
51
+ var inputFormat = react.useMemo(function () {
52
+ return type === "datetime" ? "yyyy-MM-dd HH:mm" : "yyyy-MM-dd";
53
+ }, [type]);
54
+ react.useEffect(function () {
55
+ // eslint-disable-next-line @eslint-react/set-state-in-effect
56
+ setInputValue(currentValue ? date.DateUtil.format(currentValue, inputFormat) : "");
57
+ }, [currentValue, inputFormat]);
58
+ var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
59
+ var handleChange = react.useCallback(function (e) {
60
+ var _e$currentTarget$valu;
61
+ var value = (_e$currentTarget$valu = e === null || e === void 0 ? void 0 : e.currentTarget.value) !== null && _e$currentTarget$valu !== void 0 ? _e$currentTarget$valu : defaultValue;
62
+ if (value) {
63
+ var _parsed$toISOString;
64
+ var parsed = date.DateUtil.parseDate(value);
65
+ updateValue(parsed === null || parsed === void 0 || (_parsed$toISOString = parsed.toISOString) === null || _parsed$toISOString === void 0 ? void 0 : _parsed$toISOString.call(parsed));
66
+ setInputValue(date.DateUtil.format(parsed, inputFormat));
67
+ if (onChange) react.startTransition(function () {
68
+ var _parsed$toISOString2;
69
+ return onChange(parsed === null || parsed === void 0 || (_parsed$toISOString2 = parsed.toISOString) === null || _parsed$toISOString2 === void 0 ? void 0 : _parsed$toISOString2.call(parsed));
70
+ });
71
+ } else {
72
+ updateValue("");
73
+ setInputValue("");
74
+ if (onChange) react.startTransition(function () {
75
+ return onChange();
76
+ });
77
+ }
78
+ }, [defaultValue, updateValue, inputFormat, onChange]);
79
+ var handleDateChange = react.useCallback(function (value) {
80
+ if (value) {
81
+ var _parsed$toISOString3;
82
+ var parsed = date.DateUtil.parseDate(value);
83
+ updateValue(parsed === null || parsed === void 0 || (_parsed$toISOString3 = parsed.toISOString) === null || _parsed$toISOString3 === void 0 ? void 0 : _parsed$toISOString3.call(parsed));
84
+ setInputValue(date.DateUtil.format(parsed, inputFormat));
85
+ if (onChange) react.startTransition(function () {
86
+ var _parsed$toISOString4;
87
+ return onChange(parsed === null || parsed === void 0 || (_parsed$toISOString4 = parsed.toISOString) === null || _parsed$toISOString4 === void 0 ? void 0 : _parsed$toISOString4.call(parsed));
88
+ });
89
+ } else {
90
+ updateValue("");
91
+ setInputValue("");
92
+ if (onChange) react.startTransition(function () {
93
+ return onChange();
94
+ });
95
+ }
96
+ }, [updateValue, inputFormat, onChange]);
97
+ var arrowRef = react.useRef(null);
98
+ var _useState3 = react.useState(false),
99
+ _useState4 = _slicedToArray(_useState3, 2),
100
+ isOpen = _useState4[0],
101
+ setIsOpen = _useState4[1];
102
+ var _useFloating = react$1.useFloating({
103
+ open: isOpen,
104
+ onOpenChange: function onOpenChange(open, _, reason) {
105
+ if (reason === "reference-press") return;
106
+ setIsOpen(open);
107
+ },
108
+ strategy: "fixed",
109
+ placement: "bottom-start",
110
+ whileElementsMounted: react$1.autoUpdate,
111
+ middleware: [react$1.shift({
112
+ padding: 8
113
+ }), react$1.flip(), react$1.offset(9), react$1.arrow({
114
+ element: arrowRef
115
+ })]
116
+ }),
117
+ refs = _useFloating.refs,
118
+ floatingStyles = _useFloating.floatingStyles,
119
+ context = _useFloating.context;
120
+ var focus = react$1.useFocus(context, {
121
+ enabled: !disabled
122
+ });
123
+ var click = react$1.useClick(context, {
124
+ enabled: !disabled,
125
+ toggle: false
126
+ });
127
+ var dismiss = react$1.useDismiss(context, {
128
+ referencePress: true
129
+ });
130
+ var _useInteractions = react$1.useInteractions([dismiss, click, focus]),
131
+ getReferenceProps = _useInteractions.getReferenceProps,
132
+ getFloatingProps = _useInteractions.getFloatingProps;
133
+ return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
134
+ id: id,
135
+ showClear: allowClear && !!currentValue && !disabled && !readOnly,
136
+ onClear: handleChange
137
+ }, getProps.getWrapperProps(props)), {}, {
138
+ children: [/*#__PURE__*/jsxRuntime.jsx("input", _objectSpread(_objectSpread({
139
+ id: id,
140
+ className: utilities.cn("appearance-none bg-transparent py-1 px-4 not-first:ps-2 not-last:pe-2 flex-1 border-none outline-none ring-0 peer", !currentValue && "empty"),
141
+ "aria-invalid": invalid,
142
+ "aria-disabled": disabled,
143
+ "aria-readonly": readOnly,
144
+ "aria-errormessage": error,
145
+ placeholder: placeholder,
146
+ disabled: disabled,
147
+ readOnly: readOnly,
148
+ "data-testid": name,
149
+ name: name,
150
+ size: 1,
151
+ type: type === "datetime" ? "datetime-local" : "date",
152
+ autoComplete: "off"
153
+ // eslint-disable-next-line jsx-a11y-x/no-autofocus
154
+ ,
155
+ autoFocus: autoFocus,
156
+ value: inputValue,
157
+ ref: utilities.mergeRefs(ref, function (el) {
158
+ return refs.setReference(el);
159
+ })
160
+ }, getReferenceProps({
161
+ onBlur: onBlur,
162
+ onFocus: onFocus
163
+ })), {}, {
164
+ onChange: handleChange,
165
+ onKeyDown: handleEnterPressed
166
+ })), isOpen && /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
167
+ ref: function ref(el) {
168
+ return refs.setFloating(el);
169
+ },
170
+ style: _objectSpread({
171
+ zIndex: "var(--z-popover)"
172
+ }, floatingStyles),
173
+ className: "shadow-lg bg-default ring-1 ring-tint-100",
174
+ "data-ref": "dropdownBody"
175
+ }, getFloatingProps()), {}, {
176
+ children: [/*#__PURE__*/jsxRuntime.jsx(date.DatePanel, {
177
+ withTime: type === "datetime",
178
+ value: currentValue !== null && currentValue !== void 0 ? currentValue : "",
179
+ max: max,
180
+ min: min,
181
+ onChange: handleDateChange
182
+ }), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingArrow, {
183
+ ref: arrowRef,
184
+ context: context,
185
+ strokeWidth: 0.5,
186
+ className: "fill-default stroke-muted"
187
+ })]
188
+ }))]
189
+ }));
190
+ }
191
+
192
+ exports.DateInput = DateInput;
@@ -1,32 +1,33 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
- var classNames = require('classnames');
6
- var react = require('react');
7
- var Field_module = require('../internal/Field.module.css');
4
+ var utilities = require('@react-fabric/utilities');
8
5
  var FieldWrapper = require('../internal/FieldWrapper.js');
6
+ require('@floating-ui/react');
7
+ require('@react-fabric/core');
8
+ var getProps = require('../utils/getProps.js');
9
9
  var jsxRuntime = require('react/jsx-runtime');
10
10
 
11
- var _excluded = ["children", "vertical", "noOutline", "plain"];
12
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
- var Field = function Field(_ref) {
15
- var children = _ref.children,
16
- vertical = _ref.vertical,
17
- noOutline = _ref.noOutline,
18
- plain = _ref.plain,
19
- rest = _objectWithoutProperties(_ref, _excluded);
20
- return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ /**
14
+ * Field component for rendering multiple form fields under a single label.
15
+ * It supports various properties for customization, including label, info, required state,
16
+ * and styling options.
17
+ */
18
+ function Field(props) {
19
+ var children = props.children,
20
+ vertical = props.vertical,
21
+ borderless = props.borderless,
22
+ plain = props.plain,
23
+ inline = props.inline;
24
+ return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, getProps.getWrapperProps(props)), {}, {
21
25
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
22
- className: classNames(Field_module.fieldGroup, !plain && !noOutline && "outline", !plain && "bg-base", "flex-1 rounded", !vertical && "flex flex-nowrap"),
23
- children: react.Children.map(children, function (child) {
24
- return child && /*#__PURE__*/react.cloneElement(child, {
25
- "data-inner": true
26
- });
27
- })
26
+ className: utilities.cn("fabric-fieldGroup", !plain && !borderless && "outline focus-within:outline-primary-500 has-aria-invalid:focus-within:outline-danger-500", !plain && "bg-default", plain && "flex-wrap", inline && "flex-1", vertical ? "rounded-capped" : "rounded flex"),
27
+ "data-vertical": !!vertical,
28
+ children: children
28
29
  })
29
30
  }));
30
- };
31
+ }
31
32
 
32
33
  exports.Field = Field;