@react-fabric/form 1.0.0-beta.6 → 1.0.0-beta.60
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 +62 -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 +70 -9
- package/dist/cjs/hooks/useFileUploader.js +16 -0
- package/dist/cjs/hooks/useFormBuilder.js +57 -15
- 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 +126 -36
- package/dist/cjs/input/AvatarInput.js +43 -23
- package/dist/cjs/input/Checkbox.js +16 -6
- package/dist/cjs/input/ColorInput.js +113 -58
- 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 +14 -7
- 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 +22 -12
- package/dist/cjs/input/Radio.js +12 -3
- package/dist/cjs/input/RadioGroup.js +10 -1
- package/dist/cjs/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/cjs/input/Search.js +30 -19
- 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 +1 -1
- package/dist/cjs/internal/FieldWrapper.js +11 -4
- package/dist/cjs/internal/InputWrapper.js +27 -20
- package/dist/cjs/select/AutoComplete.js +21 -11
- package/dist/cjs/select/DualList.js +34 -12
- package/dist/cjs/select/List.js +68 -22
- package/dist/cjs/select/Options.js +49 -42
- package/dist/cjs/select/Select.js +40 -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 +62 -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 +72 -12
- package/dist/esm/hooks/useFileUploader.js +16 -0
- package/dist/esm/hooks/useFormBuilder.js +55 -13
- 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 +126 -36
- package/dist/esm/input/AvatarInput.js +44 -24
- package/dist/esm/input/Checkbox.js +16 -6
- package/dist/esm/input/ColorInput.js +115 -60
- 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 +16 -9
- 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 +24 -14
- package/dist/esm/input/Radio.js +12 -3
- package/dist/esm/input/RadioGroup.js +11 -2
- package/dist/esm/input/{Range.js → RangeSlider.js} +16 -8
- package/dist/esm/input/Search.js +32 -21
- 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 +1 -1
- package/dist/esm/internal/FieldWrapper.js +11 -4
- package/dist/esm/internal/InputWrapper.js +27 -20
- package/dist/esm/select/AutoComplete.js +21 -11
- package/dist/esm/select/DualList.js +34 -12
- package/dist/esm/select/List.js +69 -23
- package/dist/esm/select/Options.js +49 -42
- package/dist/esm/select/Select.js +40 -10
- 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 +48 -2
- package/dist/types/hooks/useFileUploader.d.ts +16 -0
- package/dist/types/hooks/useFormBuilder.d.ts +32 -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 +17 -2
- 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 +34 -5
- 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 +62 -30
- package/src/builder/FormField.tsx +52 -32
- package/src/builder/SchemaEditor.tsx +79 -0
- package/src/builder/components/AddSchemaFields.tsx +74 -0
- package/src/builder/components/SchemaArrayForm.tsx +161 -0
- package/src/builder/components/SchemaField.tsx +436 -0
- package/src/form/Controller.tsx +48 -3
- package/src/form/Form.tsx +80 -8
- package/src/hooks/useFileUploader.ts +16 -0
- package/src/hooks/useFormBuilder.tsx +58 -15
- 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 +199 -64
- package/src/input/AvatarInput.tsx +67 -19
- package/src/input/Checkbox.tsx +16 -6
- package/src/input/ColorInput.tsx +131 -71
- 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 +16 -14
- 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 +24 -16
- package/src/input/Radio.tsx +12 -3
- package/src/input/RadioGroup.tsx +12 -3
- package/src/input/{Range.tsx → RangeSlider.tsx} +17 -9
- package/src/input/Search.tsx +33 -22
- 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 +1 -1
- package/src/internal/FieldWrapper.tsx +8 -4
- package/src/internal/InputWrapper.tsx +49 -27
- package/src/select/AutoComplete.tsx +14 -3
- package/src/select/DualList.tsx +31 -16
- package/src/select/List.tsx +52 -8
- package/src/select/Options.tsx +50 -46
- package/src/select/Select.tsx +25 -5
- package/src/select/useSelect.tsx +26 -9
- package/src/types/index.ts +37 -6
- 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/cjs/input/Field.js
CHANGED
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
5
|
+
var core = require('@react-fabric/core');
|
|
5
6
|
var classNames = require('classnames');
|
|
6
7
|
var react = require('react');
|
|
7
|
-
var Field_module = require('../internal/Field.module.css');
|
|
8
8
|
var FieldWrapper = require('../internal/FieldWrapper.js');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
10
|
|
|
11
11
|
var _excluded = ["children", "vertical", "noOutline", "plain"];
|
|
12
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; }
|
|
13
13
|
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; }
|
|
14
|
+
/**
|
|
15
|
+
* Field component for rendering multiple form fields under a single label.
|
|
16
|
+
* It supports various properties for customization, including label, info, required state,
|
|
17
|
+
* and styling options.
|
|
18
|
+
*/
|
|
14
19
|
var Field = function Field(_ref) {
|
|
15
20
|
var children = _ref.children,
|
|
16
21
|
vertical = _ref.vertical,
|
|
@@ -19,9 +24,10 @@ var Field = function Field(_ref) {
|
|
|
19
24
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
20
25
|
return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
|
|
21
26
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
22
|
-
className: classNames(
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
className: classNames("fabric-fieldGroup", !plain && !noOutline && "outline", !plain && "bg-base", plain && "flex-wrap", "flex-1 rounded", !vertical && "flex"),
|
|
28
|
+
"data-vertical": !!vertical,
|
|
29
|
+
children: core.cloneChildren(children, function (child) {
|
|
30
|
+
return /*#__PURE__*/react.cloneElement(child, {
|
|
25
31
|
"data-inner": true
|
|
26
32
|
});
|
|
27
33
|
})
|
package/dist/cjs/input/File.js
CHANGED
|
@@ -9,7 +9,6 @@ var classNames = require('classnames');
|
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
11
11
|
var eventHandlers = require('../utils/eventHandlers.js');
|
|
12
|
-
var File_module = require('./File.module.css');
|
|
13
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
14
13
|
|
|
15
14
|
var _excluded = ["ref", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "name", "accept", "showList", "multiple", "onChange", "onEnterPressed"];
|
|
@@ -30,6 +29,16 @@ var FileExists = function FileExists(prop) {
|
|
|
30
29
|
children: ["File [", prop.name, "] already added to list"]
|
|
31
30
|
});
|
|
32
31
|
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* File input component that allows users to select files from their system.
|
|
35
|
+
* It supports multiple file selection and displays a list of selected files.
|
|
36
|
+
* The component also provides functionality to remove files from the list.
|
|
37
|
+
* It handles file changes, invalid states, and read-only or disabled states.
|
|
38
|
+
*
|
|
39
|
+
* @param {FileInputProps} props - The properties for the FileInput component.
|
|
40
|
+
* @returns {JSX.Element} - The rendered FileInput component.
|
|
41
|
+
*/
|
|
33
42
|
var FileInput = function FileInput(_ref) {
|
|
34
43
|
var _actualValue$map;
|
|
35
44
|
var ref = _ref.ref,
|
|
@@ -60,9 +69,7 @@ var FileInput = function FileInput(_ref) {
|
|
|
60
69
|
actualValue = _useState6[0],
|
|
61
70
|
setActualValue = _useState6[1];
|
|
62
71
|
var deferred = react.useDeferredValue(value);
|
|
63
|
-
var handleEnterPressed =
|
|
64
|
-
return eventHandlers.handleEnter(onEnterPressed);
|
|
65
|
-
}, [onEnterPressed]);
|
|
72
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
66
73
|
react.useEffect(function () {
|
|
67
74
|
setActualValue(deferred);
|
|
68
75
|
}, [deferred]);
|
|
@@ -90,7 +97,7 @@ var FileInput = function FileInput(_ref) {
|
|
|
90
97
|
} else {
|
|
91
98
|
var _e$target$files, _e$target$files$item, _e$target$files2;
|
|
92
99
|
setActualValue(e === null || e === void 0 || (_e$target$files = e.target.files) === null || _e$target$files === void 0 ? void 0 : _e$target$files.item(0));
|
|
93
|
-
onChange === null || onChange === void 0 || onChange((_e$target$files$item = e === null || e === void 0 || (_e$target$files2 = e.target.files) === null || _e$target$files2 === void 0 ? void 0 : _e$target$files2.item(0)) !== null && _e$target$files$item !== void 0 ? _e$target$files$item :
|
|
100
|
+
onChange === null || onChange === void 0 || onChange((_e$target$files$item = e === null || e === void 0 || (_e$target$files2 = e.target.files) === null || _e$target$files2 === void 0 ? void 0 : _e$target$files2.item(0)) !== null && _e$target$files$item !== void 0 ? _e$target$files$item : null);
|
|
94
101
|
if (!e && inputRef.current) inputRef.current.value = "";
|
|
95
102
|
}
|
|
96
103
|
}, [onChange, multiple, showList]);
|
|
@@ -100,7 +107,7 @@ var FileInput = function FileInput(_ref) {
|
|
|
100
107
|
onChange === null || onChange === void 0 || onChange(listRef.current);
|
|
101
108
|
}, [onChange]);
|
|
102
109
|
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
103
|
-
showClear: !utilities.isEmpty(actualValue),
|
|
110
|
+
showClear: !utilities.isEmpty(actualValue) && !disabled && !readOnly,
|
|
104
111
|
onClear: handleChange,
|
|
105
112
|
invalid: invalid,
|
|
106
113
|
readOnly: readOnly,
|
|
@@ -139,7 +146,7 @@ var FileInput = function FileInput(_ref) {
|
|
|
139
146
|
})
|
|
140
147
|
}, rest), {}, {
|
|
141
148
|
children: /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
142
|
-
className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
|
|
149
|
+
className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer", "fabric-fileInput", utilities.isArray(actualValue) && (actualValue === null || actualValue === void 0 ? void 0 : actualValue.length) && "text-(--fabric-bg)"),
|
|
143
150
|
"aria-invalid": invalid,
|
|
144
151
|
"aria-disabled": disabled,
|
|
145
152
|
"aria-readonly": readOnly,
|
package/dist/cjs/input/Hidden.js
CHANGED
|
@@ -27,8 +27,17 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
27
27
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Hidden input component to handle hidden values in forms.
|
|
32
|
+
* It will trigger the onChange handler with the hidden value after a short delay.
|
|
33
|
+
* This is useful for cases where you need to update the form state without user interaction.
|
|
34
|
+
*
|
|
35
|
+
* @param {Object} props - Component properties.
|
|
36
|
+
* @returns {JSX.Element} The rendered hidden input field and error icon.
|
|
37
|
+
*/
|
|
30
38
|
var HiddenInput = function HiddenInput(_ref) {
|
|
31
39
|
var hiddenValue = _ref.hiddenValue,
|
|
40
|
+
defaultValue = _ref.defaultValue,
|
|
32
41
|
onChange = _ref.onChange,
|
|
33
42
|
invalid = _ref.invalid,
|
|
34
43
|
error = _ref.error,
|
|
@@ -36,8 +45,10 @@ var HiddenInput = function HiddenInput(_ref) {
|
|
|
36
45
|
value = _ref$value === void 0 ? "" : _ref$value,
|
|
37
46
|
name = _ref.name;
|
|
38
47
|
react.useEffect(function () {
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
setTimeout(function () {
|
|
49
|
+
onChange === null || onChange === void 0 || onChange(hiddenValue !== null && hiddenValue !== void 0 ? hiddenValue : defaultValue);
|
|
50
|
+
}, 50);
|
|
51
|
+
}, [hiddenValue, defaultValue]);
|
|
41
52
|
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
42
53
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
43
54
|
type: "hidden",
|
package/dist/cjs/input/Input.js
CHANGED
|
@@ -3,15 +3,24 @@
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
5
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
|
+
var classNames = require('classnames');
|
|
6
7
|
var react = require('react');
|
|
7
8
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
8
9
|
var eventHandlers = require('../utils/eventHandlers.js');
|
|
9
10
|
require('@react-fabric/utilities');
|
|
10
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
12
|
|
|
12
|
-
var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "type", "onChange", "onEnterPressed"];
|
|
13
|
+
var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "defaultValue", "autoFocus", "error", "monospace", "type", "onBlur", "onFocus", "onChange", "onEnterPressed"];
|
|
13
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; }
|
|
14
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
|
+
* This component is used to render a text input field with various properties such as name, value, invalid state, read-only, disabled, required, placeholder, autoFocus, error message, monospace font option, and event handlers for blur, focus, change, and enter key press.
|
|
18
|
+
* It also includes a clear button that appears when there is a value in the input field, allowing users to clear the input easily.
|
|
19
|
+
* The component uses a wrapper to handle the clear button and styling, and it supports deferred value updates to optimize performance.
|
|
20
|
+
*
|
|
21
|
+
* @param {TextInputProps} props - The properties for the text input component.
|
|
22
|
+
* @returns {JSX.Element} - A JSX element representing the text input field.
|
|
23
|
+
*/
|
|
15
24
|
var Input = function Input(_ref) {
|
|
16
25
|
var ref = _ref.ref,
|
|
17
26
|
name = _ref.name,
|
|
@@ -21,10 +30,14 @@ var Input = function Input(_ref) {
|
|
|
21
30
|
disabled = _ref.disabled,
|
|
22
31
|
required = _ref.required,
|
|
23
32
|
placeholder = _ref.placeholder,
|
|
33
|
+
defaultValue = _ref.defaultValue,
|
|
24
34
|
autoFocus = _ref.autoFocus,
|
|
25
35
|
error = _ref.error,
|
|
36
|
+
monospace = _ref.monospace,
|
|
26
37
|
_ref$type = _ref.type,
|
|
27
38
|
type = _ref$type === void 0 ? "text" : _ref$type,
|
|
39
|
+
onBlur = _ref.onBlur,
|
|
40
|
+
onFocus = _ref.onFocus,
|
|
28
41
|
onChange = _ref.onChange,
|
|
29
42
|
onEnterPressed = _ref.onEnterPressed,
|
|
30
43
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -32,20 +45,19 @@ var Input = function Input(_ref) {
|
|
|
32
45
|
_useState2 = _slicedToArray(_useState, 2),
|
|
33
46
|
actualValue = _useState2[0],
|
|
34
47
|
setActualValue = _useState2[1];
|
|
35
|
-
var deferred = react.useDeferredValue(value);
|
|
36
|
-
var handleEnterPressed =
|
|
37
|
-
return eventHandlers.handleEnter(onEnterPressed);
|
|
38
|
-
}, [onEnterPressed]);
|
|
48
|
+
var deferred = react.useDeferredValue(value !== null && value !== void 0 ? value : defaultValue);
|
|
49
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
39
50
|
react.useEffect(function () {
|
|
40
51
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
41
52
|
}, [deferred]);
|
|
42
53
|
var handleChange = react.useCallback(function (e) {
|
|
43
|
-
var
|
|
54
|
+
var _e$target$value;
|
|
55
|
+
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;
|
|
44
56
|
setActualValue(value !== null && value !== void 0 ? value : "");
|
|
45
|
-
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value :
|
|
46
|
-
}, [
|
|
57
|
+
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
|
|
58
|
+
}, [onChange, defaultValue]);
|
|
47
59
|
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
48
|
-
showClear: !!actualValue,
|
|
60
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
49
61
|
onClear: handleChange,
|
|
50
62
|
invalid: invalid,
|
|
51
63
|
readOnly: readOnly,
|
|
@@ -54,7 +66,7 @@ var Input = function Input(_ref) {
|
|
|
54
66
|
error: error
|
|
55
67
|
}, rest), {}, {
|
|
56
68
|
children: /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
57
|
-
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
|
|
69
|
+
className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer", monospace && "font-mono text-sm"),
|
|
58
70
|
"aria-invalid": invalid,
|
|
59
71
|
"aria-disabled": disabled,
|
|
60
72
|
"aria-readonly": readOnly,
|
|
@@ -70,6 +82,8 @@ var Input = function Input(_ref) {
|
|
|
70
82
|
autoComplete: "off",
|
|
71
83
|
autoFocus: autoFocus,
|
|
72
84
|
value: actualValue,
|
|
85
|
+
onBlur: onBlur,
|
|
86
|
+
onFocus: onFocus,
|
|
73
87
|
onChange: handleChange,
|
|
74
88
|
onKeyDown: handleEnterPressed
|
|
75
89
|
})
|
package/dist/cjs/input/Number.js
CHANGED
|
@@ -9,9 +9,17 @@ var eventHandlers = require('../utils/eventHandlers.js');
|
|
|
9
9
|
require('@react-fabric/utilities');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
11
|
|
|
12
|
-
var _excluded = ["ref", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "name", "min", "max", "step", "onChange", "onEnterPressed"];
|
|
12
|
+
var _excluded = ["ref", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "defaultValue", "autoFocus", "name", "min", "max", "step", "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
|
+
* This component allows users to input numeric values with optional minimum, maximum, and step constraints.
|
|
17
|
+
* It provides a clear interface for entering numbers, with support for validation and accessibility features.
|
|
18
|
+
* It also includes a clear button to reset the input value.
|
|
19
|
+
*
|
|
20
|
+
* @param {NumberProps} props - The properties for the Number input component.
|
|
21
|
+
* @returns {JSX.Element} The rendered Number input component.
|
|
22
|
+
*/
|
|
15
23
|
var Number = function Number(_ref) {
|
|
16
24
|
var ref = _ref.ref,
|
|
17
25
|
value = _ref.value,
|
|
@@ -20,11 +28,14 @@ var Number = function Number(_ref) {
|
|
|
20
28
|
disabled = _ref.disabled,
|
|
21
29
|
required = _ref.required,
|
|
22
30
|
placeholder = _ref.placeholder,
|
|
31
|
+
defaultValue = _ref.defaultValue,
|
|
23
32
|
autoFocus = _ref.autoFocus,
|
|
24
33
|
name = _ref.name,
|
|
25
34
|
min = _ref.min,
|
|
26
35
|
max = _ref.max,
|
|
27
36
|
step = _ref.step,
|
|
37
|
+
onBlur = _ref.onBlur,
|
|
38
|
+
onFocus = _ref.onFocus,
|
|
28
39
|
onChange = _ref.onChange,
|
|
29
40
|
onEnterPressed = _ref.onEnterPressed,
|
|
30
41
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -32,20 +43,19 @@ var Number = function Number(_ref) {
|
|
|
32
43
|
_useState2 = _slicedToArray(_useState, 2),
|
|
33
44
|
actualValue = _useState2[0],
|
|
34
45
|
setActualValue = _useState2[1];
|
|
35
|
-
var deferred = react.useDeferredValue(value);
|
|
36
|
-
var handleEnterPressed =
|
|
37
|
-
return eventHandlers.handleEnter(onEnterPressed);
|
|
38
|
-
}, [onEnterPressed]);
|
|
46
|
+
var deferred = react.useDeferredValue(value !== null && value !== void 0 ? value : defaultValue);
|
|
47
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
39
48
|
react.useEffect(function () {
|
|
40
49
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
41
50
|
}, [deferred]);
|
|
42
51
|
var handleChange = react.useCallback(function (e) {
|
|
43
|
-
var
|
|
52
|
+
var _e$target$valueAsNumb;
|
|
53
|
+
var number = (_e$target$valueAsNumb = e === null || e === void 0 ? void 0 : e.target.valueAsNumber) !== null && _e$target$valueAsNumb !== void 0 ? _e$target$valueAsNumb : defaultValue;
|
|
44
54
|
setActualValue(number !== null && number !== void 0 ? number : "");
|
|
45
|
-
onChange === null || onChange === void 0 || onChange(number !== null && number !== void 0 ? number :
|
|
46
|
-
}, [onChange]);
|
|
55
|
+
onChange === null || onChange === void 0 || onChange(number !== null && number !== void 0 ? number : null);
|
|
56
|
+
}, [onChange, defaultValue]);
|
|
47
57
|
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
48
|
-
showClear: !!actualValue,
|
|
58
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
49
59
|
onClear: handleChange,
|
|
50
60
|
invalid: invalid,
|
|
51
61
|
readOnly: readOnly,
|
|
@@ -53,7 +63,7 @@ var Number = function Number(_ref) {
|
|
|
53
63
|
required: required
|
|
54
64
|
}, rest), {}, {
|
|
55
65
|
children: /*#__PURE__*/jsxRuntime.jsx("input", {
|
|
56
|
-
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
|
|
66
|
+
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
|
|
57
67
|
"aria-invalid": invalid,
|
|
58
68
|
"aria-disabled": disabled,
|
|
59
69
|
"aria-readonly": readOnly,
|
|
@@ -71,6 +81,8 @@ var Number = function Number(_ref) {
|
|
|
71
81
|
autoComplete: "off",
|
|
72
82
|
autoFocus: autoFocus,
|
|
73
83
|
value: actualValue,
|
|
84
|
+
onBlur: onBlur,
|
|
85
|
+
onFocus: onFocus,
|
|
74
86
|
onChange: handleChange,
|
|
75
87
|
onKeyDown: handleEnterPressed
|
|
76
88
|
})
|
|
@@ -12,9 +12,15 @@ var eventHandlers = require('../utils/eventHandlers.js');
|
|
|
12
12
|
require('@react-fabric/utilities');
|
|
13
13
|
var jsxRuntime = require('react/jsx-runtime');
|
|
14
14
|
|
|
15
|
-
var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "showToggle", "onChange", "onEnterPressed"];
|
|
15
|
+
var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "defaultValue", "autoFocus", "showToggle", "onBlur", "onFocus", "onChange", "onEnterPressed"];
|
|
16
16
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
17
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
18
|
+
/**
|
|
19
|
+
* Password input component with optional strength meter and toggle visibility.
|
|
20
|
+
*
|
|
21
|
+
* @param {PasswordProps} props - The properties for the Password component.
|
|
22
|
+
* @returns {JSX.Element} The rendered Password input component.
|
|
23
|
+
*/
|
|
18
24
|
var Password = function Password(_ref) {
|
|
19
25
|
var ref = _ref.ref,
|
|
20
26
|
value = _ref.value,
|
|
@@ -25,8 +31,11 @@ var Password = function Password(_ref) {
|
|
|
25
31
|
disabled = _ref.disabled,
|
|
26
32
|
required = _ref.required,
|
|
27
33
|
placeholder = _ref.placeholder,
|
|
34
|
+
defaultValue = _ref.defaultValue,
|
|
28
35
|
autoFocus = _ref.autoFocus,
|
|
29
36
|
showToggle = _ref.showToggle,
|
|
37
|
+
onBlur = _ref.onBlur,
|
|
38
|
+
onFocus = _ref.onFocus,
|
|
30
39
|
onChange = _ref.onChange,
|
|
31
40
|
onEnterPressed = _ref.onEnterPressed,
|
|
32
41
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
@@ -40,27 +49,26 @@ var Password = function Password(_ref) {
|
|
|
40
49
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
41
50
|
actualValue = _useState4[0],
|
|
42
51
|
setActualValue = _useState4[1];
|
|
43
|
-
var deferred = react.useDeferredValue(value);
|
|
44
|
-
var handleEnterPressed =
|
|
45
|
-
return eventHandlers.handleEnter(onEnterPressed);
|
|
46
|
-
}, [onEnterPressed]);
|
|
52
|
+
var deferred = react.useDeferredValue(value !== null && value !== void 0 ? value : defaultValue);
|
|
53
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
47
54
|
react.useEffect(function () {
|
|
48
55
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
49
56
|
}, [deferred]);
|
|
50
57
|
var handleChange = react.useCallback(function (e) {
|
|
51
|
-
var
|
|
58
|
+
var _e$target$value;
|
|
59
|
+
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;
|
|
52
60
|
setActualValue(value !== null && value !== void 0 ? value : "");
|
|
53
|
-
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value :
|
|
54
|
-
}, [onChange]);
|
|
61
|
+
onChange === null || onChange === void 0 || onChange(value !== null && value !== void 0 ? value : null);
|
|
62
|
+
}, [onChange, defaultValue]);
|
|
55
63
|
return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
56
|
-
showClear: !!actualValue,
|
|
64
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
57
65
|
onClear: handleChange,
|
|
58
66
|
invalid: invalid,
|
|
59
67
|
readOnly: readOnly,
|
|
60
68
|
disabled: disabled,
|
|
61
69
|
required: required
|
|
62
70
|
}, rest), {}, {
|
|
63
|
-
|
|
71
|
+
actionButton: showToggle && actualValue && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
|
|
64
72
|
color: "warning",
|
|
65
73
|
content: t(show ? "password.hide" : "password.show"),
|
|
66
74
|
children: /*#__PURE__*/jsxRuntime.jsx(core.Button, {
|
|
@@ -75,7 +83,7 @@ var Password = function Password(_ref) {
|
|
|
75
83
|
})
|
|
76
84
|
}),
|
|
77
85
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
78
|
-
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0",
|
|
86
|
+
className: "appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer",
|
|
79
87
|
"aria-invalid": invalid,
|
|
80
88
|
"aria-disabled": disabled,
|
|
81
89
|
"aria-readonly": readOnly,
|
|
@@ -90,10 +98,12 @@ var Password = function Password(_ref) {
|
|
|
90
98
|
autoComplete: "off",
|
|
91
99
|
autoFocus: autoFocus,
|
|
92
100
|
value: actualValue,
|
|
101
|
+
onBlur: onBlur,
|
|
102
|
+
onFocus: onFocus,
|
|
93
103
|
onChange: handleChange,
|
|
94
104
|
onKeyDown: handleEnterPressed
|
|
95
105
|
}), !!strength && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
96
|
-
className: classNames("absolute bottom-px h-[3px] inset-x-0 after:block after:h-full after:bg-dimmed", "ltr:bg-
|
|
106
|
+
className: classNames("absolute bottom-px h-[3px] inset-x-0 after:block after:h-full after:bg-dimmed", "ltr:bg-linear-to-r rtl:bg-linear-to-l from-danger-500 via-marigold-500 to-jade-500"),
|
|
97
107
|
style: {
|
|
98
108
|
paddingInlineStart: "".concat(strength > 1 ? 100 : strength * 100, "%")
|
|
99
109
|
}
|
package/dist/cjs/input/Radio.js
CHANGED
|
@@ -10,6 +10,15 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
10
10
|
var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "error", "width", "icon", "iconChecked", "onChange"];
|
|
11
11
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
12
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
/**
|
|
14
|
+
* Radio input component with custom icons and label.
|
|
15
|
+
*
|
|
16
|
+
* This component renders a radio button with an optional label and custom icons for checked and unchecked states.
|
|
17
|
+
* It supports disabled and invalid states, and allows for custom width.
|
|
18
|
+
*
|
|
19
|
+
* @param {RadioProps} props - The properties for the Radio component.
|
|
20
|
+
* @returns {JSX.Element} The rendered Radio input component.
|
|
21
|
+
*/
|
|
13
22
|
var Radio = function Radio(_ref) {
|
|
14
23
|
var ref = _ref.ref,
|
|
15
24
|
name = _ref.name,
|
|
@@ -35,7 +44,7 @@ var Radio = function Radio(_ref) {
|
|
|
35
44
|
(e === null || e === void 0 ? void 0 : e.target.checked) && value && (onChange === null || onChange === void 0 ? void 0 : onChange(value));
|
|
36
45
|
}, [onChange, value]);
|
|
37
46
|
return /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
38
|
-
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-
|
|
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-focus-visible:ring-1"),
|
|
39
48
|
style: {
|
|
40
49
|
width: width
|
|
41
50
|
},
|
|
@@ -51,7 +60,7 @@ var Radio = function Radio(_ref) {
|
|
|
51
60
|
autoComplete: "off",
|
|
52
61
|
onChange: handleChange
|
|
53
62
|
}, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
54
|
-
className: classNames("p-0.5 hidden peer-checked:inline-block", icon && !iconChecked && "bg-primary-500 text-white"),
|
|
63
|
+
className: classNames("p-0.5 hidden peer-checked:inline-block", icon && !iconChecked && "bg-primary-500 text-white!"),
|
|
55
64
|
color: invalid ? "danger" : "primary",
|
|
56
65
|
size: "1.25em",
|
|
57
66
|
icon: iconOn
|
|
@@ -61,7 +70,7 @@ var Radio = function Radio(_ref) {
|
|
|
61
70
|
size: "1.25em",
|
|
62
71
|
icon: iconOff
|
|
63
72
|
}), label && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
64
|
-
className: "flex-initial leading-
|
|
73
|
+
className: "flex-initial leading-tight truncate",
|
|
65
74
|
children: label
|
|
66
75
|
})]
|
|
67
76
|
});
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
5
|
+
var core = require('@react-fabric/core');
|
|
5
6
|
var react = require('react');
|
|
6
7
|
var FieldWrapper = require('../internal/FieldWrapper.js');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -9,6 +10,14 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
9
10
|
var _excluded = ["children", "name", "className", "optionWidth", "onChange"];
|
|
10
11
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
12
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
+
/**
|
|
14
|
+
* RadioGroup component for rendering a group of radio buttons.
|
|
15
|
+
* It allows for customization of the label, options, and layout.
|
|
16
|
+
* The component supports inline and vertical orientations, and can handle change events.
|
|
17
|
+
*
|
|
18
|
+
* @param {RadioGroupProps} props - The properties for the RadioGroup component.
|
|
19
|
+
* @returns {JSX.Element} The rendered RadioGroup component.
|
|
20
|
+
*/
|
|
12
21
|
var RadioGroup = function RadioGroup(_ref) {
|
|
13
22
|
var children = _ref.children,
|
|
14
23
|
name = _ref.name,
|
|
@@ -19,7 +28,7 @@ var RadioGroup = function RadioGroup(_ref) {
|
|
|
19
28
|
return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
|
|
20
29
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21
30
|
className: className,
|
|
22
|
-
children:
|
|
31
|
+
children: core.cloneChildren(children, function (child) {
|
|
23
32
|
return /*#__PURE__*/react.cloneElement(child, {
|
|
24
33
|
name: name,
|
|
25
34
|
onChange: onChange,
|
|
@@ -14,9 +14,17 @@ 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
|
+
* RangeSlider component for rendering a range slider input.
|
|
18
|
+
* It supports vertical orientation, custom colors, step increments,
|
|
19
|
+
* min/max values, and display of labels and value tooltips.
|
|
20
|
+
* The component uses the Ranger library for handling the slider functionality.
|
|
21
|
+
* It also provides error handling and supports disabled and read-only states.
|
|
22
|
+
* The component is designed to be flexible and customizable, allowing for various configurations.
|
|
23
|
+
*
|
|
24
|
+
* @param {RangeProps} props - The properties for the RangeSlider component.
|
|
25
|
+
* @returns {JSX.Element} The rendered RangeSlider component.
|
|
18
26
|
*/
|
|
19
|
-
var
|
|
27
|
+
var RangeSlider = function RangeSlider(_ref) {
|
|
20
28
|
var error = _ref.error;
|
|
21
29
|
_ref.name;
|
|
22
30
|
var value = _ref.value,
|
|
@@ -71,7 +79,7 @@ var Range = function Range(_ref) {
|
|
|
71
79
|
}, [showValue]);
|
|
72
80
|
var handleChange = react.useCallback(function (val) {
|
|
73
81
|
setActualValue(val !== null && val !== void 0 ? val : [min, max]);
|
|
74
|
-
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);
|
|
75
83
|
}, [onChange, min, max]);
|
|
76
84
|
var minDisplay = react.useMemo(function () {
|
|
77
85
|
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
@@ -114,14 +122,14 @@ var Range = function Range(_ref) {
|
|
|
114
122
|
isReadOnly: readOnly,
|
|
115
123
|
canClear: !!actualValue,
|
|
116
124
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
117
|
-
className: classNames("flex-
|
|
125
|
+
className: classNames("flex-1 order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
|
|
118
126
|
"data-vertical": !!vertical,
|
|
119
127
|
style: invalid ? undefined : {
|
|
120
128
|
color: color
|
|
121
129
|
},
|
|
122
130
|
children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
123
131
|
ref: rangerInstance.trackElRef,
|
|
124
|
-
className: classNames("flex-
|
|
132
|
+
className: classNames("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
|
|
125
133
|
style: {
|
|
126
134
|
height: vertical ? height : undefined
|
|
127
135
|
},
|
|
@@ -130,7 +138,7 @@ var Range = function Range(_ref) {
|
|
|
130
138
|
var key = _ref2.key,
|
|
131
139
|
styles = _ref2.styles;
|
|
132
140
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
133
|
-
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"),
|
|
134
142
|
style: styles
|
|
135
143
|
}, key);
|
|
136
144
|
}), rangerInstance.segments.map(function (_ref3) {
|
|
@@ -154,7 +162,7 @@ var Range = function Range(_ref) {
|
|
|
154
162
|
}, props), {}, {
|
|
155
163
|
style: styles
|
|
156
164
|
})), displayValue && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
157
|
-
className: classNames("bg-invert text-invert py-px px-2 text-xs absolute rounded z-1 whitespace-nowrap", "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" : "top-1/2 -translate-y-1/2", !vertical && (key === 0 ? "-ms-3 ltr:-translate-x-full rtl:translate-x-full ltr:before:translate-x-
|
|
165
|
+
className: classNames("bg-invert text-invert py-px px-2 text-xs absolute rounded z-1 whitespace-nowrap", "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" : "top-1/2 -translate-y-1/2", !vertical && (key === 0 ? "-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")),
|
|
158
166
|
"data-align": key === 0 ? "start" : "end",
|
|
159
167
|
style: valueStyles,
|
|
160
168
|
children: utilities.Format.number(value, format)
|
|
@@ -166,4 +174,4 @@ var Range = function Range(_ref) {
|
|
|
166
174
|
}));
|
|
167
175
|
};
|
|
168
176
|
|
|
169
|
-
exports.
|
|
177
|
+
exports.RangeSlider = RangeSlider;
|