@hitachivantara/uikit-react-core 5.82.2 → 5.82.3
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/dist/cjs/BaseInput/BaseInput.cjs +11 -12
- package/dist/cjs/BaseInput/validations.cjs +3 -3
- package/dist/cjs/Calendar/Calendar.cjs +14 -15
- package/dist/cjs/Calendar/CalendarHeader/CalendarHeader.cjs +8 -10
- package/dist/cjs/CheckBox/CheckBox.cjs +10 -10
- package/dist/cjs/CheckBoxGroup/CheckBoxGroup.cjs +8 -8
- package/dist/cjs/ColorPicker/ColorPicker.cjs +6 -9
- package/dist/cjs/DatePicker/DatePicker.cjs +15 -15
- package/dist/cjs/Dropdown/Dropdown.cjs +9 -9
- package/dist/cjs/FileUploader/DropZone/DropZone.cjs +2 -2
- package/dist/cjs/FilterGroup/FilterGroup.cjs +6 -6
- package/dist/cjs/{Forms → FormElement}/Adornment/Adornment.cjs +9 -10
- package/dist/cjs/{Forms → FormElement}/CharCounter/CharCounter.cjs +15 -15
- package/dist/cjs/FormElement/FormElement.cjs +35 -0
- package/dist/cjs/{Forms → FormElement}/InfoMessage/InfoMessage.cjs +8 -8
- package/dist/cjs/{Forms → FormElement}/Label/Label.cjs +13 -13
- package/dist/cjs/{Forms → FormElement}/Suggestions/Suggestions.cjs +6 -6
- package/dist/cjs/{Forms → FormElement}/WarningText/WarningText.cjs +5 -5
- package/dist/cjs/FormElement/context.cjs +11 -0
- package/dist/cjs/{Forms/FormElement/utils/FormUtils.cjs → FormElement/utils.cjs} +19 -11
- package/dist/cjs/Input/Input.cjs +17 -17
- package/dist/cjs/Input/Input.styles.cjs +2 -2
- package/dist/cjs/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +1 -1
- package/dist/cjs/Radio/Radio.cjs +10 -13
- package/dist/cjs/RadioGroup/RadioGroup.cjs +7 -7
- package/dist/cjs/Select/Select.cjs +4 -4
- package/dist/cjs/SelectionList/SelectionList.cjs +7 -7
- package/dist/cjs/Slider/Slider.cjs +10 -10
- package/dist/cjs/Slider/utils.cjs +7 -7
- package/dist/cjs/Switch/Switch.cjs +9 -12
- package/dist/cjs/TagsInput/TagsInput.cjs +17 -17
- package/dist/cjs/TagsInput/TagsInput.styles.cjs +1 -1
- package/dist/cjs/TextArea/TextArea.cjs +17 -17
- package/dist/cjs/TimePicker/TimePicker.cjs +7 -7
- package/dist/cjs/index.cjs +15 -36
- package/dist/esm/BaseInput/BaseInput.js +5 -6
- package/dist/esm/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/BaseInput/validations.js +3 -3
- package/dist/esm/BaseInput/validations.js.map +1 -1
- package/dist/esm/Calendar/Calendar.js +13 -14
- package/dist/esm/Calendar/Calendar.js.map +1 -1
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js +6 -8
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/esm/CheckBox/CheckBox.js +9 -9
- package/dist/esm/CheckBox/CheckBox.js.map +1 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.js +8 -8
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/ColorPicker/ColorPicker.js +6 -9
- package/dist/esm/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/esm/DatePicker/DatePicker.js +9 -9
- package/dist/esm/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/Dropdown/Dropdown.js +8 -8
- package/dist/esm/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/FileUploader/DropZone/DropZone.js +2 -2
- package/dist/esm/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/esm/FilterGroup/FilterContent/FilterContent.js.map +1 -1
- package/dist/esm/FilterGroup/FilterGroup.js +6 -6
- package/dist/esm/FilterGroup/FilterGroup.js.map +1 -1
- package/dist/esm/{Forms → FormElement}/Adornment/Adornment.js +8 -9
- package/dist/esm/FormElement/Adornment/Adornment.js.map +1 -0
- package/dist/esm/FormElement/Adornment/Adornment.styles.js.map +1 -0
- package/dist/esm/{Forms → FormElement}/CharCounter/CharCounter.js +15 -15
- package/dist/esm/FormElement/CharCounter/CharCounter.js.map +1 -0
- package/dist/esm/FormElement/CharCounter/CharCounter.styles.js.map +1 -0
- package/dist/esm/FormElement/FormElement.js +36 -0
- package/dist/esm/FormElement/FormElement.js.map +1 -0
- package/dist/esm/FormElement/FormElement.styles.js.map +1 -0
- package/dist/esm/{Forms → FormElement}/InfoMessage/InfoMessage.js +8 -8
- package/dist/esm/FormElement/InfoMessage/InfoMessage.js.map +1 -0
- package/dist/esm/FormElement/InfoMessage/InfoMessage.styles.js.map +1 -0
- package/dist/esm/{Forms → FormElement}/Label/Label.js +12 -12
- package/dist/esm/FormElement/Label/Label.js.map +1 -0
- package/dist/esm/FormElement/Label/Label.styles.js.map +1 -0
- package/dist/esm/{Forms → FormElement}/Suggestions/Suggestions.js +6 -6
- package/dist/esm/FormElement/Suggestions/Suggestions.js.map +1 -0
- package/dist/esm/FormElement/Suggestions/Suggestions.styles.js.map +1 -0
- package/dist/esm/{Forms → FormElement}/WarningText/WarningText.js +5 -5
- package/dist/esm/FormElement/WarningText/WarningText.js.map +1 -0
- package/dist/esm/FormElement/WarningText/WarningText.styles.js.map +1 -0
- package/dist/esm/FormElement/context.js +11 -0
- package/dist/esm/FormElement/context.js.map +1 -0
- package/dist/esm/{Forms/FormElement/utils/FormUtils.js → FormElement/utils.js} +21 -11
- package/dist/esm/FormElement/utils.js.map +1 -0
- package/dist/esm/Input/Input.js +21 -21
- package/dist/esm/Input/Input.js.map +1 -1
- package/dist/esm/Input/Input.styles.js +2 -2
- package/dist/esm/Input/Input.styles.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -1
- package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
- package/dist/esm/Radio/Radio.js +9 -12
- package/dist/esm/Radio/Radio.js.map +1 -1
- package/dist/esm/RadioGroup/RadioGroup.js +7 -7
- package/dist/esm/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/Select/Select.js +4 -4
- package/dist/esm/Select/Select.js.map +1 -1
- package/dist/esm/SelectionList/SelectionList.js +7 -7
- package/dist/esm/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/Slider/Slider.js +10 -10
- package/dist/esm/Slider/Slider.js.map +1 -1
- package/dist/esm/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/esm/Slider/utils.js +7 -7
- package/dist/esm/Slider/utils.js.map +1 -1
- package/dist/esm/Switch/Switch.js +8 -11
- package/dist/esm/Switch/Switch.js.map +1 -1
- package/dist/esm/TagsInput/TagsInput.js +19 -19
- package/dist/esm/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/TagsInput/TagsInput.styles.js +1 -1
- package/dist/esm/TagsInput/TagsInput.styles.js.map +1 -1
- package/dist/esm/TextArea/TextArea.js +19 -19
- package/dist/esm/TextArea/TextArea.js.map +1 -1
- package/dist/esm/TimePicker/TimePicker.js +7 -7
- package/dist/esm/TimePicker/TimePicker.js.map +1 -1
- package/dist/esm/index.js +14 -35
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +66 -143
- package/package.json +2 -2
- package/dist/cjs/Forms/FormElement/FormElement.cjs +0 -44
- package/dist/cjs/Forms/FormElement/context/FormElementContext.cjs +0 -12
- package/dist/cjs/Forms/FormElement/context/FormElementDescriptorsContext.cjs +0 -12
- package/dist/cjs/Forms/FormElement/context/FormElementValueContext.cjs +0 -12
- package/dist/cjs/Forms/FormElement/validationStates.cjs +0 -12
- package/dist/esm/Forms/Adornment/Adornment.js.map +0 -1
- package/dist/esm/Forms/Adornment/Adornment.styles.js.map +0 -1
- package/dist/esm/Forms/CharCounter/CharCounter.js.map +0 -1
- package/dist/esm/Forms/CharCounter/CharCounter.styles.js.map +0 -1
- package/dist/esm/Forms/FormElement/FormElement.js +0 -45
- package/dist/esm/Forms/FormElement/FormElement.js.map +0 -1
- package/dist/esm/Forms/FormElement/FormElement.styles.js.map +0 -1
- package/dist/esm/Forms/FormElement/context/FormElementContext.js +0 -10
- package/dist/esm/Forms/FormElement/context/FormElementContext.js.map +0 -1
- package/dist/esm/Forms/FormElement/context/FormElementDescriptorsContext.js +0 -10
- package/dist/esm/Forms/FormElement/context/FormElementDescriptorsContext.js.map +0 -1
- package/dist/esm/Forms/FormElement/context/FormElementValueContext.js +0 -10
- package/dist/esm/Forms/FormElement/context/FormElementValueContext.js.map +0 -1
- package/dist/esm/Forms/FormElement/utils/FormUtils.js.map +0 -1
- package/dist/esm/Forms/FormElement/validationStates.js +0 -12
- package/dist/esm/Forms/FormElement/validationStates.js.map +0 -1
- package/dist/esm/Forms/InfoMessage/InfoMessage.js.map +0 -1
- package/dist/esm/Forms/InfoMessage/InfoMessage.styles.js.map +0 -1
- package/dist/esm/Forms/Label/Label.js.map +0 -1
- package/dist/esm/Forms/Label/Label.styles.js.map +0 -1
- package/dist/esm/Forms/Suggestions/Suggestions.js.map +0 -1
- package/dist/esm/Forms/Suggestions/Suggestions.styles.js.map +0 -1
- package/dist/esm/Forms/WarningText/WarningText.js.map +0 -1
- package/dist/esm/Forms/WarningText/WarningText.styles.js.map +0 -1
- /package/dist/cjs/{Forms → FormElement}/Adornment/Adornment.styles.cjs +0 -0
- /package/dist/cjs/{Forms → FormElement}/CharCounter/CharCounter.styles.cjs +0 -0
- /package/dist/cjs/{Forms/FormElement → FormElement}/FormElement.styles.cjs +0 -0
- /package/dist/cjs/{Forms → FormElement}/InfoMessage/InfoMessage.styles.cjs +0 -0
- /package/dist/cjs/{Forms → FormElement}/Label/Label.styles.cjs +0 -0
- /package/dist/cjs/{Forms → FormElement}/Suggestions/Suggestions.styles.cjs +0 -0
- /package/dist/cjs/{Forms → FormElement}/WarningText/WarningText.styles.cjs +0 -0
- /package/dist/esm/{Forms → FormElement}/Adornment/Adornment.styles.js +0 -0
- /package/dist/esm/{Forms → FormElement}/CharCounter/CharCounter.styles.js +0 -0
- /package/dist/esm/{Forms/FormElement → FormElement}/FormElement.styles.js +0 -0
- /package/dist/esm/{Forms → FormElement}/InfoMessage/InfoMessage.styles.js +0 -0
- /package/dist/esm/{Forms → FormElement}/Label/Label.styles.js +0 -0
- /package/dist/esm/{Forms → FormElement}/Suggestions/Suggestions.styles.js +0 -0
- /package/dist/esm/{Forms → FormElement}/WarningText/WarningText.styles.js +0 -0
|
@@ -4,15 +4,15 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
|
|
6
6
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
7
|
-
const validationStates = require("../Forms/FormElement/validationStates.cjs");
|
|
8
7
|
const useControlled = require("../hooks/useControlled.cjs");
|
|
9
8
|
const useUniqueId = require("../hooks/useUniqueId.cjs");
|
|
10
9
|
const setId = require("../utils/setId.cjs");
|
|
11
10
|
const Switch_styles = require("./Switch.styles.cjs");
|
|
12
11
|
const BaseSwitch = require("../BaseSwitch/BaseSwitch.cjs");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
12
|
+
const utils = require("../FormElement/utils.cjs");
|
|
13
|
+
const FormElement = require("../FormElement/FormElement.cjs");
|
|
14
|
+
const Label = require("../FormElement/Label/Label.cjs");
|
|
15
|
+
const WarningText = require("../FormElement/WarningText/WarningText.cjs");
|
|
16
16
|
const isSemantical = (color) => ["positive", "negative", "warning"].includes(color);
|
|
17
17
|
const HvSwitch = React.forwardRef(
|
|
18
18
|
function HvSwitch2(props, ref) {
|
|
@@ -22,9 +22,9 @@ const HvSwitch = React.forwardRef(
|
|
|
22
22
|
id,
|
|
23
23
|
name,
|
|
24
24
|
value = "on",
|
|
25
|
-
required
|
|
26
|
-
readOnly
|
|
27
|
-
disabled
|
|
25
|
+
required,
|
|
26
|
+
readOnly,
|
|
27
|
+
disabled,
|
|
28
28
|
label,
|
|
29
29
|
"aria-label": ariaLabel,
|
|
30
30
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -42,10 +42,7 @@ const HvSwitch = React.forwardRef(
|
|
|
42
42
|
} = uikitReactUtils.useDefaultProps("HvSwitch", props);
|
|
43
43
|
const { classes, cx, css } = Switch_styles.useClasses(classesProp);
|
|
44
44
|
const elementId = useUniqueId.useUniqueId(id);
|
|
45
|
-
const [isChecked, setIsChecked] = useControlled.useControlled(
|
|
46
|
-
checked,
|
|
47
|
-
Boolean(defaultChecked)
|
|
48
|
-
);
|
|
45
|
+
const [isChecked, setIsChecked] = useControlled.useControlled(checked, defaultChecked);
|
|
49
46
|
const [validationState, setValidationState] = useControlled.useControlled(
|
|
50
47
|
status,
|
|
51
48
|
"standBy"
|
|
@@ -66,7 +63,7 @@ const HvSwitch = React.forwardRef(
|
|
|
66
63
|
[onChange, required, setIsChecked, setValidationState, value]
|
|
67
64
|
);
|
|
68
65
|
const canShowError = ariaErrorMessage == null && (status !== void 0 && statusMessage !== void 0 || status === void 0 && required);
|
|
69
|
-
const isStateInvalid =
|
|
66
|
+
const isStateInvalid = utils.isInvalid(validationState);
|
|
70
67
|
let errorMessageId;
|
|
71
68
|
if (isStateInvalid) {
|
|
72
69
|
errorMessageId = canShowError ? setId.setId(elementId, "error") : ariaErrorMessage;
|
|
@@ -6,24 +6,24 @@ const utils = require("@mui/material/utils");
|
|
|
6
6
|
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
|
|
7
7
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
8
8
|
const validations = require("../BaseInput/validations.cjs");
|
|
9
|
-
const
|
|
9
|
+
const Suggestions = require("../FormElement/Suggestions/Suggestions.cjs");
|
|
10
10
|
const useControlled = require("../hooks/useControlled.cjs");
|
|
11
11
|
const useIsMounted = require("../hooks/useIsMounted.cjs");
|
|
12
12
|
const useUniqueId = require("../hooks/useUniqueId.cjs");
|
|
13
13
|
const keyboardUtils = require("../utils/keyboardUtils.cjs");
|
|
14
14
|
const setId = require("../utils/setId.cjs");
|
|
15
15
|
const TagsInput_styles = require("./TagsInput.styles.cjs");
|
|
16
|
-
const CharCounter = require("../
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
16
|
+
const CharCounter = require("../FormElement/CharCounter/CharCounter.cjs");
|
|
17
|
+
const utils$1 = require("../FormElement/utils.cjs");
|
|
18
|
+
const FormElement = require("../FormElement/FormElement.cjs");
|
|
19
|
+
const Label = require("../FormElement/Label/Label.cjs");
|
|
20
|
+
const InfoMessage = require("../FormElement/InfoMessage/InfoMessage.cjs");
|
|
20
21
|
const ListContainer = require("../ListContainer/ListContainer.cjs");
|
|
21
22
|
const ListItem = require("../ListContainer/ListItem/ListItem.cjs");
|
|
22
23
|
const Tag = require("../Tag/Tag.cjs");
|
|
23
24
|
const BaseInput_styles = require("../BaseInput/BaseInput.styles.cjs");
|
|
24
25
|
const Input = require("../Input/Input.cjs");
|
|
25
|
-
const
|
|
26
|
-
const WarningText = require("../Forms/WarningText/WarningText.cjs");
|
|
26
|
+
const WarningText = require("../FormElement/WarningText/WarningText.cjs");
|
|
27
27
|
const HvTagsInput = React.forwardRef(
|
|
28
28
|
function HvTagsInput2(props, ref) {
|
|
29
29
|
const {
|
|
@@ -33,9 +33,9 @@ const HvTagsInput = React.forwardRef(
|
|
|
33
33
|
name,
|
|
34
34
|
value: valueProp,
|
|
35
35
|
defaultValue = [],
|
|
36
|
-
readOnly
|
|
37
|
-
disabled
|
|
38
|
-
required
|
|
36
|
+
readOnly,
|
|
37
|
+
disabled,
|
|
38
|
+
required,
|
|
39
39
|
label: textAreaLabel,
|
|
40
40
|
"aria-label": ariaLabel,
|
|
41
41
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -47,21 +47,21 @@ const HvTagsInput = React.forwardRef(
|
|
|
47
47
|
onBlur,
|
|
48
48
|
onFocus,
|
|
49
49
|
placeholder,
|
|
50
|
-
hideCounter
|
|
50
|
+
hideCounter,
|
|
51
51
|
middleCountLabel = "/",
|
|
52
52
|
maxTagsQuantity,
|
|
53
53
|
resizable = true,
|
|
54
54
|
inputProps,
|
|
55
55
|
countCharProps,
|
|
56
|
-
multiline
|
|
56
|
+
multiline,
|
|
57
57
|
status,
|
|
58
58
|
statusMessage,
|
|
59
59
|
validationMessages,
|
|
60
60
|
commitTagOn = ["Enter"],
|
|
61
|
-
commitOnBlur
|
|
61
|
+
commitOnBlur,
|
|
62
62
|
suggestionListCallback,
|
|
63
63
|
suggestionValidation,
|
|
64
|
-
suggestionsLoose
|
|
64
|
+
suggestionsLoose,
|
|
65
65
|
...others
|
|
66
66
|
} = uikitReactUtils.useDefaultProps("HvTagsInput", props);
|
|
67
67
|
const { classes, cx, css } = TagsInput_styles.useClasses(classesProp);
|
|
@@ -101,11 +101,11 @@ const HvTagsInput = React.forwardRef(
|
|
|
101
101
|
const performValidation = React.useCallback(
|
|
102
102
|
(currValue) => {
|
|
103
103
|
if (maxTagsQuantity !== null && maxTagsQuantity !== void 0 && currValue.length > maxTagsQuantity) {
|
|
104
|
-
setValidationState(validationStates.
|
|
104
|
+
setValidationState(utils$1.validationStates.invalid);
|
|
105
105
|
setValidationMessage(errorMessages.maxCharError);
|
|
106
106
|
setStateValid(false);
|
|
107
107
|
} else {
|
|
108
|
-
setValidationState(validationStates.
|
|
108
|
+
setValidationState(utils$1.validationStates.valid);
|
|
109
109
|
setValidationMessage("");
|
|
110
110
|
setStateValid(true);
|
|
111
111
|
}
|
|
@@ -286,7 +286,7 @@ const HvTagsInput = React.forwardRef(
|
|
|
286
286
|
const onDeleteTagHandler = React.useCallback(
|
|
287
287
|
(event, i) => {
|
|
288
288
|
deleteTag(i, event, true);
|
|
289
|
-
setValidationState(validationStates.
|
|
289
|
+
setValidationState(utils$1.validationStates.standBy);
|
|
290
290
|
},
|
|
291
291
|
[deleteTag, setValidationState]
|
|
292
292
|
);
|
|
@@ -4,7 +4,7 @@ const Chip = require("@mui/material/Chip");
|
|
|
4
4
|
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
|
|
5
5
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
6
6
|
const BaseInput_styles = require("../BaseInput/BaseInput.styles.cjs");
|
|
7
|
-
const Suggestions_styles = require("../
|
|
7
|
+
const Suggestions_styles = require("../FormElement/Suggestions/Suggestions.styles.cjs");
|
|
8
8
|
const { staticClasses, useClasses } = uikitReactUtils.createClasses("HvTagsInput", {
|
|
9
9
|
input: {
|
|
10
10
|
width: "100%",
|
|
@@ -5,17 +5,17 @@ const React = require("react");
|
|
|
5
5
|
const utils = require("@mui/material/utils");
|
|
6
6
|
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
|
|
7
7
|
const validations = require("../BaseInput/validations.cjs");
|
|
8
|
-
const validationStates = require("../Forms/FormElement/validationStates.cjs");
|
|
9
8
|
const useControlled = require("../hooks/useControlled.cjs");
|
|
10
9
|
const useUniqueId = require("../hooks/useUniqueId.cjs");
|
|
11
10
|
const setId = require("../utils/setId.cjs");
|
|
12
11
|
const TextArea_styles = require("./TextArea.styles.cjs");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
12
|
+
const utils$1 = require("../FormElement/utils.cjs");
|
|
13
|
+
const FormElement = require("../FormElement/FormElement.cjs");
|
|
14
|
+
const Label = require("../FormElement/Label/Label.cjs");
|
|
15
|
+
const InfoMessage = require("../FormElement/InfoMessage/InfoMessage.cjs");
|
|
16
|
+
const CharCounter = require("../FormElement/CharCounter/CharCounter.cjs");
|
|
17
17
|
const BaseInput = require("../BaseInput/BaseInput.cjs");
|
|
18
|
-
const WarningText = require("../
|
|
18
|
+
const WarningText = require("../FormElement/WarningText/WarningText.cjs");
|
|
19
19
|
const HvTextArea = React.forwardRef(function HvTextArea2(props, ref) {
|
|
20
20
|
const {
|
|
21
21
|
id,
|
|
@@ -37,14 +37,14 @@ const HvTextArea = React.forwardRef(function HvTextArea2(props, ref) {
|
|
|
37
37
|
middleCountLabel = "/",
|
|
38
38
|
countCharProps = {},
|
|
39
39
|
inputProps = {},
|
|
40
|
-
required
|
|
41
|
-
readOnly
|
|
42
|
-
disabled
|
|
43
|
-
autoFocus
|
|
44
|
-
resizable
|
|
45
|
-
autoScroll
|
|
46
|
-
hideCounter
|
|
47
|
-
blockMax
|
|
40
|
+
required,
|
|
41
|
+
readOnly,
|
|
42
|
+
disabled,
|
|
43
|
+
autoFocus,
|
|
44
|
+
resizable,
|
|
45
|
+
autoScroll,
|
|
46
|
+
hideCounter,
|
|
47
|
+
blockMax,
|
|
48
48
|
"aria-label": ariaLabel,
|
|
49
49
|
"aria-labelledby": ariaLabelledBy,
|
|
50
50
|
"aria-describedby": ariaDescribedBy,
|
|
@@ -64,14 +64,14 @@ const HvTextArea = React.forwardRef(function HvTextArea2(props, ref) {
|
|
|
64
64
|
const [autoScrolling, setAutoScrolling] = React.useState(autoScroll);
|
|
65
65
|
const [validationState, setValidationState] = useControlled.useControlled(
|
|
66
66
|
status,
|
|
67
|
-
validationStates.
|
|
67
|
+
utils$1.validationStates.standBy
|
|
68
68
|
);
|
|
69
69
|
const [validationMessage, setValidationMessage] = useControlled.useControlled(
|
|
70
70
|
statusMessage,
|
|
71
71
|
""
|
|
72
72
|
);
|
|
73
73
|
const [value, setValue] = useControlled.useControlled(valueProp, defaultValue);
|
|
74
|
-
const isStateInvalid =
|
|
74
|
+
const isStateInvalid = utils$1.isInvalid(validationState);
|
|
75
75
|
const isEmptyValue = value == null || value === "";
|
|
76
76
|
const hasLabel = label != null;
|
|
77
77
|
const hasDescription = description != null;
|
|
@@ -125,7 +125,7 @@ const HvTextArea = React.forwardRef(function HvTextArea2(props, ref) {
|
|
|
125
125
|
};
|
|
126
126
|
const onFocusHandler = (event) => {
|
|
127
127
|
setFocused(true);
|
|
128
|
-
setValidationState(validationStates.
|
|
128
|
+
setValidationState(utils$1.validationStates.standBy);
|
|
129
129
|
onFocus?.(event, value);
|
|
130
130
|
};
|
|
131
131
|
const isScrolledDown = React.useCallback(() => {
|
|
@@ -14,11 +14,11 @@ const setId = require("../utils/setId.cjs");
|
|
|
14
14
|
const Placeholder = require("./Placeholder.cjs");
|
|
15
15
|
const TimePicker_styles = require("./TimePicker.styles.cjs");
|
|
16
16
|
const Unit = require("./Unit/Unit.cjs");
|
|
17
|
-
const FormElement = require("../
|
|
18
|
-
const Label = require("../
|
|
19
|
-
const InfoMessage = require("../
|
|
17
|
+
const FormElement = require("../FormElement/FormElement.cjs");
|
|
18
|
+
const Label = require("../FormElement/Label/Label.cjs");
|
|
19
|
+
const InfoMessage = require("../FormElement/InfoMessage/InfoMessage.cjs");
|
|
20
20
|
const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
|
|
21
|
-
const WarningText = require("../
|
|
21
|
+
const WarningText = require("../FormElement/WarningText/WarningText.cjs");
|
|
22
22
|
const toTime = (value) => {
|
|
23
23
|
if (!value) return value;
|
|
24
24
|
const { hours, minutes, seconds } = value;
|
|
@@ -31,9 +31,9 @@ const HvTimePicker = React.forwardRef(
|
|
|
31
31
|
className,
|
|
32
32
|
id: idProp,
|
|
33
33
|
name,
|
|
34
|
-
required
|
|
35
|
-
disabled
|
|
36
|
-
readOnly
|
|
34
|
+
required,
|
|
35
|
+
disabled,
|
|
36
|
+
readOnly,
|
|
37
37
|
label,
|
|
38
38
|
"aria-label": ariaLabel,
|
|
39
39
|
"aria-labelledby": ariaLabelledBy,
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
4
4
|
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
|
|
5
|
+
const FormElement = require("./FormElement/FormElement.cjs");
|
|
5
6
|
const useClickOutside = require("./hooks/useClickOutside.cjs");
|
|
6
7
|
const useComputation = require("./hooks/useComputation.cjs");
|
|
7
8
|
const useControlled = require("./hooks/useControlled.cjs");
|
|
@@ -57,31 +58,25 @@ const ListContainer_styles = require("./ListContainer/ListContainer.styles.cjs")
|
|
|
57
58
|
const ListContainer = require("./ListContainer/ListContainer.cjs");
|
|
58
59
|
const ListItem_styles = require("./ListContainer/ListItem/ListItem.styles.cjs");
|
|
59
60
|
const ListItem = require("./ListContainer/ListItem/ListItem.cjs");
|
|
60
|
-
const CharCounter_styles = require("./
|
|
61
|
-
const CharCounter = require("./
|
|
62
|
-
const Adornment_styles = require("./
|
|
63
|
-
const Adornment = require("./
|
|
64
|
-
const FormElement_styles = require("./
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
const Label_styles = require("./Forms/Label/Label.styles.cjs");
|
|
72
|
-
const Label = require("./Forms/Label/Label.cjs");
|
|
73
|
-
const InfoMessage_styles = require("./Forms/InfoMessage/InfoMessage.styles.cjs");
|
|
74
|
-
const InfoMessage = require("./Forms/InfoMessage/InfoMessage.cjs");
|
|
75
|
-
const WarningText_styles = require("./Forms/WarningText/WarningText.styles.cjs");
|
|
76
|
-
const WarningText = require("./Forms/WarningText/WarningText.cjs");
|
|
61
|
+
const CharCounter_styles = require("./FormElement/CharCounter/CharCounter.styles.cjs");
|
|
62
|
+
const CharCounter = require("./FormElement/CharCounter/CharCounter.cjs");
|
|
63
|
+
const Adornment_styles = require("./FormElement/Adornment/Adornment.styles.cjs");
|
|
64
|
+
const Adornment = require("./FormElement/Adornment/Adornment.cjs");
|
|
65
|
+
const FormElement_styles = require("./FormElement/FormElement.styles.cjs");
|
|
66
|
+
const Label_styles = require("./FormElement/Label/Label.styles.cjs");
|
|
67
|
+
const Label = require("./FormElement/Label/Label.cjs");
|
|
68
|
+
const InfoMessage_styles = require("./FormElement/InfoMessage/InfoMessage.styles.cjs");
|
|
69
|
+
const InfoMessage = require("./FormElement/InfoMessage/InfoMessage.cjs");
|
|
70
|
+
const WarningText_styles = require("./FormElement/WarningText/WarningText.styles.cjs");
|
|
71
|
+
const WarningText = require("./FormElement/WarningText/WarningText.cjs");
|
|
77
72
|
const Select_styles = require("./Select/Select.styles.cjs");
|
|
78
73
|
const Select = require("./Select/Select.cjs");
|
|
79
74
|
const Option = require("./Select/Option.cjs");
|
|
80
75
|
const OptionGroup = require("./Select/OptionGroup.cjs");
|
|
81
76
|
const SelectionList_styles = require("./SelectionList/SelectionList.styles.cjs");
|
|
82
77
|
const SelectionList = require("./SelectionList/SelectionList.cjs");
|
|
83
|
-
const Suggestions_styles = require("./
|
|
84
|
-
const Suggestions = require("./
|
|
78
|
+
const Suggestions_styles = require("./FormElement/Suggestions/Suggestions.styles.cjs");
|
|
79
|
+
const Suggestions = require("./FormElement/Suggestions/Suggestions.cjs");
|
|
85
80
|
const BaseInput_styles = require("./BaseInput/BaseInput.styles.cjs");
|
|
86
81
|
const BaseInput = require("./BaseInput/BaseInput.cjs");
|
|
87
82
|
const BaseDropdown_styles = require("./BaseDropdown/BaseDropdown.styles.cjs");
|
|
@@ -350,6 +345,7 @@ Object.defineProperty(exports, "useTheme", {
|
|
|
350
345
|
enumerable: true,
|
|
351
346
|
get: () => uikitReactUtils.useTheme
|
|
352
347
|
});
|
|
348
|
+
exports.HvFormElement = FormElement.HvFormElement;
|
|
353
349
|
exports.useClickOutside = useClickOutside.useClickOutside;
|
|
354
350
|
exports.useComputation = useComputation.useComputation;
|
|
355
351
|
exports.useControlled = useControlled.useControlled;
|
|
@@ -432,23 +428,6 @@ exports.HvCharCounter = CharCounter.HvCharCounter;
|
|
|
432
428
|
exports.adornmentClasses = Adornment_styles.staticClasses;
|
|
433
429
|
exports.HvAdornment = Adornment.HvAdornment;
|
|
434
430
|
exports.formElementClasses = FormElement_styles.staticClasses;
|
|
435
|
-
exports.HvFormElement = FormElement.HvFormElement;
|
|
436
|
-
exports.HvFormElementContext = FormElementContext.HvFormElementContext;
|
|
437
|
-
exports.HvFormElementContextConsumer = FormElementContext.HvFormElementContextConsumer;
|
|
438
|
-
exports.HvFormElementContextProvider = FormElementContext.HvFormElementContextProvider;
|
|
439
|
-
exports.HvFormElementValueContext = FormElementValueContext.HvFormElementValueContext;
|
|
440
|
-
exports.HvFormElementValueContextConsumer = FormElementValueContext.HvFormElementValueContextConsumer;
|
|
441
|
-
exports.HvFormElementValueContextProvider = FormElementValueContext.HvFormElementValueContextProvider;
|
|
442
|
-
exports.HvFormElementDescriptorsContext = FormElementDescriptorsContext.HvFormElementDescriptorsContext;
|
|
443
|
-
exports.HvFormElementDescriptorsContextConsumer = FormElementDescriptorsContext.HvFormElementDescriptorsContextConsumer;
|
|
444
|
-
exports.HvFormElementDescriptorsContextProvider = FormElementDescriptorsContext.HvFormElementDescriptorsContextProvider;
|
|
445
|
-
exports.buildAriaPropsFromContext = FormUtils.buildAriaPropsFromContext;
|
|
446
|
-
exports.buildFormElementPropsFromContext = FormUtils.buildFormElementPropsFromContext;
|
|
447
|
-
exports.findDescriptors = FormUtils.findDescriptors;
|
|
448
|
-
exports.getIdReferenceFor = FormUtils.getIdReferenceFor;
|
|
449
|
-
exports.getIdReferenceListFor = FormUtils.getIdReferenceListFor;
|
|
450
|
-
exports.isInvalid = validationStates.isInvalid;
|
|
451
|
-
exports.isValid = validationStates.isValid;
|
|
452
431
|
exports.labelClasses = Label_styles.staticClasses;
|
|
453
432
|
exports.HvLabel = Label.HvLabel;
|
|
454
433
|
exports.infoMessageClasses = InfoMessage_styles.staticClasses;
|
|
@@ -7,9 +7,8 @@ import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
|
|
|
7
7
|
import { theme } from "@hitachivantara/uikit-styles";
|
|
8
8
|
import { useClasses } from "./BaseInput.styles.js";
|
|
9
9
|
import { staticClasses } from "./BaseInput.styles.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { HvFormElementDescriptorsContext } from "../Forms/FormElement/context/FormElementDescriptorsContext.js";
|
|
10
|
+
import { HvFormElementContext, HvFormElementDescriptorsContext } from "../FormElement/context.js";
|
|
11
|
+
import { buildFormElementPropsFromContext, buildAriaPropsFromContext } from "../FormElement/utils.js";
|
|
13
12
|
const baseInputStyles = css({
|
|
14
13
|
"input:-webkit-autofill": {
|
|
15
14
|
WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.atmo1} inset`,
|
|
@@ -46,9 +45,9 @@ const HvBaseInput = forwardRef(function HvBaseInput2(props, ref) {
|
|
|
46
45
|
onChange,
|
|
47
46
|
type = "text",
|
|
48
47
|
placeholder,
|
|
49
|
-
multiline
|
|
50
|
-
resizable
|
|
51
|
-
invalid
|
|
48
|
+
multiline,
|
|
49
|
+
resizable,
|
|
50
|
+
invalid,
|
|
52
51
|
inputRef,
|
|
53
52
|
inputProps = {},
|
|
54
53
|
...others
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseInput.js","sources":["../../../src/BaseInput/BaseInput.tsx"],"sourcesContent":["import { forwardRef, useContext } from \"react\";\nimport { css as emotionCss, Global } from \"@emotion/react\";\nimport MuiInput, { InputProps as MuiInputProps } from \"@mui/material/Input\";\nimport {\n InputBaseProps,\n InputBaseComponentProps as MuiInputBaseComponentProps,\n} from \"@mui/material/InputBase\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport {\n buildAriaPropsFromContext,\n buildFormElementPropsFromContext,\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n} from \"../
|
|
1
|
+
{"version":3,"file":"BaseInput.js","sources":["../../../src/BaseInput/BaseInput.tsx"],"sourcesContent":["import { forwardRef, useContext } from \"react\";\nimport { css as emotionCss, Global } from \"@emotion/react\";\nimport MuiInput, { InputProps as MuiInputProps } from \"@mui/material/Input\";\nimport {\n InputBaseProps,\n InputBaseComponentProps as MuiInputBaseComponentProps,\n} from \"@mui/material/InputBase\";\nimport { useForkRef } from \"@mui/material/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport {\n buildAriaPropsFromContext,\n buildFormElementPropsFromContext,\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n} from \"../FormElement\";\nimport { staticClasses, useClasses } from \"./BaseInput.styles\";\n\nexport { staticClasses as baseInputClasses };\n\nexport type HvBaseInputClasses = ExtractNames<typeof useClasses>;\n\n// Global styles for the base input.\nconst baseInputStyles = emotionCss({\n \"input:-webkit-autofill\": {\n WebkitBoxShadow: `0 0 0px 1000px ${theme.colors.atmo1} inset`,\n WebkitTextFillColor: theme.colors.secondary,\n },\n\n // Clears number input up/down arrows in Chrome and Firefox\n \"input::-webkit-outer-spin-button,input::-webkit-inner-spin-button\": {\n WebkitAppearance: \"none\",\n margin: 0,\n },\n \"input[type=number]\": {\n MozAppearance: \"textfield\",\n },\n\n // Clears time input clock in Chrome\n \"input::-webkit-calendar-picker-indicator\": {\n display: \"none\",\n },\n\n // Clears search input clear button in Chrome\n \"input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration\":\n {\n display: \"none\",\n },\n});\n\nexport interface HvBaseInputProps\n extends Omit<MuiInputProps, \"onChange\" | \"classes\" | \"ref\"> {\n /** The input name. */\n name?: string;\n /** The value of the input, when controlled. */\n value?: string;\n /** The initial value of the input, when uncontrolled. */\n defaultValue?: string;\n /** If `true` the input is disabled. */\n disabled?: boolean;\n /** Indicates that the input is not editable. */\n readOnly?: boolean;\n /** If true, the input element will be required. */\n required?: boolean;\n /** The function that will be executed onChange, allows modification of the input,\n * it receives the value. If a new value should be presented it must returned it. */\n onChange?: (\n event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n value: string,\n ) => void;\n /** The input type. */\n type?: string;\n /** Label inside the input used to help user. */\n placeholder?: string;\n /** If true, a textarea element will be rendered. */\n multiline?: boolean;\n /** If true and multiline is also true the textarea element will be resizable. */\n resizable?: boolean;\n /** Denotes if the input is in an invalid state. */\n invalid?: boolean;\n /** Attributes applied to the input element. */\n inputProps?: MuiInputBaseComponentProps;\n /** Allows passing a ref to the underlying input */\n inputRef?: InputBaseProps[\"inputRef\"];\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBaseInputClasses;\n}\n\n/**\n * An Input component that only posses the most basic functionalities.\n * It should be used alongside the other form elements to construct a proper accessible form.\n */\nexport const HvBaseInput = forwardRef<\n // no-indent\n unknown,\n HvBaseInputProps\n>(function HvBaseInput(props, ref) {\n const {\n classes: classesProp,\n className = \"\",\n id,\n name,\n value,\n defaultValue,\n required,\n readOnly,\n disabled,\n onChange,\n type = \"text\",\n placeholder,\n multiline,\n resizable,\n invalid,\n inputRef,\n inputProps = {},\n ...others\n } = useDefaultProps(\"HvBaseInput\", props);\n const { classes, cx } = useClasses(classesProp);\n const formElementContext = useContext(HvFormElementContext);\n const formElementProps = buildFormElementPropsFromContext(\n name,\n disabled,\n readOnly,\n required,\n formElementContext,\n );\n\n const forkedRef = useForkRef(ref, inputRef);\n\n const localInvalid = invalid || formElementProps.status === \"invalid\";\n\n const formElementDescriptorsContext = useContext(\n HvFormElementDescriptorsContext,\n );\n const ariaProps = buildAriaPropsFromContext(\n inputProps,\n formElementDescriptorsContext,\n localInvalid,\n id,\n );\n\n const onChangeHandler: MuiInputProps[\"onChange\"] = (event) => {\n onChange?.(event, event.target.value);\n };\n\n return (\n <>\n <Global styles={baseInputStyles} />\n <div\n className={cx(classes.root, className, {\n [classes.disabled]: formElementProps.disabled,\n [classes.invalid]: localInvalid,\n [classes.resizable]: multiline && resizable,\n [classes.readOnly]: formElementProps.readOnly,\n })}\n >\n <MuiInput\n id={id}\n name={formElementProps.name}\n value={value}\n defaultValue={defaultValue}\n type={type}\n placeholder={placeholder}\n readOnly={!!formElementProps.readOnly}\n disabled={formElementProps.disabled}\n onChange={onChangeHandler}\n className={cx({\n [classes.inputRootInvalid]: localInvalid,\n [classes.inputRootReadOnly]: formElementProps.readOnly,\n })}\n classes={{\n root: classes.inputRoot,\n focused: classes.inputRootFocused,\n disabled: classes.inputRootDisabled,\n multiline: classes.inputRootMultiline,\n input: cx(classes.input, {\n [classes.inputResizable]: !formElementProps.disabled && resizable,\n [classes.inputDisabled]: formElementProps.disabled,\n [classes.inputReadOnly]: formElementProps.readOnly,\n }),\n }}\n inputProps={{\n // Avoid the required attribute at the root node\n required: formElementProps.required,\n ...inputProps,\n ...ariaProps,\n }}\n inputRef={forkedRef}\n multiline={multiline}\n rows={10}\n {...others}\n />\n {!multiline && (\n <div role=\"presentation\" className={classes.inputBorderContainer} />\n )}\n </div>\n </>\n );\n});\n"],"names":["emotionCss","HvBaseInput"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { validationStates } from "../FormElement/utils.js";
|
|
2
2
|
const isNumeric = (num) => (
|
|
3
3
|
// to prevent Number( <spaces> ) = 0
|
|
4
4
|
num.trim().length > 0 && !Number.isNaN(Number(num))
|
|
@@ -25,9 +25,9 @@ const computeValidationType = (type) => {
|
|
|
25
25
|
const hasBuiltInValidations = (required, validationType, minCharQuantity, maxCharQuantity, validation, inputProps) => required || validationType !== validationTypes.none || minCharQuantity != null || maxCharQuantity != null || validation != null || inputProps?.required != null || inputProps?.minLength != null || inputProps?.maxLength != null || inputProps?.min != null || inputProps?.max != null || inputProps?.type != null && inputProps?.type !== "text" && inputProps?.type !== "password" || inputProps?.pattern != null;
|
|
26
26
|
const computeValidationState = (inputValidity, isEmptyValue) => {
|
|
27
27
|
if (inputValidity.valid && isEmptyValue) {
|
|
28
|
-
return
|
|
28
|
+
return validationStates.standBy;
|
|
29
29
|
}
|
|
30
|
-
return inputValidity.valid ?
|
|
30
|
+
return inputValidity.valid ? validationStates.valid : validationStates.invalid;
|
|
31
31
|
};
|
|
32
32
|
const computeValidationMessage = (inputValidity, errorMessages) => {
|
|
33
33
|
if (inputValidity.valid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sources":["../../../src/BaseInput/validations.ts"],"sourcesContent":["import { InputBaseComponentProps } from \"@mui/material/InputBase\";\n\nimport validationStates from \"../
|
|
1
|
+
{"version":3,"file":"validations.js","sources":["../../../src/BaseInput/validations.ts"],"sourcesContent":["import { InputBaseComponentProps } from \"@mui/material/InputBase\";\n\nimport { validationStates } from \"../FormElement\";\n\n/** Checks if the value is a number. */\nconst isNumeric = (num: string) =>\n // to prevent Number( <spaces> ) = 0\n num.trim().length > 0 && !Number.isNaN(Number(num));\n\n/** Checks if the value is an email */\nconst isEmail = (email: string) => {\n const regexp =\n /^[^\\\\s]+[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[.])+[a-z0-9](?:[a-z0-9-]*[a-z0-9])$/i;\n return regexp.test(email);\n};\n\nexport const validationTypes = Object.freeze({\n none: \"none\",\n number: \"number\",\n email: \"email\",\n});\n\n/** Returns the input's validation type based in the type of the input. */\nexport const computeValidationType = (type: React.HTMLInputTypeAttribute) => {\n switch (type) {\n case \"number\":\n return validationTypes.number;\n case \"email\":\n return validationTypes.email;\n\n default:\n return validationTypes.none;\n }\n};\n\n/**\n * Checks whether any integrated validation, native or not, is active.\n */\nexport const hasBuiltInValidations = (\n required: boolean | undefined,\n validationType: React.HTMLInputTypeAttribute,\n minCharQuantity: number | null | undefined,\n maxCharQuantity: number | null | undefined,\n validation?: (value: string) => boolean,\n inputProps?: InputBaseComponentProps,\n) =>\n required ||\n validationType !== validationTypes.none ||\n minCharQuantity != null ||\n maxCharQuantity != null ||\n validation != null ||\n inputProps?.required != null ||\n inputProps?.minLength != null ||\n inputProps?.maxLength != null ||\n inputProps?.min != null ||\n inputProps?.max != null ||\n (inputProps?.type != null &&\n inputProps?.type !== \"text\" &&\n inputProps?.type !== \"password\") ||\n inputProps?.pattern != null;\n\n/** Returns the form element's validation state based in the validity state of the input. */\nexport const computeValidationState = (\n inputValidity: HvInputValidity,\n isEmptyValue: boolean,\n) => {\n // to keep 2.x behaviour,\n // consider that if the value is empty (and not required) we're returning to the standBy state.\n // might not make sense, as it makes impossible to say if the user explicitly cleared the input.\n if (inputValidity.valid && isEmptyValue) {\n return validationStates.standBy;\n }\n\n return inputValidity.valid\n ? validationStates.valid\n : validationStates.invalid;\n};\n\n/**\n * Returns a error message based in the validity state of the input.\n *\n * Only one error message is returned even if multiple validations fail.\n * Also, only required, minCharQuantity, maxCharQuantity and validationType have specific error messages.\n *\n * For further customization both status and statusMessage should be controlled and\n * set using the onBlur callback that receives both the value and the input validity object.\n */\nexport const computeValidationMessage = (\n inputValidity: HvInputValidity,\n /** The available localized error messages. */\n errorMessages: Record<string, string>,\n) => {\n if (inputValidity.valid) {\n return \"\";\n }\n\n if (inputValidity.valueMissing) {\n return errorMessages.requiredError;\n }\n if (inputValidity.tooLong) {\n return errorMessages.maxCharError;\n }\n if (inputValidity.tooShort) {\n return errorMessages.minCharError;\n }\n if (inputValidity.typeMismatch) {\n return errorMessages.typeMismatchError;\n }\n\n return errorMessages.error;\n};\n\n/**\n * Returns a object describing the validity state of the input.\n *\n * It implements the native browser's ValidityState interface:\n * https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n */\nexport const validateInput = (\n input: HTMLInputElement | HTMLTextAreaElement | null,\n value: string,\n required: boolean | undefined,\n minCharQuantity: any,\n maxCharQuantity: any,\n validationType: string,\n validation?: (value: string) => boolean,\n): HvInputValidity => {\n // bootstrap validity object using browser's built-in validation\n const inputValidity: HvInputValidity = {\n valid: input?.validity?.valid ?? true,\n badInput: input?.validity?.badInput,\n customError: input?.validity?.customError,\n patternMismatch: input?.validity?.patternMismatch,\n rangeOverflow: input?.validity?.rangeOverflow,\n rangeUnderflow: input?.validity?.rangeUnderflow,\n stepMismatch: input?.validity?.stepMismatch,\n tooLong: input?.validity?.tooLong,\n tooShort: input?.validity?.tooShort,\n typeMismatch: input?.validity?.typeMismatch,\n valueMissing: input?.validity?.valueMissing,\n };\n\n if (!value) {\n if (required) {\n // this is redundant because we're setting the required property in the native input\n inputValidity.valueMissing = true;\n inputValidity.valid = false;\n }\n } else {\n // we're not setting minlength and maxlength in the native input\n // to avoid different browser's behaviours and keep the user experience consistent\n if (minCharQuantity !== null && value.length < minCharQuantity) {\n inputValidity.tooShort = true;\n inputValidity.valid = false;\n }\n\n if (maxCharQuantity !== null && value.length > maxCharQuantity) {\n inputValidity.tooLong = true;\n inputValidity.valid = false;\n }\n\n // the validationType is used instead of type\n // for the same reason stated above\n switch (validationType) {\n case validationTypes.number:\n if (!isNumeric(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n case validationTypes.email:\n if (!isEmail(value)) {\n inputValidity.typeMismatch = true;\n inputValidity.valid = false;\n }\n break;\n\n default:\n }\n\n if (validation != null && !validation(value)) {\n inputValidity.customError = true;\n inputValidity.valid = false;\n }\n }\n\n return inputValidity;\n};\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] };\n\nexport interface HvInputValidity extends Partial<Mutable<ValidityState>> {}\n\nexport const DEFAULT_ERROR_MESSAGES = {\n error: \"Invalid value\",\n requiredError: \"The value is required\",\n minCharError: \"The value is too short\",\n maxCharError: \"The value is too long\",\n typeMismatchError: \"Invalid value\",\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,13 @@ import { useClasses } from "./Calendar.styles.js";
|
|
|
6
6
|
import { staticClasses } from "./Calendar.styles.js";
|
|
7
7
|
import { isRange } from "./utils.js";
|
|
8
8
|
import { HvSingleCalendar } from "./SingleCalendar/SingleCalendar.js";
|
|
9
|
-
import { HvFormElementContext } from "../
|
|
10
|
-
import { HvFormElementValueContext } from "../Forms/FormElement/context/FormElementValueContext.js";
|
|
9
|
+
import { HvFormElementContext, HvFormElementValueContext } from "../FormElement/context.js";
|
|
11
10
|
const HvCalendar = (props) => {
|
|
12
11
|
const {
|
|
13
12
|
classes: classesProp,
|
|
14
|
-
id,
|
|
13
|
+
id: idProp,
|
|
15
14
|
locale = "en-US",
|
|
16
|
-
value,
|
|
15
|
+
value: valueProp,
|
|
17
16
|
visibleMonth,
|
|
18
17
|
visibleYear,
|
|
19
18
|
rightVisibleMonth,
|
|
@@ -28,19 +27,19 @@ const HvCalendar = (props) => {
|
|
|
28
27
|
...others
|
|
29
28
|
} = useDefaultProps("HvCalendar", props);
|
|
30
29
|
const { classes } = useClasses(classesProp);
|
|
31
|
-
const
|
|
30
|
+
const context = useContext(HvFormElementContext);
|
|
32
31
|
const elementValue = useContext(HvFormElementValueContext);
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const rangeMode = isRange(
|
|
36
|
-
const rightCalendarId = setId(
|
|
32
|
+
const value = valueProp ?? elementValue;
|
|
33
|
+
const id = idProp ?? setId(context.id, "single-calendar");
|
|
34
|
+
const rangeMode = isRange(value);
|
|
35
|
+
const rightCalendarId = setId(id, "single-calendar-right");
|
|
37
36
|
const clampedMonth = visibleMonth && visibleMonth % 13 > 0 ? visibleMonth % 13 : 1;
|
|
38
37
|
const singleCalendar = /* @__PURE__ */ jsx(
|
|
39
38
|
HvSingleCalendar,
|
|
40
39
|
{
|
|
41
|
-
id
|
|
40
|
+
id,
|
|
42
41
|
locale,
|
|
43
|
-
value
|
|
42
|
+
value,
|
|
44
43
|
visibleMonth: clampedMonth,
|
|
45
44
|
visibleYear,
|
|
46
45
|
minimumDate,
|
|
@@ -59,9 +58,9 @@ const HvCalendar = (props) => {
|
|
|
59
58
|
HvSingleCalendar,
|
|
60
59
|
{
|
|
61
60
|
className: classes.singleCalendar,
|
|
62
|
-
id
|
|
61
|
+
id,
|
|
63
62
|
locale,
|
|
64
|
-
value
|
|
63
|
+
value,
|
|
65
64
|
visibleMonth: clampedMonth,
|
|
66
65
|
visibleYear,
|
|
67
66
|
minimumDate,
|
|
@@ -81,7 +80,7 @@ const HvCalendar = (props) => {
|
|
|
81
80
|
className: classes.singleCalendar,
|
|
82
81
|
id: rightCalendarId,
|
|
83
82
|
locale,
|
|
84
|
-
value
|
|
83
|
+
value,
|
|
85
84
|
visibleMonth: rightVisibleMonth,
|
|
86
85
|
visibleYear: rightVisibleYear,
|
|
87
86
|
minimumDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sources":["../../../src/Calendar/Calendar.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"Calendar.js","sources":["../../../src/Calendar/Calendar.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n HvFormElementContext,\n HvFormElementValueContext,\n} from \"../FormElement\";\nimport { setId } from \"../utils/setId\";\nimport { staticClasses, useClasses } from \"./Calendar.styles\";\nimport { HvSingleCalendar } from \"./SingleCalendar\";\nimport { DateRangeProp, VisibilitySelectorActions } from \"./types\";\nimport { isRange } from \"./utils\";\n\nexport { staticClasses as calendarClasses };\n\nexport type HvCalendarClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCalendarProps {\n /**\n * Styles applied from the theme.\n */\n classes?: HvCalendarClasses;\n /**\n * Identifier.\n */\n id?: string;\n /**\n * The calendar locale. If undefined, it defaults to en-US\n *\n */\n locale?: string;\n /**\n * Date that the calendar would show.\n * if using the object format the calendar enter in range mode showing two calendars\n */\n value?: DateRangeProp | Date;\n /**\n * Controls the visible month of the Calendar\n */\n visibleMonth?: number;\n /**\n * Controls the visible year of the Calendar\n */\n visibleYear?: number;\n /**\n * Controls the visible month of the Calendar on the right side of the datepicker\n */\n rightVisibleMonth?: number;\n /**\n * Controls the visible year of the Calendar on the right side of the datepicker\n */\n rightVisibleYear?: number;\n /**\n * Callback function to be triggered when the selected date has changed.\n */\n onChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n value: Date | DateRangeProp,\n ) => void;\n /**\n * Callback function to be triggered when the selected date input has changed.\n */\n onInputChange?: (\n event:\n | React.ChangeEvent<\n HTMLTextAreaElement | HTMLInputElement | HTMLButtonElement\n >\n | undefined,\n value: Date | DateRangeProp,\n position: \"left\" | \"right\",\n ) => void;\n /**\n * Callback function to be triggered when the user clicks on the month or year selector.\n * it receives the action that was pressed:\n * previous_month, next_month, previous_year, next_year,month\n */\n onVisibleDateChange?: (\n event:\n | React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>\n | undefined,\n action: VisibilitySelectorActions,\n value?: Date | DateRangeProp | number,\n position?: \"left\" | \"right\",\n ) => void;\n /**\n * The maximum selectable date after this all values are disabled.\n */\n maximumDate?: Date;\n /**\n * The minimum selectable date before this all values are disabled.\n */\n minimumDate?: Date;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * Indicates if header should display the day of week.\n */\n showDayOfWeek?: boolean;\n /**\n * Label shown when date is invalid.\n */\n invalidDateLabel?: string;\n}\n\nexport const HvCalendar = (props: HvCalendarProps) => {\n const {\n classes: classesProp,\n id: idProp,\n locale = \"en-US\",\n value: valueProp,\n visibleMonth,\n visibleYear,\n rightVisibleMonth,\n rightVisibleYear,\n minimumDate,\n maximumDate,\n startAdornment,\n onChange,\n onInputChange,\n onVisibleDateChange,\n invalidDateLabel,\n ...others\n } = useDefaultProps(\"HvCalendar\", props);\n const { classes } = useClasses(classesProp);\n\n const context = useContext(HvFormElementContext);\n const elementValue = useContext(HvFormElementValueContext);\n const value = valueProp ?? elementValue;\n const id = idProp ?? setId(context.id, \"single-calendar\");\n const rangeMode = isRange(value);\n const rightCalendarId = setId(id, \"single-calendar-right\");\n const clampedMonth =\n visibleMonth && visibleMonth % 13 > 0 ? visibleMonth % 13 : 1;\n\n const singleCalendar = (\n <HvSingleCalendar\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={onVisibleDateChange}\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n );\n\n const rangeCalendar = (\n <div className={classes.rangeCalendarContainer}>\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={id}\n locale={locale}\n value={value}\n visibleMonth={clampedMonth}\n visibleYear={visibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"left\");\n }}\n onVisibleDateChange={(event, action, index) =>\n onVisibleDateChange?.(event, action, index, \"left\")\n }\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n\n <HvSingleCalendar\n className={classes.singleCalendar}\n id={rightCalendarId}\n locale={locale}\n value={value}\n visibleMonth={rightVisibleMonth}\n visibleYear={rightVisibleYear}\n minimumDate={minimumDate}\n maximumDate={maximumDate}\n onChange={onChange}\n onInputChange={(evt, date) => {\n onInputChange?.(evt, date, \"right\");\n }}\n onVisibleDateChange={(event, action, index) => {\n onVisibleDateChange?.(event, action, index, \"right\");\n }}\n showEndDate\n invalidDateLabel={invalidDateLabel}\n {...others}\n />\n </div>\n );\n\n return (\n <div className={classes.root}>\n {startAdornment}\n {rangeMode ? rangeCalendar : singleCalendar}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA+Ga,MAAA,aAAa,CAAC,UAA2B;AAC9C,QAAA;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,cAAc,KAAK;AACvC,QAAM,EAAE,QAAA,IAAY,WAAW,WAAW;AAEpC,QAAA,UAAU,WAAW,oBAAoB;AACzC,QAAA,eAAe,WAAW,yBAAyB;AACzD,QAAM,QAAQ,aAAa;AAC3B,QAAM,KAAK,UAAU,MAAM,QAAQ,IAAI,iBAAiB;AAClD,QAAA,YAAY,QAAQ,KAAK;AACzB,QAAA,kBAAkB,MAAM,IAAI,uBAAuB;AACzD,QAAM,eACJ,gBAAgB,eAAe,KAAK,IAAI,eAAe,KAAK;AAE9D,QAAM,iBACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe,CAAC,KAAK,SAAS;AACZ,wBAAA,KAAK,MAAM,MAAM;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAGF,QAAM,gBACJ,qBAAC,OAAI,EAAA,WAAW,QAAQ,wBACtB,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,MAAM;AAAA,QACnC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UACnC,sBAAsB,OAAO,QAAQ,OAAO,MAAM;AAAA,QAEpD;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IACN;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,QAAQ;AAAA,QACnB,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,CAAC,KAAK,SAAS;AACZ,0BAAA,KAAK,MAAM,OAAO;AAAA,QACpC;AAAA,QACA,qBAAqB,CAAC,OAAO,QAAQ,UAAU;AACvB,gCAAA,OAAO,QAAQ,OAAO,OAAO;AAAA,QACrD;AAAA,QACA,aAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GACF;AAGF,SACG,qBAAA,OAAA,EAAI,WAAW,QAAQ,MACrB,UAAA;AAAA,IAAA;AAAA,IACA,YAAY,gBAAgB;AAAA,EAAA,GAC/B;AAEJ;"}
|