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

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
@@ -2,65 +2,63 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
5
  var core = require('@react-fabric/core');
7
- var classNames = require('classnames');
6
+ var utilities = require('@react-fabric/utilities');
8
7
  var react = require('react');
9
8
  var reactI18next = require('react-i18next');
10
9
  var InputWrapper = require('../internal/InputWrapper.js');
11
10
  var eventHandlers = require('../utils/eventHandlers.js');
12
- require('@react-fabric/utilities');
11
+ var getProps = require('../utils/getProps.js');
13
12
  var jsxRuntime = require('react/jsx-runtime');
14
13
 
15
- var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "showToggle", "onChange", "onEnterPressed"];
16
14
  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; }
17
- 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; }
18
- var Password = function Password(_ref) {
19
- var ref = _ref.ref,
20
- value = _ref.value,
21
- name = _ref.name,
22
- strength = _ref.strength,
23
- invalid = _ref.invalid,
24
- readOnly = _ref.readOnly,
25
- disabled = _ref.disabled,
26
- required = _ref.required,
27
- placeholder = _ref.placeholder,
28
- autoFocus = _ref.autoFocus,
29
- showToggle = _ref.showToggle,
30
- onChange = _ref.onChange,
31
- onEnterPressed = _ref.onEnterPressed,
32
- rest = _objectWithoutProperties(_ref, _excluded);
15
+ 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; }
16
+ /**
17
+ * Password input component with optional strength meter and toggle visibility.
18
+ */
19
+ function Password(props) {
20
+ var value = props.value,
21
+ defaultValue = props.defaultValue,
22
+ onEnterPressed = props.onEnterPressed,
23
+ onChange = props.onChange,
24
+ onBlur = props.onBlur,
25
+ onFocus = props.onFocus,
26
+ disabled = props.disabled,
27
+ readOnly = props.readOnly,
28
+ invalid = props.invalid,
29
+ showToggle = props.showToggle,
30
+ strength = props.strength,
31
+ placeholder = props.placeholder,
32
+ name = props.name,
33
+ autoFocus = props.autoFocus,
34
+ allowClear = props.allowClear,
35
+ _props$autoComplete = props.autoComplete,
36
+ autoComplete = _props$autoComplete === void 0 ? "off" : _props$autoComplete,
37
+ ref = props.ref;
38
+ var id = react.useId();
39
+ var _useControlledValue = core.useControlledValue(value, defaultValue),
40
+ currentValue = _useControlledValue.currentValue,
41
+ updateValue = _useControlledValue.updateValue;
33
42
  var _useTranslation = reactI18next.useTranslation("form"),
34
43
  t = _useTranslation.t;
35
44
  var _useState = react.useState(false),
36
45
  _useState2 = _slicedToArray(_useState, 2),
37
46
  show = _useState2[0],
38
47
  setShow = _useState2[1];
39
- var _useState3 = react.useState(""),
40
- _useState4 = _slicedToArray(_useState3, 2),
41
- actualValue = _useState4[0],
42
- setActualValue = _useState4[1];
43
- var deferred = react.useDeferredValue(value);
44
- var handleEnterPressed = react.useMemo(function () {
45
- return eventHandlers.handleEnter(onEnterPressed);
46
- }, [onEnterPressed]);
47
- react.useEffect(function () {
48
- setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
49
- }, [deferred]);
48
+ var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
50
49
  var handleChange = react.useCallback(function (e) {
51
- var value = e === null || e === void 0 ? void 0 : e.target.value;
52
- setActualValue(value !== null && value !== void 0 ? value : "");
53
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
54
- }, [onChange]);
50
+ var _e$target$value;
51
+ var value = (_e$target$value = e === null || e === void 0 ? void 0 : e.target.value) !== null && _e$target$value !== void 0 ? _e$target$value : defaultValue;
52
+ updateValue(value);
53
+ onChange === null || onChange === void 0 || onChange(value);
54
+ }, [defaultValue, updateValue, onChange]);
55
55
  return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
56
- showClear: !!actualValue,
56
+ id: id,
57
+ showClear: allowClear && !!currentValue && !disabled && !readOnly,
57
58
  onClear: handleChange,
