@react-fabric/form 1.0.0-beta.6 → 1.0.0-beta.60

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} +66 -30
  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 +40 -28
  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 +145 -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 +70 -9
  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 +12 -2
  19. package/dist/cjs/input/ArrayInput.js +126 -36
  20. package/dist/cjs/input/AvatarInput.js +43 -23
  21. package/dist/cjs/input/Checkbox.js +16 -6
  22. package/dist/cjs/input/ColorInput.js +113 -58
  23. package/dist/cjs/input/ColorPicker.js +60 -76
  24. package/dist/cjs/input/DateInput.js +197 -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 +13 -2
  28. package/dist/cjs/input/Input.js +24 -10
  29. package/dist/cjs/input/Number.js +22 -10
  30. package/dist/cjs/input/Password.js +22 -12
  31. package/dist/cjs/input/Radio.js +12 -3
  32. package/dist/cjs/input/RadioGroup.js +10 -1
  33. package/dist/cjs/input/{Range.js → RangeSlider.js} +16 -8
  34. package/dist/cjs/input/Search.js +30 -19
  35. package/dist/cjs/input/Slider.js +12 -6
  36. package/dist/cjs/input/Switch.js +20 -9
  37. package/dist/cjs/input/Textarea.js +29 -8
  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 +27 -20
  41. package/dist/cjs/select/AutoComplete.js +21 -11
  42. package/dist/cjs/select/DualList.js +34 -12
  43. package/dist/cjs/select/List.js +68 -22
  44. package/dist/cjs/select/Options.js +49 -42
  45. package/dist/cjs/select/Select.js +40 -10
  46. package/dist/cjs/select/useSelect.js +22 -11
  47. package/dist/cjs/types/schema.js +43 -0
  48. package/dist/cjs/utils/eventHandlers.js +15 -5
  49. package/dist/esm/builder/FileField.js +42 -30
  50. package/dist/esm/builder/FormField.js +50 -34
  51. package/dist/esm/builder/SchemaEditor.js +72 -0
  52. package/dist/esm/builder/components/AddSchemaFields.js +62 -0
  53. package/dist/esm/builder/components/SchemaArrayForm.js +145 -0
  54. package/dist/esm/builder/components/SchemaField.js +414 -0
  55. package/dist/esm/form/Controller.js +46 -1
  56. package/dist/esm/form/Form.js +72 -12
  57. package/dist/esm/hooks/useFileUploader.js +16 -0
  58. package/dist/esm/hooks/useFormBuilder.js +55 -13
  59. package/dist/esm/i18n/ar.json.js +5 -4
  60. package/dist/esm/i18n/en.json.js +5 -5
  61. package/dist/esm/index.js +6 -2
  62. package/dist/esm/input/ArrayInput.js +126 -36
  63. package/dist/esm/input/AvatarInput.js +44 -24
  64. package/dist/esm/input/Checkbox.js +16 -6
  65. package/dist/esm/input/ColorInput.js +115 -60
  66. package/dist/esm/input/ColorPicker.js +60 -76
  67. package/dist/esm/input/DateInput.js +197 -0
  68. package/dist/esm/input/Field.js +11 -5
  69. package/dist/esm/input/File.js +16 -9
  70. package/dist/esm/input/Hidden.js +13 -2
  71. package/dist/esm/input/Input.js +26 -12
  72. package/dist/esm/input/Number.js +24 -12
  73. package/dist/esm/input/Password.js +24 -14
  74. package/dist/esm/input/Radio.js +12 -3
  75. package/dist/esm/input/RadioGroup.js +11 -2
  76. package/dist/esm/input/{Range.js → RangeSlider.js} +16 -8
  77. package/dist/esm/input/Search.js +32 -21
  78. package/dist/esm/input/Slider.js +12 -6
  79. package/dist/esm/input/Switch.js +20 -9
  80. package/dist/esm/input/Textarea.js +30 -9
  81. package/dist/esm/internal/ErrorIcon.js +1 -1
  82. package/dist/esm/internal/FieldWrapper.js +11 -4
  83. package/dist/esm/internal/InputWrapper.js +27 -20
  84. package/dist/esm/select/AutoComplete.js +21 -11
  85. package/dist/esm/select/DualList.js +34 -12
  86. package/dist/esm/select/List.js +69 -23
  87. package/dist/esm/select/Options.js +49 -42
  88. package/dist/esm/select/Select.js +40 -10
  89. package/dist/esm/select/useSelect.js +23 -12
  90. package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
  91. package/dist/esm/utils/eventHandlers.js +15 -5
  92. package/dist/types/builder/FileField.d.ts +4 -2
  93. package/dist/types/builder/FormField.d.ts +3 -1
  94. package/dist/types/builder/SchemaEditor.d.ts +9 -0
  95. package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
  96. package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
  97. package/dist/types/builder/components/SchemaField.d.ts +10 -0
  98. package/dist/types/form/Controller.d.ts +47 -2
  99. package/dist/types/form/Form.d.ts +48 -2
  100. package/dist/types/hooks/useFileUploader.d.ts +16 -0
  101. package/dist/types/hooks/useFormBuilder.d.ts +32 -1
  102. package/dist/types/index.d.ts +6 -3
  103. package/dist/types/input/ArrayInput.d.ts +69 -12
  104. package/dist/types/input/AvatarInput.d.ts +23 -3
  105. package/dist/types/input/Checkbox.d.ts +13 -4
  106. package/dist/types/input/ColorInput.d.ts +15 -2
  107. package/dist/types/input/ColorPicker.d.ts +11 -1
  108. package/dist/types/input/DateInput.d.ts +28 -0
  109. package/dist/types/input/Field.d.ts +5 -1
  110. package/dist/types/input/File.d.ts +9 -0
  111. package/dist/types/input/Hidden.d.ts +13 -1
  112. package/dist/types/input/Input.d.ts +9 -1
  113. package/dist/types/input/Number.d.ts +9 -1
  114. package/dist/types/input/Password.d.ts +7 -1
  115. package/dist/types/input/Radio.d.ts +9 -1
  116. package/dist/types/input/RadioGroup.d.ts +8 -1
  117. package/dist/types/input/RangeSlider.d.ts +67 -0
  118. package/dist/types/input/Search.d.ts +14 -1
  119. package/dist/types/input/Slider.d.ts +8 -2
  120. package/dist/types/input/Switch.d.ts +10 -2
  121. package/dist/types/input/Textarea.d.ts +15 -1
  122. package/dist/types/internal/FieldWrapper.d.ts +1 -1
  123. package/dist/types/internal/InputWrapper.d.ts +1 -1
  124. package/dist/types/ranger/index.d.ts +2 -2
  125. package/dist/types/select/AutoComplete.d.ts +8 -1
  126. package/dist/types/select/DualList.d.ts +17 -2
  127. package/dist/types/select/List.d.ts +9 -1
  128. package/dist/types/select/Options.d.ts +4 -3
  129. package/dist/types/select/Select.d.ts +9 -1
  130. package/dist/types/select/useSelect.d.ts +10 -6
  131. package/dist/types/types/index.d.ts +34 -5
  132. package/dist/types/types/schema.d.ts +78 -33
  133. package/dist/types/utils/eventHandlers.d.ts +2 -2
  134. package/package.json +22 -20
  135. package/src/builder/FileField.tsx +62 -30
  136. package/src/builder/FormField.tsx +52 -32
  137. package/src/builder/SchemaEditor.tsx +79 -0
  138. package/src/builder/components/AddSchemaFields.tsx +74 -0
  139. package/src/builder/components/SchemaArrayForm.tsx +161 -0
  140. package/src/builder/components/SchemaField.tsx +436 -0
  141. package/src/form/Controller.tsx +48 -3
  142. package/src/form/Form.tsx +80 -8
  143. package/src/hooks/useFileUploader.ts +16 -0
  144. package/src/hooks/useFormBuilder.tsx +58 -15
  145. package/src/i18n/ar.json +5 -4
  146. package/src/i18n/en.json +5 -5
  147. package/src/index.ts +12 -3
  148. package/src/input/ArrayInput.tsx +199 -64
  149. package/src/input/AvatarInput.tsx +67 -19
  150. package/src/input/Checkbox.tsx +16 -6
  151. package/src/input/ColorInput.tsx +131 -71
  152. package/src/input/ColorPicker.tsx +54 -72
  153. package/src/input/DateInput.tsx +260 -0
  154. package/src/input/Field.tsx +15 -11
  155. package/src/input/File.tsx +16 -14
  156. package/src/input/Hidden.tsx +17 -2
  157. package/src/input/Input.tsx +27 -13
  158. package/src/input/Number.tsx +22 -13
  159. package/src/input/Password.tsx +24 -16
  160. package/src/input/Radio.tsx +12 -3
  161. package/src/input/RadioGroup.tsx +12 -3
  162. package/src/input/{Range.tsx → RangeSlider.tsx} +17 -9
  163. package/src/input/Search.tsx +33 -22
  164. package/src/input/Slider.tsx +20 -11
  165. package/src/input/Switch.tsx +17 -6
  166. package/src/input/Textarea.tsx +34 -9
  167. package/src/internal/ErrorIcon.tsx +1 -1
  168. package/src/internal/FieldWrapper.tsx +8 -4
  169. package/src/internal/InputWrapper.tsx +49 -27
  170. package/src/select/AutoComplete.tsx +14 -3
  171. package/src/select/DualList.tsx +31 -16
  172. package/src/select/List.tsx +52 -8
  173. package/src/select/Options.tsx +50 -46
  174. package/src/select/Select.tsx +25 -5
  175. package/src/select/useSelect.tsx +26 -9
  176. package/src/types/index.ts +37 -6
  177. package/src/types/schema.ts +96 -41
  178. package/src/utils/eventHandlers.ts +14 -4
  179. package/dist/cjs/input/ArrayInput.module.css +0 -1
  180. package/dist/cjs/input/ColorPicker.module.css +0 -1
  181. package/dist/cjs/input/File.module.css +0 -1
  182. package/dist/cjs/internal/Field.module.css +0 -1
  183. package/dist/esm/input/ArrayInput.module.css +0 -1
  184. package/dist/esm/input/ColorPicker.module.css +0 -1
  185. package/dist/esm/input/File.module.css +0 -1
  186. package/dist/esm/internal/Field.module.css +0 -1
  187. package/dist/types/input/Range.d.ts +0 -59
