@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
package/dist/cjs/input/Search.js
CHANGED
|
@@ -1,91 +1,83 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
-
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
4
|
var core = require('@react-fabric/core');
|
|
7
5
|
var react = require('react');
|
|
8
6
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
9
7
|
var eventHandlers = require('../utils/eventHandlers.js');
|
|
10
8
|
require('@react-fabric/utilities');
|
|
9
|
+
var getProps = require('../utils/getProps.js');
|
|
11
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
11
|
|
|
13
|
-
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "allowClear", "searchOnChange", "decorateEnd", "decorateStart", "onSearch", "onChange", "onEnterPressed"];
|
|
14
12
|
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; }
|
|
15
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
|
|
13
|
+
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; }
|
|
14
|
+
/**
|
|
15
|
+
* Search input component with optional searching state and search handler.
|
|
16
|
+
* This component allows users to input search queries and trigger a search action.
|
|
17
|
+
* It supports features like searching on value change, showing a search handle,
|
|
18
|
+
* and handling search actions with a debounce mechanism.
|
|
19
|
+
*/
|
|
20
|
+
function Search(props) {
|
|
21
|
+
var value = props.value,
|
|
22
|
+
defaultValue = props.defaultValue,
|
|
23
|
+
onSearch = props.onSearch,
|
|
24
|
+
onChange = props.onChange,
|
|
25
|
+
onBlur = props.onBlur,
|
|
26
|
+
onFocus = props.onFocus,
|
|
27
|
+
hideHandle = props.hideHandle,
|
|
28
|
+
disabled = props.disabled,
|
|
29
|
+
readOnly = props.readOnly,
|
|
30
|
+
invalid = props.invalid,
|
|
31
|
+
searching = props.searching,
|
|
32
|
+
searchOnChange = props.searchOnChange,
|
|
33
|
+
placeholder = props.placeholder,
|
|
34
|
+
name = props.name,
|
|
35
|
+
autoFocus = props.autoFocus,
|
|
36
|
+
allowClear = props.allowClear,
|
|
37
|
+
ref = props.ref;
|
|
38
|
+
var id = react.useId();
|
|
39
|
+
var _useControlledValue = core.useControlledValue(value, defaultValue),
|
|
40
|
+
currentValue = _useControlledValue.currentValue,
|
|
41
|
+
updateValue = _useControlledValue.updateValue;
|
|
42
|
+
var valueRef = react.useRef("");
|
|
43
43
|
var handleSearch = core.useDebounce(function () {
|
|
44
|
-
return onSearch === null || onSearch === void 0 ? void 0 : onSearch(
|
|
44
|
+
return onSearch === null || onSearch === void 0 ? void 0 : onSearch(valueRef.current);
|
|
45
45
|
}, [onSearch], 250);
|
|
46
|
-
var handleEnterPressed =
|
|
47
|
-
return eventHandlers.handleEnter(handleSearch);
|
|
48
|
-
}, [handleSearch]);
|
|
49
|
-
react.useEffect(function () {
|
|
50
|
-
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
51
|
-
}, [deferred]);
|
|
46
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(handleSearch);
|
|
52
47
|
var handleChange = react.useCallback(function (e) {
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
48
|
+
var _e$target$value;
|
|
49
|
+
var value = (_e$target$value = e === null || e === void 0 ? void 0 : e.target.value) !== null && _e$target$value !== void 0 ? _e$target$value : defaultValue;
|
|
50
|
+
valueRef.current = value !== null && value !== void 0 ? value : "";
|
|
51
|
+
updateValue(value);
|
|
52
|
+
onChange === null || onChange === void 0 || onChange(value);
|
|
57
53
|
|
|
58
|
-
// value was cleared so force fire onSearch
|
|
59
|
-
if (searchOnChange) {
|
|
54
|
+
// when e is undefined value was cleared so force fire onSearch
|
|
55
|
+
if (!e || searchOnChange) {
|
|
60
56
|
handleSearch();
|
|
61
57
|
}
|
|
62
|
-
}, [onChange, searchOnChange, handleSearch]);
|
|
58
|
+
}, [defaultValue, updateValue, onChange, searchOnChange, handleSearch]);
|
|
63
59
|
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
64
|
-
|
|
60
|
+
id: id,
|
|
61
|
+
showClear: allowClear && (currentValue !== null && currentValue !== void 0 ? currentValue : "") !== (defaultValue !== null && defaultValue !== void 0 ? defaultValue : "") && !disabled && !readOnly,
|
|
65
62
|
onClear: handleChange,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
required: required,
|
|
71
|
-
decorateStart: decorateStart,
|
|
72
|
-
decorateEnd: /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
73
|
-
children: [decorateEnd, searching && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
63
|
+
hasStepper: true
|
|
64
|
+
}, getProps.getWrapperProps(props)), {}, {
|
|
65
|
+
actionButton: /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
66
|
+
children: [searching && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
74
67
|
className: "p-2",
|
|
75
|
-
icon:
|
|
76
|
-
|
|
77
|
-
}), !searching && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
|
|
68
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
69
|
+
}), !searching && !hideHandle && /*#__PURE__*/jsxRuntime.jsx(core.Button, {
|
|
78
70
|
tabIndex: -1,
|
|
79
71
|
variant: "link",
|
|
80
72
|
"aria-label": "search",
|
|
81
|
-
disabled: !
|
|
82
|
-
icon:
|
|
73
|
+
disabled: !currentValue,
|
|
74
|
+
icon: "icon-[mdi--magnify]",
|
|
83
75
|
onClick: handleSearch
|
|
84
76
|
})]
|
|
85
|
-
})
|
|
86
|
-
}, rest), {}, {
|
|
77
|
+
}),
|
|
87
78
|
children: /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
88
|
-
|
|
79
|
+
id: id,
|
|
80
|
+
className: "appearance-none bg-transparent py-1 px-4 not-first:ps-2 not-last:pe-2 flex-1 border-none outline-none ring-0 peer",
|
|
89
81
|
"aria-invalid": invalid,
|
|
90
82
|
"aria-disabled": disabled,
|
|
91
83
|
"aria-readonly": readOnly,
|
|
@@ -99,11 +91,13 @@ var Search = function Search(_ref) {
|
|
|
99
91
|
ref: ref,
|
|
100
92
|
autoComplete: "off",
|
|
101
93
|
autoFocus: autoFocus,
|
|
102
|
-
value:
|
|
94
|
+
value: currentValue !== null && currentValue !== void 0 ? currentValue : "",
|
|
95
|
+
onBlur: onBlur,
|
|
96
|
+
onFocus: onFocus,
|
|
103
97
|
onChange: handleChange,
|
|
104
98
|
onKeyDown: handleEnterPressed
|
|
105
99
|
})
|
|
106
100
|
}));
|
|
107
|
-
}
|
|
101
|
+
}
|
|
108
102
|
|
|
109
103
|
exports.Search = Search;
|
package/dist/cjs/input/Slider.js
CHANGED
|
@@ -2,51 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
-
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
5
|
var utilities = require('@react-fabric/utilities');
|
|
7
|
-
var classNames = require('classnames');
|
|
8
6
|
var react = require('react');
|
|
9
7
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
10
8
|
var index = require('../ranger/index.js');
|
|
9
|
+
require('@floating-ui/react');
|
|
10
|
+
require('@react-fabric/core');
|
|
11
|
+
var getProps = require('../utils/getProps.js');
|
|
11
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
13
|
|
|
13
|
-
var _excluded = ["error", "name", "value", "step", "min", "max", "height", "color", "vertical", "showLabels", "showValue", "minLabel", "maxLabel", "ranges", "useInfinity", "format", "invalid", "autoFocus", "disabled", "readOnly", "onBlur", "onChange", "onEnterPressed", "onFocus", "onSlide"];
|
|
14
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; }
|
|
15
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
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
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Slider component for rendering a slider input with labels and value display.
|
|
18
|
+
* It supports vertical orientation, custom min/max labels, and step ranges.
|
|
19
|
+
* The component handles value changes, displays tooltips, and integrates with ranger for slider functionality.
|
|
20
|
+
* It also supports deferred value updates for smoother interactions.
|
|
18
21
|
*/
|
|
19
|
-
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
format =
|
|
40
|
-
|
|
41
|
-
_ref.autoFocus;
|
|
42
|
-
var disabled = _ref.disabled,
|
|
43
|
-
readOnly = _ref.readOnly;
|
|
44
|
-
_ref.onBlur;
|
|
45
|
-
var onChange = _ref.onChange;
|
|
46
|
-
_ref.onEnterPressed;
|
|
47
|
-
_ref.onFocus;
|
|
48
|
-
var onSlide = _ref.onSlide,
|
|
49
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
22
|
+
function Slider(props) {
|
|
23
|
+
var value = props.value,
|
|
24
|
+
showLabels = props.showLabels,
|
|
25
|
+
showValue = props.showValue,
|
|
26
|
+
onChange = props.onChange,
|
|
27
|
+
onSlide = props.onSlide,
|
|
28
|
+
ranges = props.ranges,
|
|
29
|
+
useInfinity = props.useInfinity,
|
|
30
|
+
invalid = props.invalid,
|
|
31
|
+
_props$step = props.step,
|
|
32
|
+
step = _props$step === void 0 ? 1 : _props$step,
|
|
33
|
+
_props$min = props.min,
|
|
34
|
+
min = _props$min === void 0 ? 0 : _props$min,
|
|
35
|
+
_props$max = props.max,
|
|
36
|
+
max = _props$max === void 0 ? 100 : _props$max,
|
|
37
|
+
_props$height = props.height,
|
|
38
|
+
height = _props$height === void 0 ? 192 : _props$height,
|
|
39
|
+
vertical = props.vertical,
|
|
40
|
+
minLabel = props.minLabel,
|
|
41
|
+
maxLabel = props.maxLabel,
|
|
42
|
+
format = props.format,
|
|
43
|
+
color = props.color;
|
|
50
44
|
var _useState = react.useState(0),
|
|
51
45
|
_useState2 = _slicedToArray(_useState, 2),
|
|
52
46
|
actualValue = _useState2[0],
|
|
@@ -65,15 +59,17 @@ var Slider = function Slider(_ref) {
|
|
|
65
59
|
return (_ranges$slice$ = ranges === null || ranges === void 0 ? void 0 : ranges.slice(-1)[0]) !== null && _ranges$slice$ !== void 0 ? _ranges$slice$ : max;
|
|
66
60
|
}, [max, ranges]);
|
|
67
61
|
react.useEffect(function () {
|
|
62
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
68
63
|
setActualValue(useInfinity && deferred === Infinity ? max : deferred !== null && deferred !== void 0 ? deferred : min);
|
|
69
64
|
}, [deferred, min, max, useInfinity]);
|
|
70
65
|
react.useEffect(function () {
|
|
66
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
71
67
|
setDisplayValue(!!showValue);
|
|
72
68
|
}, [showValue]);
|
|
73
69
|
var handleChange = react.useCallback(function (value) {
|
|
74
70
|
var val = useInfinity && value === max ? Infinity : value;
|
|
75
71
|
setActualValue(val !== null && val !== void 0 ? val : 0);
|
|
76
|
-
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val :
|
|
72
|
+
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
|
|
77
73
|
}, [onChange, max, useInfinity]);
|
|
78
74
|
var minDisplay = react.useMemo(function () {
|
|
79
75
|
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
@@ -108,56 +104,51 @@ var Slider = function Slider(_ref) {
|
|
|
108
104
|
return handleChange(values[0]);
|
|
109
105
|
}
|
|
110
106
|
});
|
|
111
|
-
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({},
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
invalid: invalid,
|
|
115
|
-
isDisabled: disabled,
|
|
116
|
-
isReadOnly: readOnly,
|
|
117
|
-
canClear: !!actualValue,
|
|
107
|
+
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({}, getProps.getWrapperProps(props)), {}, {
|
|
108
|
+
borderless: true,
|
|
109
|
+
focusRing: true,
|
|
118
110
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
119
|
-
className:
|
|
111
|
+
className: utilities.cn("flex-1 order-3 flex items-center select-none relative z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
|
|
120
112
|
"data-vertical": !!vertical,
|
|
121
113
|
style: invalid ? undefined : {
|
|
122
114
|
color: color
|
|
123
115
|
},
|
|
124
116
|
children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
125
117
|
ref: rangerInstance.trackElRef,
|
|
126
|
-
className:
|
|
118
|
+
className: utilities.cn("relative flex items-center", vertical ? "my-2 w-8" : "flex-1 mx-2 h-8"),
|
|
127
119
|
style: {
|
|
128
120
|
height: vertical ? height : undefined
|
|
129
121
|
},
|
|
130
|
-
children: [rangerInstance.ticks.map(function (
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
styles = _ref2.styles;
|
|
122
|
+
children: [rangerInstance.ticks.map(function (_ref) {
|
|
123
|
+
var key = _ref.key,
|
|
124
|
+
styles = _ref.styles;
|
|
134
125
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
135
|
-
className:
|
|
126
|
+
className: utilities.cn("absolute inline-block h-1 w-1 rounded-sm bg-invert opacity-30 leading-0 z-1", vertical && "left-1/2 -ml-0.5"),
|
|
136
127
|
style: styles
|
|
137
128
|
}, key);
|
|
138
|
-
}), rangerInstance.segments.map(function (
|
|
139
|
-
var key =
|
|
140
|
-
styles =
|
|
141
|
-
active =
|
|
129
|
+
}), rangerInstance.segments.map(function (_ref2) {
|
|
130
|
+
var key = _ref2.key,
|
|
131
|
+
styles = _ref2.styles,
|
|
132
|
+
active = _ref2.active;
|
|
142
133
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
143
|
-
className:
|
|
134
|
+
className: utilities.cn("absolute", active ? "bg-current z-1 opacity-90" : "bg-invert opacity-5 z-0", vertical ? "-bottom-1 left-1/2 -translate-x-1/2" : "top-1/2 -translate-y-1/2", !vertical && (active ? "h-1" : "h-0.5"), vertical && (active ? "w-1" : "w-0.5")),
|
|
144
135
|
style: styles
|
|
145
136
|
}, key);
|
|
146
|
-
}), rangerInstance.handles.map(function (
|
|
147
|
-
var key =
|
|
148
|
-
value =
|
|
149
|
-
props =
|
|
150
|
-
styles =
|
|
151
|
-
percentage =
|
|
152
|
-
valueStyles =
|
|
137
|
+
}), rangerInstance.handles.map(function (_ref3) {
|
|
138
|
+
var key = _ref3.key,
|
|
139
|
+
value = _ref3.value,
|
|
140
|
+
props = _ref3.props,
|
|
141
|
+
styles = _ref3.styles,
|
|
142
|
+
percentage = _ref3.percentage,
|
|
143
|
+
valueStyles = _ref3.valueStyles;
|
|
153
144
|
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
154
145
|
children: [/*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
|
|
155
146
|
type: "button",
|
|
156
|
-
className:
|
|
147
|
+
className: utilities.cn("bg-current cursor-pointer appearance-none h-3 w-3 rounded-full z-3 absolute", "focus:ring-2 focus:ring-offset-2", vertical && "left-1/2 -ml-1.5")
|
|
157
148
|
}, props), {}, {
|
|
158
149
|
style: styles
|
|
159
150
|
})), displayValue && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
160
|
-
className:
|
|
151
|
+
className: utilities.cn("bg-invert text-invert py-px px-2 text-xs absolute rounded z-5 whitespace-nowrap pointer-events-none", "before:absolute before:h-1.5 before:w-1.5 before:z-[-1] before:bg-invert before:top-1/2 before:-translate-y-1/2 before:rotate-45", vertical ? "inset-e-0 ltr:translate-x-full rtl:-translate-x-full translate-y-2 ltr:before:-translate-x-0.5 rtl:before:translate-x-0.5 before:inset-s-0" : "top-1/2 -translate-y-1/2", !vertical && (percentage > 50 ? "-ms-3 ltr:-translate-x-full rtl:translate-x-full ltr:before:translate-x-0.5 rtl:before:-translate-x-0.5 before:inset-e-0" : "ms-3 ltr:before:-translate-x-0.5 rtl:before:translate-x-0.5 before:inset-s-0")),
|
|
161
152
|
"data-align": percentage > 50 ? "start" : "end",
|
|
162
153
|
style: valueStyles,
|
|
163
154
|
children: value === Infinity || useInfinity && value === max ? maxLabel !== null && maxLabel !== void 0 ? maxLabel : "∞" : utilities.Format.number(value, format)
|
|
@@ -167,6 +158,6 @@ var Slider = function Slider(_ref) {
|
|
|
167
158
|
}), showLabels && (vertical ? minDisplay : maxDisplay)]
|
|
168
159
|
})
|
|
169
160
|
}));
|
|
170
|
-
}
|
|
161
|
+
}
|
|
171
162
|
|
|
172
163
|
exports.Slider = Slider;
|
package/dist/cjs/input/Switch.js
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
4
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
|
-
var
|
|
5
|
+
var core = require('@react-fabric/core');
|
|
6
|
+
var utilities = require('@react-fabric/utilities');
|
|
7
7
|
var react = require('react');
|
|
8
8
|
var ErrorIcon = require('../internal/ErrorIcon.js');
|
|
9
|
-
require('@
|
|
9
|
+
require('@floating-ui/react');
|
|
10
10
|
var getColor = require('../utils/getColor.js');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
|
|
13
13
|
var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "onLabel", "offLabel", "onLabelColor", "offLabelColor", "defaultColor", "onChange"];
|
|
14
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; }
|
|
15
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
16
|
-
|
|
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
|
+
* Switch input component with custom labels and colors.
|
|
18
|
+
* This component renders a switch input with optional labels for the "on" and "off" states,
|
|
19
|
+
* and allows for custom colors for the switch background and labels.
|
|
20
|
+
* It supports disabled and invalid states, and handles change events.
|
|
21
|
+
*/
|
|
22
|
+
function Switch(_ref) {
|
|
17
23
|
var ref = _ref.ref,
|
|
18
24
|
label = _ref.label,
|
|
19
25
|
checked = _ref.checked,
|
|
@@ -21,56 +27,52 @@ var Switch = function Switch(_ref) {
|
|
|
21
27
|
disabled = _ref.disabled,
|
|
22
28
|
error = _ref.error,
|
|
23
29
|
width = _ref.width,
|
|
24
|
-
color = _ref.color
|
|
25
|
-
_ref.name
|
|
26
|
-
|
|
30
|
+
color = _ref.color,
|
|
31
|
+
name = _ref.name,
|
|
32
|
+
onLabel = _ref.onLabel,
|
|
27
33
|
offLabel = _ref.offLabel,
|
|
28
34
|
onLabelColor = _ref.onLabelColor,
|
|
29
35
|
offLabelColor = _ref.offLabelColor,
|
|
30
36
|
defaultColor = _ref.defaultColor,
|
|
31
37
|
onChange = _ref.onChange,
|
|
32
38
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
setActualValue = _useState2[1];
|
|
37
|
-
var deferred = react.useDeferredValue(!!checked);
|
|
38
|
-
react.useEffect(function () {
|
|
39
|
-
setActualValue(deferred);
|
|
40
|
-
}, [deferred]);
|
|
39
|
+
var _useControlledValue = core.useControlledValue(!!checked, false),
|
|
40
|
+
currentValue = _useControlledValue.currentValue,
|
|
41
|
+
updateValue = _useControlledValue.updateValue;
|
|
41
42
|
var handleChange = react.useCallback(function (e) {
|
|
42
43
|
var _e$target$checked, _e$target$checked2;
|
|
43
|
-
|
|
44
|
+
updateValue((_e$target$checked = e === null || e === void 0 ? void 0 : e.target.checked) !== null && _e$target$checked !== void 0 ? _e$target$checked : false);
|
|
44
45
|
onChange === null || onChange === void 0 || onChange((_e$target$checked2 = e === null || e === void 0 ? void 0 : e.target.checked) !== null && _e$target$checked2 !== void 0 ? _e$target$checked2 : false);
|
|
45
|
-
}, [onChange]);
|
|
46
|
+
}, [onChange, updateValue]);
|
|
46
47
|
return /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
47
|
-
className:
|
|
48
|
+
className: utilities.cn(invalid ? "ring-danger-500" : "ring-primary-500", disabled ? "opacity-50 cursor-not-allowed" : "opacity-85 hover:opacity-100 cursor-pointer", "inline-flex gap-1 py-1 items-center relative rounded ring-offset-2 has-focus-visible:ring-1"),
|
|
48
49
|
style: {
|
|
49
50
|
width: width
|
|
50
51
|
},
|
|
51
52
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
52
|
-
className:
|
|
53
|
+
className: utilities.cn(currentValue && getColor.getBgClass(color ? "".concat(color, "-500") : "primary-500"), !currentValue && (defaultColor ? getColor.getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative grid grid-cols-2 items-center h-[1.5em] min-w-[2.5em] rounded-full p-[0.25em] transition-colors duration-200 ease-in-out"),
|
|
53
54
|
style: {
|
|
54
|
-
backgroundColor:
|
|
55
|
+
backgroundColor: currentValue ? getColor.getColor(color) : getColor.getColor(defaultColor)
|
|
55
56
|
},
|
|
56
57
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", _objectSpread({
|
|
57
|
-
className:
|
|
58
|
+
className: utilities.cn("appearance-none absolute opacity-0 inset-0 bg-transparent border-none cursor-[inherit] outline-none ring-0"),
|
|
58
59
|
"aria-invalid": invalid,
|
|
59
60
|
"aria-disabled": disabled,
|
|
60
61
|
disabled: disabled,
|
|
61
62
|
"aria-errormessage": error,
|
|
62
63
|
type: "checkbox",
|
|
64
|
+
name: name,
|
|
63
65
|
ref: ref,
|
|
64
66
|
size: 1,
|
|
65
67
|
tabIndex: 0,
|
|
66
68
|
autoComplete: "off",
|
|
67
|
-
checked:
|
|
69
|
+
checked: !!currentValue,
|
|
68
70
|
onChange: handleChange
|
|
69
71
|
}, rest)), /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
70
72
|
"aria-hidden": "true",
|
|
71
|
-
className:
|
|
73
|
+
className: utilities.cn(!disabled && "shadow-sm", currentValue ? "translate-x-full" : "translate-x-0", "pointer-events-none inline-block h-[1em] inset-s-[0.25em] absolute rounded-full bg-white ring-0 transition duration-200 ease-in-out"),
|
|
72
74
|
style: {
|
|
73
|
-
width: "calc(50% - 0.
|
|
75
|
+
width: "calc(50% - 0.25em)"
|
|
74
76
|
}
|
|
75
77
|
}), (!!onLabel || !!offLabel) && /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
76
78
|
children: [/*#__PURE__*/jsxRuntime.jsx("span", {
|
|
@@ -91,10 +93,10 @@ var Switch = function Switch(_ref) {
|
|
|
91
93
|
invalid: invalid,
|
|
92
94
|
error: error
|
|
93
95
|
}), label && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
94
|
-
className: "flex-initial leading-
|
|
96
|
+
className: "flex-initial leading-tight truncate",
|
|
95
97
|
children: label
|
|
96
98
|
})]
|
|
97
99
|
});
|
|
98
|
-
}
|
|
100
|
+
}
|
|
99
101
|
|
|
100
102
|
exports.Switch = Switch;
|
|
@@ -2,73 +2,83 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
-
var
|
|
5
|
+
var core = require('@react-fabric/core');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
8
8
|
var eventHandlers = require('../utils/eventHandlers.js');
|
|
9
9
|
require('@react-fabric/utilities');
|
|
10
|
+
var getProps = require('../utils/getProps.js');
|
|
10
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
12
|
|
|
12
|
-
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "rows", "maxRows", "variableRows", "onChange", "onEnterPressed"];
|
|
13
13
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
14
|
+
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; }
|
|
15
|
+
/**
|
|
16
|
+
* Textarea component that allows users to input multi-line text.
|
|
17
|
+
* It supports features like variable row count, expandable behavior,
|
|
18
|
+
* and handling of focus, blur, and change events.
|
|
19
|
+
* This component is designed to be flexible and user-friendly,
|
|
20
|
+
* providing a clear interface for text input with optional validation and accessibility features.
|
|
21
|
+
*/
|
|
22
|
+
function Textarea(props) {
|
|
23
|
+
var value = props.value,
|
|
24
|
+
defaultValue = props.defaultValue,
|
|
25
|
+
onEnterPressed = props.onEnterPressed,
|
|
26
|
+
onChange = props.onChange,
|
|
27
|
+
onBlur = props.onBlur,
|
|
28
|
+
onFocus = props.onFocus,
|
|
29
|
+
disabled = props.disabled,
|
|
30
|
+
readOnly = props.readOnly,
|
|
31
|
+
invalid = props.invalid,
|
|
32
|
+
_props$rows = props.rows,
|
|
33
|
+
rows = _props$rows === void 0 ? 5 : _props$rows,
|
|
34
|
+
_props$maxRows = props.maxRows,
|
|
35
|
+
maxRows = _props$maxRows === void 0 ? 12 : _props$maxRows,
|
|
36
|
+
placeholder = props.placeholder,
|
|
37
|
+
name = props.name,
|
|
38
|
+
autoFocus = props.autoFocus,
|
|
39
|
+
expandable = props.expandable,
|
|
40
|
+
variableRows = props.variableRows,
|
|
41
|
+
allowClear = props.allowClear,
|
|
42
|
+
ref = props.ref;
|
|
43
|
+
var id = react.useId();
|
|
44
|
+
var _useControlledValue = core.useControlledValue(value, defaultValue),
|
|
45
|
+
currentValue = _useControlledValue.currentValue,
|
|
46
|
+
updateValue = _useControlledValue.updateValue;
|
|
47
|
+
var _useState = react.useState(function () {
|
|
48
|
+
return rows;
|
|
49
|
+
}),
|
|
34
50
|
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var _useState3 = react.useState(rows),
|
|
38
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
-
fixedRows = _useState4[0],
|
|
40
|
-
setFixedRows = _useState4[1];
|
|
41
|
-
var deferred = react.useDeferredValue(value);
|
|
51
|
+
fixedRows = _useState2[0],
|
|
52
|
+
setFixedRows = _useState2[1];
|
|
42
53
|
var wrapperRef = react.useRef(null);
|
|
43
|
-
react.useEffect(function () {
|
|
44
|
-
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
45
|
-
}, [deferred]);
|
|
46
54
|
var handleChange = react.useCallback(function (e) {
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
var _e$target$value;
|
|
56
|
+
var value = (_e$target$value = e === null || e === void 0 ? void 0 : e.target.value) !== null && _e$target$value !== void 0 ? _e$target$value : defaultValue;
|
|
57
|
+
updateValue(value);
|
|
58
|
+
onChange === null || onChange === void 0 || onChange(value);
|
|
59
|
+
}, [defaultValue, updateValue, onChange]);
|
|
51
60
|
react.useEffect(function () {
|
|
52
61
|
if (variableRows) {
|
|
53
|
-
var
|
|
54
|
-
var lines = (
|
|
62
|
+
var _currentValue$split$l;
|
|
63
|
+
var lines = (_currentValue$split$l = currentValue === null || currentValue === void 0 ? void 0 : currentValue.split("\n").length) !== null && _currentValue$split$l !== void 0 ? _currentValue$split$l : 1;
|
|
64
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
55
65
|
setFixedRows(Math.max(rows, Math.min(maxRows, lines)));
|
|
56
|
-
} else {
|
|
57
|
-
setFixedRows(rows);
|
|
58
66
|
}
|
|
59
|
-
}, [
|
|
67
|
+
}, [currentValue, variableRows, rows, maxRows]);
|
|
68
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed, {
|
|
69
|
+
preventDefault: !!onEnterPressed
|
|
70
|
+
});
|
|
60
71
|
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
61
|
-
|
|
72
|
+
id: id,
|
|
73
|
+
textarea: true,
|
|
74
|
+
textareaExpandable: expandable,
|
|
75
|
+
showClear: allowClear && (currentValue !== null && currentValue !== void 0 ? currentValue : "") !== (defaultValue !== null && defaultValue !== void 0 ? defaultValue : "") && !disabled && !readOnly,
|
|
62
76
|
onClear: handleChange,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
disabled: disabled,
|
|
66
|
-
required: required,
|
|
67
|
-
wrapperRef: wrapperRef,
|
|
68
|
-
textarea: true
|
|
69
|
-
}, rest), {}, {
|
|
77
|
+
ref: wrapperRef
|
|
78
|
+
}, getProps.getWrapperProps(props)), {}, {
|
|
70
79
|
children: /*#__PURE__*/jsxRuntime.jsx("textarea", {
|
|
71
|
-
|
|
80
|
+
id: id,
|
|
81
|
+
className: "appearance-none self-stretch bg-transparent py-1 px-4 not-first:ps-2 not-last:pe-2 flex-1 border-none outline-none ring-0 min-h-12 resize-none",
|
|
72
82
|
"aria-invalid": invalid,
|
|
73
83
|
"aria-disabled": disabled,
|
|
74
84
|
"aria-readonly": readOnly,
|
|
@@ -81,11 +91,13 @@ var Textarea = function Textarea(_ref) {
|
|
|
81
91
|
ref: ref,
|
|
82
92
|
autoComplete: "off",
|
|
83
93
|
autoFocus: autoFocus,
|
|
84
|
-
value:
|
|
94
|
+
value: currentValue !== null && currentValue !== void 0 ? currentValue : "",
|
|
95
|
+
onBlur: onBlur,
|
|
96
|
+
onFocus: onFocus,
|
|
85
97
|
onChange: handleChange,
|
|
86
|
-
onKeyDown:
|
|
98
|
+
onKeyDown: handleEnterPressed
|
|
87
99
|
})
|
|
88
100
|
}));
|
|
89
|
-
}
|
|
101
|
+
}
|
|
90
102
|
|
|
91
103
|
exports.Textarea = Textarea;
|