58
- invalid: invalid,
59
- readOnly: readOnly,
60
- disabled: disabled,
61
- required: required
62
- }, rest), {}, {
63
- decorateEnd: showToggle && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
59
+ invalid: invalid
60
+ }, getProps.getWrapperProps(props)), {}, {
61
+ actionButton: showToggle && currentValue && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
64
62
  color: "warning",
65
63
  content: t(show ? "password.hide" : "password.show"),
66
64
  children: /*#__PURE__*/jsxRuntime.jsx(core.Button, {
@@ -68,14 +66,15 @@ var Password = function Password(_ref) {
68
66
  color: "warning",
69
67
  variant: "link",
70
68
  "aria-label": t(show ? "password.hide" : "password.show"),
71
- icon: show ? core.CoreIcons.eyeOff : core.CoreIcons.eye,
69
+ icon: show ? "icon-[mdi--eye-off-outline]" : "icon-[mdi--eye-outline]",
72
70
  onClick: function onClick() {
73
71
  return setShow(!show);
74
72
  }
75
73
  })
76
74
  }),
77
75
  children: [/*#__PURE__*/jsxRuntime.jsx("input", {
78
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
76
+ id: id,
77
+ className: "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",
79
78
  "aria-invalid": invalid,
80
79
  "aria-disabled": disabled,
81
80
  "aria-readonly": readOnly,
@@ -87,18 +86,21 @@ var Password = function Password(_ref) {
87
86
  size: 1,
88
87
  type: show ? "text" : "password",
89
88
  ref: ref,
90
- autoComplete: "off",
89
+ autoComplete: autoComplete,
91
90
  autoFocus: autoFocus,
92
- value: actualValue,
91
+ value: currentValue !== null && currentValue !== void 0 ? currentValue : "",
92
+ onBlur: onBlur,
93
+ onFocus: onFocus,
93
94
  onChange: handleChange,
94
95
  onKeyDown: handleEnterPressed
95
96
  }), !!strength && /*#__PURE__*/jsxRuntime.jsx("div", {
96
- className: classNames("absolute bottom-px h-[3px] inset-x-0 after:block after:h-full after:bg-dimmed", "ltr:bg-gradient-to-r rtl:bg-gradient-to-l from-danger-500 via-marigold-500 to-jade-500"),
97
+ className: utilities.cn("absolute bottom-px h-0.5 inset-x-0 after:block after:h-full after:bg-dimmed"),
97
98
  style: {
98
- paddingInlineStart: "".concat(strength > 1 ? 100 : strength * 100, "%")
99
+ paddingInlineStart: "".concat(strength > 1 ? 100 : strength * 100, "%"),
100
+ background: "linear-gradient(to right,var(--color-scarlet-500) 25%,var(--color-amber-500) 50%,var(--color-jade-500) 75%,var(--color-avocado-500) 100%)"
99
101
  }
100
102
  })]
101
103
  }));
102
- };
104
+ }
103
105
 
104
106
  exports.Password = Password;
@@ -3,44 +3,51 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
5
  var core = require('@react-fabric/core');
6
- var classNames = require('classnames');
6
+ var utilities = require('@react-fabric/utilities');
7
7
  var react = require('react');
8
+ var ErrorIcon = require('../internal/ErrorIcon.js');
8
9
  var jsxRuntime = require('react/jsx-runtime');
9
10
 
10
- var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "error", "width", "icon", "iconChecked", "onChange"];
11
+ var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "width", "icon", "error", "iconChecked", "onChange"];
11
12
  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; }
