@react-fabric/form 1.0.0-beta.6 → 1.0.0-beta.61
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.
- package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
- package/css/_colorPicker.css +65 -0
- package/{src/internal/Field.module.css → css/_field.css} +66 -30
- package/{src/input/File.module.css → css/_file.css} +21 -6
- package/css/styles.css +27 -0
- package/dist/cjs/builder/FileField.js +40 -28
- package/dist/cjs/builder/FormField.js +50 -34
- package/dist/cjs/builder/SchemaEditor.js +72 -0
- package/dist/cjs/builder/components/AddSchemaFields.js +63 -0
- package/dist/cjs/builder/components/SchemaArrayForm.js +145 -0
- package/dist/cjs/builder/components/SchemaField.js +414 -0
- package/dist/cjs/form/Controller.js +46 -1
- package/dist/cjs/form/Form.js +71 -13
- package/dist/cjs/hooks/useFileUploader.js +16 -0
- package/dist/cjs/hooks/useFormBuilder.js +67 -18
- package/dist/cjs/i18n/ar.json.js +5 -4
- package/dist/cjs/i18n/en.json.js +5 -5
- package/dist/cjs/index.js +12 -2
- package/dist/cjs/input/ArrayInput.js +128 -38
- package/dist/cjs/input/AvatarInput.js +43 -23
- package/dist/cjs/input/Checkbox.js +18 -8
- package/dist/cjs/input/ColorInput.js +114 -59
- package/dist/cjs/input/ColorPicker.js +60 -76
- package/dist/cjs/input/DateInput.js +197 -0
- package/dist/cjs/input/Field.js +10 -4
- package/dist/cjs/input/File.js +15 -8
- package/dist/cjs/input/Hidden.js +13 -2
- package/dist/cjs/input/Input.js +24 -10
- package/dist/cjs/input/Number.js +22 -10
- package/dist/cjs/input/Password.js +23 -13
- package/dist/cjs/input/Radio.js +14 -5
- package/dist/cjs/input/RadioGroup.js +10 -1
- package/dist/cjs/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/cjs/input/Search.js +32 -22
- package/dist/cjs/input/Slider.js +12 -6
- package/dist/cjs/input/Switch.js +20 -9
- package/dist/cjs/input/Textarea.js +29 -8
- package/dist/cjs/internal/ErrorIcon.js +2 -2
- package/dist/cjs/internal/FieldWrapper.js +11 -4
- package/dist/cjs/internal/InputWrapper.js +29 -22
- package/dist/cjs/select/AutoComplete.js +22 -13
- package/dist/cjs/select/DualList.js +34 -12
- package/dist/cjs/select/List.js +49 -21
- package/dist/cjs/select/Options.js +49 -42
- package/dist/cjs/select/Select.js +21 -10
- package/dist/cjs/select/useSelect.js +22 -11
- package/dist/cjs/types/schema.js +43 -0
- package/dist/cjs/utils/eventHandlers.js +15 -5
- package/dist/esm/builder/FileField.js +42 -30
- package/dist/esm/builder/FormField.js +50 -34
- package/dist/esm/builder/SchemaEditor.js +72 -0
- package/dist/esm/builder/components/AddSchemaFields.js +63 -0
- package/dist/esm/builder/components/SchemaArrayForm.js +145 -0
- package/dist/esm/builder/components/SchemaField.js +414 -0
- package/dist/esm/form/Controller.js +46 -1
- package/dist/esm/form/Form.js +73 -16
- package/dist/esm/hooks/useFileUploader.js +16 -0
- package/dist/esm/hooks/useFormBuilder.js +65 -16
- package/dist/esm/i18n/ar.json.js +5 -4
- package/dist/esm/i18n/en.json.js +5 -5
- package/dist/esm/index.js +6 -2
- package/dist/esm/input/ArrayInput.js +128 -38
- package/dist/esm/input/AvatarInput.js +43 -23
- package/dist/esm/input/Checkbox.js +19 -9
- package/dist/esm/input/ColorInput.js +116 -61
- package/dist/esm/input/ColorPicker.js +60 -76
- package/dist/esm/input/DateInput.js +197 -0
- package/dist/esm/input/Field.js +11 -5
- package/dist/esm/input/File.js +18 -11
- package/dist/esm/input/Hidden.js +13 -2
- package/dist/esm/input/Input.js +26 -12
- package/dist/esm/input/Number.js +24 -12
- package/dist/esm/input/Password.js +26 -16
- package/dist/esm/input/Radio.js +15 -6
- package/dist/esm/input/RadioGroup.js +11 -2
- package/dist/esm/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/esm/input/Search.js +35 -25
- package/dist/esm/input/Slider.js +12 -6
- package/dist/esm/input/Switch.js +20 -9
- package/dist/esm/input/Textarea.js +30 -9
- package/dist/esm/internal/ErrorIcon.js +3 -3
- package/dist/esm/internal/FieldWrapper.js +11 -4
- package/dist/esm/internal/InputWrapper.js +30 -23
- package/dist/esm/select/AutoComplete.js +23 -14
- package/dist/esm/select/DualList.js +35 -13
- package/dist/esm/select/List.js +50 -22
- package/dist/esm/select/Options.js +49 -42
- package/dist/esm/select/Select.js +22 -11
- package/dist/esm/select/useSelect.js +23 -12
- package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
- package/dist/esm/utils/eventHandlers.js +15 -5
- package/dist/types/builder/FileField.d.ts +4 -2
- package/dist/types/builder/FormField.d.ts +3 -1
- package/dist/types/builder/SchemaEditor.d.ts +9 -0
- package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
- package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
- package/dist/types/builder/components/SchemaField.d.ts +10 -0
- package/dist/types/form/Controller.d.ts +47 -2
- package/dist/types/form/Form.d.ts +49 -6
- package/dist/types/hooks/useFileUploader.d.ts +16 -0
- package/dist/types/hooks/useFormBuilder.d.ts +38 -1
- package/dist/types/index.d.ts +6 -3
- package/dist/types/input/ArrayInput.d.ts +69 -12
- package/dist/types/input/AvatarInput.d.ts +23 -3
- package/dist/types/input/Checkbox.d.ts +13 -4
- package/dist/types/input/ColorInput.d.ts +15 -2
- package/dist/types/input/ColorPicker.d.ts +11 -1
- package/dist/types/input/DateInput.d.ts +28 -0
- package/dist/types/input/Field.d.ts +5 -1
- package/dist/types/input/File.d.ts +9 -0
- package/dist/types/input/Hidden.d.ts +13 -1
- package/dist/types/input/Input.d.ts +9 -1
- package/dist/types/input/Number.d.ts +9 -1
- package/dist/types/input/Password.d.ts +7 -1
- package/dist/types/input/Radio.d.ts +9 -1
- package/dist/types/input/RadioGroup.d.ts +8 -1
- package/dist/types/input/RangeSlider.d.ts +67 -0
- package/dist/types/input/Search.d.ts +14 -1
- package/dist/types/input/Slider.d.ts +8 -2
- package/dist/types/input/Switch.d.ts +10 -2
- package/dist/types/input/Textarea.d.ts +15 -1
- package/dist/types/internal/FieldWrapper.d.ts +1 -1
- package/dist/types/internal/InputWrapper.d.ts +1 -1
- package/dist/types/ranger/index.d.ts +2 -2
- package/dist/types/select/AutoComplete.d.ts +8 -1
- package/dist/types/select/DualList.d.ts +21 -7
- package/dist/types/select/List.d.ts +9 -1
- package/dist/types/select/Options.d.ts +4 -3
- package/dist/types/select/Select.d.ts +9 -1
- package/dist/types/select/useSelect.d.ts +10 -6
- package/dist/types/types/index.d.ts +38 -10
- package/dist/types/types/schema.d.ts +78 -33
- package/dist/types/utils/eventHandlers.d.ts +2 -2
- package/package.json +22 -20
- package/src/builder/FileField.tsx +56 -30
- package/src/builder/FormField.tsx +52 -32
- package/src/builder/SchemaEditor.tsx +79 -0
- package/src/builder/components/AddSchemaFields.tsx +75 -0
- package/src/builder/components/SchemaArrayForm.tsx +155 -0
- package/src/builder/components/SchemaField.tsx +435 -0
- package/src/form/Controller.tsx +48 -3
- package/src/form/Form.tsx +84 -13
- package/src/hooks/useFileUploader.ts +16 -0
- package/src/hooks/useFormBuilder.tsx +70 -19
- package/src/i18n/ar.json +5 -4
- package/src/i18n/en.json +5 -5
- package/src/index.ts +12 -3
- package/src/input/ArrayInput.tsx +195 -66
- package/src/input/AvatarInput.tsx +66 -18
- package/src/input/Checkbox.tsx +22 -9
- package/src/input/ColorInput.tsx +128 -72
- package/src/input/ColorPicker.tsx +54 -72
- package/src/input/DateInput.tsx +260 -0
- package/src/input/Field.tsx +15 -11
- package/src/input/File.tsx +18 -16
- package/src/input/Hidden.tsx +17 -2
- package/src/input/Input.tsx +27 -13
- package/src/input/Number.tsx +22 -13
- package/src/input/Password.tsx +28 -18
- package/src/input/Radio.tsx +15 -6
- package/src/input/RadioGroup.tsx +12 -3
- package/src/input/{Range.tsx → RangeSlider.tsx} +17 -9
- package/src/input/Search.tsx +36 -25
- package/src/input/Slider.tsx +20 -11
- package/src/input/Switch.tsx +17 -6
- package/src/input/Textarea.tsx +34 -9
- package/src/internal/ErrorIcon.tsx +3 -3
- package/src/internal/FieldWrapper.tsx +8 -4
- package/src/internal/InputWrapper.tsx +56 -30
- package/src/select/AutoComplete.tsx +16 -6
- package/src/select/DualList.tsx +40 -22
- package/src/select/List.tsx +52 -8
- package/src/select/Options.tsx +50 -46
- package/src/select/Select.tsx +29 -10
- package/src/select/useSelect.tsx +26 -9
- package/src/types/index.ts +42 -10
- package/src/types/schema.ts +96 -41
- package/src/utils/eventHandlers.ts +14 -4
- package/dist/cjs/input/ArrayInput.module.css +0 -1
- package/dist/cjs/input/ColorPicker.module.css +0 -1
- package/dist/cjs/input/File.module.css +0 -1
- package/dist/cjs/internal/Field.module.css +0 -1
- package/dist/esm/input/ArrayInput.module.css +0 -1
- package/dist/esm/input/ColorPicker.module.css +0 -1
- package/dist/esm/input/File.module.css +0 -1
- package/dist/esm/internal/Field.module.css +0 -1
- package/dist/types/input/Range.d.ts +0 -59
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
5
|
import { useFloating, autoUpdate, shift, flip, offset, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingPortal, FloatingFocusManager } from '@floating-ui/react';
|
|
6
|
-
import { Chip, Icon
|
|
6
|
+
import { Chip, Icon } from '@react-fabric/core';
|
|
7
7
|
import { isArray, isEmpty } from '@react-fabric/utilities';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
9
|
import { useRef, useId, useMemo, useCallback, useLayoutEffect } from 'react';
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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,
|
|
@@ -132,9 +141,8 @@ var AutoComplete = function AutoComplete(_ref) {
|
|
|
132
141
|
handleChange("");
|
|
133
142
|
return false;
|
|
134
143
|
} else {
|
|
135
|
-
var _submitRef$current;
|
|
136
144
|
onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
|
|
137
|
-
(
|
|
145
|
+
setOpen(false);
|
|
138
146
|
}
|
|
139
147
|
} else if (evt.key === "Backspace") {
|
|
140
148
|
!state.query && multiple && handleRemove();
|
|
@@ -199,7 +207,7 @@ var AutoComplete = function AutoComplete(_ref) {
|
|
|
199
207
|
required: required,
|
|
200
208
|
error: error,
|
|
201
209
|
wrapperRef: refs.setReference,
|
|
202
|
-
className: !multiple && expandOnEdit && state.open ? "
|
|
210
|
+
className: !multiple && expandOnEdit && state.open ? "z-99!" : "",
|
|
203
211
|
floatingExpand: !multiple && expandOnEdit && state.open
|
|
204
212
|
}, rest), {}, {
|
|
205
213
|
children: [/*#__PURE__*/jsxs("div", {
|
|
@@ -218,7 +226,9 @@ var AutoComplete = function AutoComplete(_ref) {
|
|
|
218
226
|
"data-testid": name,
|
|
219
227
|
name: name,
|
|
220
228
|
size: 1,
|
|
229
|
+
ref: ref,
|
|
221
230
|
onInput: onInput,
|
|
231
|
+
autoFocus: autoFocus,
|
|
222
232
|
rows: !multiple && expandOnEdit && state.open ? 5 : 1,
|
|
223
233
|
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
234
|
placeholder: isEmpty(state.value) ? placeholder : ""
|
|
@@ -233,9 +243,8 @@ var AutoComplete = function AutoComplete(_ref) {
|
|
|
233
243
|
className: "opacity-0 absolute"
|
|
234
244
|
})]
|
|
235
245
|
}), state.loading && /*#__PURE__*/jsx(Icon, {
|
|
236
|
-
animate: "spin",
|
|
237
246
|
className: classNames("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
|
|
238
|
-
icon:
|
|
247
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
239
248
|
}), state.open && !state.loading && /*#__PURE__*/jsx(FloatingPortal, {
|
|
240
249
|
children: /*#__PURE__*/jsx(FloatingFocusManager, {
|
|
241
250
|
context: context,
|
|
@@ -243,7 +252,7 @@ var AutoComplete = function AutoComplete(_ref) {
|
|
|
243
252
|
visuallyHiddenDismiss: true,
|
|
244
253
|
children: /*#__PURE__*/jsx(Options, _objectSpread(_objectSpread({
|
|
245
254
|
ref: refs.setFloating,
|
|
246
|
-
className: "outline shadow-lg max-h-[40vh] z-
|
|
255
|
+
className: "outline shadow-lg max-h-[40vh] z-(--z-popover)",
|
|
247
256
|
style: _objectSpread({
|
|
248
257
|
width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
|
|
249
258
|
}, floatingStyles)
|
|
@@ -4,22 +4,34 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
|
4
4
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
5
5
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
6
6
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
7
|
-
import {
|
|
7
|
+
import { useDraggable, useDroppable, DndContext, DragOverlay } from '@dnd-kit/core';
|
|
8
|
+
import { restrictToHorizontalAxis } from '@dnd-kit/modifiers';
|
|
9
|
+
import { ButtonGroup, Button } from '@react-fabric/core';
|
|
10
|
+
import { mergeRefs } from '@react-fabric/utilities';
|
|
8
11
|
import { useState, useDeferredValue, useEffect, useMemo, useCallback } from 'react';
|
|
9
12
|
import { Field } from '../input/Field.js';
|
|
10
13
|
import { List } from './List.js';
|
|
11
|
-
import { restrictToHorizontalAxis } from '@dnd-kit/modifiers';
|
|
12
|
-
import { useDraggable, useDroppable, DndContext, DragOverlay } from '@dnd-kit/core';
|
|
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,
|
|
@@ -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__*/jsx(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:
|
|
197
|
+
icon: {
|
|
198
|
+
icon: "icon-[mdi--chevron-double-left]",
|
|
199
|
+
rtlFlip: true
|
|
200
|
+
},
|
|
186
201
|
disabled: !rightOptions.length
|
|
187
202
|
}), /*#__PURE__*/jsx(Button, {
|
|
188
|
-
rtlFlip: true,
|
|
189
203
|
size: "sm",
|
|
190
204
|
variant: "link",
|
|
191
205
|
"aria-label": "scroll up",
|
|
192
206
|
onClick: moveRightSelected,
|
|
193
|
-
icon:
|
|
207
|
+
icon: {
|
|
208
|
+
icon: "icon-[mdi--chevron-left]",
|
|
209
|
+
rtlFlip: true
|
|
210
|
+
},
|
|
194
211
|
disabled: !rightSelected.length
|
|
195
212
|
}), /*#__PURE__*/jsx(Button, {
|
|
196
|
-
rtlFlip: true,
|
|
197
213
|
size: "sm",
|
|
198
214
|
variant: "link",
|
|
199
215
|
"aria-label": "scroll down",
|
|
200
216
|
onClick: moveLeftSelected,
|
|
201
|
-
icon:
|
|
217
|
+
icon: {
|
|
218
|
+
icon: "icon-[mdi--chevron-right]",
|
|
219
|
+
rtlFlip: true
|
|
220
|
+
},
|
|
202
221
|
disabled: !leftSelected.length
|
|
203
222
|
}), /*#__PURE__*/jsx(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:
|
|
227
|
+
icon: {
|
|
228
|
+
icon: "icon-[mdi--chevron-double-right]",
|
|
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,
|
package/dist/esm/select/List.js
CHANGED
|
@@ -6,33 +6,36 @@ 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", "infoProperty", "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
|
-
var _state$query;
|
|
21
|
-
_ref.ref
|
|
22
|
-
|
|
20
|
+
var _state$query, _state$activeItem;
|
|
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
|
-
|
|
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
|
+
infoProperty = _ref.infoProperty,
|
|
35
|
+
sortProperty = _ref.sortProperty,
|
|
34
36
|
multiple = _ref.multiple,
|
|
35
37
|
allowCreate = _ref.allowCreate,
|
|
38
|
+
searchable = _ref.searchable,
|
|
36
39
|
createOption = _ref.createOption,
|
|
37
40
|
matcher = _ref.matcher,
|
|
38
41
|
renderer = _ref.renderer,
|
|
@@ -40,6 +43,7 @@ var List = function List(_ref) {
|
|
|
40
43
|
onChange = _ref.onChange,
|
|
41
44
|
onSelect = _ref.onSelect,
|
|
42
45
|
onEnterPressed = _ref.onEnterPressed,
|
|
46
|
+
emptyDisplay = _ref.emptyDisplay,
|
|
43
47
|
invalid = _ref.invalid,
|
|
44
48
|
error = _ref.error;
|
|
45
49
|
_ref.allowClear;
|
|
@@ -58,9 +62,11 @@ var List = function List(_ref) {
|
|
|
58
62
|
value: value,
|
|
59
63
|
options: options,
|
|
60
64
|
multiple: multiple,
|
|
65
|
+
alwaysOpen: true,
|
|
61
66
|
groupProperty: groupProperty,
|
|
62
67
|
labelProperty: labelProperty,
|
|
63
68
|
valueProperty: valueProperty,
|
|
69
|
+
sortProperty: sortProperty,
|
|
64
70
|
allowCreate: allowCreate,
|
|
65
71
|
createOption: createOption,
|
|
66
72
|
matcher: matcher,
|
|
@@ -138,9 +144,10 @@ var List = function List(_ref) {
|
|
|
138
144
|
}
|
|
139
145
|
} else if (evt.key === "Backspace") {
|
|
140
146
|
!state.query && handleRemove();
|
|
141
|
-
} else if (["ArrowUp", "ArrowDown"].includes(evt.key)) {
|
|
142
|
-
if (state.activeIndex === null) {
|
|
143
|
-
|
|
147
|
+
} else if (!searchable || ["ArrowUp", "ArrowDown"].includes(evt.key)) {
|
|
148
|
+
if (["ArrowUp", "ArrowDown"].includes(evt.key) && state.activeIndex === null) {
|
|
149
|
+
var _state$selectedIndex;
|
|
150
|
+
setActiveIndex((_state$selectedIndex = state.selectedIndex) !== null && _state$selectedIndex !== void 0 ? _state$selectedIndex : 0);
|
|
144
151
|
}
|
|
145
152
|
setTimeout(function () {
|
|
146
153
|
var _props$onKeyDown;
|
|
@@ -185,6 +192,14 @@ var List = function List(_ref) {
|
|
|
185
192
|
});
|
|
186
193
|
}
|
|
187
194
|
}, [state.value, state.query, placeholder, renderer]);
|
|
195
|
+
useLayoutEffect(function () {
|
|
196
|
+
setTimeout(function () {
|
|
197
|
+
var _listRef$current$stat;
|
|
198
|
+
state.selectedIndex && ((_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 ? void 0 : _listRef$current$stat.scrollIntoView({
|
|
199
|
+
block: "center"
|
|
200
|
+
}));
|
|
201
|
+
}, 100);
|
|
202
|
+
}, [state.selectedIndex]);
|
|
188
203
|
return /*#__PURE__*/jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
|
|
189
204
|
children: [/*#__PURE__*/jsx(InputWrapper, {
|
|
190
205
|
showClear: !isEmpty(state.value),
|
|
@@ -197,23 +212,32 @@ var List = function List(_ref) {
|
|
|
197
212
|
className: "z-1 rounded-b-none",
|
|
198
213
|
"data-inner": true,
|
|
199
214
|
wrapperRef: refs.setReference,
|
|
200
|
-
children: /*#__PURE__*/jsxs("div", {
|
|
215
|
+
children: /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
|
|
216
|
+
role: "none",
|
|
201
217
|
"data-select-display": "true",
|
|
202
|
-
className: "group flex-1 py-1 px-2 truncate text-start flex gap-1 flex-wrap"
|
|
203
|
-
|
|
218
|
+
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")
|
|
219
|
+
}, referenceProps), {}, {
|
|
220
|
+
onMouseUp: function onMouseUp(e) {
|
|
221
|
+
var _e$currentTarget$quer;
|
|
222
|
+
return (_e$currentTarget$quer = e.currentTarget.querySelector("input")) === null || _e$currentTarget$quer === void 0 ? void 0 : _e$currentTarget$quer.focus();
|
|
223
|
+
},
|
|
224
|
+
children: [!hideSelected && displayValue, /*#__PURE__*/jsx("input", {
|
|
225
|
+
readOnly: !searchable || readOnly,
|
|
204
226
|
disabled: disabled,
|
|
205
227
|
value: (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : "",
|
|
206
228
|
"aria-invalid": invalid,
|
|
207
229
|
"data-testid": name,
|
|
208
230
|
name: name,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
231
|
+
size: 1,
|
|
232
|
+
ref: ref,
|
|
233
|
+
autoFocus: autoFocus,
|
|
234
|
+
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"),
|
|
235
|
+
placeholder: isEmpty(state.value) ? placeholder : "",
|
|
212
236
|
onChange: function onChange(evt) {
|
|
213
237
|
return handleQuery(evt.target.value);
|
|
214
238
|
}
|
|
215
|
-
})
|
|
216
|
-
})
|
|
239
|
+
})]
|
|
240
|
+
}))
|
|
217
241
|
}), /*#__PURE__*/jsx(FloatingFocusManager, {
|
|
218
242
|
context: context,
|
|
219
243
|
initialFocus: -1,
|
|
@@ -227,11 +251,15 @@ var List = function List(_ref) {
|
|
|
227
251
|
}, floatingProps), {}, {
|
|
228
252
|
items: state.items,
|
|
229
253
|
active: state.activeIndex,
|
|
254
|
+
valueProperty: valueProperty,
|
|
255
|
+
labelProperty: labelProperty,
|
|
230
256
|
itemRef: setItemRef,
|
|
231
257
|
itemProps: makeItemProps,
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
258
|
+
empty: emptyDisplay,
|
|
259
|
+
info: (_state$activeItem = state.activeItem) === null || _state$activeItem === void 0 ? void 0 : _state$activeItem[infoProperty !== null && infoProperty !== void 0 ? infoProperty : "info"],
|
|
260
|
+
children: function children(item, label) {
|
|
261
|
+
var _renderer3;
|
|
262
|
+
return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
|
|
235
263
|
}
|
|
236
264
|
}))
|
|
237
265
|
})]
|
|
@@ -7,7 +7,7 @@ import classNames from 'classnames';
|
|
|
7
7
|
import { Trans } from 'react-i18next';
|
|
8
8
|
import { jsxs, jsx } from '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__*/jsxs("div", _objectSpread(_objectSpread({
|
|
28
29
|
ref: ref,
|
|
29
|
-
className: classNames("bg-base select-none
|
|
30
|
+
className: classNames("bg-base select-none flex flex-col", className),
|
|
30
31
|
style: style
|
|
31
32
|
}, rest), {}, {
|
|
32
|
-
children: [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var _item$labelProperty;
|
|
38
|
-
if (item.___group___) return /*#__PURE__*/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__*/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__*/jsx(Trans, {
|
|
52
|
-
i18nKey: "form:select.createOption",
|
|
53
|
-
values: {
|
|
54
|
-
query: item.value
|
|
55
|
-
},
|
|
56
|
-
components: [/*#__PURE__*/jsx("strong", {
|
|
57
|
-
children: "query"
|
|
58
|
-
}, "t0")]
|
|
33
|
+
children: [/*#__PURE__*/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__*/jsx(EmptyContent, {
|
|
36
|
+
message: /*#__PURE__*/jsx(Trans, {
|
|
37
|
+
i18nKey: "form:select.emptyList"
|
|
59
38
|
})
|
|
60
|
-
}), index)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
39
|
+
})), items.map(function (item, index) {
|
|
40
|
+
var _item$value, _item$labelProperty;
|
|
41
|
+
if (item.___group___) return /*#__PURE__*/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__*/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__*/jsx(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__*/jsx("strong", {
|
|
60
|
+
children: "query"
|
|
61
|
+
}, "t0")]
|
|
62
|
+
})
|
|
63
|
+
}), index);
|
|
64
|
+
return /*#__PURE__*/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__*/jsx("div", {
|
|
77
|
+
className: "px-2 py-1 text-sm bg-dimmed text-muted",
|
|
78
|
+
children: info
|
|
72
79
|
})]
|
|
73
80
|
}));
|
|
74
81
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
5
|
import { useFloating, autoUpdate, shift, flip, offset, useClick, useDismiss, useListNavigation, useTypeahead, useInteractions, FloatingPortal, FloatingFocusManager } from '@floating-ui/react';
|
|
6
|
-
import { Chip, Icon
|
|
6
|
+
import { Chip, Icon } from '@react-fabric/core';
|
|
7
7
|
import { isArray, isEmpty } from '@react-fabric/utilities';
|
|
8
8
|
import classNames from 'classnames';
|
|
9
9
|
import { useId, useMemo, useCallback, useLayoutEffect } from 'react';
|
|
@@ -12,11 +12,11 @@ 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", "infoProperty", "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) {
|
|
19
|
-
var _state$query, _refs$reference$curre;
|
|
19
|
+
var _state$query, _refs$reference$curre, _state$activeItem;
|
|
20
20
|
var ref = _ref.ref,
|
|
21
21
|
name = _ref.name,
|
|
22
22
|
value = _ref.value,
|
|
@@ -28,14 +28,19 @@ 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,
|
|
39
|
+
infoProperty = _ref.infoProperty,
|
|
36
40
|
multiple = _ref.multiple,
|
|
37
41
|
searchable = _ref.searchable,
|
|
38
42
|
allowCreate = _ref.allowCreate,
|
|
43
|
+
emptyDisplay = _ref.emptyDisplay,
|
|
39
44
|
createOption = _ref.createOption,
|
|
40
45
|
matcher = _ref.matcher,
|
|
41
46
|
renderer = _ref.renderer,
|
|
@@ -48,9 +53,11 @@ var Select = function Select(_ref) {
|
|
|
48
53
|
value: value,
|
|
49
54
|
options: options,
|
|
50
55
|
multiple: multiple,
|
|
56
|
+
defaultOpen: defaultOpen,
|
|
51
57
|
groupProperty: groupProperty,
|
|
52
58
|
labelProperty: labelProperty,
|
|
53
59
|
valueProperty: valueProperty,
|
|
60
|
+
sortProperty: sortProperty,
|
|
54
61
|
allowCreate: allowCreate,
|
|
55
62
|
createOption: createOption,
|
|
56
63
|
matcher: matcher,
|
|
@@ -140,6 +147,9 @@ var Select = function Select(_ref) {
|
|
|
140
147
|
return false;
|
|
141
148
|
} else if (state.query) {
|
|
142
149
|
handleQuery("");
|
|
150
|
+
evt.preventDefault();
|
|
151
|
+
evt.stopPropagation();
|
|
152
|
+
return false;
|
|
143
153
|
} else {
|
|
144
154
|
onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
|
|
145
155
|
}
|
|
@@ -188,7 +198,7 @@ var Select = function Select(_ref) {
|
|
|
188
198
|
} else if (!isEmpty(state.value) && !state.query) {
|
|
189
199
|
var _ref3, _renderer2;
|
|
190
200
|
return /*#__PURE__*/jsx("span", {
|
|
191
|
-
className: "self-center pointer-events-none select-none",
|
|
201
|
+
className: "self-center pointer-events-none select-none truncate leading-tight",
|
|
192
202
|
children: (_ref3 = (_renderer2 = renderer === null || renderer === void 0 ? void 0 : renderer(state.value)) !== null && _renderer2 !== void 0 ? _renderer2 : state.value[labelProperty]) !== null && _ref3 !== void 0 ? _ref3 : state.value
|
|
193
203
|
});
|
|
194
204
|
}
|
|
@@ -215,7 +225,7 @@ var Select = function Select(_ref) {
|
|
|
215
225
|
required: required,
|
|
216
226
|
error: error,
|
|
217
227
|
wrapperRef: refs.setReference,
|
|
218
|
-
className: state.open ? "
|
|
228
|
+
className: state.open ? "z-99!" : ""
|
|
219
229
|
}, rest), {}, {
|
|
220
230
|
children: [/*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
|
|
221
231
|
role: "none",
|
|
@@ -236,22 +246,21 @@ var Select = function Select(_ref) {
|
|
|
236
246
|
size: 1,
|
|
237
247
|
ref: ref,
|
|
238
248
|
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
|
|
249
|
+
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" : "min-w-2"),
|
|
240
250
|
placeholder: isEmpty(state.value) ? placeholder : "",
|
|
241
251
|
onChange: function onChange(evt) {
|
|
242
252
|
return handleQuery(evt.target.value);
|
|
243
253
|
}
|
|
244
254
|
})]
|
|
245
|
-
})), !state.loading && /*#__PURE__*/jsx(Icon, {
|
|
255
|
+
})), !state.loading && !hideHandle && /*#__PURE__*/jsx(Icon, {
|
|
246
256
|
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
257
|
onClick: function onClick() {
|
|
248
258
|
return !disabled && openDropdown();
|
|
249
259
|
},
|
|
250
|
-
icon:
|
|
260
|
+
icon: "icon-[mdi--chevron-down]"
|
|
251
261
|
}), state.loading && /*#__PURE__*/jsx(Icon, {
|
|
252
|
-
animate: "spin",
|
|
253
262
|
className: classNames("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
|
|
254
|
-
icon:
|
|
263
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
255
264
|
}), state.open && !state.loading && /*#__PURE__*/jsx(FloatingPortal, {
|
|
256
265
|
children: /*#__PURE__*/jsx(FloatingFocusManager, {
|
|
257
266
|
context: context,
|
|
@@ -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-
|
|
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,8 @@ var Select = function Select(_ref) {
|
|
|
270
279
|
labelProperty: labelProperty,
|
|
271
280
|
itemRef: setItemRef,
|
|
272
281
|
itemProps: makeItemProps,
|
|
282
|
+
empty: emptyDisplay,
|
|
283
|
+
info: (_state$activeItem = state.activeItem) === null || _state$activeItem === void 0 ? void 0 : _state$activeItem[infoProperty !== null && infoProperty !== void 0 ? infoProperty : "info"],
|
|
273
284
|
children: function children(item, label) {
|
|
274
285
|
var _renderer3;
|
|
275
286
|
return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
|