@react-fabric/form 1.0.0-beta.44 → 1.0.0-beta.46

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 (64) hide show
  1. package/css/_field.css +38 -14
  2. package/dist/cjs/form/Form.js +1 -1
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/input/ColorInput.js +23 -31
  5. package/dist/cjs/input/DateInput.js +1 -1
  6. package/dist/cjs/input/Field.js +1 -0
  7. package/dist/cjs/input/File.js +1 -1
  8. package/dist/cjs/input/Input.js +5 -3
  9. package/dist/cjs/input/Number.js +1 -1
  10. package/dist/cjs/input/Password.js +1 -1
  11. package/dist/cjs/input/RangeSlider.js +2 -2
  12. package/dist/cjs/input/Search.js +1 -1
  13. package/dist/cjs/input/Slider.js +2 -2
  14. package/dist/cjs/input/Textarea.js +1 -1
  15. package/dist/cjs/internal/InputWrapper.js +2 -2
  16. package/dist/cjs/select/DualList.js +4 -1
  17. package/dist/cjs/select/List.js +3 -1
  18. package/dist/cjs/select/Select.js +3 -1
  19. package/dist/cjs/select/useSelect.js +1 -1
  20. package/dist/esm/form/Form.js +1 -1
  21. package/dist/esm/index.js +1 -0
  22. package/dist/esm/input/ColorInput.js +23 -31
  23. package/dist/esm/input/DateInput.js +1 -1
  24. package/dist/esm/input/Field.js +1 -0
  25. package/dist/esm/input/File.js +1 -1
  26. package/dist/esm/input/Input.js +5 -3
  27. package/dist/esm/input/Number.js +1 -1
  28. package/dist/esm/input/Password.js +1 -1
  29. package/dist/esm/input/RangeSlider.js +2 -2
  30. package/dist/esm/input/Search.js +1 -1
  31. package/dist/esm/input/Slider.js +2 -2
  32. package/dist/esm/input/Textarea.js +1 -1
  33. package/dist/esm/internal/InputWrapper.js +2 -2
  34. package/dist/esm/select/DualList.js +4 -1
  35. package/dist/esm/select/List.js +3 -1
  36. package/dist/esm/select/Select.js +3 -1
  37. package/dist/esm/select/useSelect.js +1 -1
  38. package/dist/types/index.d.ts +1 -0
  39. package/dist/types/input/ColorInput.d.ts +1 -1
  40. package/dist/types/input/Input.d.ts +1 -1
  41. package/dist/types/select/DualList.d.ts +6 -2
  42. package/dist/types/select/List.d.ts +1 -1
  43. package/dist/types/select/Select.d.ts +1 -1
  44. package/dist/types/types/index.d.ts +6 -1
  45. package/package.json +5 -5
  46. package/src/form/Form.tsx +1 -1
  47. package/src/index.ts +1 -0
  48. package/src/input/ColorInput.tsx +13 -42
  49. package/src/input/DateInput.tsx +1 -1
  50. package/src/input/Field.tsx +1 -0
  51. package/src/input/File.tsx +1 -1
  52. package/src/input/Input.tsx +7 -2
  53. package/src/input/Number.tsx +1 -1
  54. package/src/input/Password.tsx +1 -1
  55. package/src/input/RangeSlider.tsx +2 -2
  56. package/src/input/Search.tsx +1 -1
  57. package/src/input/Slider.tsx +2 -2
  58. package/src/input/Textarea.tsx +1 -1
  59. package/src/internal/InputWrapper.tsx +6 -3
  60. package/src/select/DualList.tsx +8 -0
  61. package/src/select/List.tsx +2 -0
  62. package/src/select/Select.tsx +2 -0
  63. package/src/select/useSelect.tsx +1 -0
  64. package/src/types/index.ts +7 -0
package/css/_field.css CHANGED
@@ -127,23 +127,47 @@
127
127
  line-height: 1;
128
128
  }
129
129
 