12
- 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; }
13
- var Radio = function Radio(_ref) {
13
+ 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; }
14
+ /**
15
+ * Radio input component with custom icons and label.
16
+ *
17
+ * This component renders a radio button with an optional label and custom icons for checked and unchecked states.
18
+ * It supports disabled and invalid states, and allows for custom width.
19
+ */
20
+ function Radio(_ref) {
14
21
  var ref = _ref.ref,
15
22
  name = _ref.name,
16
23
  label = _ref.label,
17
24
  value = _ref.value,
18
25
  invalid = _ref.invalid,
19
- disabled = _ref.disabled;
20
- _ref.error;
21
- var width = _ref.width,
26
+ disabled = _ref.disabled,
27
+ width = _ref.width,
22
28
  icon = _ref.icon,
29
+ error = _ref.error,
23
30
  iconChecked = _ref.iconChecked,
24
31
  onChange = _ref.onChange,
25
32
  rest = _objectWithoutProperties(_ref, _excluded);
26
33
  var iconOn = react.useMemo(function () {
27
34
  var _ref2;
28
- return (_ref2 = iconChecked !== null && iconChecked !== void 0 ? iconChecked : icon) !== null && _ref2 !== void 0 ? _ref2 : core.CoreIcons.radioOn;
35
+ return (_ref2 = iconChecked !== null && iconChecked !== void 0 ? iconChecked : icon) !== null && _ref2 !== void 0 ? _ref2 : "icon-[mdi--radiobox-marked]";
29
36
  }, [icon, iconChecked]);
30
37
  var iconOff = react.useMemo(function () {
31
- return icon !== null && icon !== void 0 ? icon : core.CoreIcons.radioOff;
38
+ return icon !== null && icon !== void 0 ? icon : "icon-[mdi--radiobox-blank]";
32
39
  }, [icon]);
33
40
  var handleChange = react.useCallback(function (e) {
34
41
  // @ts-expect-error ignore
35
- (e === null || e === void 0 ? void 0 : e.target.checked) && value && (onChange === null || onChange === void 0 ? void 0 : onChange(value));
42
+ if (e !== null && e !== void 0 && e.target.checked && value) onChange === null || onChange === void 0 || onChange(value);
36
43
  }, [onChange, value]);
37
44
  return /*#__PURE__*/jsxRuntime.jsxs("label", {
38
- className: classNames(invalid ? "ring-danger-500" : "ring-primary-500", disabled ? "opacity-50 cursor-not-allowed" : "hover:opacity-100 cursor-pointer", "inline-flex gap-1 py-1 items-center relative cursor-pointer opacity-85 rounded ring-offset-2 has-[:focus-visible]:ring-1"),
45
+ className: utilities.cn(invalid ? "ring-danger-500" : "ring-primary-500", disabled ? "opacity-50 cursor-not-allowed" : "hover:opacity-100 cursor-pointer", "inline-flex gap-1 py-1 items-center relative cursor-pointer opacity-85 rounded ring-offset-2 has-focus-visible:ring-1"),
39
46
  style: {
40
47
  width: width
41
48
  },
42
49
  children: [/*#__PURE__*/jsxRuntime.jsx("input", _objectSpread({
43
- className: classNames("appearance-none absolute peer opacity-0 inset-0 bg-transparent border-none outline-none ring-0"),
50
+ className: utilities.cn("appearance-none absolute peer opacity-0 inset-0 bg-transparent border-none outline-none ring-0"),
44
51
  "aria-disabled": disabled,
45
52
  disabled: disabled,
46
53
  type: "radio",
@@ -51,20 +58,23 @@ var Radio = function Radio(_ref) {
51
58
  autoComplete: "off",
52
59
  onChange: handleChange
53
60
  }, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
54
- className: classNames("p-0.5 hidden peer-checked:inline-block", icon && !iconChecked && "bg-primary-500 text-white"),
61
+ className: utilities.cn("p-0.5 not-peer-checked:hidden", icon && !iconChecked && "bg-primary-500 text-white!"),
55
62
  color: invalid ? "danger" : "primary",
56
63
  size: "1.25em",
57
64
  icon: iconOn
58
65
  }), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
59
- className: classNames("p-0.5 peer-checked:hidden"),
66
+ className: utilities.cn("p-0.5 peer-checked:hidden"),
60
67
  color: invalid ? "danger" : "primary",
61
68
  size: "1.25em",
62
69
  icon: iconOff
70
+ }), /*#__PURE__*/jsxRuntime.jsx(ErrorIcon.ErrorIcon, {
71
+ invalid: invalid,
72
+ error: error
63
73
  }), label && /*#__PURE__*/jsxRuntime.jsx("span", {
64
- className: "flex-initial leading-none truncate",
74
+ className: "flex-initial leading-tight truncate",
65
75
  children: label
66
76
  })]
67
77
  });
68
- };
78
+ }
69
79
 
70
80
  exports.Radio = Radio;
@@ -2,32 +2,47 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var core = require('@react-fabric/core');
6
+ var utilities = require('@react-fabric/utilities');
5
7
  var react = require('react');
6
8
  var FieldWrapper = require('../internal/FieldWrapper.js');
7
9
  var jsxRuntime = require('react/jsx-runtime');
8
10
 
9
- var _excluded = ["children", "name", "className", "optionWidth", "onChange"];
11
+ var _excluded = ["children", "name", "className", "optionWidth", "vertical", "value", "onChange"];
10
12
  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; }