@@ -4,22 +4,34 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
5
5
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
6
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
7
+ var core = require('@dnd-kit/core');
8
+ var modifiers = require('@dnd-kit/modifiers');
7
9
  var core$1 = require('@react-fabric/core');
10
+ var utilities = require('@react-fabric/utilities');
8
11
  var react = require('react');
9
12
  var Field = require('../input/Field.js');
10
13
  var List = require('./List.js');
11
- var modifiers = require('@dnd-kit/modifiers');
12
- var core = require('@dnd-kit/core');
13
- var utilities = require('@react-fabric/utilities');
14
14
  var jsxRuntime = require('react/jsx-runtime');
15
15
 
16
- var _excluded = ["ref", "value", "options", "groupProperty", "height", "labelProperty", "valueProperty", "renderer", "onChange", "name", "invalid", "readOnly", "disabled", "placeholder", "autoFocus", "error"];
16
+ var _excluded = ["ref", "value", "options", "emptyDisplay", "groupProperty", "height", "labelProperty", "valueProperty", "renderer", "onChange", "name", "invalid", "readOnly", "disabled", "placeholder", "autoFocus", "error"];
17
17
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
18
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ /**
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,
@@ -177,36 +190,44 @@ var DualList = function DualList(_ref) {
177
190
  vertical: true,
178
191
  className: "outline overflow-hidden bg-base",
179
192
  children: [/*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
180
- rtlFlip: true,
181
193
  size: "sm",
182
194
  variant: "link",
183
195
  "aria-label": "scroll to top",
184
196
  onClick: moveAllLeft,
185
- icon: core$1.CoreIcons.chevronsLeft,
197
+ icon: {
198
+ icon: core$1.CoreIcons.chevronsLeft,
199
+ rtlFlip: true
200
+ },
186
201
  disabled: !rightOptions.length
187
202
  }), /*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
188
- rtlFlip: true,
189
203
  size: "sm",
190
204
  variant: "link",
191
205
  "aria-label": "scroll up",
192
206
  onClick: moveRightSelected,
193
- icon: core$1.CoreIcons.chevronLeft,
207
+ icon: {
208
+ icon: core$1.CoreIcons.chevronLeft,
209
+ rtlFlip: true
210
+ },
194
211
  disabled: !rightSelected.length
195
212
  }), /*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
196
- rtlFlip: true,
197
213
  size: "sm",
198
214
  variant: "link",
199
215
  "aria-label": "scroll down",
200
216
  onClick: moveLeftSelected,
201
- icon: core$1.CoreIcons.chevronRight,
217
+ icon: {
218
+ icon: core$1.CoreIcons.chevronRight,
219
+ rtlFlip: true
220
+ },
202
221
  disabled: !leftSelected.length
203
222
  }), /*#__PURE__*/jsxRuntime.jsx(core$1.Button, {
204
- rtlFlip: true,
205
223
  size: "sm",
206
224
  variant: "link",
207
225
  "aria-label": "scroll to bottom",
208
226
  onClick: moveAllRight,
209
- icon: core$1.CoreIcons.chevronsRight,
227
+ icon: {
228
+ icon: core$1.CoreIcons.chevronsRight,
229
+ rtlFlip: true
230
+ },
210
231
  disabled: !leftOptions.length
211
232
  })]
