@react-fabric/form 1.0.0-beta.4 → 1.0.0-beta.40

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 (152) 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} +26 -15
  4. package/{src/input/File.module.css → css/_file.css} +20 -6
  5. package/css/styles.css +27 -0
  6. package/dist/cjs/builder/FileField.js +37 -25
  7. package/dist/cjs/builder/FormField.js +44 -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 +413 -0
  12. package/dist/cjs/form/Controller.js +1 -1
  13. package/dist/cjs/form/Form.js +19 -10
  14. package/dist/cjs/hooks/useFormBuilder.js +27 -15
  15. package/dist/cjs/index.js +9 -2
  16. package/dist/cjs/input/ArrayInput.js +36 -25
  17. package/dist/cjs/input/AvatarInput.js +1 -1
  18. package/dist/cjs/input/Checkbox.js +5 -4
  19. package/dist/cjs/input/ColorInput.js +70 -28
  20. package/dist/cjs/input/ColorPicker.js +1 -35
  21. package/dist/cjs/input/DateInput.js +183 -0
  22. package/dist/cjs/input/Field.js +4 -4
  23. package/dist/cjs/input/File.js +2 -3
  24. package/dist/cjs/input/Hidden.js +3 -1
  25. package/dist/cjs/input/Input.js +1 -1
  26. package/dist/cjs/input/Number.js +1 -1
  27. package/dist/cjs/input/Password.js +1 -1
  28. package/dist/cjs/input/Radio.js +1 -1
  29. package/dist/cjs/input/RadioGroup.js +6 -3
  30. package/dist/cjs/input/{Range.js → RangeSlider.js} +3 -3
  31. package/dist/cjs/input/Search.js +1 -1
  32. package/dist/cjs/input/Slider.js +1 -1
  33. package/dist/cjs/input/Switch.js +27 -5
  34. package/dist/cjs/input/Textarea.js +7 -3
  35. package/dist/cjs/internal/ErrorIcon.js +1 -1
  36. package/dist/cjs/internal/FieldWrapper.js +4 -3
  37. package/dist/cjs/internal/InputWrapper.js +14 -16
  38. package/dist/cjs/select/AutoComplete.js +1 -1
  39. package/dist/cjs/select/List.js +41 -20
  40. package/dist/cjs/select/Options.js +2 -2
  41. package/dist/cjs/select/Select.js +11 -8
  42. package/dist/cjs/select/useSelect.js +12 -7
  43. package/{src/input/ColorPicker.module.css → dist/cjs/types/schema.js} +18 -27
  44. package/dist/cjs/utils/getColor.js +6 -0
  45. package/dist/esm/builder/FileField.js +39 -27
  46. package/dist/esm/builder/FormField.js +44 -34
  47. package/dist/esm/builder/SchemaEditor.js +72 -0
  48. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  49. package/dist/esm/builder/components/SchemaArrayForm.js +143 -0
  50. package/dist/esm/builder/components/SchemaField.js +413 -0
  51. package/dist/esm/form/Controller.js +1 -1
  52. package/dist/esm/form/Form.js +19 -10
  53. package/dist/esm/hooks/useFormBuilder.js +25 -13
  54. package/dist/esm/index.js +4 -1
  55. package/dist/esm/input/ArrayInput.js +38 -27
  56. package/dist/esm/input/AvatarInput.js +1 -1
  57. package/dist/esm/input/Checkbox.js +5 -4
  58. package/dist/esm/input/ColorInput.js +72 -30
  59. package/dist/esm/input/ColorPicker.js +1 -35
  60. package/dist/esm/input/DateInput.js +183 -0
  61. package/dist/esm/input/Field.js +5 -5
  62. package/dist/esm/input/File.js +2 -3
  63. package/dist/esm/input/Hidden.js +3 -1
  64. package/dist/esm/input/Input.js +1 -1
  65. package/dist/esm/input/Number.js +1 -1
  66. package/dist/esm/input/Password.js +1 -1
  67. package/dist/esm/input/Radio.js +1 -1
  68. package/dist/esm/input/RadioGroup.js +7 -4
  69. package/dist/esm/input/{Range.js → RangeSlider.js} +3 -3
  70. package/dist/esm/input/Search.js +1 -1
  71. package/dist/esm/input/Slider.js +1 -1
  72. package/dist/esm/input/Switch.js +29 -7
  73. package/dist/esm/input/Textarea.js +7 -3
  74. package/dist/esm/internal/ErrorIcon.js +1 -1
  75. package/dist/esm/internal/FieldWrapper.js +4 -3
  76. package/dist/esm/internal/InputWrapper.js +14 -16
  77. package/dist/esm/select/AutoComplete.js +1 -1
  78. package/dist/esm/select/List.js +42 -21
  79. package/dist/esm/select/Options.js +2 -2
  80. package/dist/esm/select/Select.js +11 -8
  81. package/dist/esm/select/useSelect.js +13 -8
  82. package/dist/esm/types/schema.js +41 -0
  83. package/dist/esm/utils/getColor.js +6 -1
  84. package/dist/types/builder/FileField.d.ts +4 -2
  85. package/dist/types/builder/FormField.d.ts +3 -1
  86. package/dist/types/builder/SchemaEditor.d.ts +2 -0
  87. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  88. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  89. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  90. package/dist/types/form/Controller.d.ts +1 -1
  91. package/dist/types/hooks/useFormBuilder.d.ts +3 -1
  92. package/dist/types/index.d.ts +4 -2
  93. package/dist/types/input/ArrayInput.d.ts +20 -3
  94. package/dist/types/input/Checkbox.d.ts +4 -3
  95. package/dist/types/input/ColorInput.d.ts +1 -1
  96. package/dist/types/input/DateInput.d.ts +19 -0
  97. package/dist/types/input/RadioGroup.d.ts +18 -2
  98. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +1 -1
  99. package/dist/types/input/Switch.d.ts +7 -3
  100. package/dist/types/input/Textarea.d.ts +5 -1
  101. package/dist/types/internal/InputWrapper.d.ts +1 -1
  102. package/dist/types/select/List.d.ts +1 -1
  103. package/dist/types/types/index.d.ts +9 -5
  104. package/dist/types/types/schema.d.ts +79 -33
  105. package/package.json +10 -7
  106. package/src/builder/FileField.tsx +53 -27
  107. package/src/builder/FormField.tsx +45 -32
  108. package/src/builder/SchemaEditor.tsx +72 -0
  109. package/src/builder/components/AddSchemaFields.tsx +74 -0
  110. package/src/builder/components/SchemaArrayForm.tsx +158 -0
  111. package/src/builder/components/SchemaField.tsx +435 -0
  112. package/src/form/Controller.tsx +2 -2
  113. package/src/form/Form.tsx +15 -8
  114. package/src/hooks/useFormBuilder.tsx +29 -15
  115. package/src/index.ts +10 -2
  116. package/src/input/ArrayInput.tsx +80 -42
  117. package/src/input/AvatarInput.tsx +1 -1
  118. package/src/input/Checkbox.tsx +5 -4
  119. package/src/input/ColorInput.tsx +102 -34
  120. package/src/input/ColorPicker.tsx +1 -35
  121. package/src/input/DateInput.tsx +248 -0
  122. package/src/input/Field.tsx +9 -11
  123. package/src/input/File.tsx +3 -6
  124. package/src/input/Hidden.tsx +4 -1
  125. package/src/input/Input.tsx +2 -2
  126. package/src/input/Number.tsx +2 -2
  127. package/src/input/Password.tsx +2 -2
  128. package/src/input/Radio.tsx +1 -1
  129. package/src/input/RadioGroup.tsx +27 -4
  130. package/src/input/{Range.tsx → RangeSlider.tsx} +2 -2
  131. package/src/input/Search.tsx +2 -2
  132. package/src/input/Slider.tsx +1 -1
  133. package/src/input/Switch.tsx +42 -6
  134. package/src/input/Textarea.tsx +11 -3
  135. package/src/internal/ErrorIcon.tsx +1 -1
  136. package/src/internal/FieldWrapper.tsx +3 -3
  137. package/src/internal/InputWrapper.tsx +21 -20
  138. package/src/select/AutoComplete.tsx +1 -1
  139. package/src/select/List.tsx +34 -7
  140. package/src/select/Options.tsx +1 -1
  141. package/src/select/Select.tsx +5 -2
  142. package/src/select/useSelect.tsx +27 -18
  143. package/src/types/index.ts +14 -7
  144. package/src/types/schema.ts +96 -41
  145. package/dist/cjs/input/ArrayInput.module.css +0 -1
  146. package/dist/cjs/input/ColorPicker.module.css +0 -1
  147. package/dist/cjs/input/File.module.css +0 -1
  148. package/dist/cjs/internal/Field.module.css +0 -1
  149. package/dist/esm/input/ArrayInput.module.css +0 -1
  150. package/dist/esm/input/ColorPicker.module.css +0 -1
  151. package/dist/esm/input/File.module.css +0 -1
  152. package/dist/esm/internal/Field.module.css +0 -1
