@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,56 +1,59 @@
|
|
|
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", "error", "options", "groupProperty", "labelProperty", "valueProperty", "multiple", "searchable", "allowCreate", "createOption", "matcher", "renderer", "onQuery", "onChange", "onSelect", "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
|
-
var _state$query, _refs$reference$curre;
|
|
20
|
-
var ref =
|
|
21
|
-
name =
|
|
22
|
-
value =
|
|
23
|
-
invalid =
|
|
24
|
-
readOnly =
|
|
25
|
-
disabled =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
groupProperty =
|
|
32
|
-
|
|
33
|
-
labelProperty =
|
|
34
|
-
|
|
35
|
-
valueProperty =
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
+
function Select(props) {
|
|
17
|
+
var _state$query, _refs$domReference$cu3, _refs$domReference$cu4, _refs$reference$curre;
|
|
18
|
+
var ref = props.ref,
|
|
19
|
+
name = props.name,
|
|
20
|
+
value = props.value,
|
|
21
|
+
invalid = props.invalid,
|
|
22
|
+
readOnly = props.readOnly,
|
|
23
|
+
disabled = props.disabled,
|
|
24
|
+
placeholder = props.placeholder,
|
|
25
|
+
autoFocus = props.autoFocus,
|
|
26
|
+
options = props.options,
|
|
27
|
+
defaultOpen = props.defaultOpen,
|
|
28
|
+
hideHandle = props.hideHandle,
|
|
29
|
+
groupProperty = props.groupProperty,
|
|
30
|
+
_props$labelProperty = props.labelProperty,
|
|
31
|
+
labelProperty = _props$labelProperty === void 0 ? "label" : _props$labelProperty,
|
|
32
|
+
_props$valueProperty = props.valueProperty,
|
|
33
|
+
valueProperty = _props$valueProperty === void 0 ? "value" : _props$valueProperty,
|
|
34
|
+
sortProperty = props.sortProperty,
|
|
35
|
+
infoProperty = props.infoProperty,
|
|
36
|
+
multiple = props.multiple,
|
|
37
|
+
searchable = props.searchable,
|
|
38
|
+
allowClear = props.allowClear,
|
|
39
|
+
allowCreate = props.allowCreate,
|
|
40
|
+
emptyDisplay = props.emptyDisplay,
|
|
41
|
+
createOption = props.createOption,
|
|
42
|
+
matcher = props.matcher,
|
|
43
|
+
renderer = props.renderer,
|
|
44
|
+
onQuery = props.onQuery,
|
|
45
|
+
onChange = props.onChange,
|
|
46
|
+
onSelect = props.onSelect,
|
|
47
|
+
onEnterPressed = props.onEnterPressed;
|
|
47
48
|
var _useSelect = useSelect.useSelect({
|
|
48
49
|
value: value,
|
|
49
50
|
options: options,
|
|
50
51
|
multiple: multiple,
|
|
52
|
+
defaultOpen: defaultOpen,
|
|
51
53
|
groupProperty: groupProperty,
|
|
52
54
|
labelProperty: labelProperty,
|
|
53
55
|
valueProperty: valueProperty,
|
|
56
|
+
sortProperty: sortProperty,
|
|
54
57
|
allowCreate: allowCreate,
|
|
55
58
|
createOption: createOption,
|
|
56
59
|
matcher: matcher,
|
|
@@ -68,11 +71,11 @@ var Select = function Select(_ref) {
|
|
|
68
71
|
handleQuery = _useSelect.handleQuery,
|
|
69
72
|
setItemRef = _useSelect.setItemRef,
|
|
70
73
|
setActiveIndex = _useSelect.setActiveIndex;
|
|
71
|
-
var
|
|
74
|
+
var dropdownKeyId = react.useId();
|
|
72
75
|
var _useFloating = react$1.useFloating({
|
|
73
76
|
open: state.open,
|
|
74
|
-
onOpenChange: function onOpenChange(open
|
|
75
|
-
!open
|
|
77
|
+
onOpenChange: function onOpenChange(open) {
|
|
78
|
+
if (!open) listRef.current = [];
|
|
76
79
|
setOpen(open);
|
|
77
80
|
},
|
|
78
81
|
strategy: "fixed",
|
|
@@ -84,7 +87,8 @@ var Select = function Select(_ref) {
|
|
|
84
87
|
}),
|
|
85
88
|
context = _useFloating.context,
|
|
86
89
|
floatingStyles = _useFloating.floatingStyles,
|
|
87
|
-
refs = _useFloating.refs
|
|
90
|
+
refs = _useFloating.refs,
|
|
91
|
+
placement = _useFloating.placement;
|
|
88
92
|
|
|
89
93
|
// floating interactions
|
|
90
94
|
var click = react$1.useClick(context, {});
|
|
@@ -110,8 +114,8 @@ var Select = function Select(_ref) {
|
|
|
110
114
|
});
|
|
111
115
|
},
|
|
112
116
|
onMatch: function onMatch(index) {
|
|
113
|
-
state.open
|
|
114
|
-
!searchable && !multiple && !state.open
|
|
117
|
+
if (state.open) setActiveIndex(index);
|
|
118
|
+
if (!searchable && !multiple && !state.open) handleChange(listContentRef.current[index]);
|
|
115
119
|
}
|
|
116
120
|
});
|
|
117
121
|
var _useInteractions = react$1.useInteractions([dismiss, searchable ? undefined : click, navigation, typeahead]),
|
|
@@ -123,13 +127,13 @@ var Select = function Select(_ref) {
|
|
|
123
127
|
return _objectSpread(_objectSpread({}, props), {}, {
|
|
124
128
|
onBlur: function onBlur(evt) {
|
|
125
129
|
var _evt$relatedTarget;
|
|
126
|
-
if ((_evt$relatedTarget = evt.relatedTarget) !== null && _evt$relatedTarget !== void 0 && _evt$relatedTarget.closest("[data-select-dropdown=\"".concat(
|
|
130
|
+
if ((_evt$relatedTarget = evt.relatedTarget) !== null && _evt$relatedTarget !== void 0 && _evt$relatedTarget.closest("[data-select-dropdown=\"".concat(dropdownKeyId, "\"]"))) {
|
|
127
131
|
var _refs$domReference$cu;
|
|
128
132
|
(_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();
|
|
129
133
|
return;
|
|
130
134
|
}
|
|
131
135
|
handleQuery("");
|
|
132
|
-
setOpen(false);
|
|
136
|
+
// setOpen(false);
|
|
133
137
|
},
|
|
134
138
|
onKeyDown: function onKeyDown(evt) {
|
|
135
139
|
if (evt.key === "Enter") {
|
|
@@ -140,34 +144,40 @@ var Select = function Select(_ref) {
|
|
|
140
144
|
return false;
|
|
141
145
|
} else if (state.query) {
|
|
142
146
|
handleQuery("");
|
|
147
|
+
evt.preventDefault();
|
|
148
|
+
evt.stopPropagation();
|
|
149
|
+
return false;
|
|
143
150
|
} else {
|
|
144
151
|
onEnterPressed === null || onEnterPressed === void 0 || onEnterPressed(evt);
|
|
145
152
|
}
|
|
146
153
|
} else if (evt.key === "Tab" && state.activeIndex !== null) {
|
|
147
154
|
handleChange(listContentRef.current[state.activeIndex]);
|
|
148
155
|
} else if (evt.key === "Backspace") {
|
|
149
|
-
!state.query
|
|
156
|
+
if (!state.query) handleRemove();
|
|
150
157
|
} else if (!searchable || ["ArrowUp", "ArrowDown"].includes(evt.key)) {
|
|
151
158
|
if (["ArrowUp", "ArrowDown"].includes(evt.key) && state.activeIndex === null) {
|
|
152
159
|
setActiveIndex(state.selectedIndex);
|
|
153
160
|
}
|
|
154
161
|
setTimeout(function () {
|
|
155
162
|
var _props$onKeyDown;
|
|
163
|
+
// @ts-expect-error ignore
|
|
156
164
|
(_props$onKeyDown = props.onKeyDown) === null || _props$onKeyDown === void 0 || _props$onKeyDown.call(props, evt);
|
|
157
165
|
}, 50);
|
|
158
166
|
}
|
|
159
167
|
}
|
|
160
168
|
});
|
|
161
|
-
}, [getReferenceProps,
|
|
169
|
+
}, [getReferenceProps, dropdownKeyId, handleQuery, refs.domReference, state.activeIndex, state.query, state.selectedIndex, searchable, handleChange, listContentRef, onEnterPressed, handleRemove, setActiveIndex]);
|
|
162
170
|
var floatingProps = react.useMemo(function () {
|
|
163
171
|
return getFloatingProps({
|
|
164
|
-
|
|
172
|
+
// @ts-expect-error ignore
|
|
173
|
+
"data-select-dropdown": dropdownKeyId
|
|
165
174
|
});
|
|
166
|
-
}, [getFloatingProps]);
|
|
175
|
+
}, [dropdownKeyId, getFloatingProps]);
|
|
167
176
|
var makeItemProps = react.useCallback(function (item) {
|
|
168
177
|
var _state$value, _state$value$includes;
|
|
169
178
|
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;
|
|
170
179
|
return getItemProps({
|
|
180
|
+
// @ts-expect-error ignore
|
|
171
181
|
"data-selected": selected ? true : undefined,
|
|
172
182
|
onClick: function onClick() {
|
|
173
183
|
handleChange(item);
|
|
@@ -177,50 +187,73 @@ var Select = function Select(_ref) {
|
|
|
177
187
|
var displayValue = react.useMemo(function () {
|
|
178
188
|
if (utilities.isArray(state.value)) {
|
|
179
189
|
return state.value.map(function (item, index) {
|
|
180
|
-
var
|
|
181
|
-
return
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
var _ref, _renderer;
|
|
191
|
+
return (
|
|
192
|
+
/*#__PURE__*/
|
|
193
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
194
|
+
jsxRuntime.jsx(core.Chip, {
|
|
195
|
+
onRemove: function onRemove() {
|
|
196
|
+
return handleRemove(index);
|
|
197
|
+
},
|
|
198
|
+
children: (_ref = (_renderer = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer !== void 0 ? _renderer : item[labelProperty]) !== null && _ref !== void 0 ? _ref : item
|
|
199
|
+
}, index)
|
|
200
|
+
);
|
|
187
201
|
});
|
|
188
202
|
} else if (!utilities.isEmpty(state.value) && !state.query) {
|
|
189
|
-
var
|
|
203
|
+
var _ref2, _renderer2;
|
|
190
204
|
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
191
|
-
className: "self-center pointer-events-none select-none",
|
|
192
|
-
children: (
|
|
205
|
+
className: "self-center pointer-events-none select-none truncate leading-tight",
|
|
206
|
+
children: (_ref2 = (_renderer2 = renderer === null || renderer === void 0 ? void 0 : renderer(state.value)) !== null && _renderer2 !== void 0 ? _renderer2 : state.value[labelProperty]) !== null && _ref2 !== void 0 ? _ref2 : state.value
|
|
193
207
|
});
|
|
194
208
|
}
|
|
195
|
-
}, [state.value, state.query,
|
|
209
|
+
}, [state.value, state.query, renderer, labelProperty, handleRemove]);
|
|
196
210
|
var openDropdown = react.useCallback(function () {
|
|
197
211
|
var _refs$domReference$cu2;
|
|
198
212
|
setOpen(true);
|
|
199
213
|
(_refs$domReference$cu2 = refs.domReference.current) === null || _refs$domReference$cu2 === void 0 || (_refs$domReference$cu2 = _refs$domReference$cu2.querySelector("input")) === null || _refs$domReference$cu2 === void 0 || _refs$domReference$cu2.focus();
|
|
200
|
-
}, []);
|
|
214
|
+
}, [refs.domReference, setOpen]);
|
|
201
215
|
react.useLayoutEffect(function () {
|
|
202
|
-
state.open
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
216
|
+
if (state.open) {
|
|
217
|
+
var tmr = setTimeout(function () {
|
|
218
|
+
var _listRef$current$stat;
|
|
219
|
+
if (state.selectedIndex) (_listRef$current$stat = listRef.current[state.selectedIndex]) === null || _listRef$current$stat === void 0 || _listRef$current$stat.scrollIntoView({
|
|
220
|
+
block: "nearest"
|
|
221
|
+
});
|
|
222
|
+
}, 100);
|
|
223
|
+
return function () {
|
|
224
|
+
clearTimeout(tmr);
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
}, [listRef, state.open, state.selectedIndex]);
|
|
209
228
|
return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
210
|
-
showClear: !utilities.isEmpty(state.value),
|
|
229
|
+
showClear: allowClear && !utilities.isEmpty(state.value),
|
|
211
230
|
onClear: handleChange,
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
231
|
+
isOpen: state.open,
|
|
232
|
+
ref: function ref(el) {
|
|
233
|
+
return refs.setReference(el);
|
|
234
|
+
},
|
|
235
|
+
className: utilities.cn(state.open ? "z-99!" : "", "rounded-capped", state.open && (placement === "top" ? "rounded-t-none" : "rounded-b-none"))
|
|
236
|
+
}, getProps.getWrapperProps(props)), {}, {
|
|
237
|
+
actionButton: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
238
|
+
children: [!state.loading && !hideHandle && /*#__PURE__*/jsxRuntime.jsx("button", {
|
|
239
|
+
type: "button",
|
|
240
|
+
className: "size-fit leading-0 cursor-pointer",
|
|
241
|
+
onClick: function onClick() {
|
|
242
|
+
return !disabled && openDropdown();
|
|
243
|
+
},
|
|
244
|
+
children: /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
245
|
+
className: utilities.cn("flex-content py-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"),
|
|
246
|
+
icon: "icon-[mdi--chevron-down]"
|
|
247
|
+
})
|
|
248
|
+
}), state.loading && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
249
|
+
className: utilities.cn("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
|
|
250
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
251
|
+
})]
|
|
252
|
+
}),
|
|
220
253
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
|
|
221
254
|
role: "none",
|
|
222
255
|
"data-select-display": "true",
|
|
223
|
-
className:
|
|
256
|
+
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")
|
|
224
257
|
}, referenceProps), {}, {
|
|
225
258
|
onMouseUp: function onMouseUp(e) {
|
|
226
259
|
var _e$currentTarget$quer;
|
|
@@ -235,31 +268,26 @@ var Select = function Select(_ref) {
|
|
|
235
268
|
name: name,
|
|
236
269
|
size: 1,
|
|
237
270
|
ref: ref,
|
|
271
|
+
autoComplete: "off",
|
|
238
272
|
autoFocus: autoFocus,
|
|
239
|
-
className:
|
|
273
|
+
className: utilities.cn("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
274
|
placeholder: utilities.isEmpty(state.value) ? placeholder : "",
|
|
241
275
|
onChange: function onChange(evt) {
|
|
242
276
|
return handleQuery(evt.target.value);
|
|
243
277
|
}
|
|
244
278
|
})]
|
|
245
|
-
})), !state.loading && /*#__PURE__*/jsxRuntime.jsx(
|
|
246
|
-
|
|
247
|
-
onClick: function onClick() {
|
|
248
|
-
return !disabled && openDropdown();
|
|
249
|
-
},
|
|
250
|
-
icon: core.CoreIcons.chevronDown
|
|
251
|
-
}), state.loading && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
252
|
-
animate: "spin",
|
|
253
|
-
className: classNames("flex-content p-2 z-0 order-9 text-muted pointer-events-none"),
|
|
254
|
-
icon: core.CoreIcons.spinner
|
|
255
|
-
}), state.open && !state.loading && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingPortal, {
|
|
279
|
+
})), state.open && !state.loading && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingPortal, {
|
|
280
|
+
root: (_refs$domReference$cu3 = (_refs$domReference$cu4 = refs.domReference.current) === null || _refs$domReference$cu4 === void 0 ? void 0 : _refs$domReference$cu4.closest(".theme-base")) !== null && _refs$domReference$cu3 !== void 0 ? _refs$domReference$cu3 : undefined,
|
|
256
281
|
children: /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingFocusManager, {
|
|
257
282
|
context: context,
|
|
258
283
|
initialFocus: -1,
|
|
259
284
|
visuallyHiddenDismiss: true,
|
|
285
|
+
closeOnFocusOut: true,
|
|
260
286
|
children: /*#__PURE__*/jsxRuntime.jsx(Options.Options, _objectSpread(_objectSpread({
|
|
261
|
-
ref:
|
|
262
|
-
|
|
287
|
+
ref: function ref(el) {
|
|
288
|
+
return refs.setFloating(el);
|
|
289
|
+
},
|
|
290
|
+
className: utilities.cn("outline rounded-capped shadow-lg max-h-[40vh] z-(--z-popover)", state.open && (placement === "top" ? "rounded-b-none" : "rounded-t-none")),
|
|
263
291
|
style: _objectSpread({
|
|
264
292
|
width: (_refs$reference$curre = refs.reference.current) === null || _refs$reference$curre === void 0 ? void 0 : _refs$reference$curre.getBoundingClientRect().width
|
|
265
293
|
}, floatingStyles)
|
|
@@ -270,6 +298,8 @@ var Select = function Select(_ref) {
|
|
|
270
298
|
labelProperty: labelProperty,
|
|
271
299
|
itemRef: setItemRef,
|
|
272
300
|
itemProps: makeItemProps,
|
|
301
|
+
empty: emptyDisplay,
|
|
302
|
+
info: utilities.getByPath(state.activeItem, infoProperty !== null && infoProperty !== void 0 ? infoProperty : "info"),
|
|
273
303
|
children: function children(item, label) {
|
|
274
304
|
var _renderer3;
|
|
275
305
|
return (_renderer3 = renderer === null || renderer === void 0 ? void 0 : renderer(item)) !== null && _renderer3 !== void 0 ? _renderer3 : label;
|
|
@@ -278,6 +308,6 @@ var Select = function Select(_ref) {
|
|
|
278
308
|
})
|
|
279
309
|
})]
|
|
280
310
|
}));
|
|
281
|
-
}
|
|
311
|
+
}
|
|
282
312
|
|
|
283
313
|
exports.Select = Select;
|
|
@@ -25,17 +25,17 @@ var utilities = require('@react-fabric/utilities');
|
|
|
25
25
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
function makeOption(query) {
|
|
29
29
|
return query;
|
|
30
|
-
}
|
|
31
|
-
|
|
30
|
+
}
|
|
31
|
+
function getSelectedValue(value, emptyValue) {
|
|
32
32
|
var _ref, _value$valueProperty;
|
|
33
33
|
var valueProperty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
|
|
34
34
|
return utilities.isArray(value) ? value.map(function (val) {
|
|
35
35
|
var _val$valueProperty;
|
|
36
36
|
return (_val$valueProperty = val[valueProperty]) !== null && _val$valueProperty !== void 0 ? _val$valueProperty : val;
|
|
37
|
-
}) : (_ref = (_value$valueProperty = value === null || value === void 0 ? void 0 : value[valueProperty]) !== null && _value$valueProperty !== void 0 ? _value$valueProperty : value) !== null && _ref !== void 0 ? _ref : emptyValue;
|
|
38
|
-
}
|
|
37
|
+
}).filter(Boolean) : (_ref = (_value$valueProperty = value === null || value === void 0 ? void 0 : value[valueProperty]) !== null && _value$valueProperty !== void 0 ? _value$valueProperty : value) !== null && _ref !== void 0 ? _ref : emptyValue;
|
|
38
|
+
}
|
|
39
39
|
|
|
40
40
|
exports.getSelectedValue = getSelectedValue;
|
|
41
41
|
exports.makeOption = makeOption;
|