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