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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
  2. package/css/_colorPicker.css +95 -0
  3. package/{src/internal/Field.module.css → css/_field.css} +94 -33
  4. package/{src/input/File.module.css → css/_file.css} +21 -6
  5. package/css/styles.css +27 -0
  6. package/dist/cjs/builder/FileField.js +107 -78
  7. package/dist/cjs/builder/FormField.js +60 -39
  8. package/dist/cjs/builder/SchemaEditor.js +72 -0
  9. package/dist/cjs/builder/components/AddSchemaFields.js +64 -0
  10. package/dist/cjs/builder/components/SchemaArrayForm.js +146 -0
  11. package/dist/cjs/builder/components/SchemaField.js +423 -0
  12. package/dist/cjs/form/Controller.js +66 -19
  13. package/dist/cjs/form/Form.js +97 -39
  14. package/dist/cjs/form/useForm.js +32 -0
  15. package/dist/cjs/hooks/useFileUploader.js +74 -45
  16. package/dist/cjs/hooks/useFormBuilder.js +85 -31
  17. package/dist/cjs/i18n/{ar.json.js → ar/form.json.js} +5 -4
  18. package/dist/cjs/i18n/{en.json.js → en/form.json.js} +5 -5
  19. package/dist/cjs/i18n/index.js +4 -4
  20. package/dist/cjs/index.js +41 -2
  21. package/dist/cjs/input/ArrayInput.js +259 -135
  22. package/dist/cjs/input/AvatarInput.js +99 -63
  23. package/dist/cjs/input/Checkbox.js +24 -25
  24. package/dist/cjs/input/ColorInput.js +138 -81
  25. package/dist/cjs/input/ColorPicker.js +78 -95
  26. package/dist/cjs/input/DateInput.js +192 -0
  27. package/dist/cjs/input/Field.js +21 -20
  28. package/dist/cjs/input/File.js +85 -80
  29. package/dist/cjs/input/Hidden.js +27 -13
  30. package/dist/cjs/input/Input.js +49 -48
  31. package/dist/cjs/input/Number.js +46 -44
  32. package/dist/cjs/input/Password.js +51 -49
  33. package/dist/cjs/input/Radio.js +26 -16
  34. package/dist/cjs/input/RadioGroup.js +26 -11
  35. package/dist/cjs/input/{Range.js → RangeSlider.js} +61 -66
  36. package/dist/cjs/input/Search.js +58 -64
  37. package/dist/cjs/input/Slider.js +57 -66
  38. package/dist/cjs/input/Switch.js +29 -27
  39. package/dist/cjs/input/Textarea.js +65 -53
  40. package/dist/cjs/internal/ErrorIcon.js +9 -9
  41. package/dist/cjs/internal/FieldWrapper.js +23 -13
  42. package/dist/cjs/internal/InputWrapper.js +85 -87
  43. package/dist/cjs/ranger/index.js +7 -7
  44. package/dist/cjs/ranger/utils.js +9 -4
  45. package/dist/cjs/select/AutoComplete.js +93 -76
  46. package/dist/cjs/select/DualList.js +235 -154
  47. package/dist/cjs/select/List.js +122 -89
  48. package/dist/cjs/select/Options.js +58 -54
  49. package/dist/cjs/select/Select.js +119 -89
  50. package/dist/cjs/select/helpers.js +5 -5
  51. package/dist/cjs/select/useSelect.js +83 -58
  52. package/dist/cjs/types/schema.js +43 -0
  53. package/dist/cjs/utils/eventHandlers.js +16 -6
  54. package/dist/cjs/utils/getColor.js +6 -6
  55. package/dist/cjs/utils/getProps.js +49 -0
  56. package/dist/esm/builder/FileField.js +109 -80
  57. package/dist/esm/builder/FormField.js +60 -39
  58. package/dist/esm/builder/SchemaEditor.js +72 -0
  59. package/dist/esm/builder/components/AddSchemaFields.js +64 -0
  60. package/dist/esm/builder/components/SchemaArrayForm.js +146 -0
  61. package/dist/esm/builder/components/SchemaField.js +423 -0
  62. package/dist/esm/form/Controller.js +66 -19
  63. package/dist/esm/form/Form.js +97 -39
  64. package/dist/esm/form/useForm.js +32 -0
  65. package/dist/esm/hooks/useFileUploader.js +75 -46
  66. package/dist/esm/hooks/useFormBuilder.js +84 -30
  67. package/dist/esm/i18n/{ar.json.js → ar/form.json.js} +5 -4
  68. package/dist/esm/i18n/{en.json.js → en/form.json.js} +5 -5
  69. package/dist/esm/i18n/index.js +2 -2
  70. package/dist/esm/index.js +36 -1
  71. package/dist/esm/input/ArrayInput.js +260 -136
  72. package/dist/esm/input/AvatarInput.js +99 -63
  73. package/dist/esm/input/Checkbox.js +26 -27
  74. package/dist/esm/input/ColorInput.js +141 -84
  75. package/dist/esm/input/ColorPicker.js +80 -97
  76. package/dist/esm/input/DateInput.js +192 -0
  77. package/dist/esm/input/Field.js +21 -20
  78. package/dist/esm/input/File.js +89 -84
  79. package/dist/esm/input/Hidden.js +28 -14
  80. package/dist/esm/input/Input.js +51 -50
  81. package/dist/esm/input/Number.js +48 -46
  82. package/dist/esm/input/Password.js +54 -52
  83. package/dist/esm/input/Radio.js +27 -17
  84. package/dist/esm/input/RadioGroup.js +27 -12
  85. package/dist/esm/input/{Range.js → RangeSlider.js} +62 -67
  86. package/dist/esm/input/Search.js +61 -67
  87. package/dist/esm/input/Slider.js +58 -67
  88. package/dist/esm/input/Switch.js +31 -29
  89. package/dist/esm/input/Textarea.js +67 -55
  90. package/dist/esm/internal/ErrorIcon.js +11 -11
  91. package/dist/esm/internal/FieldWrapper.js +23 -13
  92. package/dist/esm/internal/InputWrapper.js +88 -90
  93. package/dist/esm/ranger/index.js +7 -7
  94. package/dist/esm/ranger/utils.js +9 -4
  95. package/dist/esm/select/AutoComplete.js +95 -78
  96. package/dist/esm/select/DualList.js +233 -152
  97. package/dist/esm/select/List.js +125 -92
  98. package/dist/esm/select/Options.js +58 -54
  99. package/dist/esm/select/Select.js +122 -92
  100. package/dist/esm/select/helpers.js +5 -5
  101. package/dist/esm/select/useSelect.js +84 -59
  102. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  103. package/dist/esm/utils/eventHandlers.js +16 -6
  104. package/dist/esm/utils/getColor.js +6 -6
  105. package/dist/esm/utils/getProps.js +49 -0
  106. package/dist/types/builder/FileField.d.ts +7 -4
  107. package/dist/types/builder/FormField.d.ts +4 -2
  108. package/dist/types/builder/SchemaEditor.d.ts +6 -0
  109. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  110. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  111. package/dist/types/builder/components/SchemaField.d.ts +12 -0
  112. package/dist/types/form/Controller.d.ts +45 -3
  113. package/dist/types/form/Form.d.ts +38 -7
  114. package/dist/types/form/useForm.d.ts +6 -0
  115. package/dist/types/hooks/useFileUploader.d.ts +24 -3
  116. package/dist/types/hooks/useFormBuilder.d.ts +41 -3
  117. package/dist/types/index.d.ts +32 -2
  118. package/dist/types/input/ArrayInput.d.ts +68 -13
  119. package/dist/types/input/AvatarInput.d.ts +23 -6
  120. package/dist/types/input/Checkbox.d.ts +12 -10
  121. package/dist/types/input/ColorInput.d.ts +15 -5
  122. package/dist/types/input/ColorPicker.d.ts +10 -2
  123. package/dist/types/input/DateInput.d.ts +21 -0
  124. package/dist/types/input/Field.d.ts +9 -36
  125. package/dist/types/input/File.d.ts +16 -4
  126. package/dist/types/input/Hidden.d.ts +7 -6
  127. package/dist/types/input/Input.d.ts +11 -4
  128. package/dist/types/input/Number.d.ts +9 -4
  129. package/dist/types/input/Password.d.ts +9 -4
  130. package/dist/types/input/Radio.d.ts +9 -4
  131. package/dist/types/input/RadioGroup.d.ts +14 -6
  132. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +11 -6
  133. package/dist/types/input/Search.d.ts +14 -4
  134. package/dist/types/input/Slider.d.ts +9 -6
  135. package/dist/types/input/Switch.d.ts +13 -8
  136. package/dist/types/input/Textarea.d.ts +15 -4
  137. package/dist/types/internal/ErrorIcon.d.ts +4 -1
  138. package/dist/types/internal/FieldWrapper.d.ts +10 -1
  139. package/dist/types/internal/InputWrapper.d.ts +19 -1
  140. package/dist/types/ranger/index.d.ts +7 -3
  141. package/dist/types/ranger/utils.d.ts +2 -2
  142. package/dist/types/select/AutoComplete.d.ts +7 -2
  143. package/dist/types/select/DualList.d.ts +11 -37
  144. package/dist/types/select/List.d.ts +7 -2
  145. package/dist/types/select/Options.d.ts +8 -7
  146. package/dist/types/select/Select.d.ts +7 -2
  147. package/dist/types/select/helpers.d.ts +2 -2
  148. package/dist/types/select/useSelect.d.ts +10 -28
  149. package/dist/types/types/index.d.ts +73 -39
  150. package/dist/types/types/schema.d.ts +78 -32
  151. package/dist/types/utils/eventHandlers.d.ts +4 -4
  152. package/dist/types/utils/getColor.d.ts +4 -4
  153. package/dist/types/utils/getProps.d.ts +26 -0
  154. package/dist/types/utils/index.d.ts +1 -0
  155. package/package.json +25 -25
  156. package/src/builder/FileField.tsx +73 -56
  157. package/src/builder/FormField.tsx +66 -58
  158. package/src/builder/SchemaEditor.tsx +78 -0
  159. package/src/builder/components/AddSchemaFields.tsx +64 -0
  160. package/src/builder/components/SchemaArrayForm.tsx +146 -0
  161. package/src/builder/components/SchemaField.tsx +405 -0
  162. package/src/form/Controller.tsx +61 -24
  163. package/src/form/Form.tsx +74 -50
  164. package/src/form/useForm.ts +53 -0
  165. package/src/hooks/useFileUploader.ts +115 -84
  166. package/src/hooks/useFormBuilder.tsx +80 -41
  167. package/src/i18n/{ar.json → ar/form.json} +5 -4
  168. package/src/i18n/{en.json → en/form.json} +5 -5
  169. package/src/i18n/index.ts +2 -2
  170. package/src/index.ts +34 -20
  171. package/src/input/ArrayInput.tsx +255 -173
  172. package/src/input/AvatarInput.tsx +82 -39
  173. package/src/input/Checkbox.tsx +30 -54
  174. package/src/input/ColorInput.tsx +146 -105
  175. package/src/input/ColorPicker.tsx +76 -102
  176. package/src/input/DateInput.tsx +225 -0
  177. package/src/input/Field.tsx +23 -65
  178. package/src/input/File.tsx +76 -98
  179. package/src/input/Hidden.tsx +36 -24
  180. package/src/input/Input.tsx +55 -53
  181. package/src/input/Number.tsx +49 -54
  182. package/src/input/Password.tsx +61 -66
  183. package/src/input/Radio.tsx +28 -37
  184. package/src/input/RadioGroup.tsx +30 -25
  185. package/src/input/{Range.tsx → RangeSlider.tsx} +81 -109
  186. package/src/input/Search.tsx +64 -77
  187. package/src/input/Slider.tsx +80 -109
  188. package/src/input/Switch.tsx +39 -53
  189. package/src/input/Textarea.tsx +72 -59
  190. package/src/internal/ErrorIcon.tsx +22 -21
  191. package/src/internal/FieldWrapper.tsx +33 -23
  192. package/src/internal/InputWrapper.tsx +132 -143
  193. package/src/ranger/index.tsx +37 -117
  194. package/src/ranger/utils.ts +12 -11
  195. package/src/select/AutoComplete.tsx +113 -123
  196. package/src/select/DualList.tsx +218 -204
  197. package/src/select/List.tsx +130 -97
  198. package/src/select/Options.tsx +59 -57
  199. package/src/select/Select.tsx +148 -122
  200. package/src/select/helpers.ts +13 -8
  201. package/src/select/useSelect.tsx +110 -127
  202. package/src/types/index.ts +76 -45
  203. package/src/types/schema.ts +97 -40
  204. package/src/utils/eventHandlers.ts +24 -26
  205. package/src/utils/getColor.ts +9 -8
  206. package/src/utils/getProps.ts +47 -0
  207. package/src/utils/index.ts +1 -0
  208. package/dist/cjs/input/ArrayInput.module.css +0 -1
  209. package/dist/cjs/input/ColorPicker.module.css +0 -1
  210. package/dist/cjs/input/File.module.css +0 -1
  211. package/dist/cjs/internal/Field.module.css +0 -1
  212. package/dist/esm/input/ArrayInput.module.css +0 -1
  213. package/dist/esm/input/ColorPicker.module.css +0 -1
  214. package/dist/esm/input/File.module.css +0 -1
  215. package/dist/esm/internal/Field.module.css +0 -1