11
- 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; }
12
- var RadioGroup = function RadioGroup(_ref) {
13
+ 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; }
14
+ /**
15
+ * RadioGroup component for rendering a group of radio buttons.
16
+ * It allows for customization of the label, options, and layout.
17
+ * The component supports inline and vertical orientations, and can handle change events.
18
+ */
19
+ function RadioGroup(_ref) {
20
+ var _cloneChildren;
13
21
  var children = _ref.children,
14
22
  name = _ref.name,
15
23
  className = _ref.className,
16
24
  optionWidth = _ref.optionWidth,
25
+ vertical = _ref.vertical,
26
+ value = _ref.value,
17
27
  onChange = _ref.onChange,
18
28
  rest = _objectWithoutProperties(_ref, _excluded);
19
29
  return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
20
30
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
21
- className: className,
22
- children: react.Children.map(children, function (child) {
23
- return /*#__PURE__*/react.cloneElement(child, {
24
- name: name,
25
- onChange: onChange,
26
- width: optionWidth
27
- });
31
+ className: utilities.cn(className, vertical && "flex flex-col gap-1"),
32
+ children: (_cloneChildren = core.cloneChildren(children)) === null || _cloneChildren === void 0 ? void 0 : _cloneChildren.map(function (child) {
33
+ if (/*#__PURE__*/react.isValidElement(child)) {
34
+ var _child$props;
35
+ return /*#__PURE__*/react.cloneElement(child, {
36
+ name: name,
37
+ checked: ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.value) === value,
38
+ onChange: onChange,
39
+ width: optionWidth
40
+ });
41
+ }
42
+ return child;
28
43
  })
29
44
  })
30
45
  }));
31
- };
46
+ }
32
47
 
33
48
  exports.RadioGroup = RadioGroup;
@@ -2,51 +2,49 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
5
  var utilities = require('@react-fabric/utilities');
7
- var classNames = require('classnames');
8
6
  var react = require('react');
9
7
  var InputWrapper = require('../internal/InputWrapper.js');
10
8
  var index = require('../ranger/index.js');
9
+ require('@floating-ui/react');
10
+ require('@react-fabric/core');
11
+ var getProps = require('../utils/getProps.js');
11
12
  var jsxRuntime = require('react/jsx-runtime');
12
13
 
13
- var _excluded = ["error", "name", "value", "step", "min", "max", "height", "color", "vertical", "showLabels", "showValue", "minLabel", "maxLabel", "ranges", "format", "autoFocus", "disabled", "readOnly", "onBlur", "onChange", "onEnterPressed", "onFocus", "onSlide", "invalid"];
14
14
  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; }
15
- 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; }
15
+ 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; }
16
16
  /**
17
- * Number Range input
17
+ * RangeSlider component for rendering a range slider input.
18
+ * It supports vertical orientation, custom colors, step increments,
19
+ * min/max values, and display of labels and value tooltips.
20
+ * The component uses the Ranger library for handling the slider functionality.
21
+ * It also provides error handling and supports disabled and read-only states.
22
+ * The component is designed to be flexible and customizable, allowing for various configurations.
18
23
  */