130
- > :not(:first-child) {
131
- &,
132
- & > div,
133
- & > [role="button"],
134
- & > [data-ref="button"] > [role="button"] {
135
- border-start-start-radius: 0;
136
- border-end-start-radius: 0;
130
+ &[data-vertical="false"] {
131
+ > :not(:first-child) {
132
+ &,
133
+ & > div,
134
+ & > [role="button"],
135
+ & > [data-ref="button"] > [role="button"] {
136
+ border-start-start-radius: 0;
137
+ border-end-start-radius: 0;
138
+ }
139
+ }
140
+
141
+ > :not(:last-child) {
142
+ &,
143
+ & > div,
144
+ & > [role="button"],
145
+ & > [data-ref="button"] > [role="button"] {
146
+ border-start-end-radius: 0;
147
+ border-end-end-radius: 0;
148
+ }
137
149
  }
138
150
  }
139
151
 
140
- > :not(:last-child) {
141
- &,
142
- & > div,
143
- & > [role="button"],
144
- & > [data-ref="button"] > [role="button"] {
145
- border-start-end-radius: 0;
146
- border-end-end-radius: 0;
152
+ &[data-vertical="true"] {
153
+ > :not(:first-child) {
154
+ &,
155
+ & > div,
156
+ & > [role="button"],
157
+ & > [data-ref="button"] > [role="button"] {
158
+ border-start-start-radius: 0;
159
+ border-start-end-radius: 0;
160
+ }
161
+ }
162
+
163
+ > :not(:last-child) {
164
+ &,
165
+ & > div,
166
+ & > [role="button"],
167
+ & > [data-ref="button"] > [role="button"] {
168
+ border-end-start-radius: 0;
169
+ border-end-end-radius: 0;
170
+ }
147
171
  }
148
172
  }
149
173
  }
@@ -37,7 +37,7 @@ var Form = function Form(_ref) {
37
37
  var _useTransition = react.useTransition(),
38
38
  _useTransition2 = _slicedToArray(_useTransition, 2),
39
39
  startTransition = _useTransition2[1];
40
- var changeHandler = core.useDebounce(onChange, [onChange]);
40
+ var changeHandler = core.useDebounce(onChange, [onChange], 300);
41
41
  react.useEffect(function () {
42
42
  var subscription = form.watch(function (value) {
43
43
  startTransition(function () {
package/dist/cjs/index.js CHANGED
@@ -8,6 +8,7 @@ var useFileUploader = require('./hooks/useFileUploader.js');
8
8
  var useFormBuilder = require('./hooks/useFormBuilder.js');
9
9
  var schema = require('./types/schema.js');
10
10
  var ArrayInput = require('./input/ArrayInput.js');
11
+ var AvatarInput = require('./input/AvatarInput.js');
11
12
  var Checkbox = require('./input/Checkbox.js');
12
13
  var ColorInput = require('./input/ColorInput.js');
13
14
  var ColorPicker = require('./input/ColorPicker.js');
@@ -40,6 +41,7 @@ exports.useFormBuilder = useFormBuilder.useFormBuilder;
40
41
  exports.DATA_TYPES = schema.DATA_TYPES;
41
42
  exports.SCHEMA_CUSTOM_LIST = schema.SCHEMA_CUSTOM_LIST;
42
43
  exports.ArrayInput = ArrayInput.ArrayInput;
44
+ exports.AvatarInput = AvatarInput.AvatarInput;
43
45
  exports.Checkbox = Checkbox.Checkbox;
44
46
  exports.ColorInput = ColorInput.ColorInput;
45
47
  exports.ColorPicker = ColorPicker.ColorPicker;
@@ -5,33 +5,30 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
6
  var react$1 = require('@floating-ui/react');
7
7
  var core = require('@react-fabric/core');
8
- var utilities = require('@react-fabric/utilities');
9
- var classNames = require('classnames');
10
8
  var react = require('react');
9
+ var InputWrapper = require('../internal/InputWrapper.js');
11
10
  var ColorPicker = require('./ColorPicker.js');
12
11
  var jsxRuntime = require('react/jsx-runtime');
13
12
 
14
- var _excluded = ["ref", "required", "disabled", "allowClear", "invalid", "error", "value", "showPicker", "defaultColor", "decorateEnd", "decorateStart", "onBlur", "onFocus", "onChange", "noOutline"];
13
+ var _excluded = ["ref", "required", "disabled", "readOnly", "invalid", "error", "value", "showPicker", "defaultColor", "onBlur", "onFocus", "onChange", "noOutline"];
15
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; }
16
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; }
17
16
  var ColorInput = function ColorInput(_ref) {
18
17
  _ref.ref;
19
- _ref.required;
20
- var disabled = _ref.disabled,
21
- allowClear = _ref.allowClear;
22
- _ref.invalid;
23
- _ref.error;
24
- var value = _ref.value,
18
+ var required = _ref.required,
19
+ disabled = _ref.disabled,
20
+ readOnly = _ref.readOnly,
21
+ invalid = _ref.invalid,
22
+ error = _ref.error,
23
+ value = _ref.value,
25
24
  showPicker = _ref.showPicker,
26
25
  _ref$defaultColor = _ref.defaultColor,
27
26
  defaultColor = _ref$defaultColor === void 0 ? "" : _ref$defaultColor,
28
- decorateEnd = _ref.decorateEnd,
29
- decorateStart = _ref.decorateStart,
30
27
  onBlur = _ref.onBlur,
31
28
  onFocus = _ref.onFocus,
32
- onChange = _ref.onChange,
33
- noOutline = _ref.noOutline,
34
- rest = _objectWithoutProperties(_ref, _excluded);
29
+ onChange = _ref.onChange;
30
+ _ref.noOutline;
31
+ var rest = _objectWithoutProperties(_ref, _excluded);
35
32
  var _useState = react.useState(""),
36
33
  _useState2 = _slicedToArray(_useState, 2),
37
34
  actualValue = _useState2[0],
@@ -70,7 +67,7 @@ var ColorInput = function ColorInput(_ref) {
70
67
  floatingStyles = _useFloating.floatingStyles,
71
68
  context = _useFloating.context;
72
69
  var click = react$1.useClick(context, {
73
- enabled: !disabled
70
+ enabled: !disabled && !readOnly
74
71
  });
75
72
  var dismiss = react$1.useDismiss(context, {
76
73
  referencePress: true
@@ -78,12 +75,16 @@ var ColorInput = function ColorInput(_ref) {
78
75
  var _useInteractions = react$1.useInteractions([dismiss, click]),
79
76
  getReferenceProps = _useInteractions.getReferenceProps,
80
77
  getFloatingProps = _useInteractions.getFloatingProps;
81
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
82
- 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"),
83
- children: [decorateStart && /*#__PURE__*/jsxRuntime.jsx("div", {
84
- className: classNames("text-muted leading-none flex-content", utilities.isString(decorateStart) && "px-2"),
85
- children: decorateStart
86
- }), /*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
78
+ return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
79
+ showClear: actualValue !== defaultColor && !disabled && !readOnly,
80
+ onClear: handleChange,
81
+ invalid: invalid,
82
+ readOnly: readOnly,
83
+ disabled: disabled,
84
+ required: required,
85
+ error: error
86
+ }, rest), {}, {
87
+ children: [/*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
87
88
  "data-ref": "button",
88
89
  className: "flex-1 flex items-center",
89
90
  ref: refs.setReference
@@ -131,17 +132,8 @@ var ColorInput = function ColorInput(_ref) {
131
132
  return handleChange(resp.sRGBHex);
132
133
  });
133
134
  }
134
- }), decorateEnd && /*#__PURE__*/jsxRuntime.jsx("div", {
135
- className: classNames("text-muted leading-none flex-content", utilities.isString(decorateEnd) && "px-2"),
136
- children: decorateEnd
137
- }), !disabled && allowClear && actualValue !== defaultColor && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
138
- icon: core.CoreIcons.close,
139
- onClick: function onClick() {
140
- return handleChange();
141
- },
142
- className: classNames("text-tint-500 hover:text-tint-700 p-[0.25em] flex-content")
143
135
  })]
144
- });
136
+ }));
145
137
  };
146
138
 
147
139
  exports.ColorInput = ColorInput;
@@ -130,7 +130,7 @@ var DateInput = function DateInput(_ref) {
130
130
  getReferenceProps = _useInteractions.getReferenceProps,
131
131
  getFloatingProps = _useInteractions.getFloatingProps;
132
132
  return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
133
- showClear: !!actualValue,
133
+ showClear: !!actualValue && !disabled && !readOnly,
134
134
  onClear: handleChange,
135
135
  invalid: invalid,
136
136
  readOnly: readOnly,
@@ -20,6 +20,7 @@ var Field = function Field(_ref) {
20
20
  return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
21
21
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
22
22
  className: classNames("fabric-fieldGroup", !plain && !noOutline && "outline", !plain && "bg-base", plain && "flex-wrap", "flex-1 rounded", !vertical && "flex"),
23
+ "data-vertical": !!vertical,
23
24
  children: core.cloneChildren(children, function (child) {
24
25
  return /*#__PURE__*/react.cloneElement(child, {
25
26
  "data-inner": true
@@ -99,7 +99,7 @@ var FileInput = function FileInput(_ref) {
99
99
  onChange === null || onChange === void 0 || onChange(listRef.current);
100
100
  }, [onChange]);
101
101
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
102
- showClear: !utilities.isEmpty(actualValue),
102
+ showClear: !utilities.isEmpty(actualValue) && !disabled && !readOnly,
103
103
  onClear: handleChange,
104
104
  invalid: invalid,
105
105
  readOnly: readOnly,
@@ -7,9 +7,10 @@ var react = require('react');
7
7
  var InputWrapper = require('../internal/InputWrapper.js');
8
8
  var eventHandlers = require('../utils/eventHandlers.js');
9
9
  require('@react-fabric/utilities');
10
+ var classNames = require('classnames');
10
11
  var jsxRuntime = require('react/jsx-runtime');
11
12
 
12
- var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "type", "onBlur", "onFocus", "onChange", "onEnterPressed"];
13
+ var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "monospace", "type", "onBlur", "onFocus", "onChange", "onEnterPressed"];
13
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; }
14
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
16
  var Input = function Input(_ref) {
@@ -23,6 +24,7 @@ var Input = function Input(_ref) {
23
24
  placeholder = _ref.placeholder,
24
25
  autoFocus = _ref.autoFocus,
25
26
  error = _ref.error,
27
+ monospace = _ref.monospace,
26
28
  _ref$type = _ref.type,
27
29
  type = _ref$type === void 0 ? "text" : _ref$type,
28
30
  onBlur = _ref.onBlur,
@@ -47,7 +49,7 @@ var Input = function Input(_ref) {
47
49
  onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
48
50
  }, [onchange]);
49
51
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
50
- showClear: !!actualValue,
52
+ showClear: !!actualValue && !disabled && !readOnly,
51
53
  onClear: handleChange,
52
54
  invalid: invalid,
53
55
  readOnly: readOnly,
@@ -56,7 +58,7 @@ var Input = function Input(_ref) {
56
58
  error: error
57
59
  }, rest), {}, {
58
60
  children: /*#__PURE__*/jsxRuntime.jsx("input", {
59
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
61
+ className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer", monospace && "font-mono text-sm"),
60
62
  "aria-invalid": invalid,
61
63
  "aria-disabled": disabled,
62
64
  "aria-readonly": readOnly,
@@ -47,7 +47,7 @@ var Number = function Number(_ref) {
47
47
  onChange === null || onChange === void 0 || onChange(number !== null && number !== void 0 ? number : null);
48
48
  }, [onChange]);
49
49
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
50
- showClear: !!actualValue,
50
+ showClear: !!actualValue && !disabled && !readOnly,
51
51
  onClear: handleChange,
52
52
  invalid: invalid,
53
53
  readOnly: readOnly,
@@ -55,7 +55,7 @@ var Password = function Password(_ref) {
55
55
  onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
56
56
  }, [onChange]);
57
57
  return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
58
- showClear: !!actualValue,
58
+ showClear: !!actualValue && !disabled && !readOnly,
59
59
  onClear: handleChange,
60
60
  invalid: invalid,
61
61
  readOnly: readOnly,
@@ -114,14 +114,14 @@ var RangeSlider = function RangeSlider(_ref) {
114
114
  isReadOnly: readOnly,
115
115
  canClear: !!actualValue,
116
116
  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"),
117
+ className: classNames("flex-1 order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
118
118
  "data-vertical": !!vertical,
119
119
  style: invalid ? undefined : {
120
120
  color: color
121
121
  },
122
122
  children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
123
123
  ref: rangerInstance.trackElRef,
124
- className: classNames("flex-auto relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
124
+ className: classNames("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
125
125
  style: {
126
126
  height: vertical ? height : undefined
127
127
  },
@@ -62,7 +62,7 @@ var Search = function Search(_ref) {
62
62
  }
63
63
  }, [onChange, searchOnChange, handleSearch]);
64
64
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
65
- showClear: !!actualValue,
65
+ showClear: !!actualValue && !disabled && !readOnly,
66
66
  onClear: handleChange,
67
67
  allowClear: allowClear,
68
68
  invalid: invalid,
@@ -116,14 +116,14 @@ var Slider = function Slider(_ref) {
116
116
  isReadOnly: readOnly,
117
117
  canClear: !!actualValue,
118
118
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
119
- className: classNames("flex-auto order-3 flex items-center select-none relative z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
119
+ className: classNames("flex-1 order-3 flex items-center select-none relative z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
120
120
  "data-vertical": !!vertical,
121
121
  style: invalid ? undefined : {
122
122
  color: color
123
123
  },
124
124
  children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
125
125
  ref: rangerInstance.trackElRef,
126
- className: classNames("flex-auto relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
126
+ className: classNames("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
127
127
  style: {
128
128
  height: vertical ? height : undefined
129
129
  },
@@ -61,7 +61,7 @@ var Textarea = function Textarea(_ref) {
61
61
  }
62
62
  }, [actualValue, variableRows, rows, maxRows]);
63
63
  return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
64
- showClear: !!actualValue,
64
+ showClear: !!actualValue && !disabled && !readOnly,
65
65
  onClear: handleChange,
66
66
  invalid: invalid,
67
67
  readOnly: readOnly,
@@ -69,7 +69,7 @@ var InputWrapper = function InputWrapper(_ref) {
69
69
  var el = /*#__PURE__*/jsxRuntime.jsxs("div", {
70
70
  role: "none",
71
71
  ref: wrapperRef,
72
- className: classNames("fabric-inputWrapper", invalid && "fabric-invalidWrapper", !noOutline && !noBorder && "bg-(--fabric-input) outline -outline-offset-1 overflow-hidden", "flex flex-nowrap items-center flex-1", textarea ? "rounded-capped group" : "rounded", isExpanded ? "fixed inset-4 z-[99]" : floatingExpand ? "absolute inset-x-0" : "relative", !noOutline && "after:absolute after:bottom-0 after:h-[2px] after:bg-primary-500 after:mx-auto"),
72
+ className: classNames("fabric-inputWrapper", invalid && "fabric-invalidWrapper", !noOutline && !noBorder && "bg-(--fabric-input) outline overflow-hidden", "flex flex-nowrap items-center flex-1", textarea ? "rounded-capped group" : "rounded", isExpanded ? "fixed inset-4 z-[99]" : floatingExpand ? "absolute inset-x-0" : "relative", !noOutline && "after:absolute after:bottom-0 after:h-px after:bg-primary-500 after:mx-auto"),
73
73
  onKeyDown: function onKeyDown(e) {
74
74
  return e.key === "Escape" && isExpanded && (setExpanded(false), e.stopPropagation());
75
75
  },
@@ -103,7 +103,7 @@ var InputWrapper = function InputWrapper(_ref) {
103
103
  return /*#__PURE__*/jsxRuntime.jsx(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
104
104
  children: /*#__PURE__*/jsxRuntime.jsx("div", {
105
105
  ref: elRef,
106
- className: "flex-1 relative min-h-8 flex flex-col flex-nowrap",
106
+ className: classNames("relative min-h-8 flex flex-col flex-nowrap", width ? "flex-auto" : "flex-1"),
107
107
  style: {
108
108
  width: width,
109
109
  flexBasis: width
@@ -13,13 +13,14 @@ var core = require('@dnd-kit/core');
13
13
  var utilities = require('@react-fabric/utilities');
14
14
  var jsxRuntime = require('react/jsx-runtime');
15
15
 
16
- var _excluded = ["ref", "value", "options", "groupProperty", "height", "labelProperty", "valueProperty", "renderer", "onChange", "name", "invalid", "readOnly", "disabled", "placeholder", "autoFocus", "error"];
16
+ var _excluded = ["ref", "value", "options", "emptyDisplay", "groupProperty", "height", "labelProperty", "valueProperty", "renderer", "onChange", "name", "invalid", "readOnly", "disabled", "placeholder", "autoFocus", "error"];
17
17
  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; }
18
18
  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; }
19
19
  var DualList = function DualList(_ref) {
20
20
  var ref = _ref.ref,
21
21
  value = _ref.value,
22
22
  options = _ref.options,
23
+ emptyDisplay = _ref.emptyDisplay,
23
24
  groupProperty = _ref.groupProperty,
24
25
  _ref$height = _ref.height,
25
26
  height = _ref$height === void 0 ? "18rem" : _ref$height,
@@ -163,6 +164,7 @@ var DualList = function DualList(_ref) {
163
164
  error: error,
164
165
  height: height,
165
166
  options: leftOptions,
167
+ emptyDisplay: emptyDisplay,
166
168
  groupProperty: groupProperty,
167
169
  labelProperty: labelProperty,
168
170
  valueProperty: valueProperty,
@@ -218,6 +220,7 @@ var DualList = function DualList(_ref) {
218
220
  allowClear: true,
219
221
  height: height,
220
222
  options: rightOptions,
223
+ emptyDisplay: emptyDisplay,
221
224
  groupProperty: groupProperty,
222
225
  labelProperty: labelProperty,
223
226
  valueProperty: valueProperty,
@@ -13,7 +13,7 @@ var Options = require('./Options.js');
13
13
  var useSelect = require('./useSelect.js');
14
14
  var jsxRuntime = require('react/jsx-runtime');
15
15
 
16
- var _excluded = ["ref", "name", "value", "readOnly", "disabled", "required", "placeholder", "autoFocus", "options", "height", "groupProperty", "labelProperty", "valueProperty", "multiple", "allowCreate", "searchable", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed", "invalid", "error", "allowClear", "decorateStart", "decorateEnd", "data-inner", "data-hide-selected"];
16
+ var _excluded = ["ref", "name", "value", "readOnly", "disabled", "required", "placeholder", "autoFocus", "options", "height", "groupProperty", "labelProperty", "valueProperty", "multiple", "allowCreate", "searchable", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed", "emptyDisplay", "invalid", "error", "allowClear", "decorateStart", "decorateEnd", "data-inner", "data-hide-selected"];
17
17
  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; }
18
18
  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; }
19
19
  var List = function List(_ref) {
@@ -41,6 +41,7 @@ var List = function List(_ref) {
41
41
  onChange = _ref.onChange,
42
42
  onSelect = _ref.onSelect,
43
43
  onEnterPressed = _ref.onEnterPressed,
44
+ emptyDisplay = _ref.emptyDisplay,
44
45
  invalid = _ref.invalid,
45
46
  error = _ref.error;
46
47
  _ref.allowClear;
@@ -250,6 +251,7 @@ var List = function List(_ref) {
250
251
  labelProperty: labelProperty,
251
252
  itemRef: setItemRef,
252
253
  itemProps: makeItemProps,
254
+ empty: emptyDisplay,
253
255
  children: function children(item, label) {
254
256
  var _renderer3;
255
257
  return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
@@ -12,7 +12,7 @@ var Options = require('./Options.js');
12
12
  var useSelect = require('./useSelect.js');
13
13
  var jsxRuntime = require('react/jsx-runtime');
14
14
 
15
- var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "options", "defaultOpen", "hideHandle", "groupProperty", "labelProperty", "valueProperty", "multiple", "searchable", "allowCreate", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed"];
15
+ var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "options", "defaultOpen", "hideHandle", "groupProperty", "labelProperty", "valueProperty", "multiple", "searchable", "allowCreate", "emptyDisplay", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed"];
16
16
  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
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
18
  var Select = function Select(_ref) {
@@ -38,6 +38,7 @@ var Select = function Select(_ref) {
38
38
  multiple = _ref.multiple,
39
39
  searchable = _ref.searchable,
40
40
  allowCreate = _ref.allowCreate,
41
+ emptyDisplay = _ref.emptyDisplay,
41
42
  createOption = _ref.createOption,
42
43
  matcher = _ref.matcher,
43
44
  renderer = _ref.renderer,
@@ -276,6 +277,7 @@ var Select = function Select(_ref) {
276
277
  labelProperty: labelProperty,
277
278
  itemRef: setItemRef,
278
279
  itemProps: makeItemProps,
280
+ empty: emptyDisplay,
279
281
  children: function children(item, label) {
280
282
  var _renderer3;
281
283
  return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
@@ -249,7 +249,7 @@ var useSelect = function useSelect(_ref) {
249
249
  setActive: true
250
250
  });
251
251
  });
252
- }, [onQuery]);
252
+ }, [onQuery], 300);
253
253
 
254
254
  // handlers
255
255
  var handleQuery = react.useCallback(function (query) {
@@ -37,7 +37,7 @@ var Form = function Form(_ref) {
37
37
  var _useTransition = useTransition(),
38
38
  _useTransition2 = _slicedToArray(_useTransition, 2),
39
39
  startTransition = _useTransition2[1];
40
- var changeHandler = useDebounce(onChange, [onChange]);
40
+ var changeHandler = useDebounce(onChange, [onChange], 300);
41
41
  useEffect(function () {
42
42
  var subscription = form.watch(function (value) {
43
43
  startTransition(function () {
package/dist/esm/index.js CHANGED
@@ -8,6 +8,7 @@ export { useFileUploader } from './hooks/useFileUploader.js';
8
8
  export { useFormBuilder } from './hooks/useFormBuilder.js';
9
9
  export { DATA_TYPES, SCHEMA_CUSTOM_LIST } from './types/schema.js';
10
10
  export { ArrayInput } from './input/ArrayInput.js';
11
+ export { AvatarInput } from './input/AvatarInput.js';
11
12
  export { Checkbox } from './input/Checkbox.js';
12
13
  export { ColorInput } from './input/ColorInput.js';
13
14
  export { ColorPicker } from './input/ColorPicker.js';
@@ -5,33 +5,30 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
6
  import { useFloating, autoUpdate, shift, flip, offset, arrow, useClick, useDismiss, useInteractions, FloatingArrow } from '@floating-ui/react';
7
7
  import { Icon, CoreIcons } from '@react-fabric/core';
8
- import { isString } from '@react-fabric/utilities';
9
- import classNames from 'classnames';
10
8
  import { useState, useDeferredValue, useEffect, useCallback, startTransition, useRef } from 'react';
9
+ import { InputWrapper } from '../internal/InputWrapper.js';
11
10
  import { ColorPicker } from './ColorPicker.js';
12
11
  import { jsxs, jsx } from 'react/jsx-runtime';
13
12
 
14
- var _excluded = ["ref", "required", "disabled", "allowClear", "invalid", "error", "value", "showPicker", "defaultColor", "decorateEnd", "decorateStart", "onBlur", "onFocus", "onChange", "noOutline"];
13
+ var _excluded = ["ref", "required", "disabled", "readOnly", "invalid", "error", "value", "showPicker", "defaultColor", "onBlur", "onFocus", "onChange", "noOutline"];
15
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; }
16
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; }
17
16
  var ColorInput = function ColorInput(_ref) {
18
17
  _ref.ref;
19
- _ref.required;
20
- var disabled = _ref.disabled,
21
- allowClear = _ref.allowClear;
22
- _ref.invalid;
23
- _ref.error;
24
- var value = _ref.value,
18
+ var required = _ref.required,
19
+ disabled = _ref.disabled,
20
+ readOnly = _ref.readOnly,
21
+ invalid = _ref.invalid,
22
+ error = _ref.error,
23
+ value = _ref.value,
25
24
  showPicker = _ref.showPicker,
26
25
  _ref$defaultColor = _ref.defaultColor,
27
26
  defaultColor = _ref$defaultColor === void 0 ? "" : _ref$defaultColor,
28
- decorateEnd = _ref.decorateEnd,
29
- decorateStart = _ref.decorateStart,
30
27
  onBlur = _ref.onBlur,
31
28
  onFocus = _ref.onFocus,
32
- onChange = _ref.onChange,
33
- noOutline = _ref.noOutline,
34
- rest = _objectWithoutProperties(_ref, _excluded);
29
+ onChange = _ref.onChange;
30
+ _ref.noOutline;
31
+ var rest = _objectWithoutProperties(_ref, _excluded);
35
32
  var _useState = useState(""),
36
33
  _useState2 = _slicedToArray(_useState, 2),
37
34
  actualValue = _useState2[0],
@@ -70,7 +67,7 @@ var ColorInput = function ColorInput(_ref) {
70
67
  floatingStyles = _useFloating.floatingStyles,
71
68
  context = _useFloating.context;
72
69
  var click = useClick(context, {
73
- enabled: !disabled
70
+ enabled: !disabled && !readOnly
74
71
  });
75
72
  var dismiss = useDismiss(context, {
76
73
  referencePress: true
@@ -78,12 +75,16 @@ var ColorInput = function ColorInput(_ref) {
78
75
  var _useInteractions = useInteractions([dismiss, click]),
79
76
  getReferenceProps = _useInteractions.getReferenceProps,
80
77
  getFloatingProps = _useInteractions.getFloatingProps;
81
- return /*#__PURE__*/jsxs("div", {
82
- 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"),
83
- children: [decorateStart && /*#__PURE__*/jsx("div", {
84
- className: classNames("text-muted leading-none flex-content", isString(decorateStart) && "px-2"),
85
- children: decorateStart
86
- }), /*#__PURE__*/jsx("button", _objectSpread(_objectSpread({
78
+ return /*#__PURE__*/jsxs(InputWrapper, _objectSpread(_objectSpread({
79
+ showClear: actualValue !== defaultColor && !disabled && !readOnly,
80
+ onClear: handleChange,
81
+ invalid: invalid,
82
+ readOnly: readOnly,
83
+ disabled: disabled,
84
+ required: required,
85
+ error: error
86
+ }, rest), {}, {
87
+ children: [/*#__PURE__*/jsx("button", _objectSpread(_objectSpread({
87
88
  "data-ref": "button",
88
89
  className: "flex-1 flex items-center",
89
90
  ref: refs.setReference
@@ -131,17 +132,8 @@ var ColorInput = function ColorInput(_ref) {
131
132
  return handleChange(resp.sRGBHex);
132
133
  });
133
134
  }
134
- }), decorateEnd && /*#__PURE__*/jsx("div", {
135
- className: classNames("text-muted leading-none flex-content", isString(decorateEnd) && "px-2"),
136
- children: decorateEnd
137
- }), !disabled && allowClear && actualValue !== defaultColor && /*#__PURE__*/jsx(Icon, {
138
- icon: CoreIcons.close,
139
- onClick: function onClick() {
140
- return handleChange();
141
- },
142
- className: classNames("text-tint-500 hover:text-tint-700 p-[0.25em] flex-content")
143
135
  })]
144
- });
136
+ }));
145
137
  };
146
138
 
147
139
  export { ColorInput };
@@ -130,7 +130,7 @@ var DateInput = function DateInput(_ref) {
130
130
  getReferenceProps = _useInteractions.getReferenceProps,
131
131
  getFloatingProps = _useInteractions.getFloatingProps;
132
132
  return /*#__PURE__*/jsxs(InputWrapper, _objectSpread(_objectSpread({
133
- showClear: !!actualValue,
133
+ showClear: !!actualValue && !disabled && !readOnly,
134
134
  onClear: handleChange,
135
135
  invalid: invalid,
136
136
  readOnly: readOnly,
@@ -20,6 +20,7 @@ var Field = function Field(_ref) {
20
20
  return /*#__PURE__*/jsx(FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
21
21
  children: /*#__PURE__*/jsx("div", {
22
22
  className: classNames("fabric-fieldGroup", !plain && !noOutline && "outline", !plain && "bg-base", plain && "flex-wrap", "flex-1 rounded", !vertical && "flex"),
23
+ "data-vertical": !!vertical,
23
24
  children: cloneChildren(children, function (child) {
24
25
  return /*#__PURE__*/cloneElement(child, {
25
26
  "data-inner": true
@@ -99,7 +99,7 @@ var FileInput = function FileInput(_ref) {
99
99
  onChange === null || onChange === void 0 || onChange(listRef.current);
100
100
  }, [onChange]);
101
101
  return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
102
- showClear: !isEmpty(actualValue),
102
+ showClear: !isEmpty(actualValue) && !disabled && !readOnly,
103
103
  onClear: handleChange,
104
104
  invalid: invalid,
105
105
  readOnly: readOnly,