@@ -1,33 +1,42 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var core = require('@react-fabric/core');
4
5
  var utilities = require('@react-fabric/utilities');
5
6
  var react = require('react');
6
7
  var FormField = require('../builder/FormField.js');
8
+ var schema = require('../types/schema.js');
7
9
  var jsxRuntime = require('react/jsx-runtime');
8
10
 
9
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; }
10
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; }
11
13
  var makeYupField = function makeYupField(field) {
12
- var yupField = utilities.yup.string();
13
- if (field.datatype === "schema") {
14
+ var yupField = utilities.yup.string().trim();
15
+ if (field.datatype === schema.DATA_TYPES.SCHEMA) {
14
16
  var child = Object.fromEntries(field.schema.map(function (field) {
15
17
  return [field.id, makeYupField(field)];
16
18
  }));
17
19
  yupField = utilities.yup.object(child);
18
20
  }
19
- if (field.datatype === "boolean") yupField = utilities.yup["boolean"]();
20
- if (field.datatype === "decimal" || field.datatype === "number" || field.datatype === "range") {
21
+ if (field.datatype === schema.DATA_TYPES.BOOL) {
22
+ yupField = utilities.yup["boolean"]();
23
+ if (field.required) yupField = yupField.test({
24
+ test: function test(value) {
25
+ return !!value;
26
+ }
27
+ });
28
+ }
29
+ if (field.datatype === schema.DATA_TYPES.NUMBER || field.datatype === schema.DATA_TYPES.RANGE) {
21
30
  yupField = utilities.yup.number();
22
31
  !utilities.isNil(field.min) && (yupField = yupField.min(field.min));
23
32
  !utilities.isNil(field.max) && (yupField = yupField.max(field.max));
24
- if (field.datatype === "range") yupField = utilities.yup.array(yupField);
33
+ if (field.datatype === schema.DATA_TYPES.RANGE) yupField = utilities.yup.array(yupField);
25
34
  }
26
- if (field.datatype === "string") {
27
- field.options && (yupField = yupField.oneOf(field.options));
35
+ if (field.datatype === schema.DATA_TYPES.STRING) {
36
+ field.options && !field.allowCustom && (yupField = yupField.oneOf(field.options));
28
37
  field.regex && (yupField = yupField.matches(new RegExp(field.regex)));
29
38
  }
30
- if (field.datatype === "file") {
39
+ if (field.datatype === schema.DATA_TYPES.FILE) {
31
40
  yupField = utilities.yup.object({
32
41
  filename: utilities.yup.string().required(),
33
42
  path: utilities.yup.string().required()
@@ -53,30 +62,33 @@ var makeYupField = function makeYupField(field) {
53
62
  }
54
63
  return yupField.label(field.label);
55
64
  };
56
- var useFormBuilder = function useFormBuilder(schema) {
65
+ var useFormBuilder = function useFormBuilder(schema$1) {
57
66
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
58
67
  var filteredSchema = react.useMemo(function () {
59
68
  var _schema$filter, _schema$filter2;
60
- return (_schema$filter = (_schema$filter2 = schema.filter) === null || _schema$filter2 === void 0 ? void 0 : _schema$filter2.call(schema, function (schm) {
69
+ return (_schema$filter = (_schema$filter2 = schema$1.filter) === null || _schema$filter2 === void 0 ? void 0 : _schema$filter2.call(schema$1, function (schm) {
61
70
  return !!schm.id;
62
71
  })) !== null && _schema$filter !== void 0 ? _schema$filter : [];
63
- }, [schema]);
72
+ }, [schema$1]);
64
73
  var schemaDef = utilities.yup.object(Object.fromEntries(filteredSchema.map(function (field) {
65
74
  return [field.id, makeYupField(field)];
66
75
  })));
67
- var formDef = /*#__PURE__*/jsxRuntime.jsx(react.Fragment, {
68
- children: filteredSchema.map(function (field, idx) {
76
+ var formDef = /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
77
+ children: [filteredSchema.map(function (field, idx) {
69
78
  return /*#__PURE__*/jsxRuntime.jsx("div", {
70
79
  className: "mb-4",
71
- children: field.datatype === "schema" ? null : /*#__PURE__*/jsxRuntime.jsx(FormField.FormField, _objectSpread(_objectSpread({}, field), {}, {
80
+ children: field.datatype === schema.DATA_TYPES.SCHEMA ? null : /*#__PURE__*/jsxRuntime.jsx(FormField.FormField, _objectSpread(_objectSpread({}, field), {}, {
72
81
  autoFocus: idx === 0,
73
82
  fileUrl: options.fileUrl,
83
+ optionLists: options.optionLists,
74
84
  uploadHandler: options.uploadHandler,
75
85
  inline: options.inline,
76
86
  prefix: options.prefix
77
87
  }))
78
88
  }, field.id);
79
- })
89
+ }), filteredSchema.length === 0 && /*#__PURE__*/jsxRuntime.jsx(core.EmptyContent, {
90
+ message: "No schema defined"
91
+ })]
80
92
  });
81
93
  return {
82
94
  formDef: formDef,
package/dist/cjs/index.js CHANGED
@@ -3,12 +3,15 @@
3
3
  require('./i18n/index.js');
4
4
  var Controller = require('./form/Controller.js');
5
5
  var Form = require('./form/Form.js');
6
+ var SchemaEditor = require('./builder/SchemaEditor.js');
6
7
  var useFileUploader = require('./hooks/useFileUploader.js');
7
8
  var useFormBuilder = require('./hooks/useFormBuilder.js');
9
+ var schema = require('./types/schema.js');
8
10
  var ArrayInput = require('./input/ArrayInput.js');
9
11
  var Checkbox = require('./input/Checkbox.js');
10
12
  var ColorInput = require('./input/ColorInput.js');
11
13
  var ColorPicker = require('./input/ColorPicker.js');
14
+ var DateInput = require('./input/DateInput.js');
12
15
  var Field = require('./input/Field.js');
13
16
  var File = require('./input/File.js');
14
17
  var Hidden = require('./input/Hidden.js');
@@ -17,7 +20,7 @@ var Number = require('./input/Number.js');
17
20
  var Password = require('./input/Password.js');
18
21
  var Radio = require('./input/Radio.js');
19
22
  var RadioGroup = require('./input/RadioGroup.js');
20
- var Range = require('./input/Range.js');
23
+ var RangeSlider = require('./input/RangeSlider.js');
21
24
  var Search = require('./input/Search.js');
22
25
  var Slider = require('./input/Slider.js');
23
26
  var Switch = require('./input/Switch.js');
@@ -31,12 +34,16 @@ var Select = require('./select/Select.js');
31
34
 
32
35
  exports.Controller = Controller.Controller;
33
36
  exports.Form = Form.Form;
37
+ exports.SchemaEditor = SchemaEditor.SchemaEditor;
34
38
  exports.useFileUploader = useFileUploader.useFileUploader;
35
39
  exports.useFormBuilder = useFormBuilder.useFormBuilder;
40
+ exports.DATA_TYPES = schema.DATA_TYPES;
41
+ exports.SCHEMA_CUSTOM_LIST = schema.SCHEMA_CUSTOM_LIST;
36
42
  exports.ArrayInput = ArrayInput.ArrayInput;
37
43
  exports.Checkbox = Checkbox.Checkbox;
38
44
  exports.ColorInput = ColorInput.ColorInput;
39
45
  exports.ColorPicker = ColorPicker.ColorPicker;
46
+ exports.DateInput = DateInput.DateInput;
40
47
  exports.Field = Field.Field;
41
48
  exports.FileInput = File.FileInput;
42
49
  exports.HiddenInput = Hidden.HiddenInput;
@@ -45,7 +52,7 @@ exports.Number = Number.Number;
45
52
  exports.Password = Password.Password;
46
53
  exports.Radio = Radio.Radio;
47
54
  exports.RadioGroup = RadioGroup.RadioGroup;
48
- exports.Range = Range.Range;
55
+ exports.RangeSlider = RangeSlider.RangeSlider;
49
56
  exports.Search = Search.Search;
50
57
  exports.Slider = Slider.Slider;
51
58
  exports.Switch = Switch.Switch;
@@ -11,22 +11,22 @@ var react = require('react');
11
11
  var reactHookForm = require('react-hook-form');
12
12
  var reactI18next = require('react-i18next');
13
13
  var FieldWrapper = require('../internal/FieldWrapper.js');
14
- var ArrayInput_module = require('./ArrayInput.module.css');
15
14
  var modifiers = require('@dnd-kit/modifiers');
16
15
  var utilities = require('@dnd-kit/utilities');
17
16
  var jsxRuntime = require('react/jsx-runtime');
18
17
 
19
- var _excluded = ["name", "children", "addLabel", "fixedList", "focusName", "onAdd", "arrayRef", "enableSorting", "disabled", "readOnly", "minItems"];
18
+ var _excluded = ["name", "children", "addLabel", "fixedList", "focusName", "buttonPosition", "onAdd", "arrayRef", "enableSorting", "disabled", "readOnly", "minItems", "maxItems"];
20
19
  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; }
21
20
  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; }
22
21
  var ArrayInput = function ArrayInput(_ref) {
23
- var _error$values$label, _error$values, _error$values2;
24
22
  var name = _ref.name,
25
23
  children = _ref.children,
26
24
  addLabel = _ref.addLabel,
27
25
  fixedList = _ref.fixedList,
28
26
  _ref$focusName = _ref.focusName,
29
27
  focusName = _ref$focusName === void 0 ? "" : _ref$focusName,
28
+ _ref$buttonPosition = _ref.buttonPosition,
29
+ buttonPosition = _ref$buttonPosition === void 0 ? "bottom" : _ref$buttonPosition,
30
30
  onAdd = _ref.onAdd,
31
31
  arrayRef = _ref.arrayRef,
32
32
  enableSorting = _ref.enableSorting,
@@ -36,6 +36,8 @@ var ArrayInput = function ArrayInput(_ref) {
36
36
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
37
37
  _ref$minItems = _ref.minItems,
38
38
  minItems = _ref$minItems === void 0 ? 0 : _ref$minItems,
39
+ _ref$maxItems = _ref.maxItems,
40
+ maxItems = _ref$maxItems === void 0 ? Number.MAX_SAFE_INTEGER : _ref$maxItems,
39
41
  rest = _objectWithoutProperties(_ref, _excluded);
40
42
  var _useTranslation = reactI18next.useTranslation("form"),
41
43
  t = _useTranslation.t;
@@ -127,9 +129,37 @@ var ArrayInput = function ArrayInput(_ref) {
127
129
  }, [enableSorting]);
128
130
  // @ts-expect-error ignore
129
131
  SortableItem.displayName = "SortableItem";
132
+ var addButton = react.useMemo(function () {
133
+ var _error$values$label, _error$values, _error$values2;
134
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
135
+ className: "flex justify-end",
136
+ children: /*#__PURE__*/jsxRuntime.jsx(core$1.Tooltip, {
137
+ color: "danger-200",
138
+ content: utilities$1.isString(error) ? "".concat(error) : t(error === null || error === void 0 ? void 0 : error.key, error !== null && error !== void 0 && error.values ? _objectSpread(_objectSpread({}, error === null || error === void 0 ? void 0 : error.values), {}, {
139
+ label: t((_error$values$label = (_error$values = error.values) === null || _error$values === void 0 ? void 0 : _error$values.label) !== null && _error$values$label !== void 0 ? _error$values$label : "form:badkey", (_error$values2 = error.values) === null || _error$values2 === void 0 ? void 0 : _error$values2.path)
140
+ }) : {}),
141
+ children: /*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
142
+ size: "sm",
143
+ "aria-label": "Add item",
144
+ icon: core$1.CoreIcons.insert,
145
+ onClick: function onClick() {
146
+ return handleAdd(onAdd === null || onAdd === void 0 ? void 0 : onAdd());
147
+ },
148
+ "data-invalid": !!error,
149
+ disabled: !!disabled || readOnly || fields.length > maxItems,
150
+ className: classNames("fabric-addButton", "me-10"),
151
+ children: addLabel !== null && addLabel !== void 0 ? addLabel : t("addArray")
152
+ })
153
+ })
154
+ });
155
+ }, [error, fields, handleAdd, disabled, readOnly, addLabel, maxItems]);
130
156
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
131
- className: ArrayInput_module.arrayInput,
157
+ className: "fabric-arrayInput",
132
158
  children: [/*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
159
+ appendLabel: /*#__PURE__*/jsxRuntime.jsx("div", {
160
+ className: "-me-2",
161
+ children: !fixedList && onAdd && buttonPosition !== "bottom" && addButton
162
+ }),
133
163
  children: /*#__PURE__*/jsxRuntime.jsx(Wrapper, {
134
164
  children: fields.map(function (item, index) {
135
165
  return /*#__PURE__*/jsxRuntime.jsxs(SortableItem, {
@@ -138,7 +168,7 @@ var ArrayInput = function ArrayInput(_ref) {
138
168
  children: [typeof children === "function" ? children({
139
169
  index: index,
140
170
  name: "".concat(name, ".").concat(index)
141
- }) : react.Children.map(children, function (child) {
171
+ }) : core$1.cloneChildren(children, function (child) {
142
172
  return /*#__PURE__*/react.cloneElement(child, Object.assign({
143
173
  disabled: disabled,
144
174
  readOnly: readOnly,
@@ -163,26 +193,7 @@ var ArrayInput = function ArrayInput(_ref) {
163
193
  }, item.id);
164
194
  })
165
195
  })
166
- })), !fixedList && onAdd && /*#__PURE__*/jsxRuntime.jsx("div", {
167
- className: "flex justify-end",
168
- children: /*#__PURE__*/jsxRuntime.jsx(core$1.Tooltip, {
169
- color: "danger",
170
- content: utilities$1.isString(error) ? "".concat(error) : t(error === null || error === void 0 ? void 0 : error.key, error !== null && error !== void 0 && error.values ? _objectSpread(_objectSpread({}, error === null || error === void 0 ? void 0 : error.values), {}, {
171
- label: t((_error$values$label = (_error$values = error.values) === null || _error$values === void 0 ? void 0 : _error$values.label) !== null && _error$values$label !== void 0 ? _error$values$label : "form:badkey", (_error$values2 = error.values) === null || _error$values2 === void 0 ? void 0 : _error$values2.path)
172
- }) : {}),
173
- children: /*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
174
- "aria-label": "Add item",
175
- icon: core$1.CoreIcons.insert,
176
- onClick: function onClick() {
177
- return handleAdd(onAdd());
178
- },
179
- "data-invalid": !!error,
180
- disabled: !!disabled || readOnly,
181
- className: classNames(ArrayInput_module.addButton, "me-10"),
182
- children: addLabel !== null && addLabel !== void 0 ? addLabel : t("addArray")
183
- })
184
- })
185
- })]
196
+ })), !fixedList && onAdd && buttonPosition !== "top" && addButton]
186
197
  });
187
198
  };
188
199
 
@@ -80,7 +80,7 @@ var AvatarInput = function AvatarInput(_ref) {
80
80
  size: size,
81
81
  avatar: base64
82
82
  }), /*#__PURE__*/jsxRuntime.jsxs("div", {
83
- className: "absolute inset-x-0 bottom-0 cursor-pointer bg-opacity-20 hover:bg-opacity-50 bg-black text-white text-xs text-center py-1",
83
+ className: "absolute inset-x-0 bottom-0 cursor-pointer bg-black/20 hover:bg-black/50 text-white text-xs text-center py-1",
84
84
  children: [/*#__PURE__*/jsxRuntime.jsx("span", {
85
85
  children: "Edit"
86
86
  }), /*#__PURE__*/jsxRuntime.jsx("input", {
@@ -9,7 +9,7 @@ var react = require('react');
9
9
  var ErrorIcon = require('../internal/ErrorIcon.js');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
11
 
12
- var _excluded = ["ref", "label", "value", "name", "checked", "invalid", "disabled", "error", "width", "icon", "iconChecked", "onChange"];
12
+ var _excluded = ["ref", "label", "value", "name", "checked", "invalid", "disabled", "error", "width", "icon", "iconChecked", "required", "onChange"];
13
13
  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; }
14
14
  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
15
  var Checkbox = function Checkbox(_ref) {
@@ -23,8 +23,9 @@ var Checkbox = function Checkbox(_ref) {
23
23
  error = _ref.error,
24
24
  width = _ref.width,
25
25
  icon = _ref.icon,
26
- iconChecked = _ref.iconChecked,
27
- onChange = _ref.onChange,
26
+ iconChecked = _ref.iconChecked;
27
+ _ref.required;
28
+ var onChange = _ref.onChange,
28
29
  rest = _objectWithoutProperties(_ref, _excluded);
29
30
  var _useState = react.useState(false),
30
31
  _useState2 = _slicedToArray(_useState, 2),
@@ -66,7 +67,7 @@ var Checkbox = function Checkbox(_ref) {
66
67
  checked: actualValue,
67
68
  onChange: handleChange
68
69
  }, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
69
- className: classNames("p-0.5", actualValue && icon && !iconChecked && "bg-primary-500 text-white"),
70
+ className: classNames("p-0.5", actualValue && icon && !iconChecked && "bg-primary-500 text-white!"),
70
71
  size: "1.25em",
71
72
  color: invalid ? "danger" : "primary",
72
73
  icon: actualValue ? iconOn : iconOff
@@ -3,6 +3,7 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var react$1 = require('@floating-ui/react');
6
7
  var core = require('@react-fabric/core');
7
8
  var utilities = require('@react-fabric/utilities');
8
9
  var classNames = require('classnames');
@@ -40,44 +41,85 @@ var ColorInput = function ColorInput(_ref) {
40
41
  var handleChange = react.useCallback(function (e) {
41
42
  setActualValue(e !== null && e !== void 0 ? e : defaultColor);
42
43
  onChange != null && react.startTransition(function () {
43
- return onChange(e);
44
+ return onChange(e !== null && e !== void 0 ? e : null);
44
45
  });
45
46
  }, [onChange]);
47
+ var arrowRef = react.useRef(null);
48
+ var _useState3 = react.useState(false),
49
+ _useState4 = _slicedToArray(_useState3, 2),
50
+ isOpen = _useState4[0],
51
+ setIsOpen = _useState4[1];
52
+ var _useFloating = react$1.useFloating({
53
+ open: isOpen,
54
+ onOpenChange: function onOpenChange(open, _, reason) {
55
+ if (reason === "reference-press") return;
56
+ setIsOpen(open);
57
+ },
58
+ strategy: "fixed",
59
+ placement: "bottom",
60
+ whileElementsMounted: react$1.autoUpdate,
61
+ middleware: [react$1.shift({
62
+ padding: 8
63
+ }), react$1.flip(), react$1.offset(9), react$1.arrow({
64
+ element: arrowRef
65
+ })]
66
+ }),
67
+ refs = _useFloating.refs,
68
+ floatingStyles = _useFloating.floatingStyles,
69
+ context = _useFloating.context;
70
+ var click = react$1.useClick(context, {
71
+ enabled: !disabled
72
+ });
73
+ var dismiss = react$1.useDismiss(context, {
74
+ referencePress: true
75
+ });
76
+ var _useInteractions = react$1.useInteractions([dismiss, click]),
77
+ getReferenceProps = _useInteractions.getReferenceProps,
78
+ getFloatingProps = _useInteractions.getFloatingProps;
46
79
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
47
- className: classNames("flex-content min-h-[1.5em] min-w-[3.5em] self-stretch flex items-center outline-tint-200 rounded", !disabled && "bg-base", !noOutline && "bg-[var(--fabric-input)] outline overflow-hidden"),
80
+ className: classNames("flex-content min-h-[1.5em] min-w-[3.5em] self-stretch flex items-center outline-tint-200 rounded", !disabled && "bg-base", !noOutline && "bg-(--fabric-input) outline overflow-hidden"),
48
81
  children: [decorateStart && /*#__PURE__*/jsxRuntime.jsx("div", {
49
82
  className: classNames("text-muted leading-none flex-content", utilities.isString(decorateStart) && "px-2"),
50
83
  children: decorateStart
51
- }), /*#__PURE__*/jsxRuntime.jsxs(core.Dropdown, {
52
- showArrow: true,
53
- disabled: disabled,
54
- children: [/*#__PURE__*/jsxRuntime.jsx("button", {
55
- "data-ref": "button",
56
- className: "flex-1 flex items-center",
57
- children: /*#__PURE__*/jsxRuntime.jsx("div", {
58
- role: "none",
59
- className: "h-[1.5em] min-w-[1.5em] flex-1 flex items-center justify-center self-stretch cursor-pointer m-[0.25em] rounded outline outline-tint-100",
60
- style: {
61
- backgroundColor: actualValue,
62
- opacity: disabled ? 0.65 : 1,
63
- pointerEvents: disabled ? "none" : undefined
64
- },
65
- onClick: function onClick(e) {
66
- var _e$currentTarget$next;
67
- return (_e$currentTarget$next = e.currentTarget.nextElementSibling) === null || _e$currentTarget$next === void 0 ? void 0 : _e$currentTarget$next.focus();
68
- },
69
- children: !actualValue && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
70
- size: "md",
71
- className: "text-muted",
72
- icon: core.CoreIcons.colorSwatch
73
- })
84
+ }), /*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
85
+ "data-ref": "button",
86
+ className: "flex-1 flex items-center",
87
+ ref: refs.setReference
88
+ }, getReferenceProps()), {}, {
89
+ "data-inner-clickable": "true",
90
+ "data-dropdown-open": isOpen ? true : undefined,
91
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
92
+ role: "none",
93
+ className: "h-[1.5em] min-w-[1.5em] flex-1 flex items-center justify-center self-stretch cursor-pointer m-[0.25em] rounded outline outline-tint-100",
94
+ style: {
95
+ backgroundColor: actualValue,
96
+ opacity: disabled ? 0.65 : 1,
97
+ pointerEvents: disabled ? "none" : undefined
98
+ },
99
+ children: !actualValue && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
100
+ size: "md",
101
+ className: "text-muted",
102
+ icon: core.CoreIcons.colorSwatch
74
103
  })
75
- }), /*#__PURE__*/jsxRuntime.jsx(ColorPicker.ColorPicker, _objectSpread(_objectSpread({}, rest), {}, {
104
+ })
105
+ })), isOpen && /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
106
+ ref: refs.setFloating,
107
+ style: _objectSpread({
108
+ zIndex: "var(--z-popover)"
109
+ }, floatingStyles),
110
+ "data-ref": "dropdownBody"
111
+ }, getFloatingProps()), {}, {
112
+ children: [/*#__PURE__*/jsxRuntime.jsx(ColorPicker.ColorPicker, _objectSpread(_objectSpread({}, rest), {}, {
76
113
  onChange: handleChange,
77
114
  defaultColor: defaultColor,
78
115
  value: actualValue
79
- }))]
80
- }), !disabled && showPicker && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
116
+ })), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingArrow, {
117
+ ref: arrowRef,
118
+ context: context,
119
+ strokeWidth: 0.5,
120
+ className: "fill-base stroke-muted"
121
+ })]
122
+ })), !disabled && showPicker && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
81
123
  icon: core.CoreIcons.colorPicker,
82
124
  onClick: function onClick() {
83
125
  return window.EyeDropper && new window.EyeDropper().open().then(function (resp) {
@@ -5,7 +5,6 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var Color = require('color');
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"],
@@ -37,16 +36,13 @@ var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
37
36
  }, [onChange]);
38
37
  return /*#__PURE__*/jsxRuntime.jsx(reactColor.SketchPicker, {
39
38
  width: "16rem",
40
- className: ColorPicker_module.colorPicker,
39
+ className: "fabric-colorPicker",
41
40
  styles: {
42
41
  "default": {
43
42
  hue: {
44
- borderRadius: "99px",
45
43
  boxShadow: "0 0 1px 1px var(--color-shadow)"
46
44
  },
47
45
  alpha: {
48
- height: "1rem",
49
- borderRadius: "99px",
50
46
  backgroundColor: "var(--fabric-bg)",
51
47
  boxShadow: "0 0 1px 1px var(--color-shadow)"
52
48
  },
@@ -63,36 +59,6 @@ var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
63
59
  backgroundColor: "var(--fabric-bg)",
64
60
  boxShadow: "0 0 0 1px var(--color-shadow), 0 0 8px var(--fabric-shadow)"
65
61
  },
66
- Alpha: {
67
- alpha: {
68
- paddingRight: "calc(1rem - 2px)"
69
- },
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)"
80
- },
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)"
94
- }
95
- },
96
62
  checkboard: {
97
63
  white: "transparent",
98
64
  black: "red"