19
- var Range = function Range(_ref) {
20
- var error = _ref.error;
21
- _ref.name;
22
- var value = _ref.value,
23
- _ref$step = _ref.step,
24
- step = _ref$step === void 0 ? 1 : _ref$step,
25
- _ref$min = _ref.min,
26
- min = _ref$min === void 0 ? 0 : _ref$min,
27
- _ref$max = _ref.max,
28
- max = _ref$max === void 0 ? 100 : _ref$max,
29
- _ref$height = _ref.height,
30
- height = _ref$height === void 0 ? 192 : _ref$height,
31
- color = _ref.color,
32
- vertical = _ref.vertical,
33
- showLabels = _ref.showLabels,
34
- showValue = _ref.showValue,
35
- minLabel = _ref.minLabel,
36
- maxLabel = _ref.maxLabel,
37
- ranges = _ref.ranges,
38
- format = _ref.format;
39
- _ref.autoFocus;
40
- var disabled = _ref.disabled,
41
- readOnly = _ref.readOnly;
42
- _ref.onBlur;
43
- var onChange = _ref.onChange;
44
- _ref.onEnterPressed;
45
- _ref.onFocus;
46
- var onSlide = _ref.onSlide,
47
- invalid = _ref.invalid,
48
- rest = _objectWithoutProperties(_ref, _excluded);
49
- var _useState = react.useState([0, 0]),
24
+ function RangeSlider(props) {
25
+ var value = props.value,
26
+ showLabels = props.showLabels,
27
+ showValue = props.showValue,
28
+ onChange = props.onChange,
29
+ onSlide = props.onSlide,
30
+ ranges = props.ranges,
31
+ invalid = props.invalid,
32
+ _props$step = props.step,
33
+ step = _props$step === void 0 ? 1 : _props$step,
34
+ _props$min = props.min,
35
+ min = _props$min === void 0 ? 0 : _props$min,
36
+ _props$max = props.max,
37
+ max = _props$max === void 0 ? 100 : _props$max,
38
+ _props$height = props.height,
39
+ height = _props$height === void 0 ? 192 : _props$height,
40
+ vertical = props.vertical,
41
+ minLabel = props.minLabel,
42
+ maxLabel = props.maxLabel,
43
+ format = props.format,
44
+ color = props.color;
45
+ var _useState = react.useState(function () {
46
+ return [0, 0];
47
+ }),
50
48
  _useState2 = _slicedToArray(_useState, 2),
51
49
  actualValue = _useState2[0],
52
50
  setActualValue = _useState2[1];
@@ -64,14 +62,16 @@ var Range = function Range(_ref) {
64
62
  return (_ranges$slice$ = ranges === null || ranges === void 0 ? void 0 : ranges.slice(-1)[0]) !== null && _ranges$slice$ !== void 0 ? _ranges$slice$ : max;
65
63
  }, [max, ranges]);
66
64
  react.useEffect(function () {
65
+ // eslint-disable-next-line @eslint-react/set-state-in-effect
67
66
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : [min, max]);
68
67
  }, [deferred, min, max]);
69
68
  react.useEffect(function () {
69
+ // eslint-disable-next-line @eslint-react/set-state-in-effect
70
70
  setDisplayValue(!!showValue);
71
71
  }, [showValue]);
72
72
  var handleChange = react.useCallback(function (val) {
73
73
  setActualValue(val !== null && val !== void 0 ? val : [min, max]);
74
- onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : undefined);
74
+ onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
75
75
  }, [onChange, min, max]);