212
233
  })
@@ -218,6 +239,7 @@ var DualList = function DualList(_ref) {
218
239
  allowClear: true,
219
240
  height: height,
220
241
  options: rightOptions,
242
+ emptyDisplay: emptyDisplay,
221
243
  groupProperty: groupProperty,
222
244
  labelProperty: labelProperty,
223
245
  valueProperty: valueProperty,
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
3
4
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
5
7
  var react$1 = require('@floating-ui/react');
6
8
  var core = require('@react-fabric/core');
7
9
  var utilities = require('@react-fabric/utilities');
@@ -13,26 +15,29 @@ var Options = require('./Options.js');
13
15
  var useSelect = require('./useSelect.js');
14
16
  var jsxRuntime = require('react/jsx-runtime');
15
17
 
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"];
18
+ var _excluded = ["ref", "name", "value", "readOnly", "disabled", "required", "placeholder", "autoFocus", "options", "height", "groupProperty", "labelProperty", "valueProperty", "infoProperty", "sortProperty", "multiple", "allowCreate", "searchable", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed", "emptyDisplay", "invalid", "error", "allowClear", "decorateStart", "decorateEnd", "data-inner", "data-hide-selected"];
17
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
21
  var List = function List(_ref) {
20
- var _state$query;
21
- _ref.ref;
22
- var name = _ref.name,
22
+ var _state$query, _state$activeItem;
23
+ var ref = _ref.ref,
24
+ name = _ref.name,
23
25
  value = _ref.value,
24
26
  readOnly = _ref.readOnly,
25
27
  disabled = _ref.disabled,
26
28
  required = _ref.required,
27
- placeholder = _ref.placeholder;
28
- _ref.autoFocus;
29
- var options = _ref.options,
29
+ placeholder = _ref.placeholder,
30
+ autoFocus = _ref.autoFocus,
31
+ options = _ref.options,
30
32
  height = _ref.height,
31
33
  groupProperty = _ref.groupProperty,
32
34
  labelProperty = _ref.labelProperty,
33
35
  valueProperty = _ref.valueProperty,
36
+ infoProperty = _ref.infoProperty,
37
+ sortProperty = _ref.sortProperty,
34
38
  multiple = _ref.multiple,
35
39
  allowCreate = _ref.allowCreate,
40
+ searchable = _ref.searchable,
36
41
  createOption = _ref.createOption,
37
42
  matcher = _ref.matcher,
38
43
  renderer = _ref.renderer,
@@ -40,6 +45,7 @@ var List = function List(_ref) {
40
45
  onChange = _ref.onChange,
41
46
  onSelect = _ref.onSelect,
42
47
  onEnterPressed = _ref.onEnterPressed,
48
+ emptyDisplay = _ref.emptyDisplay,
43
49
  invalid = _ref.invalid,
44
50
  error = _ref.error;
45
51
  _ref.allowClear;
@@ -58,9 +64,11 @@ var List = function List(_ref) {
58
64
  value: value,
59
65
  options: options,
60
66
  multiple: multiple,
67
+ alwaysOpen: true,
61
68
  groupProperty: groupProperty,
62
69
  labelProperty: labelProperty,
63
70
  valueProperty: valueProperty,
71
+ sortProperty: sortProperty,
64
72
  allowCreate: allowCreate,
65
73
  createOption: createOption,
66
74
  matcher: matcher,
@@ -138,9 +146,10 @@ var List = function List(_ref) {
138
146
  }
139
147
  } else if (evt.key === "Backspace") {
140
148
  !state.query && handleRemove();
141
- } else if (["ArrowUp", "ArrowDown"].includes(evt.key)) {
142
- if (state.activeIndex === null) {
143
- setActiveIndex(state.selectedIndex);
149
+ } else if (!searchable || ["ArrowUp", "ArrowDown"].includes(evt.key)) {
150
+ if (["ArrowUp", "ArrowDown"].includes(evt.key) && state.activeIndex === null) {
151
+ var _state$selectedIndex;
152
+ setActiveIndex((_state$selectedIndex = state.selectedIndex) !== null && _state$selectedIndex !== void 0 ? _state$selectedIndex : 0);
144
153
  }
145
154
  setTimeout(function () {
146
155
  var _props$onKeyDown;
@@ -185,6 +194,14 @@ var List = function List(_ref) {
185
194
  });
186
195
  }
187
196
  }, [state.value, state.query, placeholder, renderer]);
197
+ react.useLayoutEffect(function () {
198
+ setTimeout(function () {
199
+ var _listRef$current$stat;
200
+ state.selectedIndex && ((_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 ? void 0 : _listRef$current$stat.scrollIntoView({
201
+ block: "center"
202
+ }));
203
+ }, 100);
204
+ }, [state.selectedIndex]);
188
205
  return /*#__PURE__*/jsxRuntime.jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
189
206
  children: [/*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, {
190
207
  showClear: !utilities.isEmpty(state.value),
@@ -197,23 +214,32 @@ var List = function List(_ref) {
197
214
  className: "z-1 rounded-b-none",
198
215
  "data-inner": true,
199
216
  wrapperRef: refs.setReference,
200
- children: /*#__PURE__*/jsxRuntime.jsxs("div", {
217
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
218
+ role: "none",
201
219
  "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__*/jsxRuntime.jsx("input", _objectSpread(_objectSpread({
220
+ 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")
221
+ }, referenceProps), {}, {
222
+ onMouseUp: function onMouseUp(e) {
223
+ var _e$currentTarget$quer;
224
+ return (_e$currentTarget$quer = e.currentTarget.querySelector("input")) === null || _e$currentTarget$quer === void 0 ? void 0 : _e$currentTarget$quer.focus();
225
+ },
226
+ children: [!hideSelected && displayValue, /*#__PURE__*/jsxRuntime.jsx("input", {
227
+ readOnly: !searchable || readOnly,
204
228
  disabled: disabled,
205
229
  value: (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : "",
206
230
  "aria-invalid": invalid,
207
231
  "data-testid": name,
208
232
  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: utilities.isEmpty(state.value) ? placeholder : ""
211
- }, referenceProps), {}, {
233
+ size: 1,
234
+ ref: ref,
235
+ autoFocus: autoFocus,
236
+ 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"),
237
+ placeholder: utilities.isEmpty(state.value) ? placeholder : "",
212
238
  onChange: function onChange(evt) {
213
239
  return handleQuery(evt.target.value);
214
240
  }
215
- }))]
216
- })
241
+ })]
242
+ }))
217
243
  }), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingFocusManager, {
218
244
  context: context,
219
245
  initialFocus: -1,
@@ -227,12 +253,32 @@ var List = function List(_ref) {
227
253
  }, floatingProps), {}, {
228
254
  items: state.items,
229
255
  active: state.activeIndex,
256
+ valueProperty: valueProperty,
257
+ labelProperty: labelProperty,
230
258
  itemRef: setItemRef,
231
259
  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;
235
- }
260
+ empty: emptyDisplay,
261
+ info: (_state$activeItem = state.activeItem) === null || _state$activeItem === void 0 ? void 0 : _state$activeItem[infoProperty !== null && infoProperty !== void 0 ? infoProperty : "info"],
262
+ children: ( /*#__PURE__*/function () {
263
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(item, label) {
264
+ var _renderer3;
265
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
266
+ while (1) switch (_context.prev = _context.next) {
267
+ case 0:
268
+ _context.next = 2;
269
+ return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
270
+ case 2:
271
+ return _context.abrupt("return", _context.sent);
272
+ case 3:
273
+ case "end":
274
+ return _context.stop();
275
+ }
276
+ }, _callee);
277
+ }));
278
+ return function (_x, _x2) {
279
+ return _ref4.apply(this, arguments);
280
+ };
281
+ }())
236
282
  }))
