@react-fabric/form 1.0.0-beta.5 → 1.0.0-beta.52
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} +64 -29
- package/{src/input/File.module.css → css/_file.css} +21 -6
- package/css/styles.css +27 -0
- package/dist/cjs/builder/FileField.js +37 -25
- 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 +143 -0
- package/dist/cjs/builder/components/SchemaField.js +414 -0
- package/dist/cjs/form/Controller.js +46 -1
- package/dist/cjs/form/Form.js +43 -6
- 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 +11 -2
- package/dist/cjs/input/ArrayInput.js +100 -33
- package/dist/cjs/input/AvatarInput.js +17 -8
- package/dist/cjs/input/Checkbox.js +15 -5
- package/dist/cjs/input/ColorInput.js +108 -56
- package/dist/cjs/input/ColorPicker.js +11 -35
- package/dist/cjs/input/DateInput.js +195 -0
- package/dist/cjs/input/Field.js +10 -4
- package/dist/cjs/input/File.js +14 -7
- package/dist/cjs/input/Hidden.js +11 -1
- package/dist/cjs/input/Input.js +19 -7
- package/dist/cjs/input/Number.js +17 -7
- package/dist/cjs/input/Password.js +16 -8
- package/dist/cjs/input/Radio.js +11 -2
- package/dist/cjs/input/RadioGroup.js +14 -3
- package/dist/cjs/input/{Range.js → RangeSlider.js} +14 -6
- package/dist/cjs/input/Search.js +25 -16
- package/dist/cjs/input/Slider.js +10 -4
- package/dist/cjs/input/Switch.js +39 -7
- package/dist/cjs/input/Textarea.js +23 -4
- package/dist/cjs/internal/ErrorIcon.js +1 -1
- package/dist/cjs/internal/FieldWrapper.js +11 -4
- package/dist/cjs/internal/InputWrapper.js +19 -16
- package/dist/cjs/select/AutoComplete.js +19 -8
- package/dist/cjs/select/DualList.js +15 -1
- package/dist/cjs/select/List.js +45 -20
- package/dist/cjs/select/Options.js +2 -2
- package/dist/cjs/select/Select.js +14 -4
- package/dist/cjs/select/useSelect.js +10 -6
- package/dist/cjs/types/schema.js +43 -0
- package/dist/cjs/utils/eventHandlers.js +11 -5
- package/dist/cjs/utils/getColor.js +6 -0
- package/dist/esm/builder/FileField.js +39 -27
- 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 +143 -0
- package/dist/esm/builder/components/SchemaField.js +414 -0
- package/dist/esm/form/Controller.js +46 -1
- package/dist/esm/form/Form.js +43 -6
- 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 +5 -1
- package/dist/esm/input/ArrayInput.js +100 -33
- package/dist/esm/input/AvatarInput.js +17 -8
- package/dist/esm/input/Checkbox.js +15 -5
- package/dist/esm/input/ColorInput.js +110 -58
- package/dist/esm/input/ColorPicker.js +11 -35
- package/dist/esm/input/DateInput.js +195 -0
- package/dist/esm/input/Field.js +11 -5
- package/dist/esm/input/File.js +16 -9
- package/dist/esm/input/Hidden.js +11 -1
- package/dist/esm/input/Input.js +21 -9
- package/dist/esm/input/Number.js +19 -9
- package/dist/esm/input/Password.js +18 -10
- package/dist/esm/input/Radio.js +11 -2
- package/dist/esm/input/RadioGroup.js +15 -4
- package/dist/esm/input/{Range.js → RangeSlider.js} +14 -6
- package/dist/esm/input/Search.js +27 -18
- package/dist/esm/input/Slider.js +10 -4
- package/dist/esm/input/Switch.js +41 -9
- package/dist/esm/input/Textarea.js +24 -5
- package/dist/esm/internal/ErrorIcon.js +1 -1
- package/dist/esm/internal/FieldWrapper.js +11 -4
- package/dist/esm/internal/InputWrapper.js +19 -16
- package/dist/esm/select/AutoComplete.js +19 -8
- package/dist/esm/select/DualList.js +15 -1
- package/dist/esm/select/List.js +46 -21
- package/dist/esm/select/Options.js +2 -2
- package/dist/esm/select/Select.js +14 -4
- package/dist/esm/select/useSelect.js +11 -7
- package/{src/input/ColorPicker.module.css → dist/esm/types/schema.js} +18 -27
- package/dist/esm/utils/eventHandlers.js +11 -5
- package/dist/esm/utils/getColor.js +6 -1
- 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 +37 -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 +5 -2
- package/dist/types/input/ArrayInput.d.ts +78 -6
- package/dist/types/input/AvatarInput.d.ts +14 -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 +8 -0
- 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 +26 -3
- package/dist/types/input/{Range.d.ts → RangeSlider.d.ts} +10 -2
- package/dist/types/input/Search.d.ts +14 -1
- package/dist/types/input/Slider.d.ts +7 -1
- package/dist/types/input/Switch.d.ts +16 -4
- 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/Select.d.ts +9 -1
- package/dist/types/select/useSelect.d.ts +7 -6
- package/dist/types/types/index.d.ts +28 -7
- package/dist/types/types/schema.d.ts +78 -33
- package/dist/types/utils/eventHandlers.d.ts +1 -1
- package/package.json +15 -12
- package/src/builder/FileField.tsx +53 -27
- 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 +158 -0
- package/src/builder/components/SchemaField.tsx +436 -0
- package/src/form/Controller.tsx +48 -3
- package/src/form/Form.tsx +45 -5
- 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 +11 -2
- package/src/input/ArrayInput.tsx +169 -54
- package/src/input/AvatarInput.tsx +20 -8
- package/src/input/Checkbox.tsx +15 -5
- package/src/input/ColorInput.tsx +126 -69
- package/src/input/ColorPicker.tsx +12 -36
- package/src/input/DateInput.tsx +259 -0
- package/src/input/Field.tsx +15 -11
- package/src/input/File.tsx +16 -14
- package/src/input/Hidden.tsx +12 -1
- package/src/input/Input.tsx +23 -10
- package/src/input/Number.tsx +18 -10
- package/src/input/Password.tsx +19 -12
- package/src/input/Radio.tsx +11 -2
- package/src/input/RadioGroup.tsx +35 -4
- package/src/input/{Range.tsx → RangeSlider.tsx} +13 -5
- package/src/input/Search.tsx +29 -19
- package/src/input/Slider.tsx +10 -4
- package/src/input/Switch.tsx +52 -7
- package/src/input/Textarea.tsx +29 -5
- package/src/internal/ErrorIcon.tsx +1 -1
- package/src/internal/FieldWrapper.tsx +8 -4
- package/src/internal/InputWrapper.tsx +36 -20
- package/src/select/AutoComplete.tsx +12 -1
- package/src/select/DualList.tsx +19 -0
- package/src/select/List.tsx +49 -8
- package/src/select/Options.tsx +1 -1
- package/src/select/Select.tsx +21 -3
- package/src/select/useSelect.tsx +13 -5
- package/src/types/index.ts +34 -8
- package/src/types/schema.ts +96 -41
- package/src/utils/eventHandlers.ts +9 -3
- 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
|
@@ -9,9 +9,18 @@ var react = require('react');
|
|
|
9
9
|
var ErrorIcon = require('../internal/ErrorIcon.js');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
11
|
|
|
12
|
-
var _excluded = ["ref", "label", "value", "name", "checked", "invalid", "disabled", "error", "width", "icon", "iconChecked", "onChange"];
|
|
12
|
+
var _excluded = ["ref", "label", "value", "name", "checked", "invalid", "disabled", "error", "width", "icon", "iconChecked", "required", "onChange"];
|
|
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
|
+
* Checkbox component for rendering a checkbox input with label and error handling.
|
|
17
|
+
* It supports custom icons for checked and unchecked states, and handles disabled and invalid states.
|
|
18
|
+
* The component uses a deferred value to manage the checked state, ensuring smooth updates.
|
|
19
|
+
* It also provides an error icon to indicate validation errors.
|
|
20
|
+
*
|
|
21
|
+
* @param {CheckboxProps} props - The properties for the Checkbox component.
|
|
22
|
+
* @returns {JSX.Element} The rendered Checkbox component.
|
|
23
|
+
*/
|
|
15
24
|
var Checkbox = function Checkbox(_ref) {
|
|
16
25
|
var ref = _ref.ref,
|
|
17
26
|
label = _ref.label,
|
|
@@ -23,8 +32,9 @@ var Checkbox = function Checkbox(_ref) {
|
|
|
23
32
|
error = _ref.error,
|
|
24
33
|
width = _ref.width,
|
|
25
34
|
icon = _ref.icon,
|
|
26
|
-
iconChecked = _ref.iconChecked
|
|
27
|
-
|
|
35
|
+
iconChecked = _ref.iconChecked;
|
|
36
|
+
_ref.required;
|
|
37
|
+
var onChange = _ref.onChange,
|
|
28
38
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
29
39
|
var _useState = react.useState(false),
|
|
30
40
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -66,7 +76,7 @@ var Checkbox = function Checkbox(_ref) {
|
|
|
66
76
|
checked: actualValue,
|
|
67
77
|
onChange: handleChange
|
|
68
78
|
}, rest)), /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
69
|
-
className: classNames("p-0.5", actualValue && icon && !iconChecked && "bg-primary-500 text-white"),
|
|
79
|
+
className: classNames("p-0.5", actualValue && icon && !iconChecked && "bg-primary-500 text-white!"),
|
|
70
80
|
size: "1.25em",
|
|
71
81
|
color: invalid ? "danger" : "primary",
|
|
72
82
|
icon: actualValue ? iconOn : iconOff
|
|
@@ -74,7 +84,7 @@ var Checkbox = function Checkbox(_ref) {
|
|
|
74
84
|
invalid: invalid,
|
|
75
85
|
error: error
|
|
76
86
|
}), label && /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
77
|
-
className: "flex-initial leading-
|
|
87
|
+
className: "flex-initial leading-tight truncate",
|
|
78
88
|
children: label
|
|
79
89
|
})]
|
|
80
90
|
});
|
|
@@ -3,32 +3,45 @@
|
|
|
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 react$1 = require('@floating-ui/react');
|
|
6
7
|
var core = require('@react-fabric/core');
|
|
7
|
-
var utilities = require('@react-fabric/utilities');
|
|
8
|
-
var classNames = require('classnames');
|
|
9
8
|
var react = require('react');
|
|
9
|
+
var InputWrapper = require('../internal/InputWrapper.js');
|
|
10
10
|
var ColorPicker = require('./ColorPicker.js');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
|
|
13
|
-
var _excluded = ["ref", "required", "disabled", "
|
|
13
|
+
var _excluded = ["ref", "required", "disabled", "readOnly", "invalid", "error", "value", "showPicker", "defaultColor", "onBlur", "onFocus", "onChange", "noOutline"];
|
|
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
|
+
* Color input component that allows users to select a color
|
|
18
|
+
* and optionally use an eye dropper to pick a color from the screen.
|
|
19
|
+
* It uses the Floating UI library for positioning the color picker.
|
|
20
|
+
* It also provides a button to clear the selected color.
|
|
21
|
+
*
|
|
22
|
+
* This component is a wrapper around the `ColorPicker` component
|
|
23
|
+
* and provides additional functionality such as showing an eye dropper
|
|
24
|
+
* and handling the color selection state.
|
|
25
|
+
*
|
|
26
|
+
* @param {ColorInputProps} props - The properties for the ColorInput component.
|
|
27
|
+
* @returns {JSX.Element} - The rendered ColorInput component.
|
|
28
|
+
*/
|
|
16
29
|
var ColorInput = function ColorInput(_ref) {
|
|
17
30
|
_ref.ref;
|
|
18
|
-
_ref.required
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
_ref.invalid
|
|
22
|
-
_ref.error
|
|
23
|
-
|
|
31
|
+
var required = _ref.required,
|
|
32
|
+
disabled = _ref.disabled,
|
|
33
|
+
readOnly = _ref.readOnly,
|
|
34
|
+
invalid = _ref.invalid,
|
|
35
|
+
error = _ref.error,
|
|
36
|
+
value = _ref.value,
|
|
24
37
|
showPicker = _ref.showPicker,
|
|
25
38
|
_ref$defaultColor = _ref.defaultColor,
|
|
26
39
|
defaultColor = _ref$defaultColor === void 0 ? "" : _ref$defaultColor,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
onChange = _ref.onChange
|
|
30
|
-
|
|
31
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
40
|
+
onBlur = _ref.onBlur,
|
|
41
|
+
onFocus = _ref.onFocus,
|
|
42
|
+
onChange = _ref.onChange;
|
|
43
|
+
_ref.noOutline;
|
|
44
|
+
var rest = _objectWithoutProperties(_ref, _excluded);
|
|
32
45
|
var _useState = react.useState(""),
|
|
33
46
|
_useState2 = _slicedToArray(_useState, 2),
|
|
34
47
|
actualValue = _useState2[0],
|
|
@@ -40,61 +53,100 @@ var ColorInput = function ColorInput(_ref) {
|
|
|
40
53
|
var handleChange = react.useCallback(function (e) {
|
|
41
54
|
setActualValue(e !== null && e !== void 0 ? e : defaultColor);
|
|
42
55
|
onChange != null && react.startTransition(function () {
|
|
43
|
-
return onChange(e);
|
|
56
|
+
return onChange(e !== null && e !== void 0 ? e : null);
|
|
44
57
|
});
|
|
45
58
|
}, [onChange]);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
59
|
+
var arrowRef = react.useRef(null);
|
|
60
|
+
var _useState3 = react.useState(false),
|
|
61
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
62
|
+
isOpen = _useState4[0],
|
|
63
|
+
setIsOpen = _useState4[1];
|
|
64
|
+
var _useFloating = react$1.useFloating({
|
|
65
|
+
open: isOpen,
|
|
66
|
+
onOpenChange: function onOpenChange(open, _, reason) {
|
|
67
|
+
if (reason === "reference-press") return;
|
|
68
|
+
setIsOpen(open);
|
|
69
|
+
},
|
|
70
|
+
strategy: "fixed",
|
|
71
|
+
placement: "bottom",
|
|
72
|
+
whileElementsMounted: react$1.autoUpdate,
|
|
73
|
+
middleware: [react$1.shift({
|
|
74
|
+
padding: 8
|
|
75
|
+
}), react$1.flip(), react$1.offset(9), react$1.arrow({
|
|
76
|
+
element: arrowRef
|
|
77
|
+
})]
|
|
78
|
+
}),
|
|
79
|
+
refs = _useFloating.refs,
|
|
80
|
+
floatingStyles = _useFloating.floatingStyles,
|
|
81
|
+
context = _useFloating.context;
|
|
82
|
+
var click = react$1.useClick(context, {
|
|
83
|
+
enabled: !disabled && !readOnly
|
|
84
|
+
});
|
|
85
|
+
var dismiss = react$1.useDismiss(context, {
|
|
86
|
+
referencePress: true
|
|
87
|
+
});
|
|
88
|
+
var _useInteractions = react$1.useInteractions([dismiss, click]),
|
|
89
|
+
getReferenceProps = _useInteractions.getReferenceProps,
|
|
90
|
+
getFloatingProps = _useInteractions.getFloatingProps;
|
|
91
|
+
return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
92
|
+
showClear: actualValue !== defaultColor && !disabled && !readOnly,
|
|
93
|
+
onClear: handleChange,
|
|
94
|
+
invalid: invalid,
|
|
95
|
+
readOnly: readOnly,
|
|
96
|
+
disabled: disabled,
|
|
97
|
+
required: required,
|
|
98
|
+
error: error
|
|
99
|
+
}, rest), {}, {
|
|
100
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("button", _objectSpread(_objectSpread({
|
|
101
|
+
"data-ref": "button",
|
|
102
|
+
className: "flex-1 flex items-center",
|
|
103
|
+
ref: refs.setReference
|
|
104
|
+
}, getReferenceProps({
|
|
105
|
+
onBlur: onBlur,
|
|
106
|
+
onFocus: onFocus
|
|
107
|
+
})), {}, {
|
|
108
|
+
"data-inner-clickable": "true",
|
|
109
|
+
"data-dropdown-open": isOpen ? true : undefined,
|
|
110
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
111
|
+
role: "none",
|
|
112
|
+
className: "h-[1.5em] min-w-[1.5em] flex-1 flex items-center justify-center self-stretch cursor-pointer m-[0.25em] rounded outline outline-tint-100",
|
|
113
|
+
style: {
|
|
114
|
+
backgroundColor: actualValue,
|
|
115
|
+
opacity: disabled ? 0.65 : 1,
|
|
116
|
+
pointerEvents: disabled ? "none" : undefined
|
|
117
|
+
},
|
|
118
|
+
children: !actualValue && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
119
|
+
size: "md",
|
|
120
|
+
className: "text-muted",
|
|
121
|
+
icon: core.CoreIcons.colorSwatch
|
|
74
122
|
})
|
|
75
|
-
})
|
|
123
|
+
})
|
|
124
|
+
})), isOpen && /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
|
|
125
|
+
ref: refs.setFloating,
|
|
126
|
+
style: _objectSpread({
|
|
127
|
+
zIndex: "var(--z-popover)"
|
|
128
|
+
}, floatingStyles),
|
|
129
|
+
"data-ref": "dropdownBody"
|
|
130
|
+
}, getFloatingProps()), {}, {
|
|
131
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(ColorPicker.ColorPicker, _objectSpread(_objectSpread({}, rest), {}, {
|
|
76
132
|
onChange: handleChange,
|
|
77
133
|
defaultColor: defaultColor,
|
|
78
134
|
value: actualValue
|
|
79
|
-
}))
|
|
80
|
-
|
|
135
|
+
})), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingArrow, {
|
|
136
|
+
ref: arrowRef,
|
|
137
|
+
context: context,
|
|
138
|
+
strokeWidth: 0.5,
|
|
139
|
+
className: "fill-base stroke-muted"
|
|
140
|
+
})]
|
|
141
|
+
})), !disabled && showPicker && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
81
142
|
icon: core.CoreIcons.colorPicker,
|
|
82
143
|
onClick: function onClick() {
|
|
83
144
|
return window.EyeDropper && new window.EyeDropper().open().then(function (resp) {
|
|
84
145
|
return handleChange(resp.sRGBHex);
|
|
85
146
|
});
|
|
86
147
|
}
|
|
87
|
-
}), decorateEnd && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
88
|
-
className: classNames("text-muted leading-none flex-content", utilities.isString(decorateEnd) && "px-2"),
|
|
89
|
-
children: decorateEnd
|
|
90
|
-
}), !disabled && allowClear && actualValue !== defaultColor && /*#__PURE__*/jsxRuntime.jsx(core.Icon, {
|
|
91
|
-
icon: core.CoreIcons.close,
|
|
92
|
-
onClick: function onClick() {
|
|
93
|
-
return handleChange();
|
|
94
|
-
},
|
|
95
|
-
className: classNames("text-tint-500 hover:text-tint-700 p-[0.25em] flex-content")
|
|
96
148
|
})]
|
|
97
|
-
});
|
|
149
|
+
}));
|
|
98
150
|
};
|
|
99
151
|
|
|
100
152
|
exports.ColorInput = ColorInput;
|
|
@@ -5,13 +5,22 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
|
5
5
|
var Color = require('color');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var reactColor = require('react-color');
|
|
8
|
-
var ColorPicker_module = require('./ColorPicker.module.css');
|
|
9
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
9
|
|
|
11
10
|
var _excluded = ["a"],
|
|
12
11
|
_excluded2 = ["a"];
|
|
13
12
|
var DEFAULT_SWATCHES = [Color("#d7323a").mix(Color("#171a1c"), 0.5).hex(), Color("#ff781c").mix(Color("#171a1c"), 0.5).hex(), Color("#f7b731").mix(Color("#171a1c"), 0.5).hex(), Color("#88ab1b").mix(Color("#171a1c"), 0.5).hex(), Color("#22aa85").mix(Color("#171a1c"), 0.5).hex(), Color("#399bec").mix(Color("#171a1c"), 0.5).hex(), Color("#4862c8").mix(Color("#171a1c"), 0.5).hex(), Color("#aa66cf").mix(Color("#171a1c"), 0.5).hex(), Color("#f43f7b").mix(Color("#171a1c"), 0.5).hex(), Color("#a37f4f").mix(Color("#171a1c"), 0.5).hex(), "#d7323a", "#ff781c", "#f7b731", "#88ab1b", "#22aa85", "#399bec", "#4862c8", "#aa66cf", "#f43f7b", "#a37f4f", Color("#d7323a").mix(Color("#f1f3f4"), 0.5).hex(), Color("#ff781c").mix(Color("#f1f3f4"), 0.5).hex(), Color("#f7b731").mix(Color("#f1f3f4"), 0.5).hex(), Color("#88ab1b").mix(Color("#f1f3f4"), 0.5).hex(), Color("#22aa85").mix(Color("#f1f3f4"), 0.5).hex(), Color("#399bec").mix(Color("#f1f3f4"), 0.5).hex(), Color("#4862c8").mix(Color("#f1f3f4"), 0.5).hex(), Color("#aa66cf").mix(Color("#f1f3f4"), 0.5).hex(), Color("#f43f7b").mix(Color("#f1f3f4"), 0.5).hex(), Color("#a37f4f").mix(Color("#f1f3f4"), 0.5).hex(), "#171a1c", "#2d3439", "#444e55", "#5b6971", "#71838e", "#86959e", "#9ca8b0", "#b8c1c6", "#d5dadd", "#f1f3f4"];
|
|
14
13
|
|
|
14
|
+
/**
|
|
15
|
+
* ColorPicker component allows users to select a color using a color picker UI.
|
|
16
|
+
* It supports swatches, alpha transparency, and custom styles.
|
|
17
|
+
* The component uses the `react-color` library for the color picker functionality.
|
|
18
|
+
*
|
|
19
|
+
* @param {ColorProps} props - The properties for the ColorPicker component.
|
|
20
|
+
* @returns {JSX.Element} The rendered ColorPicker component.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://react-color.github.io/react-color/} for more details on the color picker library.
|
|
23
|
+
*/
|
|
15
24
|
// eslint-disable-next-line react/display-name
|
|
16
25
|
var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
|
|
17
26
|
var value = _ref.value,
|
|
@@ -37,16 +46,13 @@ var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
|
|
|
37
46
|
}, [onChange]);
|
|
38
47
|
return /*#__PURE__*/jsxRuntime.jsx(reactColor.SketchPicker, {
|
|
39
48
|
width: "16rem",
|
|
40
|
-
className:
|
|
49
|
+
className: "fabric-colorPicker",
|
|
41
50
|
styles: {
|
|
42
51
|
"default": {
|
|
43
52
|
hue: {
|
|
44
|
-
borderRadius: "99px",
|
|
45
53
|
boxShadow: "0 0 1px 1px var(--color-shadow)"
|
|
46
54
|
},
|
|
47
55
|
alpha: {
|
|
48
|
-
height: "1rem",
|
|
49
|
-
borderRadius: "99px",
|
|
50
56
|
backgroundColor: "var(--fabric-bg)",
|
|
51
57
|
boxShadow: "0 0 1px 1px var(--color-shadow)"
|
|
52
58
|
},
|
|
@@ -63,36 +69,6 @@ var ColorPicker = /*#__PURE__*/react.memo(function (_ref) {
|
|
|
63
69
|
backgroundColor: "var(--fabric-bg)",
|
|
64
70
|
boxShadow: "0 0 0 1px var(--color-shadow), 0 0 8px var(--fabric-shadow)"
|
|
65
71
|
},
|
|
66
|
-
Alpha: {
|
|
67
|
-
alpha: {
|
|
68
|
-
paddingRight: "calc(1rem - 2px)"
|
|
69
|
-
},
|
|
70
|
-
slider: {
|
|
71
|
-
width: "calc(1rem - 2px)",
|
|
72
|
-
borderRadius: "99px",
|
|
73
|
-
height: "calc(1rem - 2px)",
|
|
74
|
-
transform: "none"
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
Hue: {
|
|
78
|
-
hue: {
|
|
79
|
-
paddingRight: "calc(1rem - 2px)"
|
|
80
|
-
},
|
|
81
|
-
slider: {
|
|
82
|
-
width: "calc(1rem - 2px)",
|
|
83
|
-
borderRadius: "99px",
|
|
84
|
-
height: "calc(1rem - 2px)",
|
|
85
|
-
transform: "none"
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
Saturation: {
|
|
89
|
-
circle: {
|
|
90
|
-
width: "0.5rem",
|
|
91
|
-
borderRadius: "99px",
|
|
92
|
-
height: "0.5rem",
|
|
93
|
-
transform: "translate(-0.25rem, -0.25rem)"
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
72
|
checkboard: {
|
|
97
73
|
white: "transparent",
|
|
98
74
|
black: "red"
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
5
|
+
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
|
+
var react$1 = require('@floating-ui/react');
|
|
7
|
+
var date = require('@react-fabric/date');
|
|
8
|
+
var utilities = require('@react-fabric/utilities');
|
|
9
|
+
var classNames = require('classnames');
|
|
10
|
+
var react = require('react');
|
|
11
|
+
var InputWrapper = require('../internal/InputWrapper.js');
|
|
12
|
+
var eventHandlers = require('../utils/eventHandlers.js');
|
|
13
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
14
|
+
|
|
15
|
+
var _excluded = ["ref", "name", "value", "invalid", "readOnly", "disabled", "required", "placeholder", "autoFocus", "error", "type", "onBlur", "onFocus", "onChange", "onEnterPressed", "format", "min", "max"];
|
|
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
|
+
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
|
+
* Date input component that allows users to select a date or datetime.
|
|
20
|
+
* It uses the Floating UI library for positioning the date picker.
|
|
21
|
+
* It also provides a button to clear the selected date.
|
|
22
|
+
* The component supports both date and datetime types, with appropriate formatting.
|
|
23
|
+
*
|
|
24
|
+
* @param {DateProps} props - The properties for the DateInput component.
|
|
25
|
+
* @returns {JSX.Element} - The rendered DateInput component.
|
|
26
|
+
*/
|
|
27
|
+
var DateInput = function DateInput(_ref) {
|
|
28
|
+
var ref = _ref.ref,
|
|
29
|
+
name = _ref.name,
|
|
30
|
+
value = _ref.value,
|
|
31
|
+
invalid = _ref.invalid,
|
|
32
|
+
readOnly = _ref.readOnly,
|
|
33
|
+
disabled = _ref.disabled,
|
|
34
|
+
required = _ref.required,
|
|
35
|
+
placeholder = _ref.placeholder,
|
|
36
|
+
autoFocus = _ref.autoFocus,
|
|
37
|
+
error = _ref.error,
|
|
38
|
+
_ref$type = _ref.type,
|
|
39
|
+
type = _ref$type === void 0 ? "date" : _ref$type,
|
|
40
|
+
onBlur = _ref.onBlur,
|
|
41
|
+
onFocus = _ref.onFocus,
|
|
42
|
+
onChange = _ref.onChange,
|
|
43
|
+
onEnterPressed = _ref.onEnterPressed;
|
|
44
|
+
_ref.format;
|
|
45
|
+
var min = _ref.min,
|
|
46
|
+
max = _ref.max,
|
|
47
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
48
|
+
var _useState = react.useState(""),
|
|
49
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
50
|
+
actualValue = _useState2[0],
|
|
51
|
+
setActualValue = _useState2[1];
|
|
52
|
+
var _useState3 = react.useState(""),
|
|
53
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
54
|
+
inputValue = _useState4[0],
|
|
55
|
+
setInputValue = _useState4[1];
|
|
56
|
+
var deferred = react.useDeferredValue(value);
|
|
57
|
+
var inputFormat = react.useMemo(function () {
|
|
58
|
+
return type === "datetime" ? "yyyy-MM-dd HH:mm" : "yyyy-MM-dd";
|
|
59
|
+
}, [type]);
|
|
60
|
+
react.useEffect(function () {
|
|
61
|
+
setActualValue(deferred !== null && deferred !== void 0 ? deferred : "");
|
|
62
|
+
setInputValue(deferred ? date.DateUtil.format(deferred, inputFormat) : "");
|
|
63
|
+
}, [deferred, inputFormat]);
|
|
64
|
+
var handleEnterPressed = eventHandlers.useHandleEnter(onEnterPressed);
|
|
65
|
+
var handleChange = react.useCallback(function (e) {
|
|
66
|
+
var value = e === null || e === void 0 ? void 0 : e.currentTarget.value;
|
|
67
|
+
if (value) {
|
|
68
|
+
var _parsed$toISOString;
|
|
69
|
+
var parsed = date.DateUtil.parseDate(value);
|
|
70
|
+
setActualValue(parsed === null || parsed === void 0 || (_parsed$toISOString = parsed.toISOString) === null || _parsed$toISOString === void 0 ? void 0 : _parsed$toISOString.call(parsed));
|
|
71
|
+
setInputValue(date.DateUtil.format(parsed, inputFormat));
|
|
72
|
+
onChange != null && react.startTransition(function () {
|
|
73
|
+
var _parsed$toISOString2;
|
|
74
|
+
return onChange(parsed === null || parsed === void 0 || (_parsed$toISOString2 = parsed.toISOString) === null || _parsed$toISOString2 === void 0 ? void 0 : _parsed$toISOString2.call(parsed));
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
setActualValue("");
|
|
78
|
+
setInputValue("");
|
|
79
|
+
onChange != null && react.startTransition(function () {
|
|
80
|
+
return onChange(null);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, [onChange, inputFormat]);
|
|
84
|
+
var handleDateChange = react.useCallback(function (value) {
|
|
85
|
+
if (value) {
|
|
86
|
+
var _parsed$toISOString3;
|
|
87
|
+
var parsed = date.DateUtil.parseDate(value);
|
|
88
|
+
setActualValue(parsed === null || parsed === void 0 || (_parsed$toISOString3 = parsed.toISOString) === null || _parsed$toISOString3 === void 0 ? void 0 : _parsed$toISOString3.call(parsed));
|
|
89
|
+
setInputValue(date.DateUtil.format(parsed, inputFormat));
|
|
90
|
+
onChange != null && react.startTransition(function () {
|
|
91
|
+
var _parsed$toISOString4;
|
|
92
|
+
return onChange(parsed === null || parsed === void 0 || (_parsed$toISOString4 = parsed.toISOString) === null || _parsed$toISOString4 === void 0 ? void 0 : _parsed$toISOString4.call(parsed));
|
|
93
|
+
});
|
|
94
|
+
} else {
|
|
95
|
+
setActualValue("");
|
|
96
|
+
setInputValue("");
|
|
97
|
+
onChange != null && react.startTransition(function () {
|
|
98
|
+
return onChange(null);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}, [onChange, inputFormat]);
|
|
102
|
+
var arrowRef = react.useRef(null);
|
|
103
|
+
var _useState5 = react.useState(false),
|
|
104
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
105
|
+
isOpen = _useState6[0],
|
|
106
|
+
setIsOpen = _useState6[1];
|
|
107
|
+
var _useFloating = react$1.useFloating({
|
|
108
|
+
open: isOpen,
|
|
109
|
+
onOpenChange: function onOpenChange(open, _, reason) {
|
|
110
|
+
console.log(reason);
|
|
111
|
+
if (reason === "reference-press") return;
|
|
112
|
+
setIsOpen(open);
|
|
113
|
+
},
|
|
114
|
+
strategy: "fixed",
|
|
115
|
+
placement: "bottom-start",
|
|
116
|
+
whileElementsMounted: react$1.autoUpdate,
|
|
117
|
+
middleware: [react$1.shift({
|
|
118
|
+
padding: 8
|
|
119
|
+
}), react$1.flip(), react$1.offset(9), react$1.arrow({
|
|
120
|
+
element: arrowRef
|
|
121
|
+
})]
|
|
122
|
+
}),
|
|
123
|
+
refs = _useFloating.refs,
|
|
124
|
+
floatingStyles = _useFloating.floatingStyles,
|
|
125
|
+
context = _useFloating.context;
|
|
126
|
+
var focus = react$1.useFocus(context, {
|
|
127
|
+
enabled: !disabled
|
|
128
|
+
});
|
|
129
|
+
var click = react$1.useClick(context, {
|
|
130
|
+
enabled: !disabled,
|
|
131
|
+
toggle: false
|
|
132
|
+
});
|
|
133
|
+
var dismiss = react$1.useDismiss(context, {
|
|
134
|
+
referencePress: true
|
|
135
|
+
});
|
|
136
|
+
var _useInteractions = react$1.useInteractions([dismiss, click, focus]),
|
|
137
|
+
getReferenceProps = _useInteractions.getReferenceProps,
|
|
138
|
+
getFloatingProps = _useInteractions.getFloatingProps;
|
|
139
|
+
return /*#__PURE__*/jsxRuntime.jsxs(InputWrapper.InputWrapper, _objectSpread(_objectSpread({
|
|
140
|
+
showClear: !!actualValue && !disabled && !readOnly,
|
|
141
|
+
onClear: handleChange,
|
|
142
|
+
invalid: invalid,
|
|
143
|
+
readOnly: readOnly,
|
|
144
|
+
disabled: disabled,
|
|
145
|
+
required: required,
|
|
146
|
+
error: error
|
|
147
|
+
}, rest), {}, {
|
|
148
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("input", _objectSpread(_objectSpread({
|
|
149
|
+
className: classNames("appearance-none bg-transparent py-1 px-2 flex-1 border-none outline-none ring-0 peer", !value && "empty"),
|
|
150
|
+
"aria-invalid": invalid,
|
|
151
|
+
"aria-disabled": disabled,
|
|
152
|
+
"aria-readonly": readOnly,
|
|
153
|
+
"aria-errormessage": error,
|
|
154
|
+
placeholder: placeholder,
|
|
155
|
+
disabled: disabled,
|
|
156
|
+
readOnly: readOnly,
|
|
157
|
+
"data-testid": name,
|
|
158
|
+
name: name,
|
|
159
|
+
size: 1,
|
|
160
|
+
type: type === "datetime" ? "datetime-local" : "date",
|
|
161
|
+
autoComplete: "off",
|
|
162
|
+
autoFocus: autoFocus,
|
|
163
|
+
value: inputValue,
|
|
164
|
+
ref: utilities.mergeRefs(ref, refs.setReference)
|
|
165
|
+
}, getReferenceProps({
|
|
166
|
+
onBlur: onBlur,
|
|
167
|
+
onFocus: onFocus
|
|
168
|
+
})), {}, {
|
|
169
|
+
onChange: handleChange,
|
|
170
|
+
onKeyDown: handleEnterPressed
|
|
171
|
+
})), isOpen && /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
|
|
172
|
+
ref: refs.setFloating,
|
|
173
|
+
style: _objectSpread({
|
|
174
|
+
zIndex: "var(--z-popover)"
|
|
175
|
+
}, floatingStyles),
|
|
176
|
+
className: "shadow-lg bg-base ring-1 ring-tint-100",
|
|
177
|
+
"data-ref": "dropdownBody"
|
|
178
|
+
}, getFloatingProps()), {}, {
|
|
179
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(date.DatePanel, {
|
|
180
|
+
withTime: type === "datetime",
|
|
181
|
+
value: actualValue,
|
|
182
|
+
max: max,
|
|
183
|
+
min: min,
|
|
184
|
+
onChange: handleDateChange
|
|
185
|
+
}), /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingArrow, {
|
|
186
|
+
ref: arrowRef,
|
|
187
|
+
context: context,
|
|
188
|
+
strokeWidth: 0.5,
|
|
189
|
+
className: "fill-base stroke-muted"
|
|
190
|
+
})]
|
|
191
|
+
}))]
|
|
192
|
+
}));
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
exports.DateInput = DateInput;
|
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,6 +27,14 @@ 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,
|
|
32
40
|
onChange = _ref.onChange,
|
|
@@ -36,7 +44,9 @@ var HiddenInput = function HiddenInput(_ref) {
|
|
|
36
44
|
value = _ref$value === void 0 ? "" : _ref$value,
|
|
37
45
|
name = _ref.name;
|
|
38
46
|
react.useEffect(function () {
|
|
39
|
-
|
|
47
|
+
hiddenValue && setTimeout(function () {
|
|
48
|
+
onChange === null || onChange === void 0 || onChange(hiddenValue);
|
|
49
|
+
}, 50);
|
|
40
50
|
}, [hiddenValue]);
|
|
41
51
|
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
42
52
|
children: [/*#__PURE__*/jsxRuntime.jsx("input", {
|