76
76
  var minDisplay = react.useMemo(function () {
77
77
  return /*#__PURE__*/jsxRuntime.jsx("span", {
@@ -106,55 +106,50 @@ var Range = function Range(_ref) {
106
106
  return handleChange([values[0], values[1]]);
107
107
  }
108
108
  });
109
- return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({}, rest), {}, {
110
- noOutline: true,
111
- error: error,
112
- invalid: invalid,
113
- isDisabled: disabled,
114
- isReadOnly: readOnly,
115
- canClear: !!actualValue,
109
+ return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({}, getProps.getWrapperProps(props)), {}, {
110
+ borderless: true,
111
+ focusRing: true,
116
112
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
117
- className: classNames("flex-auto order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
113
+ className: utilities.cn("flex-1 order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
118
114
  "data-vertical": !!vertical,
119
115
  style: invalid ? undefined : {
120
116
  color: color
121
117
  },
122
118
  children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
123
119
  ref: rangerInstance.trackElRef,
124
- className: classNames("flex-auto relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
120
+ className: utilities.cn("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
125
121
  style: {
126
122
  height: vertical ? height : undefined
127
123
  },
128
- children: [rangerInstance.ticks.map(function (_ref2) {
129
- _ref2.value;
130
- var key = _ref2.key,
131
- styles = _ref2.styles;
124
+ children: [rangerInstance.ticks.map(function (_ref) {
125
+ var key = _ref.key,
126
+ styles = _ref.styles;
132
127
  return /*#__PURE__*/jsxRuntime.jsx("div", {
133
- className: classNames("absolute inline-block h-1 w-1 rounded-sm bg-invert opacity-30 leading-[0] z-1", vertical && "left-1/2 -ml-0.5"),
128
+ className: utilities.cn("absolute inline-block h-1 w-1 rounded-sm bg-invert opacity-30 leading-0 z-1", vertical && "left-1/2 -ml-0.5"),
134
129
  style: styles
135
130
  }, key);
136
- }), rangerInstance.segments.map(function (_ref3) {
137
- var key = _ref3.key,
138
- styles = _ref3.styles,
139
- active = _ref3.active;
131
+ }), rangerInstance.segments.map(function (_ref2) {
132
+ var key = _ref2.key,
133
+ styles = _ref2.styles,
134
+ active = _ref2.active;
140
135
  return /*#__PURE__*/jsxRuntime.jsx("div", {
141
- className: classNames("absolute", active ? "bg-current z-1 opacity-90" : "bg-invert opacity-5 z-0", vertical ? "-bottom-1 left-1/2 -translate-x-1/2" : "top-1/2 -translate-y-1/2", !vertical && (active ? "h-1" : "h-0.5"), vertical && (active ? "w-1" : "w-0.5")),
136
+ className: utilities.cn("absolute", active ? "bg-current z-1 opacity-90" : "bg-invert opacity-5 z-0", vertical ? "-bottom-1 left-1/2 -translate-x-1/2" : "top-1/2 -translate-y-1/2", !vertical && (active ? "h-1" : "h-0.5"), vertical && (active ? "w-1" : "w-0.5")),
142
137
  style: styles
143
138
  }, key);
144
- }), rangerInstance.handles.map(function (_ref4) {
145
- var key = _ref4.key,
146
- value = _ref4.value,
147
- props = _ref4.props,
148
- styles = _ref4.styles,
149
- valueStyles = _ref4.valueStyles;
139
+ }), rangerInstance.handles.map(function (_ref3) {
140
+ var key = _ref3.key,
141
+ value = _ref3.value,
142
+ props = _ref3.props,
143
+ styles = _ref3.styles,
144
+ valueStyles = _ref3.valueStyles;
150
145
  return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
151
146
  children: [/*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
152
147
  type: "button",
153
- className: classNames("bg-current cursor-pointer appearance-none h-3 w-3 rounded-full z-1 absolute", "focus:ring-2 focus:ring-offset-2", vertical && "left-1/2 -ml-1.5")
148
+ className: utilities.cn("bg-current cursor-pointer appearance-none h-3 w-3 rounded-full z-1 absolute", "focus:ring-2 focus:ring-offset-2", vertical && "left-1/2 -ml-1.5")
154
149
  }, props), {}, {
155
150
  style: styles
156
151
  })), displayValue && /*#__PURE__*/jsxRuntime.jsx("div", {
157
- className: classNames("bg-invert text-invert py-px px-2 text-xs absolute rounded z-1 whitespace-nowrap", "before:absolute before:h-1.5 before:w-1.5 before:z-[-1] before:bg-invert before:top-1/2 before:-translate-y-1/2 before:rotate-45", vertical ? "end-0 ltr:translate-x-full rtl:-translate-x-full translate-y-2" : "top-1/2 -translate-y-1/2", !vertical && (key === 0 ? "-ms-3 ltr:-translate-x-full rtl:translate-x-full ltr:before:translate-x-[0.125rem] rtl:before:-translate-x-[0.125rem] before:end-0" : "ms-3 ltr:before:-translate-x-[0.125rem] rtl:before:translate-x-[0.125rem] before:start-0")),
152
+ className: utilities.cn("bg-invert text-invert py-px px-2 text-xs absolute rounded z-1 whitespace-nowrap", "before:absolute before:h-1.5 before:w-1.5 before:z-[-1] before:bg-invert before:top-1/2 before:-translate-y-1/2 before:rotate-45", vertical ? "inset-e-0 ltr:translate-x-full rtl:-translate-x-full translate-y-2" : "top-1/2 -translate-y-1/2", !vertical && (key === 0 ? "-ms-3 ltr:-translate-x-full rtl:translate-x-full ltr:before:translate-x-0.5 rtl:before:-translate-x-0.5 before:inset-e-0" : "ms-3 ltr:before:-translate-x-0.5 rtl:before:translate-x-0.5 before:inset-s-0")),
158
153
  "data-align": key === 0 ? "start" : "end",
159
154
  style: valueStyles,
160
155
  children: utilities.Format.number(value, format)
@@ -164,6 +159,6 @@ var Range = function Range(_ref) {
164
159
  }), showLabels && (vertical ? minDisplay : maxDisplay)]
165
160
  })
166
161
  }));
167
- };
162
+ }
168
163
 
169
- exports.Range = Range;
164
+ exports.RangeSlider = RangeSlider;