237
283
  })]
238
284
  }));
@@ -7,7 +7,7 @@ var classNames = require('classnames');
7
7
  var reactI18next = require('react-i18next');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
 
10
- var _excluded = ["ref", "style", "items", "active", "className", "itemRef", "empty", "valueProperty", "labelProperty", "itemProps", "children"];
10
+ var _excluded = ["ref", "style", "items", "active", "className", "itemRef", "empty", "info", "valueProperty", "labelProperty", "itemProps", "children"];
11
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
13
  var Options = function Options(_ref) {
@@ -17,7 +17,8 @@ var Options = function Options(_ref) {
17
17
  active = _ref.active,
18
18
  className = _ref.className,
19
19
  itemRef = _ref.itemRef,
20
- empty = _ref.empty;
20
+ empty = _ref.empty,
21
+ info = _ref.info;
21
22
  _ref.valueProperty;
22
23
  var _ref$labelProperty = _ref.labelProperty,
23
24
  labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
@@ -26,49 +27,55 @@ var Options = function Options(_ref) {
26
27
  rest = _objectWithoutProperties(_ref, _excluded);
27
28
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
28
29
  ref: ref,
29
- className: classNames("bg-base select-none overflow-x-hidden overflow-y-auto", className),
30
+ className: classNames("bg-base select-none flex flex-col", className),
30
31
  style: style
31
32
  }, rest), {}, {
32
- children: [items.length === 0 && (empty !== null && empty !== void 0 ? empty : /*#__PURE__*/jsxRuntime.jsx(core.EmptyContent, {
33
- message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
34
- i18nKey: "form:select.emptyList"
35
- })
36
- })), items.map(function (item, index) {
37
- var _item$labelProperty;
38
- if (item.___group___) return /*#__PURE__*/jsxRuntime.jsx("p", {
39
- className: "px-2 py-1 text-muted text-xs sticky -top-px z-2 bg-base border-t",
40
- children: item.label
41
- }, index);
42
- if (item.___create___) return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
43
- role: "none",
44
- tabIndex: active === index ? 0 : -1,
45
- ref: function ref(el) {
46
- return itemRef(index, el);
47
- },
48
- "data-active": active === index ? true : undefined,
49
- className: classNames("block text-start truncate px-2 py-1 leading-normal cursor-pointer select-none", "data-[active]:bg-primary-200 data-[selected]:bg-primary-600 data-[selected]:text-white data-[active]:data-[selected]:underline")
50
- }, itemProps(item)), {}, {
51
- children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
52
- i18nKey: "form:select.createOption",
53
- values: {
54
- query: item.value
55
- },
56
- components: [/*#__PURE__*/jsxRuntime.jsx("strong", {
57
- children: "query"
58
- }, "t0")]
33
+ children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
34
+ className: classNames("overflow-x-hidden overflow-y-auto flex-1"),
35
+ children: [items.length === 0 && (empty !== null && empty !== void 0 ? empty : /*#__PURE__*/jsxRuntime.jsx(core.EmptyContent, {
36
+ message: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
37
+ i18nKey: "form:select.emptyList"
59
38
  })
60
- }), index);
61
- return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
62
- role: "none",
63
- tabIndex: active === index ? 0 : -1,
64
- ref: function ref(el) {
65
- return itemRef(index, el);
66
- },
67
- "data-active": active === index ? true : undefined,
68
- className: classNames("block text-start truncate px-2 py-1 leading-normal cursor-pointer", "data-[active]:bg-primary-200 data-[selected]:bg-primary-600 data-[selected]:text-white data-[active]:data-[selected]:underline")
69
- }, itemProps(item)), {}, {
70
- children: children(item, (_item$labelProperty = item[labelProperty]) !== null && _item$labelProperty !== void 0 ? _item$labelProperty : item)
71
- }), index);
39
+ })), items.map(function (item, index) {
40
+ var _item$value, _item$labelProperty;
41
+ if (item.___group___) return /*#__PURE__*/jsxRuntime.jsx("p", {
42
+ className: "px-2 py-1 text-muted text-xs sticky -top-px z-2 bg-base border-t",
43
+ children: item.label
44
+ }, index);
45
+ if (item.___create___) return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
46
+ role: "none",
47
+ tabIndex: active === index ? 0 : -1,
48
+ ref: function ref(el) {
49
+ return itemRef(index, el);
50
+ },
51
+ "data-active": active === index ? true : undefined,
52
+ className: classNames("block text-start truncate px-2 py-1 leading-normal cursor-pointer select-none", "data-active:bg-primary-200 data-selected:bg-primary-600 data-selected:text-white data-active:data-selected:underline")
53
+ }, itemProps(item)), {}, {
54
+ children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
55
+ i18nKey: "form:select.createOption",
56
+ values: {
57
+ query: (_item$value = item.value) !== null && _item$value !== void 0 ? _item$value : item
58
+ },
59
+ components: [/*#__PURE__*/jsxRuntime.jsx("strong", {
60
+ children: "query"
61
+ }, "t0")]
62
+ })
63
+ }), index);
64
+ return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
65
+ role: "none",
66
+ tabIndex: active === index ? 0 : -1,
67
+ ref: function ref(el) {
68
+ return itemRef(index, el);
69
+ },
70
+ "data-active": active === index ? true : undefined,
71
+ className: classNames("block text-start truncate px-2 py-1 leading-normal cursor-pointer", "data-active:bg-primary-200 data-selected:bg-primary-600 data-selected:text-white data-active:data-selected:underline")
72
+ }, itemProps(item)), {}, {
73
+ children: children(item, (_item$labelProperty = item[labelProperty]) !== null && _item$labelProperty !== void 0 ? _item$labelProperty : item)
74
+ }), index);
75
+ })]
76
+ }), info && /*#__PURE__*/jsxRuntime.jsx("div", {
77
+ className: "px-2 py-1 text-sm bg-dimmed text-muted",
78
+ children: info
72
79
  })]