@@ -1,51 +1,54 @@
1
1
  'use client';
2
2
 
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
- import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
4
  import { useFloating, autoUpdate, shift, flip, offset, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingPortal, FloatingFocusManager } from '@floating-ui/react';
6
- import { Chip, Icon, CoreIcons } from '@react-fabric/core';
7
- import { isArray, isEmpty } from '@react-fabric/utilities';
8
- import classNames from 'classnames';
5
+ import { Chip, Icon } from '@react-fabric/core';
6
+ import { EMPTY_ARRAY, isArray, isEmpty, cn } from '@react-fabric/utilities';
9
7
  import { useRef, useId, useMemo, useCallback, useLayoutEffect } from 'react';
10
8
  import { InputWrapper } from '../internal/InputWrapper.js';
9
+ import { getWrapperProps } from '../utils/getProps.js';
11
10
  import { Options } from './Options.js';
12
11
  import { useSelect } from './useSelect.js';
13
12
  import { jsx, jsxs } from 'react/jsx-runtime';
14
13
 
15
- var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "expandOnEdit", "error", "history", "multiple", "onChange", "onSelect", "onInput", "onFocus", "onBlur", "onEnterPressed"];
16
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
- var AutoComplete = function AutoComplete(_ref) {
19
- var _refs$reference$curre;
20
- _ref.ref;
21
- var name = _ref.name,
22
- value = _ref.value,
23
- invalid = _ref.invalid,
24
- readOnly = _ref.readOnly,
25
- disabled = _ref.disabled,
26
- required = _ref.required,
27
- placeholder = _ref.placeholder;
28
- _ref.autoFocus;
29
- var expandOnEdit = _ref.expandOnEdit,
30
- error = _ref.error,
31
- history = _ref.history,
32
- multiple = _ref.multiple,
33
- onChange = _ref.onChange,
34
- onSelect = _ref.onSelect,
35
- onInput = _ref.onInput,
36
- onFocus = _ref.onFocus,
37
- _onBlur = _ref.onBlur,
38
- onEnterPressed = _ref.onEnterPressed,
39
- rest = _objectWithoutProperties(_ref, _excluded);
40
- var options = useRef(history);
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ /**
17
+ * AutoComplete component for selecting or entering values with history suggestions.
18
+ * It supports multiple selections, history suggestions, and custom styling.
19
+ */
20
+ function AutoComplete(props) {
21
+ var _refs$domReference$cu2, _refs$domReference$cu3, _refs$reference$curre;
22
+ var ref = props.ref,
23
+ name = props.name,
24
+ value = props.value,
25
+ invalid = props.invalid,
26
+ readOnly = props.readOnly,
27
+ disabled = props.disabled,
28
+ placeholder = props.placeholder,
29
+ autoFocus = props.autoFocus,
30
+ expandOnEdit = props.expandOnEdit,
31
+ _props$history = props.history,
32
+ history = _props$history === void 0 ? EMPTY_ARRAY : _props$history,
33
+ multiple = props.multiple,
34
+ allowClear = props.allowClear,
35
+ onChange = props.onChange,
36
+ onSelect = props.onSelect,
37
+ _onInput = props.onInput,
38
+ onFocus = props.onFocus,
39
+ _onBlur = props.onBlur,
40
+ onQuery = props.onQuery,
41
+ onEnterPressed = props.onEnterPressed;
42
+ var optionsRef = useRef(history);
41
43
  var submitRef = useRef(null);
42
44
  var _useSelect = useSelect({
43
45
  value: value,
44
46
  autoComplete: true,
45
- options: options.current,
47
+ options: optionsRef.current,
46
48
  multiple: multiple,
47
49
  onChange: onChange,
48
- onSelect: onSelect
50
+ onSelect: onSelect,
51
+ onQuery: onQuery
49
52
  }),
50
53
  state = _useSelect.state,
51
54
  listRef = _useSelect.listRef,
@@ -57,11 +60,11 @@ var AutoComplete = function AutoComplete(_ref) {
57
60
  handleQuery = _useSelect.handleQuery,
58
61
  setItemRef = _useSelect.setItemRef,
59
62
  setActiveIndex = _useSelect.setActiveIndex;
60
- var dropdownKey = useId();
63
+ var dropdownKeyId = useId();
61
64
  var _useFloating = useFloating({
62
65
  open: state.open,
63
- onOpenChange: function onOpenChange(open, evt, reason) {
64
- !open && (listRef.current = []);
66
+ onOpenChange: function onOpenChange(open) {
67
+ if (!open) listRef.current = [];
65
68
  setOpen(open);
66
69
  },
67
70
  strategy: "fixed",
@@ -98,7 +101,7 @@ var AutoComplete = function AutoComplete(_ref) {
98
101
  });
99
102
  },
100
103
  onMatch: function onMatch(index) {
101
- state.open && setActiveIndex(index);
104
+ if (state.open) setActiveIndex(index);
102
105
  }
103
106
  });
104
107
  var _useInteractions = useInteractions([dismiss, navigation, typeahead]),
@@ -111,12 +114,12 @@ var AutoComplete = function AutoComplete(_ref) {
111
114
  onFocus: onFocus,
112
115
  onBlur: function onBlur(evt) {
113
116
  var _evt$relatedTarget;
114
- if ((_evt$relatedTarget = evt.relatedTarget) !== null && _evt$relatedTarget !== void 0 && _evt$relatedTarget.closest("[data-select-dropdown=\"".concat(dropdownKey, "\"]"))) {
117
+ if ((_evt$relatedTarget = evt.relatedTarget) !== null && _evt$relatedTarget !== void 0 && _evt$relatedTarget.closest("[data-select-dropdown=\"".concat(dropdownKeyId, "\"]"))) {
115
118
  var _refs$domReference$cu;
116
119
  (_refs$domReference$cu = refs.domReference.current) === null || _refs$domReference$cu === void 0 || (_refs$domReference$cu = _refs$domReference$cu.querySelector("input")) === null || _refs$domReference$cu === void 0 || _refs$domReference$cu.focus();
117
120
  return;
118
121
  }
119
- state.open && handleChange(state.query);
122
+ if (state.open) handleChange(state.query);
120
123
  handleQuery("");
121
124
  setOpen(false);
122
125
  _onBlur === null || _onBlur === void 0 || _onBlur(evt);
@@ -132,29 +135,29 @@ var AutoComplete = function AutoComplete(_ref) {
132
135
  handleChange("");
133
136
  return false;
134
137
  } else {
135
- var _submitRef$current;
136
138
  onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
137
- (_submitRef$current = submitRef.current) === null || _submitRef$current === void 0 || _submitRef$current.click();
139
+ setOpen(false);
138
140
  }
139
141
  } else if (evt.key === "Backspace") {
140
- !state.query && multiple && handleRemove();
142
+ if (!state.query && multiple) handleRemove();
141
143
  } else if (["ArrowUp", "ArrowDown"].includes(evt.key)) {
142
144
  if (["ArrowUp", "ArrowDown"].includes(evt.key) && state.activeIndex === null) {
143
145
  setActiveIndex(state.selectedIndex);
144
146
  }
145
147
  setTimeout(function () {
146
148
  var _props$onKeyDown;
149
+ // @ts-expect-error ignore
147
150
  (_props$onKeyDown = props.onKeyDown) === null || _props$onKeyDown === void 0 || _props$onKeyDown.call(props, evt);
148
151
  }, 50);
149
152
  }
150
153
  }
151
154
  });
152
- }, [getReferenceProps, onEnterPressed, handleQuery, onFocus, _onBlur, multiple, refs, state.query, state.activeIndex]);
155
+ }, [getReferenceProps, onFocus, dropdownKeyId, state.open, state.query, state.activeIndex, state.selectedIndex, handleChange, handleQuery, setOpen, _onBlur, refs.domReference, listContentRef, onEnterPressed, multiple, handleRemove, setActiveIndex]);
153
156
  var floatingProps = useMemo(function () {
154
157
  return getFloatingProps({
155
- "data-select-dropdown": dropdownKey
158
+ "data-select-dropdown": dropdownKeyId
156
159
  });
157
- }, [getFloatingProps]);
160
+ }, [dropdownKeyId, getFloatingProps]);
158
161
  var makeItemProps = useCallback(function (item) {
159
162
  var _state$value, _state$value$includes;
160
163
  var selected = isArray(state.value) ? (_state$value = state.value) === null || _state$value === void 0 || (_state$value$includes = _state$value.includes) === null || _state$value$includes === void 0 ? void 0 : _state$value$includes.call(_state$value, item) : state.value === item;
@@ -168,44 +171,51 @@ var AutoComplete = function AutoComplete(_ref) {
168
171
  var displayValue = useMemo(function () {
169
172
  if (isArray(state.value)) {
170
173
  return state.value.map(function (item, index) {
171
- return /*#__PURE__*/jsx(Chip, {
172
- onRemove: function onRemove() {
173
- return handleRemove(index);
174
- },
175
- children: item
176
- }, index);
174
+ return (
175
+ /*#__PURE__*/
176
+ // eslint-disable-next-line @eslint-react/no-array-index-key
177
+ jsx(Chip, {
178
+ onRemove: function onRemove() {
179
+ return handleRemove(index);
180
+ },
181
+ children: item
182
+ }, index)
183
+ );
177
184
  });
178
185
  }
179
- }, [state.value, state.query, placeholder]);
186
+ }, [state.value, handleRemove]);
180
187
  useLayoutEffect(function () {
181
- state.open && setTimeout(function () {
182
- var _listRef$current$stat;
183
- state.selectedIndex && ((_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 ? void 0 : _listRef$current$stat.scrollIntoView({
184
- block: "center"
185
- }));
186
- }, 100);
187
- }, [state.open]);
188
+ if (state.open) {
189
+ var tmr = setTimeout(function () {
190
+ var _listRef$current$stat;
191
+ if (state.selectedIndex) (_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 || _listRef$current$stat.scrollIntoView({
192
+ block: "center"
193
+ });
194
+ }, 100);
195
+ return function () {
196
+ clearTimeout(tmr);
197
+ };
198
+ }
199
+ }, [listRef, state.open, state.selectedIndex]);
188
200
  var inputValue = useMemo(function () {
189
- var _state$query, _ref2, _state$query2;
201
+ var _state$query, _ref, _state$query2;
190
202
  if (multiple) return (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : "";
191
- return (_ref2 = (_state$query2 = state.query) !== null && _state$query2 !== void 0 ? _state$query2 : state.value) !== null && _ref2 !== void 0 ? _ref2 : "";
203
+ return (_ref = (_state$query2 = state.query) !== null && _state$query2 !== void 0 ? _state$query2 : state.value) !== null && _ref !== void 0 ? _ref : "";
192
204
  }, [multiple, state.query, state.value]);
193
205
  return /*#__PURE__*/jsxs(InputWrapper, _objectSpread(_objectSpread({
194
- showClear: !isEmpty(state.value),
206
+ isOpen: state.open,
207
+ showClear: allowClear && !isEmpty(state.value),
195
208
  onClear: handleChange,
196
- invalid: invalid,
197
- readOnly: readOnly,
198
- disabled: disabled,
199
- required: required,
200
- error: error,
201
- wrapperRef: refs.setReference,
202
- className: !multiple && expandOnEdit && state.open ? "!z-[99]" : "",
209
+ ref: function ref(el) {
210
+ return refs.setReference(el);
211
+ },
212
+ className: !multiple && expandOnEdit && state.open ? "z-99!" : "",
203
213
  floatingExpand: !multiple && expandOnEdit && state.open
204
- }, rest), {}, {
214
+ }, getWrapperProps(props)), {}, {
205
215
  children: [/*#__PURE__*/jsxs("div", {
206
216
  role: "none",
207
217
  "data-select-display": "true",
208
- className: classNames("group flex-1 py-1 px-2 truncate text-start flex gap-1 relative min-h-5 justify-start", multiple ? "flex-wrap" : "flex-nowrap overflow-hidden"),
218
+ className: cn("group flex-1 py-1 px-2 truncate text-start flex gap-1 relative min-h-5 justify-start", multiple ? "flex-wrap" : "flex-nowrap overflow-hidden"),
209
219
  onMouseUp: function onMouseUp(e) {
210
220
  var _e$currentTarget$quer;
211
221
  return (_e$currentTarget$quer = e.currentTarget.querySelector("input")) === null || _e$currentTarget$quer === void 0 ? void 0 : _e$currentTarget$quer.focus();
@@ -217,10 +227,14 @@ var AutoComplete = function AutoComplete(_ref) {
217
227
  "aria-invalid": invalid,
218
228
  "data-testid": name,
219
229
  name: name,
220
- size: 1,
221
- onInput: onInput,
230
+ ref: ref,
231
+ autoComplete: "off",
232
+ onInput: function onInput(e) {
233
+ return _onInput === null || _onInput === void 0 ? void 0 : _onInput(e.currentTarget.value);
234
+ },
235
+ autoFocus: autoFocus,
222
236
  rows: !multiple && expandOnEdit && state.open ? 5 : 1,
223
- 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"),
237
+ className: cn("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
238
  placeholder: isEmpty(state.value) ? placeholder : ""
225
239
  }, referenceProps), {}, {
226
240
  onChange: function onChange(evt) {
@@ -233,17 +247,20 @@ var AutoComplete = function AutoComplete(_ref) {
233
247
  className: "opacity-0 absolute"
234
248
  })]
235
249
  }), state.loading && /*#__PURE__*/jsx(Icon, {
236
- animate: "spin",
237
- className: classNames("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
238
- icon: CoreIcons.spinner
250
+ className: cn("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
251
+ icon: "icon-[svg-spinners--eclipse]"
239
252
  }), state.open && !state.loading && /*#__PURE__*/jsx(FloatingPortal, {
253
+ root: (_refs$domReference$cu2 = (_refs$domReference$cu3 = refs.domReference.current) === null || _refs$domReference$cu3 === void 0 ? void 0 : _refs$domReference$cu3.closest(".theme-base")) !== null && _refs$domReference$cu2 !== void 0 ? _refs$domReference$cu2 : undefined,
240
254
  children: /*#__PURE__*/jsx(FloatingFocusManager, {
241
255
  context: context,
242
256
  initialFocus: -1,
243
257
  visuallyHiddenDismiss: true,
258
+ closeOnFocusOut: true,
244
259
  children: /*#__PURE__*/jsx(Options, _objectSpread(_objectSpread({
245
- ref: refs.setFloating,
246
- className: "outline shadow-lg max-h-[40vh] z-[var(--z-popover)]",
260
+ ref: function ref(el) {
261
+ return refs.setFloating(el);
262
+ },
263
+ className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
247
264
  style: _objectSpread({
248
265
  width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
249
266
  }, floatingStyles)
@@ -263,6 +280,6 @@ var AutoComplete = function AutoComplete(_ref) {
263
280
  })
264
281
  })]
265
282
  }));
266
- };
283
+ }
267
284
 
268
285
  export { AutoComplete };