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

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 (187) 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 +46 -1
  13. package/dist/cjs/form/Form.js +43 -6
  14. package/dist/cjs/hooks/useFileUploader.js +16 -0
  15. package/dist/cjs/hooks/useFormBuilder.js +57 -15
  16. package/dist/cjs/i18n/ar.json.js +5 -4
  17. package/dist/cjs/i18n/en.json.js +5 -5
  18. package/dist/cjs/index.js +11 -2
  19. package/dist/cjs/input/ArrayInput.js +100 -33
  20. package/dist/cjs/input/AvatarInput.js +17 -8
  21. package/dist/cjs/input/Checkbox.js +15 -5
  22. package/dist/cjs/input/ColorInput.js +108 -56
  23. package/dist/cjs/input/ColorPicker.js +11 -35
  24. package/dist/cjs/input/DateInput.js +195 -0
  25. package/dist/cjs/input/Field.js +10 -4
  26. package/dist/cjs/input/File.js +14 -7
  27. package/dist/cjs/input/Hidden.js +11 -1
  28. package/dist/cjs/input/Input.js +19 -7
  29. package/dist/cjs/input/Number.js +17 -7
  30. package/dist/cjs/input/Password.js +16 -8
  31. package/dist/cjs/input/Radio.js +11 -2
  32. package/dist/cjs/input/RadioGroup.js +14 -3
  33. package/dist/cjs/input/{Range.js → RangeSlider.js} +14 -6
  34. package/dist/cjs/input/Search.js +25 -16
  35. package/dist/cjs/input/Slider.js +10 -4
  36. package/dist/cjs/input/Switch.js +39 -7
  37. package/dist/cjs/input/Textarea.js +23 -4
  38. package/dist/cjs/internal/ErrorIcon.js +1 -1
  39. package/dist/cjs/internal/FieldWrapper.js +11 -4
  40. package/dist/cjs/internal/InputWrapper.js +19 -16
  41. package/dist/cjs/select/AutoComplete.js +19 -8
  42. package/dist/cjs/select/DualList.js +15 -1
  43. package/dist/cjs/select/List.js +45 -20
  44. package/dist/cjs/select/Options.js +2 -2
  45. package/dist/cjs/select/Select.js +14 -4
  46. package/dist/cjs/select/useSelect.js +10 -6
  47. package/dist/cjs/types/schema.js +43 -0
  48. package/dist/cjs/utils/eventHandlers.js +11 -5
  49. package/dist/cjs/utils/getColor.js +6 -0
  50. package/dist/esm/builder/FileField.js +39 -27
  51. package/dist/esm/builder/FormField.js +50 -34
  52. package/dist/esm/builder/SchemaEditor.js +72 -0
  53. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  54. package/dist/esm/builder/components/SchemaArrayForm.js +143 -0
  55. package/dist/esm/builder/components/SchemaField.js +414 -0
  56. package/dist/esm/form/Controller.js +46 -1
  57. package/dist/esm/form/Form.js +43 -6
  58. package/dist/esm/hooks/useFileUploader.js +16 -0
  59. package/dist/esm/hooks/useFormBuilder.js +55 -13
  60. package/dist/esm/i18n/ar.json.js +5 -4
  61. package/dist/esm/i18n/en.json.js +5 -5
  62. package/dist/esm/index.js +5 -1
  63. package/dist/esm/input/ArrayInput.js +100 -33
  64. package/dist/esm/input/AvatarInput.js +17 -8
  65. package/dist/esm/input/Checkbox.js +15 -5
  66. package/dist/esm/input/ColorInput.js +110 -58
  67. package/dist/esm/input/ColorPicker.js +11 -35
  68. package/dist/esm/input/DateInput.js +195 -0
  69. package/dist/esm/input/Field.js +11 -5
  70. package/dist/esm/input/File.js +16 -9
  71. package/dist/esm/input/Hidden.js +11 -1
  72. package/dist/esm/input/Input.js +21 -9
  73. package/dist/esm/input/Number.js +19 -9
  74. package/dist/esm/input/Password.js +18 -10
  75. package/dist/esm/input/Radio.js +11 -2
  76. package/dist/esm/input/RadioGroup.js +15 -4
  77. package/dist/esm/input/{Range.js → RangeSlider.js} +14 -6
  78. package/dist/esm/input/Search.js +27 -18
  79. package/dist/esm/input/Slider.js +10 -4
  80. package/dist/esm/input/Switch.js +41 -9
  81. package/dist/esm/input/Textarea.js +24 -5
  82. package/dist/esm/internal/ErrorIcon.js +1 -1
  83. package/dist/esm/internal/FieldWrapper.js +11 -4
  84. package/dist/esm/internal/InputWrapper.js +19 -16
  85. package/dist/esm/select/AutoComplete.js +19 -8
  86. package/dist/esm/select/DualList.js +15 -1
  87. package/dist/esm/select/List.js +46 -21
  88. package/dist/esm/select/Options.js +2 -2
  89. package/dist/esm/select/Select.js +14 -4
  90. package/dist/esm/select/useSelect.js +11 -7
  91. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  92. package/dist/esm/utils/eventHandlers.js +11 -5
  93. package/dist/esm/utils/getColor.js +6 -1
  94. package/dist/types/builder/FileField.d.ts +4 -2
  95. package/dist/types/builder/FormField.d.ts +3 -1
  96. package/dist/types/builder/SchemaEditor.d.ts +9 -0
  97. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  98. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  99. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  100. package/dist/types/form/Controller.d.ts +47 -2
  101. package/dist/types/form/Form.d.ts +37 -2
  102. package/dist/types/hooks/useFileUploader.d.ts +16 -0
  103. package/dist/types/hooks/useFormBuilder.d.ts +32 -1
  104. package/dist/types/index.d.ts +5 -2
  105. package/dist/types/input/ArrayInput.d.ts +78 -6
  106. package/dist/types/input/AvatarInput.d.ts +14 -3
  107. package/dist/types/input/Checkbox.d.ts +13 -4
  108. package/dist/types/input/ColorInput.d.ts +15 -2
  109. package/dist/types/input/ColorPicker.d.ts +11 -1
  110. package/dist/types/input/DateInput.d.ts +28 -0
  111. package/dist/types/input/Field.d.ts +5 -1
  112. package/dist/types/input/File.d.ts +9 -0
  113. package/dist/types/input/Hidden.d.ts +8 -0
  114. package/dist/types/input/Input.d.ts +9 -1
  115. package/dist/types/input/Number.d.ts +9 -1
  116. package/dist/types/input/Password.d.ts +7 -1
  117. package/dist/types/input/Radio.d.ts +9 -1
  118. package/dist/types/input/RadioGroup.d.ts +26 -3
  119. package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +10 -2
  120. package/dist/types/input/Search.d.ts +14 -1
  121. package/dist/types/input/Slider.d.ts +7 -1
  122. package/dist/types/input/Switch.d.ts +16 -4
  123. package/dist/types/input/Textarea.d.ts +15 -1
  124. package/dist/types/internal/FieldWrapper.d.ts +1 -1
  125. package/dist/types/internal/InputWrapper.d.ts +1 -1
  126. package/dist/types/ranger/index.d.ts +2 -2
  127. package/dist/types/select/AutoComplete.d.ts +8 -1
  128. package/dist/types/select/DualList.d.ts +17 -2
  129. package/dist/types/select/List.d.ts +9 -1
  130. package/dist/types/select/Select.d.ts +9 -1
  131. package/dist/types/select/useSelect.d.ts +7 -6
  132. package/dist/types/types/index.d.ts +28 -7
  133. package/dist/types/types/schema.d.ts +78 -33
  134. package/dist/types/utils/eventHandlers.d.ts +1 -1
  135. package/package.json +15 -12
  136. package/src/builder/FileField.tsx +53 -27
  137. package/src/builder/FormField.tsx +52 -32
  138. package/src/builder/SchemaEditor.tsx +79 -0
  139. package/src/builder/components/AddSchemaFields.tsx +74 -0
  140. package/src/builder/components/SchemaArrayForm.tsx +158 -0
  141. package/src/builder/components/SchemaField.tsx +436 -0
  142. package/src/form/Controller.tsx +48 -3
  143. package/src/form/Form.tsx +45 -5
  144. package/src/hooks/useFileUploader.ts +16 -0
  145. package/src/hooks/useFormBuilder.tsx +58 -15
  146. package/src/i18n/ar.json +5 -4
  147. package/src/i18n/en.json +5 -5
  148. package/src/index.ts +11 -2
  149. package/src/input/ArrayInput.tsx +169 -54
  150. package/src/input/AvatarInput.tsx +20 -8
  151. package/src/input/Checkbox.tsx +15 -5
  152. package/src/input/ColorInput.tsx +126 -69
  153. package/src/input/ColorPicker.tsx +12 -36
  154. package/src/input/DateInput.tsx +259 -0
  155. package/src/input/Field.tsx +15 -11
  156. package/src/input/File.tsx +16 -14
  157. package/src/input/Hidden.tsx +12 -1
  158. package/src/input/Input.tsx +23 -10
  159. package/src/input/Number.tsx +18 -10
  160. package/src/input/Password.tsx +19 -12
  161. package/src/input/Radio.tsx +11 -2
  162. package/src/input/RadioGroup.tsx +35 -4
  163. package/src/input/{Range.tsx → RangeSlider.tsx} +13 -5
  164. package/src/input/Search.tsx +29 -19
  165. package/src/input/Slider.tsx +10 -4
  166. package/src/input/Switch.tsx +52 -7
  167. package/src/input/Textarea.tsx +29 -5
  168. package/src/internal/ErrorIcon.tsx +1 -1
  169. package/src/internal/FieldWrapper.tsx +8 -4
  170. package/src/internal/InputWrapper.tsx +36 -20
  171. package/src/select/AutoComplete.tsx +12 -1
  172. package/src/select/DualList.tsx +19 -0
  173. package/src/select/List.tsx +49 -8
  174. package/src/select/Options.tsx +1 -1
  175. package/src/select/Select.tsx +21 -3
  176. package/src/select/useSelect.tsx +13 -5
  177. package/src/types/index.ts +34 -8
  178. package/src/types/schema.ts +96 -41
  179. package/src/utils/eventHandlers.ts +9 -3
  180. package/dist/cjs/input/ArrayInput.module.css +0 -1
  181. package/dist/cjs/input/ColorPicker.module.css +0 -1
  182. package/dist/cjs/input/File.module.css +0 -1
  183. package/dist/cjs/internal/Field.module.css +0 -1
  184. package/dist/esm/input/ArrayInput.module.css +0 -1
  185. package/dist/esm/input/ColorPicker.module.css +0 -1
  186. package/dist/esm/input/File.module.css +0 -1
  187. package/dist/esm/internal/Field.module.css +0 -1
