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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
  2. package/css/_colorPicker.css +65 -0
  3. package/{src/internal/Field.module.css → css/_field.css} +64 -29
  4. package/{src/input/File.module.css → css/_file.css} +21 -6
  5. package/css/styles.css +27 -0
  6. package/dist/cjs/builder/FileField.js +37 -25
  7. package/dist/cjs/builder/FormField.js +50 -34
  8. package/dist/cjs/builder/SchemaEditor.js +72 -0
  9. package/dist/cjs/builder/components/AddSchemaFields.js +62 -0
  10. package/dist/cjs/builder/components/SchemaArrayForm.js +143 -0
  11. package/dist/cjs/builder/components/SchemaField.js +414 -0
  12. package/dist/cjs/form/Controller.js +1 -1
  13. package/dist/cjs/form/Form.js +11 -6
  14. package/dist/cjs/hooks/useFormBuilder.js +27 -15
  15. package/dist/cjs/index.js +11 -2
  16. package/dist/cjs/input/ArrayInput.js +61 -33
  17. package/dist/cjs/input/AvatarInput.js +9 -8
  18. package/dist/cjs/input/Checkbox.js +6 -5
  19. package/dist/cjs/input/ColorInput.js +95 -56
  20. package/dist/cjs/input/ColorPicker.js +1 -35
  21. package/dist/cjs/input/DateInput.js +186 -0
  22. package/dist/cjs/input/Field.js +5 -4
  23. package/dist/cjs/input/File.js +4 -7
  24. package/dist/cjs/input/Hidden.js +3 -1
  25. package/dist/cjs/input/Input.js +11 -7
  26. package/dist/cjs/input/Number.js +9 -7
  27. package/dist/cjs/input/Password.js +10 -8
  28. package/dist/cjs/input/Radio.js +2 -2
  29. package/dist/cjs/input/RadioGroup.js +6 -3
  30. package/dist/cjs/input/{Range.js → RangeSlider.js} +5 -5
  31. package/dist/cjs/input/Search.js +16 -16
  32. package/dist/cjs/input/Slider.js +3 -3
  33. package/dist/cjs/input/Switch.js +30 -7
  34. package/dist/cjs/input/Textarea.js +13 -4
  35. package/dist/cjs/internal/ErrorIcon.js +1 -1
  36. package/dist/cjs/internal/FieldWrapper.js +11 -4
  37. package/dist/cjs/internal/InputWrapper.js +19 -16
  38. package/dist/cjs/select/AutoComplete.js +12 -8
  39. package/dist/cjs/select/DualList.js +4 -1
  40. package/dist/cjs/select/List.js +45 -20
  41. package/dist/cjs/select/Options.js +2 -2
  42. package/dist/cjs/select/Select.js +14 -4
  43. package/dist/cjs/select/useSelect.js +10 -6
  44. package/dist/cjs/types/schema.js +43 -0
  45. package/dist/cjs/utils/eventHandlers.js +11 -5
  46. package/dist/cjs/utils/getColor.js +6 -0
  47. package/dist/esm/builder/FileField.js +39 -27
  48. package/dist/esm/builder/FormField.js +50 -34
  49. package/dist/esm/builder/SchemaEditor.js +72 -0
  50. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  51. package/dist/esm/builder/components/SchemaArrayForm.js +143 -0
  52. package/dist/esm/builder/components/SchemaField.js +414 -0
  53. package/dist/esm/form/Controller.js +1 -1
  54. package/dist/esm/form/Form.js +11 -6
  55. package/dist/esm/hooks/useFormBuilder.js +25 -13
  56. package/dist/esm/index.js +5 -1
  57. package/dist/esm/input/ArrayInput.js +61 -33
  58. package/dist/esm/input/AvatarInput.js +9 -8
  59. package/dist/esm/input/Checkbox.js +6 -5
  60. package/dist/esm/input/ColorInput.js +97 -58
  61. package/dist/esm/input/ColorPicker.js +1 -35
  62. package/dist/esm/input/DateInput.js +186 -0
  63. package/dist/esm/input/Field.js +6 -5
  64. package/dist/esm/input/File.js +6 -9
  65. package/dist/esm/input/Hidden.js +3 -1
  66. package/dist/esm/input/Input.js +13 -9
  67. package/dist/esm/input/Number.js +11 -9
  68. package/dist/esm/input/Password.js +12 -10
  69. package/dist/esm/input/Radio.js +2 -2
  70. package/dist/esm/input/RadioGroup.js +7 -4
  71. package/dist/esm/input/{Range.js → RangeSlider.js} +5 -5
  72. package/dist/esm/input/Search.js +18 -18
  73. package/dist/esm/input/Slider.js +3 -3
  74. package/dist/esm/input/Switch.js +32 -9
  75. package/dist/esm/input/Textarea.js +14 -5
  76. package/dist/esm/internal/ErrorIcon.js +1 -1
  77. package/dist/esm/internal/FieldWrapper.js +11 -4
  78. package/dist/esm/internal/InputWrapper.js +19 -16
  79. package/dist/esm/select/AutoComplete.js +12 -8
  80. package/dist/esm/select/DualList.js +4 -1
  81. package/dist/esm/select/List.js +46 -21
  82. package/dist/esm/select/Options.js +2 -2
  83. package/dist/esm/select/Select.js +14 -4
  84. package/dist/esm/select/useSelect.js +11 -7
  85. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  86. package/dist/esm/utils/eventHandlers.js +11 -5
  87. package/dist/esm/utils/getColor.js +6 -1
  88. package/dist/types/builder/FileField.d.ts +4 -2
  89. package/dist/types/builder/FormField.d.ts +3 -1
  90. package/dist/types/builder/SchemaEditor.d.ts +2 -0
  91. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  92. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  93. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  94. package/dist/types/form/Controller.d.ts +2 -2
  95. package/dist/types/form/Form.d.ts +5 -1
  96. package/dist/types/hooks/useFormBuilder.d.ts +3 -1
  97. package/dist/types/index.d.ts +5 -2
  98. package/dist/types/input/ArrayInput.d.ts +39 -6
  99. package/dist/types/input/AvatarInput.d.ts +6 -3
  100. package/dist/types/input/Checkbox.d.ts +4 -4
  101. package/dist/types/input/ColorInput.d.ts +2 -2
  102. package/dist/types/input/ColorPicker.d.ts +1 -1
  103. package/dist/types/input/DateInput.d.ts +19 -0
  104. package/dist/types/input/Field.d.ts +0 -1
  105. package/dist/types/input/Input.d.ts +1 -1
  106. package/dist/types/input/Number.d.ts +1 -1
  107. package/dist/types/input/Password.d.ts +1 -1
  108. package/dist/types/input/Radio.d.ts +0 -1
  109. package/dist/types/input/RadioGroup.d.ts +18 -3
  110. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +1 -1
  111. package/dist/types/input/Search.d.ts +5 -1
  112. package/dist/types/input/Switch.d.ts +7 -4
  113. package/dist/types/input/Textarea.d.ts +5 -1
  114. package/dist/types/internal/FieldWrapper.d.ts +1 -1
  115. package/dist/types/internal/InputWrapper.d.ts +1 -1
  116. package/dist/types/ranger/index.d.ts +2 -2
  117. package/dist/types/select/AutoComplete.d.ts +1 -1
  118. package/dist/types/select/DualList.d.ts +6 -2
  119. package/dist/types/select/List.d.ts +1 -1
  120. package/dist/types/select/Select.d.ts +1 -1
  121. package/dist/types/select/useSelect.d.ts +7 -15
  122. package/dist/types/types/index.d.ts +28 -7
  123. package/dist/types/types/schema.d.ts +78 -33
  124. package/dist/types/utils/eventHandlers.d.ts +1 -1
  125. package/package.json +15 -12
  126. package/src/builder/FileField.tsx +53 -27
  127. package/src/builder/FormField.tsx +52 -32
  128. package/src/builder/SchemaEditor.tsx +72 -0
  129. package/src/builder/components/AddSchemaFields.tsx +74 -0
  130. package/src/builder/components/SchemaArrayForm.tsx +158 -0
  131. package/src/builder/components/SchemaField.tsx +436 -0
  132. package/src/form/Controller.tsx +3 -3
  133. package/src/form/Form.tsx +14 -5
  134. package/src/hooks/useFormBuilder.tsx +29 -15
  135. package/src/index.ts +11 -2
  136. package/src/input/ArrayInput.tsx +130 -54
  137. package/src/input/AvatarInput.tsx +12 -8
  138. package/src/input/Checkbox.tsx +6 -5
  139. package/src/input/ColorInput.tsx +113 -69
  140. package/src/input/ColorPicker.tsx +2 -36
  141. package/src/input/DateInput.tsx +250 -0
  142. package/src/input/Field.tsx +10 -11
  143. package/src/input/File.tsx +7 -14
  144. package/src/input/Hidden.tsx +4 -1
  145. package/src/input/Input.tsx +15 -10
  146. package/src/input/Number.tsx +10 -10
  147. package/src/input/Password.tsx +13 -12
  148. package/src/input/Radio.tsx +2 -2
  149. package/src/input/RadioGroup.tsx +27 -4
  150. package/src/input/{Range.tsx → RangeSlider.tsx} +4 -4
  151. package/src/input/Search.tsx +20 -19
  152. package/src/input/Slider.tsx +3 -3
  153. package/src/input/Switch.tsx +43 -7
  154. package/src/input/Textarea.tsx +19 -5
  155. package/src/internal/ErrorIcon.tsx +1 -1
  156. package/src/internal/FieldWrapper.tsx +8 -4
  157. package/src/internal/InputWrapper.tsx +36 -20
  158. package/src/select/AutoComplete.tsx +5 -1
  159. package/src/select/DualList.tsx +8 -0
  160. package/src/select/List.tsx +41 -8
  161. package/src/select/Options.tsx +1 -1
  162. package/src/select/Select.tsx +13 -3
  163. package/src/select/useSelect.tsx +13 -5
  164. package/src/types/index.ts +34 -8
  165. package/src/types/schema.ts +96 -41
  166. package/src/utils/eventHandlers.ts +9 -3
  167. package/dist/cjs/input/ArrayInput.module.css +0 -1
  168. package/dist/cjs/input/ColorPicker.module.css +0 -1
  169. package/dist/cjs/input/File.module.css +0 -1
  170. package/dist/cjs/internal/Field.module.css +0 -1
  171. package/dist/esm/input/ArrayInput.module.css +0 -1
  172. package/dist/esm/input/ColorPicker.module.css +0 -1
  173. package/dist/esm/input/File.module.css +0 -1
  174. package/dist/esm/internal/Field.module.css +0 -1
