@react-fabric/form 1.0.0-beta.9 → 1.0.1
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
|
@@ -2,65 +2,63 @@
|
|
|
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 core = require('@react-fabric/core');
|
|
7
|
-
var
|
|
6
|
+
var utilities = require('@react-fabric/utilities');
|
|
8
7
|
var react = require('react');
|
|
9
8
|
var reactI18next = require('react-i18next');
|
|
10
9
|
var InputWrapper = require('../internal/InputWrapper.js');
|
|
11
10
|
var eventHandlers = require('../utils/eventHandlers.js');
|
|
12
|
-
require('
|
|
11
|
+
var getProps = require('../utils/getProps.js');
|
|
13
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
14
13
|
|
|
15
|
-
var _excluded = ["ref", "value", "name", "strength", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "showToggle", "onChange", "onEnterPressed"];
|
|
16
14
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
17
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
+
* Password input component with optional strength meter and toggle visibility.
|
|
18
|
+
*/
|
|
19
|
+
function Password(props) {
|
|
20
|
+
var value = props.value,
|
|
21
|
+
defaultValue = props.defaultValue,
|
|
22
|
+
onEnterPressed = props.onEnterPressed,
|
|
23
|
+
onChange = props.onChange,
|
|
24
|
+
onBlur = props.onBlur,
|
|
25
|
+
onFocus = props.onFocus,
|
|
26
|
+
disabled = props.disabled,
|
|
27
|
+
readOnly = props.readOnly,
|
|
28
|
+
invalid = props.invalid,
|
|
29
|
+
showToggle = props.showToggle,
|
|
30
|
+
strength = props.strength,
|
|
31
|
+
placeholder = props.placeholder,
|
|
32
|
+
name = props.name,
|
|
33
|
+
autoFocus = props.autoFocus,
|
|
34
|
+
allowClear = props.allowClear,
|
|
35
|
+
_props$autoComplete = props.autoComplete,
|
|
36
|
+
autoComplete = _props$autoComplete === void 0 ? "off" : _props$autoComplete,
|
|
37
|
+
ref = props.ref;
|
|
38
|
+
var id = react.useId();
|
|
39
|
+
var _useControlledValue = core.useControlledValue(value, defaultValue),
|
|
40
|
+
currentValue = _useControlledValue.currentValue,
|
|
41
|
+
updateValue = _useControlledValue.updateValue;
|
|
33
42
|
var _useTranslation = reactI18next.useTranslation("form"),
|
|
34
43
|
t = _useTranslation.t;
|
|
35
44
|
var _useState = react.useState(false),
|
|
36
45
|
_useState2 = _slicedToArray(_useState, 2),
|
|
37
46
|
show = _useState2[0],
|
|
38
47
|
setShow = _useState2[1];
|
|
39
|
-
var
|
|
40
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
41
|
-
actualValue = _useState4[0],
|
|
42
|
-
setActualValue = _useState4[1];
|
|
43
|
-
var deferred = react.useDeferredValue(value);
|
|
44
|
-
var handleEnterPressed = react.useMemo(function () {
|
|
45
|
-
return eventHandlers.handleEnter(onEnterPressed);
|
|
46
|
-
}, [onEnterPressed]);
|
|
47
|
-
react.useEffect(function () {
|
|
48
|
-
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
49
|
-
}, [deferred]);
|
|
48
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
50
49
|
var handleChange = react.useCallback(function (e) {
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
var _e$target$value;
|
|
51
|
+
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
|
+
updateValue(value);
|
|
53
|
+
onChange === null || onChange === void 0 || onChange(value);
|
|
54
|
+
}, [defaultValue, updateValue, onChange]);
|
|
55
55
|
return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
56
|
-
|
|
56
|
+
id: id,
|
|
57
|
+
showClear: allowClear && !!currentValue && !disabled && !readOnly,
|
|
57
58
|
onClear: handleChange,
|
|
58
|
-
invalid: invalid
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
required: required
|
|
62
|
-
}, rest), {}, {
|
|
63
|
-
decorateEnd: showToggle && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
|
|
59
|
+
invalid: invalid
|
|
60
|
+
}, getProps.getWrapperProps(props)), {}, {
|
|
61
|
+
actionButton: showToggle && currentValue && /*#__PURE__*/jsxRuntime.jsx(core.Tooltip, {
|
|
64
62
|
color: "warning",
|
|
65
63
|
content: t(show ? "password.hide" : "password.show"),
|
|
66
64
|
children: /*#__PURE__*/jsxRuntime.jsx(core.Button, {
|
|
@@ -68,14 +66,15 @@ var Password = function Password(_ref) {
|
|
|
68
66
|
color: "warning",
|
|
69
67
|
variant: "link",
|
|
70
68
|
"aria-label": t(show ? "password.hide" : "password.show"),
|
|
71
|
-
icon: show ?
|
|
69
|
+
icon: show ? "icon-[mdi--eye-off-outline]" : "icon-[mdi--eye-outline]",
|
|
72
70
|
onClick: function onClick() {
|
|
73
71
|
return setShow(!show);
|
|
74
72
|
}
|
|
75
73
|
})
|
|
76
74
|
}),
|
|
77
75
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|
|
78
|
-
|
|
76
|
+
id: id,
|
|
77
|
+
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",
|
|
79
78
|
"aria-invalid": invalid,
|
|
80
79
|
"aria-disabled": disabled,
|
|
81
80
|
"aria-readonly": readOnly,
|
|
@@ -87,18 +86,21 @@ var Password = function Password(_ref) {
|
|
|
87
86
|
size: 1,
|
|
88
87
|
type: show ? "text" : "password",
|
|
89
88
|
ref: ref,
|
|
90
|
-
autoComplete:
|
|
89
|
+
autoComplete: autoComplete,
|
|
91
90
|
autoFocus: autoFocus,
|
|
92
|
-
value:
|
|
91
|
+
value: currentValue !== null && currentValue !== void 0 ? currentValue : "",
|
|
92
|
+
onBlur: onBlur,
|
|
93
|
+
onFocus: onFocus,
|
|
93
94
|
onChange: handleChange,
|
|
94
95
|
onKeyDown: handleEnterPressed
|
|
95
96
|
}), !!strength && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
96
|
-
className:
|
|
97
|
+
className: utilities.cn("absolute bottom-px h-0.5 inset-x-0 after:block after:h-full after:bg-dimmed"),
|
|
97
98
|
style: {
|
|
98
|
-
paddingInlineStart: "".concat(strength > 1 ? 100 : strength * 100, "%")
|
|
99
|
+
paddingInlineStart: "".concat(strength > 1 ? 100 : strength * 100, "%"),
|
|
100
|
+
background: "linear-gradient(to right,var(--color-scarlet-500) 25%,var(--color-amber-500) 50%,var(--color-jade-500) 75%,var(--color-avocado-500) 100%)"
|
|
99
101
|
}
|
|
100
102
|
})]
|
|
101
103
|
}));
|
|
102
|
-
}
|
|
104
|
+
}
|
|
103
105
|
|
|
104
106
|
exports.Password = Password;
|
package/dist/cjs/input/Radio.js
CHANGED
|
@@ -3,44 +3,51 @@
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
5
5
|
var core = require('@react-fabric/core');
|
|
6
|
-
var
|
|
6
|
+
var utilities = require('@react-fabric/utilities');
|
|
7
7
|
var react = require('react');
|
|
8
|
+
var ErrorIcon = require('../internal/ErrorIcon.js');
|
|
8
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
10
|
|
|
10
|
-
var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "
|
|
11
|
+
var _excluded = ["ref", "name", "label", "value", "invalid", "disabled", "width", "icon", "error", "iconChecked", "onChange"];
|
|
11
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; }
|
|
12
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(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), 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
|
+
* Radio input component with custom icons and label.
|
|
16
|
+
*
|
|
17
|
+
* This component renders a radio button with an optional label and custom icons for checked and unchecked states.
|
|
18
|
+
* It supports disabled and invalid states, and allows for custom width.
|
|
19
|
+
*/
|
|
20
|
+
function Radio(_ref) {
|
|
14
21
|
var ref = _ref.ref,
|
|
15
22
|
name = _ref.name,
|
|
16
23
|
label = _ref.label,
|
|
17
24
|
value = _ref.value,
|
|
18
25
|
invalid = _ref.invalid,
|
|
19
|
-
disabled = _ref.disabled
|
|
20
|
-
_ref.
|
|
21
|
-
var width = _ref.width,
|
|
26
|
+
disabled = _ref.disabled,
|
|
27
|
+
width = _ref.width,
|
|
22
28
|
icon = _ref.icon,
|
|
29
|
+
error = _ref.error,
|
|
23
30
|
iconChecked = _ref.iconChecked,
|
|
24
31
|
onChange = _ref.onChange,
|
|
25
32
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
26
33
|
var iconOn = react.useMemo(function () {
|
|
27
34
|
var _ref2;
|
|
28
|
-
return (_ref2 = iconChecked !== null && iconChecked !== void 0 ? iconChecked : icon) !== null && _ref2 !== void 0 ? _ref2 :
|
|
35
|
+
return (_ref2 = iconChecked !== null && iconChecked !== void 0 ? iconChecked : icon) !== null && _ref2 !== void 0 ? _ref2 : "icon-[mdi--radiobox-marked]";
|
|
29
36
|
}, [icon, iconChecked]);
|
|
30
37
|
var iconOff = react.useMemo(function () {
|
|
31
|
-
return icon !== null && icon !== void 0 ? icon :
|
|
38
|
+
return icon !== null && icon !== void 0 ? icon : "icon-[mdi--radiobox-blank]";
|
|
32
39
|
}, [icon]);
|
|
33
40
|
var handleChange = react.useCallback(function (e) {
|
|
34
41
|
// @ts-expect-error ignore
|
|
35
|
-
(e
|
|
42
|
+
if (e !== null && e !== void 0 && e.target.checked && value) onChange === null || onChange === void 0 || onChange(value);
|
|
36
43
|
}, [onChange, value]);
|
|
37
44
|
return /*#__PURE__*/jsxRuntime.jsxs("label", {
|
|
38
|
-
className:
|
|
45
|
+
className: utilities.cn(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
46
|
style: {
|
|
40
47
|
width: width
|
|
41
48
|
},
|
|
42
49
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", _objectSpread({
|
|
43
|
-
className:
|
|
50
|
+
className: utilities.cn("appearance-none absolute peer opacity-0 inset-0 bg-transparent border-none outline-none ring-0"),
|
|
44
51
|
"aria-disabled": disabled,
|
|
45
52
|
disabled: disabled,
|
|
46
53
|
type: "radio",
|
|
@@ -51,20 +58,23 @@ var Radio = function Radio(_ref) {
|
|
|
51
58
|
autoComplete: "off",
|
|
52
59
|
onChange: handleChange
|
|
53
60
|
}, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
54
|
-
className:
|
|
61
|
+
className: utilities.cn("p-0.5 not-peer-checked:hidden", icon && !iconChecked && "bg-primary-500 text-white!"),
|
|
55
62
|
color: invalid ? "danger" : "primary",
|
|
56
63
|
size: "1.25em",
|
|
57
64
|
icon: iconOn
|
|
58
65
|
}), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
59
|
-
className:
|
|
66
|
+
className: utilities.cn("p-0.5 peer-checked:hidden"),
|
|
60
67
|
color: invalid ? "danger" : "primary",
|
|
61
68
|
size: "1.25em",
|
|
62
69
|
icon: iconOff
|
|
70
|
+
}), /*#__PURE__*/jsxRuntime.jsx(ErrorIcon.ErrorIcon, {
|
|
71
|
+
invalid: invalid,
|
|
72
|
+
error: error
|
|
63
73
|
}), label && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
64
|
-
className: "flex-initial leading-
|
|
74
|
+
className: "flex-initial leading-tight truncate",
|
|
65
75
|
children: label
|
|
66
76
|
})]
|
|
67
77
|
});
|
|
68
|
-
}
|
|
78
|
+
}
|
|
69
79
|
|
|
70
80
|
exports.Radio = Radio;
|
|
@@ -2,32 +2,47 @@
|
|
|
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');
|
|
6
|
+
var utilities = require('@react-fabric/utilities');
|
|
5
7
|
var react = require('react');
|
|
6
8
|
var FieldWrapper = require('../internal/FieldWrapper.js');
|
|
7
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
10
|
|
|
9
|
-
var _excluded = ["children", "name", "className", "optionWidth", "onChange"];
|
|
11
|
+
var _excluded = ["children", "name", "className", "optionWidth", "vertical", "value", "onChange"];
|
|
10
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; }
|
|
11
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
12
|
-
|
|
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
|
+
* RadioGroup component for rendering a group of radio buttons.
|
|
16
|
+
* It allows for customization of the label, options, and layout.
|
|
17
|
+
* The component supports inline and vertical orientations, and can handle change events.
|
|
18
|
+
*/
|
|
19
|
+
function RadioGroup(_ref) {
|
|
20
|
+
var _cloneChildren;
|
|
13
21
|
var children = _ref.children,
|
|
14
22
|
name = _ref.name,
|
|
15
23
|
className = _ref.className,
|
|
16
24
|
optionWidth = _ref.optionWidth,
|
|
25
|
+
vertical = _ref.vertical,
|
|
26
|
+
value = _ref.value,
|
|
17
27
|
onChange = _ref.onChange,
|
|
18
28
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
19
29
|
return /*#__PURE__*/jsxRuntime.jsx(FieldWrapper.FieldWrapper, _objectSpread(_objectSpread({}, rest), {}, {
|
|
20
30
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21
|
-
className: className,
|
|
22
|
-
children:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
className: utilities.cn(className, vertical && "flex flex-col gap-1"),
|
|
32
|
+
children: (_cloneChildren = core.cloneChildren(children)) === null || _cloneChildren === void 0 ? void 0 : _cloneChildren.map(function (child) {
|
|
33
|
+
if (/*#__PURE__*/react.isValidElement(child)) {
|
|
34
|
+
var _child$props;
|
|
35
|
+
return /*#__PURE__*/react.cloneElement(child, {
|
|
36
|
+
name: name,
|
|
37
|
+
checked: ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.value) === value,
|
|
38
|
+
onChange: onChange,
|
|
39
|
+
width: optionWidth
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return child;
|
|
28
43
|
})
|
|
29
44
|
})
|
|
30
45
|
}));
|
|
31
|
-
}
|
|
46
|
+
}
|
|
32
47
|
|
|
33
48
|
exports.RadioGroup = RadioGroup;
|
|
@@ -2,51 +2,49 @@
|
|
|
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", "format", "autoFocus", "disabled", "readOnly", "onBlur", "onChange", "onEnterPressed", "onFocus", "onSlide", "invalid"];
|
|
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
|
+
* 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.
|
|
18
23
|
*/
|
|
19
|
-
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
format =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var onChange = _ref.onChange;
|
|
44
|
-
_ref.onEnterPressed;
|
|
45
|
-
_ref.onFocus;
|
|
46
|
-
var onSlide = _ref.onSlide,
|
|
47
|
-
invalid = _ref.invalid,
|
|
48
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
49
|
-
var _useState = react.useState([0, 0]),
|
|
24
|
+
function RangeSlider(props) {
|
|
25
|
+
var value = props.value,
|
|
26
|
+
showLabels = props.showLabels,
|
|
27
|
+
showValue = props.showValue,
|
|
28
|
+
onChange = props.onChange,
|
|
29
|
+
onSlide = props.onSlide,
|
|
30
|
+
ranges = props.ranges,
|
|
31
|
+
invalid = props.invalid,
|
|
32
|
+
_props$step = props.step,
|
|
33
|
+
step = _props$step === void 0 ? 1 : _props$step,
|
|
34
|
+
_props$min = props.min,
|
|
35
|
+
min = _props$min === void 0 ? 0 : _props$min,
|
|
36
|
+
_props$max = props.max,
|
|
37
|
+
max = _props$max === void 0 ? 100 : _props$max,
|
|
38
|
+
_props$height = props.height,
|
|
39
|
+
height = _props$height === void 0 ? 192 : _props$height,
|
|
40
|
+
vertical = props.vertical,
|
|
41
|
+
minLabel = props.minLabel,
|
|
42
|
+
maxLabel = props.maxLabel,
|
|
43
|
+
format = props.format,
|
|
44
|
+
color = props.color;
|
|
45
|
+
var _useState = react.useState(function () {
|
|
46
|
+
return [0, 0];
|
|
47
|
+
}),
|
|
50
48
|
_useState2 = _slicedToArray(_useState, 2),
|
|
51
49
|
actualValue = _useState2[0],
|
|
52
50
|
setActualValue = _useState2[1];
|
|
@@ -64,14 +62,16 @@ var Range = function Range(_ref) {
|
|
|
64
62
|
return (_ranges$slice$ = ranges === null || ranges === void 0 ? void 0 : ranges.slice(-1)[0]) !== null && _ranges$slice$ !== void 0 ? _ranges$slice$ : max;
|
|
65
63
|
}, [max, ranges]);
|
|
66
64
|
react.useEffect(function () {
|
|
65
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
67
66
|
setActualValue(deferred !== null && deferred !== void 0 ? deferred : [min, max]);
|
|
68
67
|
}, [deferred, min, max]);
|
|
69
68
|
react.useEffect(function () {
|
|
69
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
70
70
|
setDisplayValue(!!showValue);
|
|
71
71
|
}, [showValue]);
|
|
72
72
|
var handleChange = react.useCallback(function (val) {
|
|
73
73
|
setActualValue(val !== null && val !== void 0 ? val : [min, max]);
|
|
74
|
-
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val :
|
|
74
|
+
onChange === null || onChange === void 0 || onChange(val !== null && val !== void 0 ? val : null);
|
|
75
75
|
}, [onChange, min, max]);
|
|
76
76
|
var minDisplay = react.useMemo(function () {
|
|
77
77
|
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
@@ -106,55 +106,50 @@ var Range = function Range(_ref) {
|
|
|
106
106
|
return handleChange([values[0], values[1]]);
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
|
-
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({},
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
invalid: invalid,
|
|
113
|
-
isDisabled: disabled,
|
|
114
|
-
isReadOnly: readOnly,
|
|
115
|
-
canClear: !!actualValue,
|
|
109
|
+
return /*#__PURE__*/jsxRuntime.jsx(InputWrapper.InputWrapper, _objectSpread(_objectSpread({}, getProps.getWrapperProps(props)), {}, {
|
|
110
|
+
borderless: true,
|
|
111
|
+
focusRing: true,
|
|
116
112
|
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
117
|
-
className:
|
|
113
|
+
className: utilities.cn("flex-1 order-3 flex items-center select-none z-0", vertical && "flex-col w-8", invalid ? "text-danger-500" : "text-primary-600"),
|
|
118
114
|
"data-vertical": !!vertical,
|
|
119
115
|
style: invalid ? undefined : {
|
|
120
116
|
color: color
|
|
121
117
|
},
|
|
122
118
|
children: [showLabels && (vertical ? maxDisplay : minDisplay), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
123
119
|
ref: rangerInstance.trackElRef,
|
|
124
|
-
className:
|
|
120
|
+
className: utilities.cn("flex-1 relative flex items-center", vertical ? "my-2 w-8" : "mx-2 h-8"),
|
|
125
121
|
style: {
|
|
126
122
|
height: vertical ? height : undefined
|
|
127
123
|
},
|
|
128
|
-
children: [rangerInstance.ticks.map(function (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
styles = _ref2.styles;
|
|
124
|
+
children: [rangerInstance.ticks.map(function (_ref) {
|
|
125
|
+
var key = _ref.key,
|
|
126
|
+
styles = _ref.styles;
|
|
132
127
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
133
|
-
className:
|
|
128
|
+
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"),
|
|
134
129
|
style: styles
|
|
135
130
|
}, key);
|
|
136
|
-
}), rangerInstance.segments.map(function (
|
|
137
|
-
var key =
|
|
138
|
-
styles =
|
|
139
|
-
active =
|
|
131
|
+
}), rangerInstance.segments.map(function (_ref2) {
|
|
132
|
+
var key = _ref2.key,
|
|
133
|
+
styles = _ref2.styles,
|
|
134
|
+
active = _ref2.active;
|
|
140
135
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
141
|
-
className:
|
|
136
|
+
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")),
|
|
142
137
|
style: styles
|
|
143
138
|
}, key);
|
|
144
|
-
}), rangerInstance.handles.map(function (
|
|
145
|
-
var key =
|
|
146
|
-
value =
|
|
147
|
-
props =
|
|
148
|
-
styles =
|
|
149
|
-
valueStyles =
|
|
139
|
+
}), rangerInstance.handles.map(function (_ref3) {
|
|
140
|
+
var key = _ref3.key,
|
|
141
|
+
value = _ref3.value,
|
|
142
|
+
props = _ref3.props,
|
|
143
|
+
styles = _ref3.styles,
|
|
144
|
+
valueStyles = _ref3.valueStyles;
|
|
150
145
|
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
151
146
|
children: [/*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
|
|
152
147
|
type: "button",
|
|
153
|
-
className:
|
|
148
|
+
className: utilities.cn("bg-current cursor-pointer appearance-none h-3 w-3 rounded-full z-1 absolute", "focus:ring-2 focus:ring-offset-2", vertical && "left-1/2 -ml-1.5")
|
|
154
149
|
}, props), {}, {
|
|
155
150
|
style: styles
|
|
156
151
|
})), displayValue && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
157
|
-
className:
|
|
152
|
+
className: utilities.cn("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 ? "inset-e-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:inset-e-0" : "ms-3 ltr:before:-translate-x-0.5 rtl:before:translate-x-0.5 before:inset-s-0")),
|
|
158
153
|
"data-align": key === 0 ? "start" : "end",
|
|
159
154
|
style: valueStyles,
|
|
160
155
|
children: utilities.Format.number(value, format)
|
|
@@ -164,6 +159,6 @@ var Range = function Range(_ref) {
|
|
|
164
159
|
}), showLabels && (vertical ? minDisplay : maxDisplay)]
|
|
165
160
|
})
|
|
166
161
|
}));
|
|
167
|
-
}
|
|
162
|
+
}
|
|
168
163
|
|
|
169
|
-
exports.
|
|
164
|
+
exports.RangeSlider = RangeSlider;
|