@@ -5,13 +5,23 @@ 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
+ /**
16
+ * Textarea component that allows users to input multi-line text.
17
+ * It supports features like variable row count, expandable behavior,
18
+ * and handling of focus, blur, and change events.
19
+ * This component is designed to be flexible and user-friendly,
20
+ * providing a clear interface for text input with optional validation and accessibility features.
21
+ *
22
+ * @param {TextareaProps} props - The properties for the Textarea component.
23
+ * @returns {JSX.Element} The rendered Textarea component.
24
+ */
15
25
  var Textarea = function Textarea(_ref) {
16
26
  var ref = _ref.ref,
17
27
  value = _ref.value,
@@ -27,6 +37,9 @@ var Textarea = function Textarea(_ref) {
27
37
  _ref$maxRows = _ref.maxRows,
28
38
  maxRows = _ref$maxRows === void 0 ? 12 : _ref$maxRows,
29
39
  variableRows = _ref.variableRows,
40
+ expandable = _ref.expandable,
41
+ onBlur = _ref.onBlur,
42
+ onFocus = _ref.onFocus,
30
43
  onChange = _ref.onChange,
31
44
  onEnterPressed = _ref.onEnterPressed,
32
45
  rest = _objectWithoutProperties(_ref, _excluded);
@@ -46,7 +59,7 @@ var Textarea = function Textarea(_ref) {
46
59
  var handleChange = useCallback(function (e) {
47
60
  var value = e === null || e === void 0 ? void 0 : e.target.value;
48
61
  setActualValue(value !== null && value !== void 0 ? value : "");
49
- onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : undefined);
62
+ onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
50
63
  }, [onChange]);
51
64
  useEffect(function () {
52
65
  if (variableRows) {
@@ -57,14 +70,18 @@ var Textarea = function Textarea(_ref) {
57
70
  setFixedRows(rows);
58
71
  }
59
72
  }, [actualValue, variableRows, rows, maxRows]);
73
+ var handleEnterPressed = useHandleEnter(onEnterPressed, {
74
+ preventDefault: !!onEnterPressed
75
+ });
60
76
  return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
61
- showClear: !!actualValue,
77
+ showClear: !!actualValue && !disabled && !readOnly,
62
78
  onClear: handleChange,
63
79
  invalid: invalid,
64
80
  readOnly: readOnly,
65
81
  disabled: disabled,
66
82
  required: required,
67
83
  wrapperRef: wrapperRef,
84
+ textareaExpandable: expandable,
68
85
  textarea: true
69
86
  }, rest), {}, {
70
87
  children: /*#__PURE__*/jsx("textarea", {
@@ -82,8 +99,10 @@ var Textarea = function Textarea(_ref) {
82
99
  autoComplete: "off",
83
100
  autoFocus: autoFocus,
84
101
  value: actualValue,
102
+ onBlur: onBlur,
103
+ onFocus: onFocus,
85
104
  onChange: handleChange,
86
- onKeyDown: handleEnter(onEnterPressed)
105
+ onKeyDown: handleEnterPressed
87
106
  })
88
107
  }));