@@ -4,13 +4,13 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
6
  import { useDebounce, Icon, CoreIcons, Button } from '@react-fabric/core';
7
- import { useState, useDeferredValue, useRef, useMemo, useEffect, useCallback, Fragment } from 'react';
7
+ import { useState, useDeferredValue, useRef, useEffect, useCallback, Fragment } from 'react';
8
8
  import { InputWrapper } from '../internal/InputWrapper.js';
9
- import { handleEnter } from '../utils/eventHandlers.js';
9
+ import { useHandleEnter } from '../utils/eventHandlers.js';
10
10
  import '@react-fabric/utilities';
11
11
  import { jsx, jsxs } from 'react/jsx-runtime';
12
12
 
13
- var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "allowClear", "searchOnChange", "decorateEnd", "decorateStart", "onSearch", "onChange", "onEnterPressed"];
13
+ var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "hideHandle", "allowClear", "searchOnChange", "onBlur", "onFocus", "onSearch", "onChange", "onEnterPressed"];
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
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; }
16
16
  var Search = function Search(_ref) {
@@ -24,12 +24,13 @@ var Search = function Search(_ref) {
24
24
  searching = _ref.searching,
25
25
  placeholder = _ref.placeholder,
26
26
  autoFocus = _ref.autoFocus,
27
+ hideHandle = _ref.hideHandle,
27
28
  _ref$allowClear = _ref.allowClear,
28
29
  allowClear = _ref$allowClear === void 0 ? true : _ref$allowClear,
29
30
  _ref$searchOnChange = _ref.searchOnChange,
30
- searchOnChange = _ref$searchOnChange === void 0 ? true : _ref$searchOnChange,
31
- decorateEnd = _ref.decorateEnd,
32
- decorateStart = _ref.decorateStart,
31
+ searchOnChange = _ref$searchOnChange === void 0 ? false : _ref$searchOnChange,
32
+ onBlur = _ref.onBlur,
33
+ onFocus = _ref.onFocus,
33
34
  onSearch = _ref.onSearch,
34
35
  onChange = _ref.onChange;
35
36
  _ref.onEnterPressed;
@@ -43,9 +44,7 @@ var Search = function Search(_ref) {
43
44
  var handleSearch = useDebounce(function () {
44
45
  return onSearch === null || onSearch === void 0 ? void 0 : onSearch(refValue.current);
45
46
  }, [onSearch], 250);
46
- var handleEnterPressed = useMemo(function () {
47
- return handleEnter(handleSearch);
48
- }, [handleSearch]);
47
+ var handleEnterPressed = useHandleEnter(handleSearch);
49
48
  useEffect(function () {
50
49
  setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
51
50
  }, [deferred]);
@@ -53,28 +52,27 @@ var Search = function Search(_ref) {
53
52
  var value = e === null || e === void 0 ? void 0 : e.target.value;
54
53
  refValue.current = value !== null && value !== void 0 ? value : "";
55
54
  setActualValue(value !== null && value !== void 0 ? value : "");
56
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
55
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
57
56
 
58
- // value was cleared so force fire onSearch
59
- if (searchOnChange) {
57
+ // when e is undefined value was cleared so force fire onSearch
58
+ if (!e || searchOnChange) {
60
59
  handleSearch();
61
60
  }
62
61
  }, [onChange, searchOnChange, handleSearch]);
63
62
  return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
64
- showClear: !!actualValue,
63
+ showClear: !!actualValue && !disabled && !readOnly,
65
64
  onClear: handleChange,
66
65
  allowClear: allowClear,
67
66
  invalid: invalid,
68
67
  readOnly: readOnly,
69
68
  disabled: disabled,
70
69
  required: required,
71
- decorateStart: decorateStart,
72
- decorateEnd: /*#__PURE__*/jsxs(Fragment, {
73
- children: [decorateEnd, searching && /*#__PURE__*/jsx(Icon, {
70
+ actionButton: /*#__PURE__*/jsxs(Fragment, {
71
+ children: [searching && /*#__PURE__*/jsx(Icon, {
74
72
  className: "p-2",
75
73
  icon: CoreIcons.spinner,
76
74
  animate: "spin"
77
- }), !searching && /*#__PURE__*/jsx(Button, {
75
+ }), !searching && !hideHandle && /*#__PURE__*/jsx(Button, {
78
76
  tabIndex: -1,
79
77
  variant: "link",
80
78
  "aria-label": "search",
@@ -85,7 +83,7 @@ var Search = function Search(_ref) {
85
83
  })
86
84
  }, rest), {}, {
87
85
  children: /*#__PURE__*/jsx("input", {
88
- className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
86
+ className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
89
87
  "aria-invalid": invalid,
90
88
  "aria-disabled": disabled,
91
89
  "aria-readonly": readOnly,
@@ -100,6 +98,8 @@ var Search = function Search(_ref) {
100
98
  autoComplete: "off",
101
99
  autoFocus: autoFocus,
102
100
  value: actualValue,
101
+ onBlur: onBlur,
102
+ onFocus: onFocus,
103
103
  onChange: handleChange,
104
104
  onKeyDown: handleEnterPressed
105
105
  })
@@ -73,7 +73,7 @@ var Slider = function Slider(_ref) {
73
73
  var handleChange = useCallback(function (value) {
74
74
  var val = useInfinity && value === max ? Infinity : value;
75
75
  setActualValue(val !== null && val !== void 0 ? val : 0);
76
- onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : undefined);
76
+ onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
77
77
  }, [onChange, max, useInfinity]);
78
78
  var minDisplay = useMemo(function () {
79
79
  return /*#__PURE__*/jsx("span", {
@@ -116,14 +116,14 @@ var Slider = function Slider(_ref) {
116
116
  isReadOnly: readOnly,
117
117
  canClear: !!actualValue,
118
118
  children: /*#__PURE__*/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__*/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
  },
@@ -4,13 +4,14 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
6
  import classNames from 'classnames';
7
- import { useState, useDeferredValue, useEffect, useCallback } from 'react';
7
+ import { useState, useDeferredValue, useEffect, useCallback, Fragment } from 'react';
8
8
  import { ErrorIcon } from '../internal/ErrorIcon.js';
9
- import '@react-fabric/utilities';
10
- import { getBgClass, getColor } from '../utils/getColor.js';
9
+ import '@floating-ui/react';
10
+ import '@react-fabric/core';
11
+ import { getBgClass, getColor, getColorClass } from '../utils/getColor.js';
11
12
  import { jsxs, jsx } from 'react/jsx-runtime';
12
13
 
13
- var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "defaultColor", "onChange"];
14
+ var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "onLabel", "offLabel", "onLabelColor", "offLabelColor", "defaultColor", "required", "onChange"];
14
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
16
  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; }
16
17
  var Switch = function Switch(_ref) {
@@ -23,8 +24,13 @@ var Switch = function Switch(_ref) {
23
24
  width = _ref.width,
24
25
  color = _ref.color;
25
26
  _ref.name;
26
- var defaultColor = _ref.defaultColor,
27
- onChange = _ref.onChange,
27
+ var onLabel = _ref.onLabel,
28
+ offLabel = _ref.offLabel,
29
+ onLabelColor = _ref.onLabelColor,
30
+ offLabelColor = _ref.offLabelColor,
31
+ defaultColor = _ref.defaultColor;
32
+ _ref.required;
33
+ var onChange = _ref.onChange,
28
34
  rest = _objectWithoutProperties(_ref, _excluded);
29
35
  var _useState = useState(false),
30
36
  _useState2 = _slicedToArray(_useState, 2),
@@ -45,7 +51,7 @@ var Switch = function Switch(_ref) {
45
51
  width: width
46
52
  },
47
53
  children: [/*#__PURE__*/jsxs("div", {
48
- className: classNames(actualValue && getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative flex h-6 w-10 cursor-pointer rounded-full p-1 transition-colors duration-200 ease-in-out"),
54
+ className: classNames(actualValue && getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative grid grid-cols-2 items-center h-6 min-w-10 cursor-pointer rounded-full p-1 transition-colors duration-200 ease-in-out"),
49
55
  style: {
50
56
  backgroundColor: actualValue ? getColor(color) : getColor(defaultColor)
51
57
  },
@@ -64,13 +70,30 @@ var Switch = function Switch(_ref) {
64
70
  onChange: handleChange
65
71
  }, rest)), /*#__PURE__*/jsx("span", {
66
72
  "aria-hidden": "true",
67
- className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-4" : "translate-x-0", "pointer-events-none inline-block size-4 rounded-full bg-white ring-0 transition duration-200 ease-in-out")
73
+ className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-[100%]" : "translate-x-0", "pointer-events-none inline-block h-4 start-1 absolute rounded-full bg-white ring-0 transition duration-200 ease-in-out"),
74
+ style: {
75
+ width: "calc(50% - 0.25rem)"
76
+ }
77
+ }), (!!onLabel || !!offLabel) && /*#__PURE__*/jsxs(Fragment, {
78
+ children: [/*#__PURE__*/jsx("span", {
79
+ className: "whitespace-nowrap text-xs px-1 ".concat(getColorClass(onLabelColor !== null && onLabelColor !== void 0 ? onLabelColor : "white")),
80
+ style: {
81
+ color: getColor(onLabelColor)
82
+ },
83
+ children: onLabel !== null && onLabel !== void 0 ? onLabel : " "
84
+ }), /*#__PURE__*/jsx("span", {
85
+ className: "whitespace-nowrap text-xs px-1 ".concat(getColorClass(offLabelColor !== null && offLabelColor !== void 0 ? offLabelColor : "base")),
86
+ style: {
87
+ color: getColor(offLabelColor)
88
+ },
89
+ children: offLabel !== null && offLabel !== void 0 ? offLabel : " "
90
+ })]
68
91
  })]
69
92
  }), /*#__PURE__*/jsx(ErrorIcon, {
70
93
  invalid: invalid,
71
94
  error: error
72
95
  }), label && /*#__PURE__*/jsx("span", {
73
- className: "flex-initial leading-5 truncate",
96
+ className: "flex-initial leading-tight truncate",
74
97
  children: label
75
98
  })]
76
99
  });
@@ -5,11 +5,11 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
6
  import { useState, useDeferredValue, useRef, useEffect, useCallback } from 'react';
7
7
  import { InputWrapper } from '../internal/InputWrapper.js';
8
- import { handleEnter } from '../utils/eventHandlers.js';
8
+ import { useHandleEnter } from '../utils/eventHandlers.js';
9
9
  import '@react-fabric/utilities';
10
10
  import { jsx } from 'react/jsx-runtime';
11
11
 
12
- var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "rows", "maxRows", "variableRows", "onChange", "onEnterPressed"];
12
+ var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "rows", "maxRows", "variableRows", "expandable", "onBlur", "onFocus", "onChange", "onEnterPressed"];
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 Textarea = function Textarea(_ref) {
@@ -27,6 +27,9 @@ var Textarea = function Textarea(_ref) {
27
27
  _ref$maxRows = _ref.maxRows,
28
28
  maxRows = _ref$maxRows === void 0 ? 12 : _ref$maxRows,
29
29
  variableRows = _ref.variableRows,
30
+ expandable = _ref.expandable,
31
+ onBlur = _ref.onBlur,
32
+ onFocus = _ref.onFocus,
30
33
  onChange = _ref.onChange,
31
34
  onEnterPressed = _ref.onEnterPressed,
32
35
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -46,7 +49,7 @@ var Textarea = function Textarea(_ref) {
46
49
  var handleChange = useCallback(function (e) {
47
50
  var value = e === null || e === void 0 ? void 0 : e.target.value;
48
51
  setActualValue(value !== null && value !== void 0 ? value : "");
49
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
52
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
50
53
  }, [onChange]);
51
54
  useEffect(function () {
52
55
  if (variableRows) {
@@ -57,14 +60,18 @@ var Textarea = function Textarea(_ref) {
57
60
  setFixedRows(rows);
58
61
  }
59
62
  }, [actualValue, variableRows, rows, maxRows]);
63
+ var handleEnterPressed = useHandleEnter(onEnterPressed, {
64
+ preventDefault: !!onEnterPressed
65
+ });
60
66
  return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
61
- showClear: !!actualValue,
67
+ showClear: !!actualValue && !disabled && !readOnly,
62
68
  onClear: handleChange,
63
69
  invalid: invalid,
64
70
  readOnly: readOnly,
65
71
  disabled: disabled,
66
72
  required: required,
67
73
  wrapperRef: wrapperRef,
74
+ textareaExpandable: expandable,
68
75
  textarea: true
69
76
  }, rest), {}, {
70
77
  children: /*#__PURE__*/jsx("textarea", {
@@ -82,8 +89,10 @@ var Textarea = function Textarea(_ref) {
82
89
  autoComplete: "off",
83
90
  autoFocus: autoFocus,
84
91
  value: actualValue,
92
+ onBlur: onBlur,
93
+ onFocus: onFocus,
85
94
  onChange: handleChange,
86
- onKeyDown: handleEnter(onEnterPressed)
95
+ onKeyDown: handleEnterPressed
87
96
  })
88
97
  }));
89
98
  };
@@ -20,7 +20,7 @@ var ErrorIcon = function ErrorIcon(_ref) {
20
20
  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)
21
21
  }) : {}),
22
22
  placement: "bottom",
23
- color: "danger",
23
+ color: "danger-200",
24
24
  children: /*#__PURE__*/jsx(Icon, {
25
25
  className: "flex-content first:ms-2 self-center",
26
26
  color: "danger",
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import classNames from 'classnames';
4
- import classes from './Field.module.css';
4
+ import { ErrorIcon } from './ErrorIcon.js';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
7
7
  /*
@@ -40,16 +40,18 @@ var FieldWrapper = function FieldWrapper(_ref) {
40
40
  children = _ref.children,
41
41
  listing = _ref.listing,
42
42
  className = _ref.className,
43
+ invalid = _ref.invalid,
44
+ error = _ref.error,
43
45
  isInner = _ref["data-inner"];
44
46
  return /*#__PURE__*/jsxs("div", {
45
- className: classNames(classes.fieldWrapper, className, inline ? "flex flex-nowrap gap-1" : "block"),
47
+ className: classNames("fabric-fieldWrapper", className, inline ? "flex flex-nowrap gap-1" : "block"),
46
48
  "data-ref": "fieldWrapper",
47
49
  style: {
48
50
  width: width,
49
51
  flexBasis: width
50
52
  },
51
- children: [!isInner && /*#__PURE__*/jsxs("div", {
52
- className: "flex flex-nowrap flex-content gap-1 py-0.5 px-2",
53
+ children: [!isInner && label && /*#__PURE__*/jsxs("div", {
54
+ className: "flex flex-nowrap flex-content items-end gap-1 py-0.5 px-2",
53
55
  style: {
54
56
  width: inline ? labelWidth : undefined
55
57
  },
@@ -64,6 +66,11 @@ var FieldWrapper = function FieldWrapper(_ref) {
64
66
  }), required && /*#__PURE__*/jsx("span", {
65
67
  className: "text-danger-500 select-none flex-content text-[10px]",
66
68
  children: "\u273D"
69
+ }), /*#__PURE__*/jsx(ErrorIcon, {
70
+ invalid: invalid,
71
+ error: error
72
+ }), /*#__PURE__*/jsx("div", {
73
+ className: "flex-1"
67
74
  }), appendLabel && /*#__PURE__*/jsx("span", {
68
75
  className: "flex-content",
69
76
  children: appendLabel
@@ -3,33 +3,35 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
- import { FloatingPortal } from '@floating-ui/react';
7
6
  import { Icon, CoreIcons } from '@react-fabric/core';
8
7
  import { isString } from '@react-fabric/utilities';
9
8
  import classNames from 'classnames';
10
9
  import { useRef, useState, useMemo, useCallback, useEffect } from 'react';
11
10
  import { Fragment, jsxs, jsx } from 'react/jsx-runtime';
12
11
  import { ErrorIcon } from './ErrorIcon.js';
13
- import classes from './Field.module.css';
14
12
  import { FieldWrapper } from './FieldWrapper.js';
15
13
 
16
- var _excluded = ["invalid", "error", "allowClear", "showClear", "decorateStart", "decorateEnd", "children", "onClear", "noOutline", "noBorder", "textarea", "data-inner", "data-open", "floatingExpand", "wrapperRef", "width"];
14
+ var _excluded = ["invalid", "error", "allowClear", "showClear", "decorateStart", "decorateEnd", "decorateEndShowWhenEmpty", "decorateEndHideWhenEmpty", "children", "onClear", "noOutline", "noBorder", "actionButton", "textarea", "textareaExpandable", "data-inner", "data-open", "floatingExpand", "wrapperRef", "width"];
17
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
16
  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
17
  var InputWrapper = function InputWrapper(_ref) {
20
- var _elRef$current;
21
18
  var invalid = _ref.invalid,
22
19
  error = _ref.error,
23
20
  allowClear = _ref.allowClear,
24
21
  showClear = _ref.showClear,
25
22
  decorateStart = _ref.decorateStart,
26
23
  decorateEnd = _ref.decorateEnd,
24
+ decorateEndShowWhenEmpty = _ref.decorateEndShowWhenEmpty,
25
+ decorateEndHideWhenEmpty = _ref.decorateEndHideWhenEmpty,
27
26
  children = _ref.children,
28
27
  onClear = _ref.onClear,
29
28
  noOutline = _ref.noOutline,
30
29
  noBorder = _ref.noBorder,
30
+ actionButton = _ref.actionButton,
31
31
  _ref$textarea = _ref.textarea,
32
32
  textarea = _ref$textarea === void 0 ? false : _ref$textarea,
33
+ _ref$textareaExpandab = _ref.textareaExpandable,
34
+ textareaExpandable = _ref$textareaExpandab === void 0 ? false : _ref$textareaExpandab,
33
35
  isInner = _ref["data-inner"];
34
36
  _ref["data-open"];
35
37
  var floatingExpand = _ref.floatingExpand,
@@ -67,13 +69,13 @@ var InputWrapper = function InputWrapper(_ref) {
67
69
  var el = /*#__PURE__*/jsxs("div", {
68
70
  role: "none",
69
71
  ref: wrapperRef,
70
- className: classNames(classes.inputWrapper, invalid && classes.invalidWrapper, !noOutline && !noBorder && "bg-[var(--fabric-input)] outline overflow-hidden", "flex flex-nowrap items-center", 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"),
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"),
71
73
  onKeyDown: function onKeyDown(e) {
72
- return e.key === "Escape" && setExpanded(false);
74
+ return e.key === "Escape" && isExpanded && (setExpanded(false), e.stopPropagation());
73
75
  },
74
76
  children: [decorateStart && /*#__PURE__*/jsx("div", {
75
77
  onClickCapture: doFocus,
76
- className: classNames(classes.decorate, "text-muted leading-none flex-content", isString(decorateStart) && "px-1"),
78
+ className: classNames("fabric-decorate", "text-muted leading-none flex-content", isString(decorateStart) && "px-1"),
77
79
  children: decorateStart
78
80
  }), /*#__PURE__*/jsx(ErrorIcon, {
79
81
  invalid: invalid,
@@ -81,12 +83,16 @@ var InputWrapper = function InputWrapper(_ref) {
81
83
  }), children, allowClear && showClear && /*#__PURE__*/jsx(Icon, {
82
84
  icon: CoreIcons.close,
83
85
  onClick: handleClear,
84
- className: classNames("text-tint-500 hover:text-tint-700 p-1 z-1 flex-content", classes.inputClear, textarea && "self-start mt-1 me-1")
86
+ className: classNames("text-tint-500 hover:text-tint-700 p-1 z-1 flex-content", "fabric-inputClear", textarea && "self-start mt-1 me-1")
85
87
  }), decorateEnd && /*#__PURE__*/jsx("div", {
86
88
  onClickCapture: doFocus,
87
- className: classNames(classes.decorate, "text-muted leading-none flex-content", isString(decorateEnd) && "px-1"),
89
+ className: classNames("fabric-decorate", "text-muted leading-none flex-content", isString(decorateEnd) && "px-1", decorateEndHideWhenEmpty && "peer-placeholder-shown:hidden", decorateEndShowWhenEmpty && "hidden peer-placeholder-shown:inline-block"),
88
90
  children: decorateEnd
89
- }), textarea && /*#__PURE__*/jsx(Icon, {
91
+ }), actionButton && /*#__PURE__*/jsx("div", {
92
+ onClickCapture: doFocus,
93
+ className: classNames("fabric-decorate", "text-muted leading-none flex-content"),
94
+ children: actionButton
95
+ }), textareaExpandable && /*#__PURE__*/jsx(Icon, {
90
96
  onClick: function onClick() {
91
97
  return setExpanded(!isExpanded);
92
98
  },
@@ -95,17 +101,14 @@ var InputWrapper = function InputWrapper(_ref) {
95
101
  })]
96
102
  });
97
103
  return /*#__PURE__*/jsx(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
98
- children: /*#__PURE__*/jsxs("div", {
104
+ children: /*#__PURE__*/jsx("div", {
99
105
  ref: elRef,
100
- className: "flex-1 relative min-h-8",
106
+ className: classNames("relative min-h-8 flex flex-col flex-nowrap", width ? "flex-auto" : "flex-1"),
101
107
  style: {
102
108
  width: width,
103
109
  flexBasis: width
104
110
  },
105
- children: [!isExpanded && el, isExpanded && /*#__PURE__*/jsx(FloatingPortal, {
106
- root: (_elRef$current = elRef.current) === null || _elRef$current === void 0 ? void 0 : _elRef$current.closest(".theme-base"),
107
- children: el
108
- })]
111
+ children: el
109
112
  })
110
113
  }));
111
114
  };
@@ -12,21 +12,21 @@ import { Options } from './Options.js';
12
12
  import { useSelect } from './useSelect.js';
13
13
  import { jsx, jsxs } from 'react/jsx-runtime';
14
14
 
15
- var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "expandOnEdit", "error", "history", "multiple", "onChange", "onSelect", "onInput", "onFocus", "onBlur", "onEnterPressed"];
15
+ var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "expandOnEdit", "error", "history", "multiple", "onChange", "onSelect", "onInput", "onFocus", "onBlur", "onQuery", "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 AutoComplete = function AutoComplete(_ref) {
19
19
  var _refs$reference$curre;
20
- _ref.ref;
21
- var name = _ref.name,
20
+ var ref = _ref.ref,
21
+ name = _ref.name,
22
22
  value = _ref.value,
23
23
  invalid = _ref.invalid,
24
24
  readOnly = _ref.readOnly,
25
25
  disabled = _ref.disabled,
26
26
  required = _ref.required,
27
- placeholder = _ref.placeholder;
28
- _ref.autoFocus;
29
- var expandOnEdit = _ref.expandOnEdit,
27
+ placeholder = _ref.placeholder,
28
+ autoFocus = _ref.autoFocus,
29
+ expandOnEdit = _ref.expandOnEdit,
30
30
  error = _ref.error,
31
31
  history = _ref.history,
32
32
  multiple = _ref.multiple,
@@ -35,6 +35,7 @@ var AutoComplete = function AutoComplete(_ref) {
35
35
  onInput = _ref.onInput,
36
36
  onFocus = _ref.onFocus,
37
37
  _onBlur = _ref.onBlur,
38
+ onQuery = _ref.onQuery,
38
39
  onEnterPressed = _ref.onEnterPressed,
39
40
  rest = _objectWithoutProperties(_ref, _excluded);
40
41
  var options = useRef(history);
@@ -45,7 +46,8 @@ var AutoComplete = function AutoComplete(_ref) {
45
46
  options: options.current,
46
47
  multiple: multiple,
47
48
  onChange: onChange,
48
- onSelect: onSelect
49
+ onSelect: onSelect,
50
+ onQuery: onQuery
49
51
  }),
50
52
  state = _useSelect.state,
51
53
  listRef = _useSelect.listRef,
@@ -218,7 +220,9 @@ var AutoComplete = function AutoComplete(_ref) {
218
220
  "data-testid": name,
219
221
  name: name,
220
222
  size: 1,
223
+ ref: ref,
221
224
  onInput: onInput,
225
+ autoFocus: autoFocus,
222
226
  rows: !multiple && expandOnEdit && state.open ? 5 : 1,
223
227
  className: classNames("appearance-none bg-transparent outline-none border-none ring-0 flex-1 resize-none", disabled && "cursor-not-allowed pointer-events-none", multiple && "min-w-24 overflow-hidden", !state.open && "overflow-hidden whitespace-nowrap"),
224
228
  placeholder: isEmpty(state.value) ? placeholder : ""
@@ -243,7 +247,7 @@ var AutoComplete = function AutoComplete(_ref) {
243
247
  visuallyHiddenDismiss: true,
244
248
  children: /*#__PURE__*/jsx(Options, _objectSpread(_objectSpread({
245
249
  ref: refs.setFloating,
246
- className: "outline shadow-lg max-h-[40vh] z-[var(--z-popover)]",
250
+ className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
247
251
  style: _objectSpread({
248
252
  width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
249
253
  }, floatingStyles)
@@ -13,13 +13,14 @@ import { useDraggable, useDroppable, DndContext, DragOverlay } from '@dnd-kit/co
13
13
  import { mergeRefs } from '@react-fabric/utilities';
14
14
  import { jsx, jsxs } from '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,