@react-fabric/form 1.0.0-beta.6 → 1.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/input/ArrayInput.module.css → css/_arrayInput.css} +8 -8
- package/css/_colorPicker.css +65 -0
- package/{src/internal/Field.module.css → css/_field.css} +66 -30
- package/{src/input/File.module.css → css/_file.css} +21 -6
- package/css/styles.css +27 -0
- package/dist/cjs/builder/FileField.js +40 -28
- package/dist/cjs/builder/FormField.js +50 -34
- package/dist/cjs/builder/SchemaEditor.js +72 -0
- package/dist/cjs/builder/components/AddSchemaFields.js +63 -0
- package/dist/cjs/builder/components/SchemaArrayForm.js +145 -0
- package/dist/cjs/builder/components/SchemaField.js +414 -0
- package/dist/cjs/form/Controller.js +46 -1
- package/dist/cjs/form/Form.js +71 -13
- package/dist/cjs/hooks/useFileUploader.js +16 -0
- package/dist/cjs/hooks/useFormBuilder.js +67 -18
- package/dist/cjs/i18n/ar.json.js +5 -4
- package/dist/cjs/i18n/en.json.js +5 -5
- package/dist/cjs/index.js +12 -2
- package/dist/cjs/input/ArrayInput.js +128 -38
- package/dist/cjs/input/AvatarInput.js +43 -23
- package/dist/cjs/input/Checkbox.js +18 -8
- package/dist/cjs/input/ColorInput.js +114 -59
- package/dist/cjs/input/ColorPicker.js +60 -76
- package/dist/cjs/input/DateInput.js +197 -0
- package/dist/cjs/input/Field.js +10 -4
- package/dist/cjs/input/File.js +15 -8
- package/dist/cjs/input/Hidden.js +13 -2
- package/dist/cjs/input/Input.js +24 -10
- package/dist/cjs/input/Number.js +22 -10
- package/dist/cjs/input/Password.js +23 -13
- package/dist/cjs/input/Radio.js +14 -5
- package/dist/cjs/input/RadioGroup.js +10 -1
- package/dist/cjs/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/cjs/input/Search.js +32 -22
- package/dist/cjs/input/Slider.js +12 -6
- package/dist/cjs/input/Switch.js +20 -9
- package/dist/cjs/input/Textarea.js +29 -8
- package/dist/cjs/internal/ErrorIcon.js +2 -2
- package/dist/cjs/internal/FieldWrapper.js +11 -4
- package/dist/cjs/internal/InputWrapper.js +29 -22
- package/dist/cjs/select/AutoComplete.js +22 -13
- package/dist/cjs/select/DualList.js +34 -12
- package/dist/cjs/select/List.js +49 -21
- package/dist/cjs/select/Options.js +49 -42
- package/dist/cjs/select/Select.js +21 -10
- package/dist/cjs/select/useSelect.js +22 -11
- package/dist/cjs/types/schema.js +43 -0
- package/dist/cjs/utils/eventHandlers.js +15 -5
- package/dist/esm/builder/FileField.js +42 -30
- package/dist/esm/builder/FormField.js +50 -34
- package/dist/esm/builder/SchemaEditor.js +72 -0
- package/dist/esm/builder/components/AddSchemaFields.js +63 -0
- package/dist/esm/builder/components/SchemaArrayForm.js +145 -0
- package/dist/esm/builder/components/SchemaField.js +414 -0
- package/dist/esm/form/Controller.js +46 -1
- package/dist/esm/form/Form.js +73 -16
- package/dist/esm/hooks/useFileUploader.js +16 -0
- package/dist/esm/hooks/useFormBuilder.js +65 -16
- package/dist/esm/i18n/ar.json.js +5 -4
- package/dist/esm/i18n/en.json.js +5 -5
- package/dist/esm/index.js +6 -2
- package/dist/esm/input/ArrayInput.js +128 -38
- package/dist/esm/input/AvatarInput.js +43 -23
- package/dist/esm/input/Checkbox.js +19 -9
- package/dist/esm/input/ColorInput.js +116 -61
- package/dist/esm/input/ColorPicker.js +60 -76
- package/dist/esm/input/DateInput.js +197 -0
- package/dist/esm/input/Field.js +11 -5
- package/dist/esm/input/File.js +18 -11
- package/dist/esm/input/Hidden.js +13 -2
- package/dist/esm/input/Input.js +26 -12
- package/dist/esm/input/Number.js +24 -12
- package/dist/esm/input/Password.js +26 -16
- package/dist/esm/input/Radio.js +15 -6
- package/dist/esm/input/RadioGroup.js +11 -2
- package/dist/esm/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/esm/input/Search.js +35 -25
- package/dist/esm/input/Slider.js +12 -6
- package/dist/esm/input/Switch.js +20 -9
- package/dist/esm/input/Textarea.js +30 -9
- package/dist/esm/internal/ErrorIcon.js +3 -3
- package/dist/esm/internal/FieldWrapper.js +11 -4
- package/dist/esm/internal/InputWrapper.js +30 -23
- package/dist/esm/select/AutoComplete.js +23 -14
- package/dist/esm/select/DualList.js +35 -13
- package/dist/esm/select/List.js +50 -22
- package/dist/esm/select/Options.js +49 -42
- package/dist/esm/select/Select.js +22 -11
- package/dist/esm/select/useSelect.js +23 -12
- package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
- package/dist/esm/utils/eventHandlers.js +15 -5
- package/dist/types/builder/FileField.d.ts +4 -2
- package/dist/types/builder/FormField.d.ts +3 -1
- package/dist/types/builder/SchemaEditor.d.ts +9 -0
- package/dist/types/builder/components/AddSchemaFields.d.ts +2 -0
- package/dist/types/builder/components/SchemaArrayForm.d.ts +2 -0
- package/dist/types/builder/components/SchemaField.d.ts +10 -0
- package/dist/types/form/Controller.d.ts +47 -2
- package/dist/types/form/Form.d.ts +49 -6
- package/dist/types/hooks/useFileUploader.d.ts +16 -0
- package/dist/types/hooks/useFormBuilder.d.ts +38 -1
- package/dist/types/index.d.ts +6 -3
- package/dist/types/input/ArrayInput.d.ts +69 -12
- package/dist/types/input/AvatarInput.d.ts +23 -3
- package/dist/types/input/Checkbox.d.ts +13 -4
- package/dist/types/input/ColorInput.d.ts +15 -2
- package/dist/types/input/ColorPicker.d.ts +11 -1
- package/dist/types/input/DateInput.d.ts +28 -0
- package/dist/types/input/Field.d.ts +5 -1
- package/dist/types/input/File.d.ts +9 -0
- package/dist/types/input/Hidden.d.ts +13 -1
- package/dist/types/input/Input.d.ts +9 -1
- package/dist/types/input/Number.d.ts +9 -1
- package/dist/types/input/Password.d.ts +7 -1
- package/dist/types/input/Radio.d.ts +9 -1
- package/dist/types/input/RadioGroup.d.ts +8 -1
- package/dist/types/input/RangeSlider.d.ts +67 -0
- package/dist/types/input/Search.d.ts +14 -1
- package/dist/types/input/Slider.d.ts +8 -2
- package/dist/types/input/Switch.d.ts +10 -2
- package/dist/types/input/Textarea.d.ts +15 -1
- package/dist/types/internal/FieldWrapper.d.ts +1 -1
- package/dist/types/internal/InputWrapper.d.ts +1 -1
- package/dist/types/ranger/index.d.ts +2 -2
- package/dist/types/select/AutoComplete.d.ts +8 -1
- package/dist/types/select/DualList.d.ts +21 -7
- package/dist/types/select/List.d.ts +9 -1
- package/dist/types/select/Options.d.ts +4 -3
- package/dist/types/select/Select.d.ts +9 -1
- package/dist/types/select/useSelect.d.ts +10 -6
- package/dist/types/types/index.d.ts +38 -10
- package/dist/types/types/schema.d.ts +78 -33
- package/dist/types/utils/eventHandlers.d.ts +2 -2
- package/package.json +22 -20
- package/src/builder/FileField.tsx +56 -30
- package/src/builder/FormField.tsx +52 -32
- package/src/builder/SchemaEditor.tsx +79 -0
- package/src/builder/components/AddSchemaFields.tsx +75 -0
- package/src/builder/components/SchemaArrayForm.tsx +155 -0
- package/src/builder/components/SchemaField.tsx +435 -0
- package/src/form/Controller.tsx +48 -3
- package/src/form/Form.tsx +84 -13
- package/src/hooks/useFileUploader.ts +16 -0
- package/src/hooks/useFormBuilder.tsx +70 -19
- package/src/i18n/ar.json +5 -4
- package/src/i18n/en.json +5 -5
- package/src/index.ts +12 -3
- package/src/input/ArrayInput.tsx +195 -66
- package/src/input/AvatarInput.tsx +66 -18
- package/src/input/Checkbox.tsx +22 -9
- package/src/input/ColorInput.tsx +128 -72
- package/src/input/ColorPicker.tsx +54 -72
- package/src/input/DateInput.tsx +260 -0
- package/src/input/Field.tsx +15 -11
- package/src/input/File.tsx +18 -16
- package/src/input/Hidden.tsx +17 -2
- package/src/input/Input.tsx +27 -13
- package/src/input/Number.tsx +22 -13
- package/src/input/Password.tsx +28 -18
- package/src/input/Radio.tsx +15 -6
- package/src/input/RadioGroup.tsx +12 -3
- package/src/input/{Range.tsx → RangeSlider.tsx} +17 -9
- package/src/input/Search.tsx +36 -25
- package/src/input/Slider.tsx +20 -11
- package/src/input/Switch.tsx +17 -6
- package/src/input/Textarea.tsx +34 -9
- package/src/internal/ErrorIcon.tsx +3 -3
- package/src/internal/FieldWrapper.tsx +8 -4
- package/src/internal/InputWrapper.tsx +56 -30
- package/src/select/AutoComplete.tsx +16 -6
- package/src/select/DualList.tsx +40 -22
- package/src/select/List.tsx +52 -8
- package/src/select/Options.tsx +50 -46
- package/src/select/Select.tsx +29 -10
- package/src/select/useSelect.tsx +26 -9
- package/src/types/index.ts +42 -10
- package/src/types/schema.ts +96 -41
- package/src/utils/eventHandlers.ts +14 -4
- package/dist/cjs/input/ArrayInput.module.css +0 -1
- package/dist/cjs/input/ColorPicker.module.css +0 -1
- package/dist/cjs/input/File.module.css +0 -1
- package/dist/cjs/internal/Field.module.css +0 -1
- package/dist/esm/input/ArrayInput.module.css +0 -1
- package/dist/esm/input/ColorPicker.module.css +0 -1
- package/dist/esm/input/File.module.css +0 -1
- package/dist/esm/internal/Field.module.css +0 -1
- package/dist/types/input/Range.d.ts +0 -59
package/dist/esm/input/Search.js
CHANGED
|
@@ -3,16 +3,25 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
5
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
6
|
-
import { useDebounce, Icon,
|
|
7
|
-
import { useState, useDeferredValue, useRef,
|
|
6
|
+
import { useDebounce, Icon, Button } from '@react-fabric/core';
|
|
7
|
+
import { useState, useDeferredValue, useRef, useEffect, useCallback, Fragment } from 'react';
|
|
8
8
|
import { InputWrapper } from '../internal/InputWrapper.js';
|
|
9
|
-
import {
|
|
9
|
+
import { useHandleEnter } from '../utils/eventHandlers.js';
|
|
10
10
|
import '@react-fabric/utilities';
|
|
11
11
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
12
12
|
|
|
13
|
-
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "autoFocus", "allowClear", "searchOnChange", "
|
|
13
|
+
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "searching", "placeholder", "defaultValue", "autoFocus", "hideHandle", "allowClear", "searchOnChange", "onBlur", "onFocus", "onSearch", "onChange", "onEnterPressed"];
|
|
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
15
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
/**
|
|
17
|
+
* Search input component with optional searching state and search handler.
|
|
18
|
+
* This component allows users to input search queries and trigger a search action.
|
|
19
|
+
* It supports features like searching on value change, showing a search handle,
|
|
20
|
+
* and handling search actions with a debounce mechanism.
|
|
21
|
+
*
|
|
22
|
+
* @param {SearchProps} props - The properties for the Search component.
|
|
23
|
+
* @returns {JSX.Element} The rendered Search input component.
|
|
24
|
+
*/
|
|
16
25
|
var Search = function Search(_ref) {
|
|
17
26
|
var ref = _ref.ref,
|
|
18
27
|
value = _ref.value,
|
|
@@ -23,13 +32,15 @@ var Search = function Search(_ref) {
|
|
|
23
32
|
required = _ref.required,
|
|
24
33
|
searching = _ref.searching,
|
|
25
34
|
placeholder = _ref.placeholder,
|
|
35
|
+
defaultValue = _ref.defaultValue,
|
|
26
36
|
autoFocus = _ref.autoFocus,
|
|
37
|
+
hideHandle = _ref.hideHandle,
|
|
27
38
|
_ref$allowClear = _ref.allowClear,
|
|
28
39
|
allowClear = _ref$allowClear === void 0 ? true : _ref$allowClear,
|
|
29
40
|
_ref$searchOnChange = _ref.searchOnChange,
|
|
30
|
-
searchOnChange = _ref$searchOnChange === void 0 ?
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
searchOnChange = _ref$searchOnChange === void 0 ? false : _ref$searchOnChange,
|
|
42
|
+
onBlur = _ref.onBlur,
|
|
43
|
+
onFocus = _ref.onFocus,
|
|
33
44
|
onSearch = _ref.onSearch,
|
|
34
45
|
onChange = _ref.onChange;
|
|
35
46
|
_ref.onEnterPressed;
|
|
@@ -38,54 +49,51 @@ var Search = function Search(_ref) {
|
|
|
38
49
|
_useState2 = _slicedToArray(_useState, 2),
|
|
39
50
|
actualValue = _useState2[0],
|
|
40
51
|
setActualValue = _useState2[1];
|
|
41
|
-
var deferred = useDeferredValue(value);
|
|
52
|
+
var deferred = useDeferredValue(value !== null && value !== void 0 ? value : defaultValue);
|
|
42
53
|
var refValue = useRef("");
|
|
43
54
|
var handleSearch = useDebounce(function () {
|
|
44
55
|
return onSearch === null || onSearch === void 0 ? void 0 : onSearch(refValue.current);
|
|
45
56
|
}, [onSearch], 250);
|
|
46
|
-
var handleEnterPressed =
|
|
47
|
-
return handleEnter(handleSearch);
|
|
48
|
-
}, [handleSearch]);
|
|
57
|
+
var handleEnterPressed = useHandleEnter(handleSearch);
|
|
49
58
|
useEffect(function () {
|
|
50
59
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
51
60
|
}, [deferred]);
|
|
52
61
|
var handleChange = useCallback(function (e) {
|
|
53
|
-
var
|
|
62
|
+
var _e$target$value;
|
|
63
|
+
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;
|
|
54
64
|
refValue.current = value !== null && value !== void 0 ? value : "";
|
|
55
65
|
setActualValue(value !== null && value !== void 0 ? value : "");
|
|
56
|
-
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value :
|
|
66
|
+
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
|
|
57
67
|
|
|
58
|
-
// value was cleared so force fire onSearch
|
|
59
|
-
if (searchOnChange) {
|
|
68
|
+
// when e is undefined value was cleared so force fire onSearch
|
|
69
|
+
if (!e || searchOnChange) {
|
|
60
70
|
handleSearch();
|
|
61
71
|
}
|
|
62
|
-
}, [onChange, searchOnChange, handleSearch]);
|
|
72
|
+
}, [onChange, searchOnChange, handleSearch, defaultValue]);
|
|
63
73
|
return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
|
|
64
|
-
showClear: !!actualValue,
|
|
74
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
65
75
|
onClear: handleChange,
|
|
66
76
|
allowClear: allowClear,
|
|
67
77
|
invalid: invalid,
|
|
68
78
|
readOnly: readOnly,
|
|
69
79
|
disabled: disabled,
|
|
70
80
|
required: required,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children: [decorateEnd, searching && /*#__PURE__*/jsx(Icon, {
|
|
81
|
+
actionButton: /*#__PURE__*/jsxs(Fragment, {
|
|
82
|
+
children: [searching && /*#__PURE__*/jsx(Icon, {
|
|
74
83
|
className: "p-2",
|
|
75
|
-
icon:
|
|
76
|
-
|
|
77
|
-
}), !searching && /*#__PURE__*/jsx(Button, {
|
|
84
|
+
icon: "icon-[svg-spinners--eclipse]"
|
|
85
|
+
}), !searching && !hideHandle && /*#__PURE__*/jsx(Button, {
|
|
78
86
|
tabIndex: -1,
|
|
79
87
|
variant: "link",
|
|
80
88
|
"aria-label": "search",
|
|
81
89
|
disabled: !actualValue,
|
|
82
|
-
icon:
|
|
90
|
+
icon: "icon-[mdi--magnify]",
|
|
83
91
|
onClick: handleSearch
|
|
84
92
|
})]
|
|
85
93
|
})
|
|
86
94
|
}, rest), {}, {
|
|
87
95
|
children: /*#__PURE__*/jsx("input", {
|
|
88
|
-
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
|
|
96
|
+
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
|
|
89
97
|
"aria-invalid": invalid,
|
|
90
98
|
"aria-disabled": disabled,
|
|
91
99
|
"aria-readonly": readOnly,
|
|
@@ -100,6 +108,8 @@ var Search = function Search(_ref) {
|
|
|
100
108
|
autoComplete: "off",
|
|
101
109
|
autoFocus: autoFocus,
|
|
102
110
|
value: actualValue,
|
|
111
|
+
onBlur: onBlur,
|
|
112
|
+
onFocus: onFocus,
|
|
103
113
|
onChange: handleChange,
|
|
104
114
|
onKeyDown: handleEnterPressed
|
|
105
115
|
})
|
package/dist/esm/input/Slider.js
CHANGED
|
@@ -14,7 +14,13 @@ var _excluded = ["error", "name", "value", "step", "min", "max", "height", "colo
|
|
|
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
15
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
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.
|
|
21
|
+
*
|
|
22
|
+
* @param {SliderProps} props - The properties for the Slider component.
|
|
23
|
+
* @returns {JSX.Element} The rendered Slider component.
|
|
18
24
|
*/
|
|
19
25
|
var Slider = function Slider(_ref) {
|
|
20
26
|
var error = _ref.error;
|
|
@@ -73,7 +79,7 @@ var Slider = function Slider(_ref) {
|
|
|
73
79
|
var handleChange = useCallback(function (value) {
|
|
74
80
|
var val = useInfinity && value === max ? Infinity : value;
|
|
75
81
|
setActualValue(val !== null && val !== void 0 ? val : 0);
|
|
76
|
-
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val :
|
|
82
|
+
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
|
|
77
83
|
}, [onChange, max, useInfinity]);
|
|
78
84
|
var minDisplay = useMemo(function () {
|
|
79
85
|
return /*#__PURE__*/jsx("span", {
|
|
@@ -116,14 +122,14 @@ var Slider = function Slider(_ref) {
|
|
|
116
122
|
isReadOnly: readOnly,
|
|
117
123
|
canClear: !!actualValue,
|
|
118
124
|
children: /*#__PURE__*/jsxs("div", {
|
|
119
|
-
className: classNames("flex-
|
|
125
|
+
className: classNames("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
126
|
"data-vertical": !!vertical,
|
|
121
127
|
style: invalid ? undefined : {
|
|
122
128
|
color: color
|
|
123
129
|
},
|
|
124
130
|
children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxs("div", {
|
|
125
131
|
ref: rangerInstance.trackElRef,
|
|
126
|
-
className: classNames("
|
|
132
|
+
className: classNames("relative flex items-center", vertical ? "my-2 w-8" : "flex-1 mx-2 h-8"),
|
|
127
133
|
style: {
|
|
128
134
|
height: vertical ? height : undefined
|
|
129
135
|
},
|
|
@@ -132,7 +138,7 @@ var Slider = function Slider(_ref) {
|
|
|
132
138
|
var key = _ref2.key,
|
|
133
139
|
styles = _ref2.styles;
|
|
134
140
|
return /*#__PURE__*/jsx("div", {
|
|
135
|
-
className: classNames("absolute inline-block h-1 w-1 rounded-sm bg-invert opacity-30 leading-
|
|
141
|
+
className: classNames("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
142
|
style: styles
|
|
137
143
|
}, key);
|
|
138
144
|
}), rangerInstance.segments.map(function (_ref3) {
|
|
@@ -157,7 +163,7 @@ var Slider = function Slider(_ref) {
|
|
|
157
163
|
}, props), {}, {
|
|
158
164
|
style: styles
|
|
159
165
|
})), displayValue && /*#__PURE__*/jsx("div", {
|
|
160
|
-
className: classNames("bg-invert text-invert py-px px-2 text-xs absolute rounded z-
|
|
166
|
+
className: classNames("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 ? "end-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:start-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:end-0" : "ms-3 ltr:before:-translate-x-0.5 rtl:before:translate-x-0.5 before:start-0")),
|
|
161
167
|
"data-align": percentage > 50 ? "start" : "end",
|
|
162
168
|
style: valueStyles,
|
|
163
169
|
children: value === Infinity || useInfinity && value === max ? maxLabel !== null && maxLabel !== void 0 ? maxLabel : "∞" : Format.number(value, format)
|
package/dist/esm/input/Switch.js
CHANGED
|
@@ -6,13 +6,23 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
|
|
|
6
6
|
import classNames from 'classnames';
|
|
7
7
|
import { useState, useDeferredValue, useEffect, useCallback, Fragment } from 'react';
|
|
8
8
|
import { ErrorIcon } from '../internal/ErrorIcon.js';
|
|
9
|
-
import '@
|
|
9
|
+
import '@floating-ui/react';
|
|
10
|
+
import '@react-fabric/core';
|
|
10
11
|
import { getBgClass, getColor, getColorClass } from '../utils/getColor.js';
|
|
11
12
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
12
13
|
|
|
13
|
-
var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "onLabel", "offLabel", "onLabelColor", "offLabelColor", "defaultColor", "onChange"];
|
|
14
|
+
var _excluded = ["ref", "label", "checked", "invalid", "disabled", "error", "width", "color", "name", "onLabel", "offLabel", "onLabelColor", "offLabelColor", "defaultColor", "required", "onChange"];
|
|
14
15
|
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
16
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
+
/**
|
|
18
|
+
* Switch input component with custom labels and colors.
|
|
19
|
+
* This component renders a switch input with optional labels for the "on" and "off" states,
|
|
20
|
+
* and allows for custom colors for the switch background and labels.
|
|
21
|
+
* It supports disabled and invalid states, and handles change events.
|
|
22
|
+
*
|
|
23
|
+
* @param {SwitchProps} props - The properties for the Switch component.
|
|
24
|
+
* @returns {JSX.Element} The rendered Switch input component.
|
|
25
|
+
*/
|
|
16
26
|
var Switch = function Switch(_ref) {
|
|
17
27
|
var ref = _ref.ref,
|
|
18
28
|
label = _ref.label,
|
|
@@ -27,8 +37,9 @@ var Switch = function Switch(_ref) {
|
|
|
27
37
|
offLabel = _ref.offLabel,
|
|
28
38
|
onLabelColor = _ref.onLabelColor,
|
|
29
39
|
offLabelColor = _ref.offLabelColor,
|
|
30
|
-
defaultColor = _ref.defaultColor
|
|
31
|
-
|
|
40
|
+
defaultColor = _ref.defaultColor;
|
|
41
|
+
_ref.required;
|
|
42
|
+
var onChange = _ref.onChange,
|
|
32
43
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
33
44
|
var _useState = useState(false),
|
|
34
45
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -44,12 +55,12 @@ var Switch = function Switch(_ref) {
|
|
|
44
55
|
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
56
|
}, [onChange]);
|
|
46
57
|
return /*#__PURE__*/jsxs("label", {
|
|
47
|
-
className: classNames(invalid ? "ring-danger-500" : "ring-primary-500", disabled ? "opacity-50 cursor-not-allowed" : "hover:opacity-100 cursor-pointer", "inline-flex gap-1 py-1 items-center relative cursor-pointer opacity-85 rounded ring-offset-2 has-
|
|
58
|
+
className: classNames(invalid ? "ring-danger-500" : "ring-primary-500", disabled ? "opacity-50 cursor-not-allowed" : "hover:opacity-100 cursor-pointer", "inline-flex gap-1 py-1 items-center relative cursor-pointer opacity-85 rounded ring-offset-2 has-focus-visible:ring-1"),
|
|
48
59
|
style: {
|
|
49
60
|
width: width
|
|
50
61
|
},
|
|
51
62
|
children: [/*#__PURE__*/jsxs("div", {
|
|
52
|
-
className: classNames(actualValue && getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative grid grid-cols-2 items-center h-
|
|
63
|
+
className: classNames(actualValue && getBgClass(color ? "".concat(color, "-500") : "primary-500"), !actualValue && (defaultColor ? getBgClass("".concat(defaultColor, "-500")) : "bg-tint-200"), "relative grid grid-cols-2 items-center h-[1.5em] min-w-[2.5em] cursor-pointer rounded-full p-[0.25em] transition-colors duration-200 ease-in-out"),
|
|
53
64
|
style: {
|
|
54
65
|
backgroundColor: actualValue ? getColor(color) : getColor(defaultColor)
|
|
55
66
|
},
|
|
@@ -68,9 +79,9 @@ var Switch = function Switch(_ref) {
|
|
|
68
79
|
onChange: handleChange
|
|
69
80
|
}, rest)), /*#__PURE__*/jsx("span", {
|
|
70
81
|
"aria-hidden": "true",
|
|
71
|
-
className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-
|
|
82
|
+
className: classNames(!disabled && "shadow-sm", actualValue ? "translate-x-full" : "translate-x-0", "pointer-events-none inline-block h-[1em] start-[0.25em] absolute rounded-full bg-white ring-0 transition duration-200 ease-in-out"),
|
|
72
83
|
style: {
|
|
73
|
-
width: "calc(50% - 0.
|
|
84
|
+
width: "calc(50% - 0.25em)"
|
|
74
85
|
}
|
|
75
86
|
}), (!!onLabel || !!offLabel) && /*#__PURE__*/jsxs(Fragment, {
|
|
76
87
|
children: [/*#__PURE__*/jsx("span", {
|
|
@@ -91,7 +102,7 @@ var Switch = function Switch(_ref) {
|
|
|
91
102
|
invalid: invalid,
|
|
92
103
|
error: error
|
|
93
104
|
}), label && /*#__PURE__*/jsx("span", {
|
|
94
|
-
className: "flex-initial leading-
|
|
105
|
+
className: "flex-initial leading-tight truncate",
|
|
95
106
|
children: label
|
|
96
107
|
})]
|
|
97
108
|
});
|
|
@@ -5,13 +5,23 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
|
5
5
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
6
6
|
import { useState, useDeferredValue, useRef, useEffect, useCallback } from 'react';
|
|
7
7
|
import { InputWrapper } from '../internal/InputWrapper.js';
|
|
8
|
-
import {
|
|
8
|
+
import { useHandleEnter } from '../utils/eventHandlers.js';
|
|
9
9
|
import '@react-fabric/utilities';
|
|
10
10
|
import { jsx } from 'react/jsx-runtime';
|
|
11
11
|
|
|
12
|
-
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "rows", "maxRows", "variableRows", "onChange", "onEnterPressed"];
|
|
12
|
+
var _excluded = ["ref", "value", "name", "invalid", "readOnly", "disabled", "required", "placeholder", "defaultValue", "autoFocus", "rows", "maxRows", "variableRows", "expandable", "onBlur", "onFocus", "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
14
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
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
|
+
* @param {TextareaProps} props - The properties for the Textarea component.
|
|
23
|
+
* @returns {JSX.Element} The rendered Textarea component.
|
|
24
|
+
*/
|
|
15
25
|
var Textarea = function Textarea(_ref) {
|
|
16
26
|
var ref = _ref.ref,
|
|
17
27
|
value = _ref.value,
|
|
@@ -21,12 +31,16 @@ var Textarea = function Textarea(_ref) {
|
|
|
21
31
|
disabled = _ref.disabled,
|
|
22
32
|
required = _ref.required,
|
|
23
33
|
placeholder = _ref.placeholder,
|
|
34
|
+
defaultValue = _ref.defaultValue,
|
|
24
35
|
autoFocus = _ref.autoFocus,
|
|
25
36
|
_ref$rows = _ref.rows,
|
|
26
37
|
rows = _ref$rows === void 0 ? 5 : _ref$rows,
|
|
27
38
|
_ref$maxRows = _ref.maxRows,
|
|
28
39
|
maxRows = _ref$maxRows === void 0 ? 12 : _ref$maxRows,
|
|
29
40
|
variableRows = _ref.variableRows,
|
|
41
|
+
expandable = _ref.expandable,
|
|
42
|
+
onBlur = _ref.onBlur,
|
|
43
|
+
onFocus = _ref.onFocus,
|
|
30
44
|
onChange = _ref.onChange,
|
|
31
45
|
onEnterPressed = _ref.onEnterPressed,
|
|
32
46
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -38,16 +52,17 @@ var Textarea = function Textarea(_ref) {
|
|
|
38
52
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
53
|
fixedRows = _useState4[0],
|
|
40
54
|
setFixedRows = _useState4[1];
|
|
41
|
-
var deferred = useDeferredValue(value);
|
|
55
|
+
var deferred = useDeferredValue(value !== null && value !== void 0 ? value : defaultValue);
|
|
42
56
|
var wrapperRef = useRef(null);
|
|
43
57
|
useEffect(function () {
|
|
44
58
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
45
59
|
}, [deferred]);
|
|
46
60
|
var handleChange = useCallback(function (e) {
|
|
47
|
-
var
|
|
61
|
+
var _e$target$value;
|
|
62
|
+
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;
|
|
48
63
|
setActualValue(value !== null && value !== void 0 ? value : "");
|
|
49
|
-
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value :
|
|
50
|
-
}, [onChange]);
|
|
64
|
+
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
|
|
65
|
+
}, [onChange, defaultValue]);
|
|
51
66
|
useEffect(function () {
|
|
52
67
|
if (variableRows) {
|
|
53
68
|
var _actualValue$split$le;
|
|
@@ -57,18 +72,22 @@ var Textarea = function Textarea(_ref) {
|
|
|
57
72
|
setFixedRows(rows);
|
|
58
73
|
}
|
|
59
74
|
}, [actualValue, variableRows, rows, maxRows]);
|
|
75
|
+
var handleEnterPressed = useHandleEnter(onEnterPressed, {
|
|
76
|
+
preventDefault: !!onEnterPressed
|
|
77
|
+
});
|
|
60
78
|
return /*#__PURE__*/jsx(InputWrapper, _objectSpread(_objectSpread({
|
|
61
|
-
showClear: !!actualValue,
|
|
79
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
62
80
|
onClear: handleChange,
|
|
63
81
|
invalid: invalid,
|
|
64
82
|
readOnly: readOnly,
|
|
65
83
|
disabled: disabled,
|
|
66
84
|
required: required,
|
|
67
85
|
wrapperRef: wrapperRef,
|
|
86
|
+
textareaExpandable: expandable,
|
|
68
87
|
textarea: true
|
|
69
88
|
}, rest), {}, {
|
|
70
89
|
children: /*#__PURE__*/jsx("textarea", {
|
|
71
|
-
className: "appearance-none self-stretch bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 min-h-
|
|
90
|
+
className: "appearance-none self-stretch bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 min-h-12 resize-none",
|
|
72
91
|
"aria-invalid": invalid,
|
|
73
92
|
"aria-disabled": disabled,
|
|
74
93
|
"aria-readonly": readOnly,
|
|
@@ -82,8 +101,10 @@ var Textarea = function Textarea(_ref) {
|
|
|
82
101
|
autoComplete: "off",
|
|
83
102
|
autoFocus: autoFocus,
|
|
84
103
|
value: actualValue,
|
|
104
|
+
onBlur: onBlur,
|
|
105
|
+
onFocus: onFocus,
|
|
85
106
|
onChange: handleChange,
|
|
86
|
-
onKeyDown:
|
|
107
|
+
onKeyDown: handleEnterPressed
|
|
87
108
|
})
|
|
88
109
|
}));
|
|
89
110
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
-
import { Tooltip, Icon
|
|
4
|
+
import { Tooltip, Icon } from '@react-fabric/core';
|
|
5
5
|
import { isString } from '@react-fabric/utilities';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -20,11 +20,11 @@ var ErrorIcon = function ErrorIcon(_ref) {
|
|
|
20
20
|
label: t((_error$values$label = (_error$values = error.values) === null || _error$values === void 0 ? void 0 : _error$values.label) !== null && _error$values$label !== void 0 ? _error$values$label : "form:badkey", (_error$values2 = error.values) === null || _error$values2 === void 0 ? void 0 : _error$values2.path)
|
|
21
21
|
}) : {}),
|
|
22
22
|
placement: "bottom",
|
|
23
|
-
color: "danger",
|
|
23
|
+
color: "danger-200",
|
|
24
24
|
children: /*#__PURE__*/jsx(Icon, {
|
|
25
25
|
className: "flex-content first:ms-2 self-center",
|
|
26
26
|
color: "danger",
|
|
27
|
-
icon:
|
|
27
|
+
icon: "icon-[mdi--alert-circle-outline]"
|
|
28
28
|
})
|
|
29
29
|
});
|
|
30
30
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
-
import
|
|
4
|
+
import { ErrorIcon } from './ErrorIcon.js';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
7
7
|
/*
|
|
@@ -40,16 +40,18 @@ var FieldWrapper = function FieldWrapper(_ref) {
|
|
|
40
40
|
children = _ref.children,
|
|
41
41
|
listing = _ref.listing,
|
|
42
42
|
className = _ref.className,
|
|
43
|
+
invalid = _ref.invalid,
|
|
44
|
+
error = _ref.error,
|
|
43
45
|
isInner = _ref["data-inner"];
|
|
44
46
|
return /*#__PURE__*/jsxs("div", {
|
|
45
|
-
className: classNames(
|
|
47
|
+
className: classNames("fabric-fieldWrapper", className, inline ? "flex flex-nowrap gap-1" : "block"),
|
|
46
48
|
"data-ref": "fieldWrapper",
|
|
47
49
|
style: {
|
|
48
50
|
width: width,
|
|
49
51
|
flexBasis: width
|
|
50
52
|
},
|
|
51
|
-
children: [!isInner && /*#__PURE__*/jsxs("div", {
|
|
52
|
-
className: "flex flex-nowrap flex-content gap-1 py-0.5 px-2",
|
|
53
|
+
children: [!isInner && label && /*#__PURE__*/jsxs("div", {
|
|
54
|
+
className: "flex flex-nowrap flex-content items-end gap-1 py-0.5 px-2",
|
|
53
55
|
style: {
|
|
54
56
|
width: inline ? labelWidth : undefined
|
|
55
57
|
},
|
|
@@ -64,6 +66,11 @@ var FieldWrapper = function FieldWrapper(_ref) {
|
|
|
64
66
|
}), required && /*#__PURE__*/jsx("span", {
|
|
65
67
|
className: "text-danger-500 select-none flex-content text-[10px]",
|
|
66
68
|
children: "\u273D"
|
|
69
|
+
}), /*#__PURE__*/jsx(ErrorIcon, {
|
|
70
|
+
invalid: invalid,
|
|
71
|
+
error: error
|
|
72
|
+
}), /*#__PURE__*/jsx("div", {
|
|
73
|
+
className: "flex-1"
|
|
67
74
|
}), appendLabel && /*#__PURE__*/jsx("span", {
|
|
68
75
|
className: "flex-content",
|
|
69
76
|
children: appendLabel
|
|
@@ -3,33 +3,35 @@
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
5
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
6
|
-
import {
|
|
7
|
-
import { Icon, CoreIcons } from '@react-fabric/core';
|
|
6
|
+
import { Icon } from '@react-fabric/core';
|
|
8
7
|
import { isString } from '@react-fabric/utilities';
|
|
9
8
|
import classNames from 'classnames';
|
|
10
9
|
import { useRef, useState, useMemo, useCallback, useEffect } from 'react';
|
|
11
10
|
import { Fragment, jsxs, jsx } from 'react/jsx-runtime';
|
|
12
11
|
import { ErrorIcon } from './ErrorIcon.js';
|
|
13
|
-
import classes from './Field.module.css';
|
|
14
12
|
import { FieldWrapper } from './FieldWrapper.js';
|
|
15
13
|
|
|
16
|
-
var _excluded = ["invalid", "error", "allowClear", "showClear", "decorateStart", "decorateEnd", "children", "onClear", "noOutline", "noBorder", "textarea", "data-inner", "data-open", "floatingExpand", "wrapperRef", "width"];
|
|
14
|
+
var _excluded = ["invalid", "error", "allowClear", "showClear", "decorateStart", "decorateEnd", "decorateEndShowWhenEmpty", "decorateEndHideWhenEmpty", "children", "onClear", "noOutline", "noBorder", "actionButton", "textarea", "textareaExpandable", "data-inner", "data-open", "floatingExpand", "wrapperRef", "width"];
|
|
17
15
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
16
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
17
|
var InputWrapper = function InputWrapper(_ref) {
|
|
20
|
-
var _elRef$current;
|
|
21
18
|
var invalid = _ref.invalid,
|
|
22
19
|
error = _ref.error,
|
|
23
20
|
allowClear = _ref.allowClear,
|
|
24
21
|
showClear = _ref.showClear,
|
|
25
22
|
decorateStart = _ref.decorateStart,
|
|
26
23
|
decorateEnd = _ref.decorateEnd,
|
|
24
|
+
decorateEndShowWhenEmpty = _ref.decorateEndShowWhenEmpty,
|
|
25
|
+
decorateEndHideWhenEmpty = _ref.decorateEndHideWhenEmpty,
|
|
27
26
|
children = _ref.children,
|
|
28
27
|
onClear = _ref.onClear,
|
|
29
28
|
noOutline = _ref.noOutline,
|
|
30
29
|
noBorder = _ref.noBorder,
|
|
30
|
+
actionButton = _ref.actionButton,
|
|
31
31
|
_ref$textarea = _ref.textarea,
|
|
32
32
|
textarea = _ref$textarea === void 0 ? false : _ref$textarea,
|
|
33
|
+
_ref$textareaExpandab = _ref.textareaExpandable,
|
|
34
|
+
textareaExpandable = _ref$textareaExpandab === void 0 ? false : _ref$textareaExpandab,
|
|
33
35
|
isInner = _ref["data-inner"];
|
|
34
36
|
_ref["data-open"];
|
|
35
37
|
var floatingExpand = _ref.floatingExpand,
|
|
@@ -50,13 +52,17 @@ var InputWrapper = function InputWrapper(_ref) {
|
|
|
50
52
|
});
|
|
51
53
|
}, [isInner, rest, width]);
|
|
52
54
|
var handleClear = useCallback(function (e) {
|
|
53
|
-
var _e$currentTarget$pare;
|
|
54
|
-
(_e$currentTarget$pare = e.currentTarget.parentElement) === null || _e$currentTarget$pare === void 0
|
|
55
|
+
var _e$currentTarget$pare, _parent$querySelector;
|
|
56
|
+
var parent = (_e$currentTarget$pare = e.currentTarget.parentElement) === null || _e$currentTarget$pare === void 0 ? void 0 : _e$currentTarget$pare.querySelector("& > :not(.fabric-decorate)");
|
|
57
|
+
var el = (_parent$querySelector = parent === null || parent === void 0 ? void 0 : parent.querySelector("input,textarea,button")) !== null && _parent$querySelector !== void 0 ? _parent$querySelector : parent;
|
|
58
|
+
el === null || el === void 0 || el.focus();
|
|
55
59
|
onClear === null || onClear === void 0 || onClear();
|
|
56
60
|
}, [onClear]);
|
|
57
61
|
var doFocus = useCallback(function (e) {
|
|
58
|
-
var _e$currentTarget$pare2;
|
|
59
|
-
(_e$currentTarget$pare2 = e.currentTarget.parentElement) === null || _e$currentTarget$pare2 === void 0
|
|
62
|
+
var _e$currentTarget$pare2, _parent$querySelector2;
|
|
63
|
+
var parent = (_e$currentTarget$pare2 = e.currentTarget.parentElement) === null || _e$currentTarget$pare2 === void 0 ? void 0 : _e$currentTarget$pare2.querySelector("& > :not(.fabric-decorate)");
|
|
64
|
+
var el = (_parent$querySelector2 = parent === null || parent === void 0 ? void 0 : parent.querySelector("input,textarea,button")) !== null && _parent$querySelector2 !== void 0 ? _parent$querySelector2 : parent;
|
|
65
|
+
el === null || el === void 0 || el.focus();
|
|
60
66
|
}, [onClear]);
|
|
61
67
|
useEffect(function () {
|
|
62
68
|
isExpanded && setTimeout(function () {
|
|
@@ -67,45 +73,46 @@ var InputWrapper = function InputWrapper(_ref) {
|
|
|
67
73
|
var el = /*#__PURE__*/jsxs("div", {
|
|
68
74
|
role: "none",
|
|
69
75
|
ref: wrapperRef,
|
|
70
|
-
className: classNames(
|
|
76
|
+
className: classNames("fabric-inputWrapper", invalid && "fabric-invalidWrapper", !noOutline && !noBorder && "bg-(--fabric-input) outline overflow-hidden", "flex flex-nowrap items-center flex-1", textarea ? "rounded-capped group" : "rounded", isExpanded ? "fixed inset-4 z-99" : floatingExpand ? "absolute inset-x-0" : "relative", !noOutline && "after:absolute after:bottom-0 after:h-px after:bg-primary-500 after:mx-auto"),
|
|
71
77
|
onKeyDown: function onKeyDown(e) {
|
|
72
|
-
return e.key === "Escape" && setExpanded(false);
|
|
78
|
+
return e.key === "Escape" && isExpanded && (setExpanded(false), e.stopPropagation());
|
|
73
79
|
},
|
|
74
80
|
children: [decorateStart && /*#__PURE__*/jsx("div", {
|
|
75
81
|
onClickCapture: doFocus,
|
|
76
|
-
className: classNames(
|
|
82
|
+
className: classNames("fabric-decorate", "text-muted leading-none flex-content", isString(decorateStart) && "px-1"),
|
|
77
83
|
children: decorateStart
|
|
78
84
|
}), /*#__PURE__*/jsx(ErrorIcon, {
|
|
79
85
|
invalid: invalid,
|
|
80
86
|
error: error
|
|
81
87
|
}), children, allowClear && showClear && /*#__PURE__*/jsx(Icon, {
|
|
82
|
-
icon:
|
|
88
|
+
icon: "icon-[mdi--close]",
|
|
83
89
|
onClick: handleClear,
|
|
84
|
-
className: classNames("text-tint-500 hover:text-tint-700 p-1 z-1 flex-content",
|
|
90
|
+
className: classNames("text-tint-500 hover:text-tint-700 p-1 z-1 flex-content", "fabric-inputClear", textarea && "self-start mt-1 me-1")
|
|
85
91
|
}), decorateEnd && /*#__PURE__*/jsx("div", {
|
|
86
92
|
onClickCapture: doFocus,
|
|
87
|
-
className: classNames(
|
|
93
|
+
className: classNames("fabric-decorate", "text-muted leading-none flex-content", isString(decorateEnd) && "px-1", decorateEndHideWhenEmpty && "peer-placeholder-shown:hidden", decorateEndShowWhenEmpty && "hidden peer-placeholder-shown:inline-block"),
|
|
88
94
|
children: decorateEnd
|
|
89
|
-
}),
|
|
95
|
+
}), actionButton && /*#__PURE__*/jsx("div", {
|
|
96
|
+
onClickCapture: doFocus,
|
|
97
|
+
className: classNames("fabric-decorate", "text-muted leading-none flex-content"),
|
|
98
|
+
children: actionButton
|
|
99
|
+
}), textareaExpandable && /*#__PURE__*/jsx(Icon, {
|
|
90
100
|
onClick: function onClick() {
|
|
91
101
|
return setExpanded(!isExpanded);
|
|
92
102
|
},
|
|
93
|
-
icon: isExpanded ?
|
|
103
|
+
icon: isExpanded ? "icon-[mdi--arrow-collapse]" : "icon-[mdi--arrow-expand]",
|
|
94
104
|
className: "hidden group-hover:block absolute top-0 end-0 bg-base hover:bg-tint-200 p-1 opacity-65 rounded-capped"
|
|
95
105
|
})]
|
|
96
106
|
});
|
|
97
107
|
return /*#__PURE__*/jsx(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
|
|
98
|
-
children: /*#__PURE__*/
|
|
108
|
+
children: /*#__PURE__*/jsx("div", {
|
|
99
109
|
ref: elRef,
|
|
100
|
-
className: "
|
|
110
|
+
className: classNames("relative min-h-8 flex flex-col flex-nowrap", width ? "flex-content" : "flex-1"),
|
|
101
111
|
style: {
|
|
102
112
|
width: width,
|
|
103
113
|
flexBasis: width
|
|
104
114
|
},
|
|
105
|
-
children:
|
|
106
|
-
root: (_elRef$current = elRef.current) === null || _elRef$current === void 0 ? void 0 : _elRef$current.closest(".theme-base"),
|
|
107
|
-
children: el
|
|
108
|
-
})]
|
|
115
|
+
children: el
|
|
109
116
|
})
|
|
110
117
|
}));
|
|
111
118
|
};
|