73
80
  }));
74
81
  };
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
3
4
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ var _regeneratorRuntime = require('@babel/runtime/regenerator');
5
7
  var react$1 = require('@floating-ui/react');
6
8
  var core = require('@react-fabric/core');
7
9
  var utilities = require('@react-fabric/utilities');
@@ -12,11 +14,11 @@ var Options = require('./Options.js');
12
14
  var useSelect = require('./useSelect.js');
13
15
  var jsxRuntime = require('react/jsx-runtime');
14
16
 
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"];
17
+ var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "options", "defaultOpen", "hideHandle", "groupProperty", "labelProperty", "valueProperty", "sortProperty", "infoProperty", "multiple", "searchable", "allowCreate", "emptyDisplay", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "onEnterPressed"];
16
18
  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
19
  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
20
  var Select = function Select(_ref) {
19
- var _state$query, _refs$reference$curre;
21
+ var _state$query, _refs$reference$curre, _state$activeItem;
20
22
  var ref = _ref.ref,
21
23
  name = _ref.name,
22
24
  value = _ref.value,
@@ -28,14 +30,19 @@ var Select = function Select(_ref) {
28
30
  autoFocus = _ref.autoFocus,
29
31
  error = _ref.error,
30
32
  options = _ref.options,
33
+ defaultOpen = _ref.defaultOpen,
34
+ hideHandle = _ref.hideHandle,
31
35
  groupProperty = _ref.groupProperty,
32
36
  _ref$labelProperty = _ref.labelProperty,
33
37
  labelProperty = _ref$labelProperty === void 0 ? "label" : _ref$labelProperty,
34
38
  _ref$valueProperty = _ref.valueProperty,
35
39
  valueProperty = _ref$valueProperty === void 0 ? "id" : _ref$valueProperty,
40
+ sortProperty = _ref.sortProperty,
41
+ infoProperty = _ref.infoProperty,
36
42
  multiple = _ref.multiple,
37
43
  searchable = _ref.searchable,
38
44
  allowCreate = _ref.allowCreate,
45
+ emptyDisplay = _ref.emptyDisplay,
39
46
  createOption = _ref.createOption,
40
47
  matcher = _ref.matcher,
41
48
  renderer = _ref.renderer,
@@ -48,9 +55,11 @@ var Select = function Select(_ref) {
48
55
  value: value,
49
56
  options: options,
50
57
  multiple: multiple,
58
+ defaultOpen: defaultOpen,
51
59
  groupProperty: groupProperty,
52
60
  labelProperty: labelProperty,
53
61
  valueProperty: valueProperty,
62
+ sortProperty: sortProperty,
54
63
  allowCreate: allowCreate,
55
64
  createOption: createOption,
56
65
  matcher: matcher,
@@ -140,6 +149,9 @@ var Select = function Select(_ref) {
140
149
  return false;
141
150
  } else if (state.query) {
142
151
  handleQuery("");
152
+ evt.preventDefault();
153
+ evt.stopPropagation();
154
+ return false;
143
155
  } else {
144
156
  onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
145
157
  }
@@ -215,7 +227,7 @@ var Select = function Select(_ref) {
215
227
  required: required,
216
228
  error: error,
217
229
  wrapperRef: refs.setReference,
218
- className: state.open ? "!z-[99]" : ""
230
+ className: state.open ? "z-99!" : ""
219
231
  }, rest), {}, {
220
232
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
221
233
  role: "none",
@@ -236,13 +248,13 @@ var Select = function Select(_ref) {
236
248
  size: 1,
237
249
  ref: ref,
238
250
  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"),
251
+ 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
252
  placeholder: utilities.isEmpty(state.value) ? placeholder : "",
241
253
  onChange: function onChange(evt) {
242
254
  return handleQuery(evt.target.value);
243
255
  }
244
256
  })]
245
- })), !state.loading && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
257
+ })), !state.loading && !hideHandle && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
246
258
  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