89
108
  };
@@ -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,28 @@ 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
+ /**
19
+ * AutoComplete component for selecting or entering values with history suggestions.
20
+ * It supports multiple selections, history suggestions, and custom styling.
21
+ *
22
+ * @param {AutoCompleteProps} props - The properties for the AutoComplete component.
23
+ * @returns {JSX.Element} The rendered AutoComplete component.
24
+ */
18
25
  var AutoComplete = function AutoComplete(_ref) {
19
26
  var _refs$reference$curre;
20
- _ref.ref;
21
- var name = _ref.name,
27
+ var ref = _ref.ref,
28
+ name = _ref.name,
22
29
  value = _ref.value,
23
30
  invalid = _ref.invalid,
24
31
  readOnly = _ref.readOnly,
25
32
  disabled = _ref.disabled,
26
33
  required = _ref.required,
27
- placeholder = _ref.placeholder;
28
- _ref.autoFocus;
29
- var expandOnEdit = _ref.expandOnEdit,
34
+ placeholder = _ref.placeholder,
35
+ autoFocus = _ref.autoFocus,
36
+ expandOnEdit = _ref.expandOnEdit,
30
37
  error = _ref.error,
31
38
  history = _ref.history,
32
39
  multiple = _ref.multiple,
@@ -35,6 +42,7 @@ var AutoComplete = function AutoComplete(_ref) {
35
42
  onInput = _ref.onInput,
36
43
  onFocus = _ref.onFocus,
37
44
  _onBlur = _ref.onBlur,
45
+ onQuery = _ref.onQuery,
38
46
  onEnterPressed = _ref.onEnterPressed,
39
47
  rest = _objectWithoutProperties(_ref, _excluded);
40
48
  var options = useRef(history);
@@ -45,7 +53,8 @@ var AutoComplete = function AutoComplete(_ref) {
45
53
  options: options.current,
46
54
  multiple: multiple,
47
55
  onChange: onChange,
48
- onSelect: onSelect
56
+ onSelect: onSelect,
57
+ onQuery: onQuery
49
58
  }),
50
59
  state = _useSelect.state,
51
60
  listRef = _useSelect.listRef,
@@ -218,7 +227,9 @@ var AutoComplete = function AutoComplete(_ref) {
218
227
  "data-testid": name,
219
228
  name: name,
220
229
  size: 1,
230
+ ref: ref,
221
231
  onInput: onInput,
232
+ autoFocus: autoFocus,
222
233
  rows: !multiple && expandOnEdit && state.open ? 5 : 1,
223
234
  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
235
  placeholder: isEmpty(state.value) ? placeholder : ""
@@ -243,7 +254,7 @@ var AutoComplete = function AutoComplete(_ref) {
243
254
  visuallyHiddenDismiss: true,
244
255
  children: /*#__PURE__*/jsx(Options, _objectSpread(_objectSpread({
245
256
  ref: refs.setFloating,
246
- className: "outline shadow-lg max-h-[40vh] z-[var(--z-popover)]",
257
+ className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
247
258
  style: _objectSpread({
248
259
  width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
249
260
  }, floatingStyles)
@@ -13,13 +13,25 @@ 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
+ /**
20
+ * DualList component allows users to select items from two lists.
21
+ * It displays two lists side by side, one for unselected items and one for selected items.
22
+ * Users can move items between the lists using buttons or drag-and-drop functionality.
23
+ * It supports multiple selections and provides options for grouping, labeling, and rendering items.
24
+ * It also includes features for handling empty states and custom rendering of items.
25
+ * This component is useful for scenarios where users need to manage selections from a larger set of options, such as in forms or settings.
26
+ *
27
+ * @param {DualListProps<T>} props - The properties for the DualList component.
28
+ * @returns {JSX.Element} The rendered DualList component.
29
+ */
19
30
  var DualList = function DualList(_ref) {
20
31
  var ref = _ref.ref,
21
32
  value = _ref.value,
22
33
  options = _ref.options,
34
+ emptyDisplay = _ref.emptyDisplay,
23
35
  groupProperty = _ref.groupProperty,
24
36
  _ref$height = _ref.height,
25
37
  height = _ref$height === void 0 ? "18rem" : _ref$height,
@@ -163,6 +175,7 @@ var DualList = function DualList(_ref) {
163
175
  error: error,
164
176
  height: height,
165
177
  options: leftOptions,
178
+ emptyDisplay: emptyDisplay,
166
179
  groupProperty: groupProperty,
167
180
  labelProperty: labelProperty,
168
181
  valueProperty: valueProperty,
@@ -218,6 +231,7 @@ var DualList = function DualList(_ref) {
218
231
  allowClear: true,
219
232
  height: height,
220
233
  options: rightOptions,
234
+ emptyDisplay: emptyDisplay,
221
235
  groupProperty: groupProperty,
222
236
  labelProperty: labelProperty,
223
237
  valueProperty: valueProperty,
@@ -6,33 +6,35 @@ import { useFloating, autoUpdate, useListNavigation, useTypeahead, useInteractio
6
6
  import { Chip } from '@react-fabric/core';
7
7
  import { isArray, isEmpty } from '@react-fabric/utilities';
8
8
  import classNames from 'classnames';
9
- import { useMemo, Fragment, useId, useCallback } from 'react';
9
+ import { useMemo, Fragment, useId, useCallback, useLayoutEffect } from 'react';
10
10
  import { FieldWrapper } from '../internal/FieldWrapper.js';
11
11
  import { InputWrapper } from '../internal/InputWrapper.js';
12
12
  import { Options } from './Options.js';
13
13
  import { useSelect } from './useSelect.js';
14
14
  import { jsx, jsxs } from 'react/jsx-runtime';
15
15
 
16
- var _excluded = ["ref", "name", "value", "readOnly", "disabled", "required", "placeholder", "autoFocus", "options", "height", "groupProperty", "labelProperty", "valueProperty", "multiple", "allowCreate", "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", "sortProperty", "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) {
20
20
  var _state$query;
21
- _ref.ref;
22
- var name = _ref.name,
21
+ var ref = _ref.ref,
22
+ name = _ref.name,
23
23
  value = _ref.value,
24
24
  readOnly = _ref.readOnly,
25
25
  disabled = _ref.disabled,
26
26
  required = _ref.required,
27
- placeholder = _ref.placeholder;
28
- _ref.autoFocus;
29
- var options = _ref.options,
27
+ placeholder = _ref.placeholder,
28
+ autoFocus = _ref.autoFocus,
29
+ options = _ref.options,
30
30
  height = _ref.height,
31
31
  groupProperty = _ref.groupProperty,
32
32
  labelProperty = _ref.labelProperty,
33
33
  valueProperty = _ref.valueProperty,
34
+ sortProperty = _ref.sortProperty,
34
35
  multiple = _ref.multiple,
35
36
  allowCreate = _ref.allowCreate,
37
+ searchable = _ref.searchable,
36
38
  createOption = _ref.createOption,
37
39
  matcher = _ref.matcher,
38
40
  renderer = _ref.renderer,
@@ -40,6 +42,7 @@ var List = function List(_ref) {
40
42
  onChange = _ref.onChange,
41
43
  onSelect = _ref.onSelect,
42
44
  onEnterPressed = _ref.onEnterPressed,
45
+ emptyDisplay = _ref.emptyDisplay,
43
46
  invalid = _ref.invalid,
44
47
  error = _ref.error;
45
48
  _ref.allowClear;
@@ -61,6 +64,7 @@ var List = function List(_ref) {
61
64
  groupProperty: groupProperty,
62
65
  labelProperty: labelProperty,
63
66
  valueProperty: valueProperty,
67
+ sortProperty: sortProperty,
64
68
  allowCreate: allowCreate,
65
69
  createOption: createOption,
66
70
  matcher: matcher,
@@ -138,9 +142,10 @@ var List = function List(_ref) {
138
142
  }
139
143
  } else if (evt.key === "Backspace") {
140
144
  !state.query && handleRemove();
141
- } else if (["ArrowUp", "ArrowDown"].includes(evt.key)) {
142
- if (state.activeIndex === null) {
143
- setActiveIndex(state.selectedIndex);
145
+ } else if (!searchable || ["ArrowUp", "ArrowDown"].includes(evt.key)) {
146
+ if (["ArrowUp", "ArrowDown"].includes(evt.key) && state.activeIndex === null) {
147
+ var _state$selectedIndex;
148
+ setActiveIndex((_state$selectedIndex = state.selectedIndex) !== null && _state$selectedIndex !== void 0 ? _state$selectedIndex : 0);
144
149
  }
145
150
  setTimeout(function () {
146
151
  var _props$onKeyDown;
@@ -185,6 +190,14 @@ var List = function List(_ref) {
185
190
  });
186
191
  }
187
192
  }, [state.value, state.query, placeholder, renderer]);
193
+ useLayoutEffect(function () {
194
+ setTimeout(function () {
195
+ var _listRef$current$stat;
196
+ state.selectedIndex && ((_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 ? void 0 : _listRef$current$stat.scrollIntoView({
197
+ block: "center"
198
+ }));
199
+ }, 100);
200
+ }, [state.selectedIndex]);
188
201
  return /*#__PURE__*/jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
189
202
  children: [/*#__PURE__*/jsx(InputWrapper, {
190
203
  showClear: !isEmpty(state.value),
@@ -197,23 +210,32 @@ var List = function List(_ref) {
197
210
  className: "z-1 rounded-b-none",
198
211
  "data-inner": true,
199
212
  wrapperRef: refs.setReference,
200
- children: /*#__PURE__*/jsxs("div", {
213
+ children: /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
214
+ role: "none",
201
215
  "data-select-display": "true",
202
- className: "group flex-1 py-1 px-2 truncate text-start flex gap-1 flex-wrap",
203
- children: [!hideSelected && displayValue, /*#__PURE__*/jsx("input", _objectSpread(_objectSpread({
216
+ 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")
217
+ }, referenceProps), {}, {
218
+ onMouseUp: function onMouseUp(e) {
219
+ var _e$currentTarget$quer;
220
+ return (_e$currentTarget$quer = e.currentTarget.querySelector("input")) === null || _e$currentTarget$quer === void 0 ? void 0 : _e$currentTarget$quer.focus();
221
+ },
222
+ children: [!hideSelected && displayValue, /*#__PURE__*/jsx("input", {
223
+ readOnly: !searchable || readOnly,
204
224
  disabled: disabled,
205
225
  value: (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : "",
206
226
  "aria-invalid": invalid,
207
227
  "data-testid": name,
208
228
  name: name,
209
- className: classNames("appearance-none bg-transparent outline-none border-none ring-0 flex-1 min-w-24", disabled && "cursor-not-allowed pointer-events-none"),
210
- placeholder: isEmpty(state.value) ? placeholder : ""
211
- }, referenceProps), {}, {
229
+ size: 1,
230
+ ref: ref,
231
+ autoFocus: autoFocus,
232
+ className: classNames("appearance-none bg-transparent outline-none border-none ring-0 flex-1 min-w-24", disabled && "cursor-not-allowed pointer-events-none", multiple && "min-w-24"),
233
+ placeholder: isEmpty(state.value) ? placeholder : "",
212
234
  onChange: function onChange(evt) {
213
235
  return handleQuery(evt.target.value);
214
236
  }
215
- }))]
216
- })
237
+ })]
238
+ }))
217
239
  }), /*#__PURE__*/jsx(FloatingFocusManager, {
218
240
  context: context,
219
241
  initialFocus: -1,
@@ -227,11 +249,14 @@ var List = function List(_ref) {
227
249
  }, floatingProps), {}, {
228
250
  items: state.items,
229
251
  active: state.activeIndex,
252
+ valueProperty: valueProperty,
253
+ labelProperty: labelProperty,
230
254
  itemRef: setItemRef,
231
255
  itemProps: makeItemProps,
232
- children: function children(item) {
233
- var _ref4, _renderer3;
234
- return (_ref4 = (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : item[labelProperty]) !== null && _ref4 !== void 0 ? _ref4 : item;
256
+ empty: emptyDisplay,
257
+ children: function children(item, label) {
258
+ var _renderer3;
259
+ return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
235
260
  }
236
261
  }))
237
262
  })]
@@ -34,7 +34,7 @@ var Options = function Options(_ref) {
34
34
  i18nKey: "form:select.emptyList"
35
35
  })
36
36
  })), items.map(function (item, index) {
37
- var _item$labelProperty;
37
+ var _item$value, _item$labelProperty;
38
38
  if (item.___group___) return /*#__PURE__*/jsx("p", {
39
39
  className: "px-2 py-1 text-muted text-xs sticky -top-px z-2 bg-base border-t",
40
40
  children: item.label
@@ -51,7 +51,7 @@ var Options = function Options(_ref) {
51
51
  children: /*#__PURE__*/jsx(Trans, {
52
52
  i18nKey: "form:select.createOption",
53
53
  values: {
54
- query: item.value
54
+ query: (_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : item
55
55
  },
56
56
  components: [/*#__PURE__*/jsx("strong", {
57
57
  children: "query"
@@ -12,7 +12,7 @@ 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", "error", "options", "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", "sortProperty", "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) {
@@ -28,14 +28,18 @@ var Select = function Select(_ref) {
28
28
  autoFocus = _ref.autoFocus,
29
29
  error = _ref.error,
30
30
  options = _ref.options,
31
+ defaultOpen = _ref.defaultOpen,
32
+ hideHandle = _ref.hideHandle,
31
33
  groupProperty = _ref.groupProperty,
32
34
  _ref$labelProperty = _ref.labelProperty,
33
35
  labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
34
36
  _ref$valueProperty = _ref.valueProperty,
35
37
  valueProperty = _ref$valueProperty === void 0 ? "id" : _ref$valueProperty,
38
+ sortProperty = _ref.sortProperty,
36
39
  multiple = _ref.multiple,
37
40
  searchable = _ref.searchable,
38
41
  allowCreate = _ref.allowCreate,
42
+ emptyDisplay = _ref.emptyDisplay,
39
43
  createOption = _ref.createOption,
40
44
  matcher = _ref.matcher,
41
45
  renderer = _ref.renderer,
@@ -48,9 +52,11 @@ var Select = function Select(_ref) {
48
52
  value: value,
49
53
  options: options,
50
54
  multiple: multiple,
55
+ defaultOpen: defaultOpen,
51
56
  groupProperty: groupProperty,
52
57
  labelProperty: labelProperty,
53
58
  valueProperty: valueProperty,
59
+ sortProperty: sortProperty,
54
60
  allowCreate: allowCreate,
55
61
  createOption: createOption,
56
62
  matcher: matcher,
@@ -140,6 +146,9 @@ var Select = function Select(_ref) {
140
146
  return false;
141
147
  } else if (state.query) {
142
148
  handleQuery("");
149
+ evt.preventDefault();
150
+ evt.stopPropagation();
151
+ return false;
143
152
  } else {
144
153
  onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
145
154
  }
@@ -236,13 +245,13 @@ var Select = function Select(_ref) {
236
245
  size: 1,
237
246
  ref: ref,
238
247
  autoFocus: autoFocus,
239
- className: classNames("appearance-none bg-transparent outline-none border-none ring-0 flex-1", disabled && "cursor-not-allowed pointer-events-none", multiple && "min-w-24"),
248
+ className: classNames("appearance-none bg-transparent outline-none border-none ring-0 flex-1 peer", disabled && "cursor-not-allowed pointer-events-none", multiple && "min-w-24"),
240
249
  placeholder: isEmpty(state.value) ? placeholder : "",
241
250
  onChange: function onChange(evt) {
242
251
  return handleQuery(evt.target.value);
243
252
  }
244
253
  })]
245
- })), !state.loading && /*#__PURE__*/jsx(Icon, {
254
+ })), !state.loading && !hideHandle && /*#__PURE__*/jsx(Icon, {
246
255
  className: classNames("flex-content p-2 z-0 order-9 text-muted cursor-pointer self-stretch flex items-center h-auto", state.open && "-scale-y-100 pointer-events-none", disabled && "pointer-events-none"),
247
256
  onClick: function onClick() {
248
257
  return !disabled && openDropdown();
@@ -259,7 +268,7 @@ var Select = function Select(_ref) {
259
268
  visuallyHiddenDismiss: true,
260
269
  children: /*#__PURE__*/jsx(Options, _objectSpread(_objectSpread({
261
270
  ref: refs.setFloating,
262
- className: "outline shadow-lg max-h-[40vh] z-[var(--z-popover)]",
271
+ className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
263
272
  style: _objectSpread({
264
273
  width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
265
274
  }, floatingStyles)
@@ -270,6 +279,7 @@ var Select = function Select(_ref) {
270
279
  labelProperty: labelProperty,
271
280
  itemRef: setItemRef,
272
281
  itemProps: makeItemProps,
282
+ empty: emptyDisplay,
273
283
  children: function children(item, label) {
274
284
  var _renderer3;
275
285
  return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;