259
  onClick: function onClick() {
248
260
  return !disabled && openDropdown();
@@ -259,7 +271,7 @@ var Select = function Select(_ref) {
259
271
  visuallyHiddenDismiss: true,
260
272
  children: /*#__PURE__*/jsxRuntime.jsx(Options.Options, _objectSpread(_objectSpread({
261
273
  ref: refs.setFloating,
262
- className: "outline shadow-lg max-h-[40vh] z-[var(--z-popover)]",
274
+ className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
263
275
  style: _objectSpread({
264
276
  width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
265
277
  }, floatingStyles)
@@ -270,10 +282,28 @@ var Select = function Select(_ref) {
270
282
  labelProperty: labelProperty,
271
283
  itemRef: setItemRef,
272
284
  itemProps: makeItemProps,
273
- children: function children(item, label) {
274
- var _renderer3;
275
- return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
276
- }
285
+ empty: emptyDisplay,
286
+ info: (_state$activeItem = state.activeItem) === null || _state$activeItem === void 0 ? void 0 : _state$activeItem[infoProperty !== null && infoProperty !== void 0 ? infoProperty : "info"],
287
+ children: ( /*#__PURE__*/function () {
288
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(item, label) {
289
+ var _renderer3;
290
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
291
+ while (1) switch (_context.prev = _context.next) {
292
+ case 0:
293
+ _context.next = 2;
294
+ return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
295
+ case 2:
296
+ return _context.abrupt("return", _context.sent);
297
+ case 3:
298
+ case "end":
299
+ return _context.stop();
300
+ }
301
+ }, _callee);
302
+ }));
303
+ return function (_x, _x2) {
304
+ return _ref4.apply(this, arguments);
305
+ };
306
+ }())
277
307
  }))
278
308
  })
279
309
  })]