@hitachivantara/uikit-react-core 3.53.1 → 3.55.0
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/CHANGELOG.md +58 -0
- package/dist/Snackbar/SnackbarProvider/SnackbarProvider.d.ts +30 -0
- package/dist/Snackbar/SnackbarProvider/SnackbarProvider.js +207 -0
- package/dist/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -0
- package/dist/Snackbar/SnackbarProvider/index.d.ts +2 -0
- package/dist/Snackbar/SnackbarProvider/index.js +49 -0
- package/dist/Snackbar/SnackbarProvider/index.js.map +1 -0
- package/dist/Snackbar/stories/SnackbarProvider.stories.mdx +51 -0
- package/dist/TagsInput/TagsInput.d.ts +61 -4
- package/dist/TagsInput/TagsInput.js +158 -30
- package/dist/TagsInput/TagsInput.js.map +1 -1
- package/dist/TagsInput/styles.js +12 -8
- package/dist/TagsInput/styles.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/legacy/Snackbar/SnackbarProvider/SnackbarProvider.d.ts +30 -0
- package/dist/legacy/Snackbar/SnackbarProvider/SnackbarProvider.js +169 -0
- package/dist/legacy/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -0
- package/dist/legacy/Snackbar/SnackbarProvider/index.d.ts +2 -0
- package/dist/legacy/Snackbar/SnackbarProvider/index.js +3 -0
- package/dist/legacy/Snackbar/SnackbarProvider/index.js.map +1 -0
- package/dist/legacy/Snackbar/stories/SnackbarProvider.stories.mdx +51 -0
- package/dist/legacy/TagsInput/TagsInput.d.ts +61 -4
- package/dist/legacy/TagsInput/TagsInput.js +161 -36
- package/dist/legacy/TagsInput/TagsInput.js.map +1 -1
- package/dist/legacy/TagsInput/styles.js +12 -8
- package/dist/legacy/TagsInput/styles.js.map +1 -1
- package/dist/legacy/index.d.ts +2 -0
- package/dist/legacy/index.js +1 -0
- package/dist/legacy/index.js.map +1 -1
- package/dist/modern/Snackbar/SnackbarProvider/SnackbarProvider.d.ts +30 -0
- package/dist/modern/Snackbar/SnackbarProvider/SnackbarProvider.js +155 -0
- package/dist/modern/Snackbar/SnackbarProvider/SnackbarProvider.js.map +1 -0
- package/dist/modern/Snackbar/SnackbarProvider/index.d.ts +2 -0
- package/dist/modern/Snackbar/SnackbarProvider/index.js +3 -0
- package/dist/modern/Snackbar/SnackbarProvider/index.js.map +1 -0
- package/dist/modern/Snackbar/stories/SnackbarProvider.stories.mdx +51 -0
- package/dist/modern/TagsInput/TagsInput.d.ts +61 -4
- package/dist/modern/TagsInput/TagsInput.js +139 -30
- package/dist/modern/TagsInput/TagsInput.js.map +1 -1
- package/dist/modern/TagsInput/styles.js +12 -8
- package/dist/modern/TagsInput/styles.js.map +1 -1
- package/dist/modern/index.d.ts +2 -0
- package/dist/modern/index.js +1 -0
- package/dist/modern/index.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "core-js/modules/es.object.keys.js";
|
|
2
|
+
import "core-js/modules/es.array.filter.js";
|
|
3
|
+
import "core-js/modules/es.object.to-string.js";
|
|
4
|
+
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
|
5
|
+
import "core-js/modules/web.dom-collections.for-each.js";
|
|
6
|
+
import "core-js/modules/es.object.get-own-property-descriptors.js";
|
|
2
7
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
8
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
9
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
10
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
5
11
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
6
|
-
var _excluded = ["classes", "className", "id", "name", "value", "defaultValue", "readOnly", "disabled", "label", "aria-label", "aria-labelledby", "description", "aria-describedby", "onChange", "placeholder", "hideCounter", "middleCountLabel", "maxTagsQuantity", "autoFocus", "resizable", "inputProps", "countCharProps", "multiline"],
|
|
12
|
+
var _excluded = ["classes", "className", "id", "name", "value", "defaultValue", "readOnly", "disabled", "required", "label", "aria-label", "aria-labelledby", "description", "aria-describedby", "onChange", "onAdd", "onDelete", "placeholder", "hideCounter", "middleCountLabel", "maxTagsQuantity", "autoFocus", "resizable", "inputProps", "countCharProps", "multiline", "status", "statusMessage", "validationMessages"],
|
|
7
13
|
_excluded2 = ["label", "type"];
|
|
8
14
|
|
|
9
15
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -16,21 +22,18 @@ import "core-js/modules/es.symbol.description.js";
|
|
|
16
22
|
import "core-js/modules/es.array.concat.js";
|
|
17
23
|
import "core-js/modules/es.array.slice.js";
|
|
18
24
|
import "core-js/modules/es.array.map.js";
|
|
19
|
-
import "core-js/modules/es.object.keys.js";
|
|
20
|
-
import "core-js/modules/es.array.filter.js";
|
|
21
|
-
import "core-js/modules/es.object.to-string.js";
|
|
22
|
-
import "core-js/modules/es.object.get-own-property-descriptor.js";
|
|
23
|
-
import "core-js/modules/web.dom-collections.for-each.js";
|
|
24
|
-
import "core-js/modules/es.object.get-own-property-descriptors.js";
|
|
25
25
|
import React, { useRef, useState, useCallback, useMemo, useEffect } from "react";
|
|
26
26
|
import PropTypes from "prop-types";
|
|
27
27
|
import clsx from "clsx";
|
|
28
|
+
import isNil from "lodash/isNil";
|
|
28
29
|
import { withStyles } from "@material-ui/core";
|
|
29
30
|
import { setId, useControlled } from "../utils";
|
|
30
|
-
import { HvFormElement, HvListContainer, HvListItem, HvTag, HvInput, HvLabel, HvInfoMessage, HvCharCounter, useUniqueId } from "..";
|
|
31
|
+
import { HvFormElement, HvListContainer, HvListItem, HvTag, HvInput, HvLabel, HvInfoMessage, HvCharCounter, HvWarningText, useUniqueId } from "..";
|
|
32
|
+
import validationStates from "../Forms/FormElement/validationStates";
|
|
33
|
+
import { DEFAULT_ERROR_MESSAGES } from "../BaseInput/validations";
|
|
31
34
|
import styles from "./styles";
|
|
32
35
|
/**
|
|
33
|
-
* A
|
|
36
|
+
* A tags input is a single or multiline control that allows the input of tags.
|
|
34
37
|
*/
|
|
35
38
|
|
|
36
39
|
var HvTagsInput = function HvTagsInput(props) {
|
|
@@ -45,12 +48,16 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
45
48
|
readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
|
|
46
49
|
_props$disabled = props.disabled,
|
|
47
50
|
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
51
|
+
_props$required = props.required,
|
|
52
|
+
required = _props$required === void 0 ? false : _props$required,
|
|
48
53
|
textAreaLabel = props.label,
|
|
49
54
|
ariaLabel = props["aria-label"],
|
|
50
55
|
ariaLabelledBy = props["aria-labelledby"],
|
|
51
56
|
description = props.description,
|
|
52
57
|
ariaDescribedBy = props["aria-describedby"],
|
|
53
58
|
onChange = props.onChange,
|
|
59
|
+
onAdd = props.onAdd,
|
|
60
|
+
onDelete = props.onDelete,
|
|
54
61
|
placeholder = props.placeholder,
|
|
55
62
|
_props$hideCounter = props.hideCounter,
|
|
56
63
|
hideCounter = _props$hideCounter === void 0 ? false : _props$hideCounter,
|
|
@@ -67,6 +74,9 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
67
74
|
countCharProps = _props$countCharProps === void 0 ? {} : _props$countCharProps,
|
|
68
75
|
_props$multiline = props.multiline,
|
|
69
76
|
multiline = _props$multiline === void 0 ? false : _props$multiline,
|
|
77
|
+
status = props.status,
|
|
78
|
+
statusMessage = props.statusMessage,
|
|
79
|
+
validationMessages = props.validationMessages,
|
|
70
80
|
others = _objectWithoutProperties(props, _excluded);
|
|
71
81
|
|
|
72
82
|
var elementId = useUniqueId(id, "hvTagsInput");
|
|
@@ -88,6 +98,21 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
88
98
|
tagCursorPos = _useState4[0],
|
|
89
99
|
setTagCursorPos = _useState4[1];
|
|
90
100
|
|
|
101
|
+
var _useControlled3 = useControlled(status, validationStates.standBy),
|
|
102
|
+
_useControlled4 = _slicedToArray(_useControlled3, 2),
|
|
103
|
+
validationState = _useControlled4[0],
|
|
104
|
+
setValidationState = _useControlled4[1];
|
|
105
|
+
|
|
106
|
+
var _useControlled5 = useControlled(statusMessage, ""),
|
|
107
|
+
_useControlled6 = _slicedToArray(_useControlled5, 2),
|
|
108
|
+
validationMessage = _useControlled6[0],
|
|
109
|
+
setValidationMessage = _useControlled6[1];
|
|
110
|
+
|
|
111
|
+
var _useState5 = useState(true),
|
|
112
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
113
|
+
stateValid = _useState6[0],
|
|
114
|
+
setStateValid = _useState6[1];
|
|
115
|
+
|
|
91
116
|
var isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;
|
|
92
117
|
var hasCounter = maxTagsQuantity != null && !hideCounter;
|
|
93
118
|
var isStateInvalid = useMemo(function () {
|
|
@@ -95,6 +120,22 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
95
120
|
}, [hasCounter, maxTagsQuantity, value.length]);
|
|
96
121
|
var inputRef = useRef();
|
|
97
122
|
var containerRef = useRef();
|
|
123
|
+
var errorMessages = useMemo(function () {
|
|
124
|
+
return _objectSpread(_objectSpread({}, DEFAULT_ERROR_MESSAGES), validationMessages);
|
|
125
|
+
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
126
|
+
[validationMessages === null || validationMessages === void 0 ? void 0 : validationMessages.error, validationMessages === null || validationMessages === void 0 ? void 0 : validationMessages.requiredError, validationMessages === null || validationMessages === void 0 ? void 0 : validationMessages.minCharError, validationMessages === null || validationMessages === void 0 ? void 0 : validationMessages.maxCharError]);
|
|
127
|
+
var performValidation = useCallback(function (currValue) {
|
|
128
|
+
if (maxTagsQuantity !== null && currValue.length > maxTagsQuantity) {
|
|
129
|
+
setValidationState(validationStates.invalid);
|
|
130
|
+
setValidationMessage(errorMessages.maxCharError);
|
|
131
|
+
setStateValid(false);
|
|
132
|
+
} else {
|
|
133
|
+
setValidationState(validationStates.valid);
|
|
134
|
+
setValidationMessage("");
|
|
135
|
+
setStateValid(true);
|
|
136
|
+
}
|
|
137
|
+
}, [errorMessages.maxCharError, maxTagsQuantity, setValidationMessage, setValidationState]);
|
|
138
|
+
var canShowError = status !== undefined && status === "invalid" && statusMessage !== undefined || !stateValid;
|
|
98
139
|
/**
|
|
99
140
|
* Handler for the `onChange` event on the tag input
|
|
100
141
|
*/
|
|
@@ -105,42 +146,49 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
105
146
|
useEffect(function () {
|
|
106
147
|
// keep scroll focused on the input when the value changes
|
|
107
148
|
if (!multiline) {
|
|
108
|
-
var _containerRef$current, _containerRef$current2;
|
|
149
|
+
var _containerRef$current, _containerRef$current2, _containerRef$current3;
|
|
109
150
|
|
|
110
|
-
var element =
|
|
151
|
+
var element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[value.length];
|
|
111
152
|
var offset = element === null || element === void 0 ? void 0 : element.offsetWidth;
|
|
112
|
-
containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$
|
|
153
|
+
containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : (_containerRef$current3 = _containerRef$current2.scrollBy) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.call(_containerRef$current2, offset !== null && offset !== void 0 ? offset : 0, 0);
|
|
113
154
|
}
|
|
114
155
|
}, [multiline, value]);
|
|
115
156
|
useEffect(function () {
|
|
116
157
|
if (!multiline) {
|
|
117
|
-
var
|
|
118
|
-
|
|
158
|
+
var _containerRef$current4;
|
|
159
|
+
|
|
160
|
+
var element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current4 = containerRef.current) === null || _containerRef$current4 === void 0 ? void 0 : _containerRef$current4.children[tagCursorPos]; // this setTimeout is a workaround for Firefox not properly dealing
|
|
119
161
|
// with setting the scrollLeft value.
|
|
120
162
|
|
|
121
163
|
setTimeout(function () {
|
|
122
|
-
|
|
164
|
+
var container = containerRef.current;
|
|
165
|
+
if (isNil(container)) return;
|
|
166
|
+
container.scrollLeft = element ? element.offsetLeft - container.getBoundingClientRect().width / 2 + element.getBoundingClientRect().width / 2 : 0;
|
|
123
167
|
}, 50);
|
|
124
168
|
element === null || element === void 0 ? void 0 : element.focus();
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
}, [tagCursorPos]);
|
|
169
|
+
}
|
|
170
|
+
}, [multiline, tagCursorPos]);
|
|
128
171
|
/**
|
|
129
172
|
* Handler for the `onEnter` event on the tag input
|
|
130
173
|
*/
|
|
131
174
|
|
|
132
175
|
var onEnterHandler = useCallback(function (event, tag) {
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
|
|
133
178
|
if (tag !== "") {
|
|
134
|
-
var
|
|
179
|
+
var newTag = {
|
|
135
180
|
label: tag,
|
|
136
181
|
type: "semantic"
|
|
137
|
-
}
|
|
182
|
+
};
|
|
183
|
+
var newTagsArr = [].concat(_toConsumableArray(value), [newTag]);
|
|
138
184
|
setValue(newTagsArr);
|
|
139
185
|
setTagInput("");
|
|
140
186
|
setTagCursorPos(newTagsArr.length);
|
|
141
|
-
|
|
187
|
+
performValidation(newTagsArr);
|
|
188
|
+
onAdd === null || onAdd === void 0 ? void 0 : onAdd(event, newTag, newTagsArr.length - 1);
|
|
189
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
|
|
142
190
|
}
|
|
143
|
-
}, [onChange, setValue, value]);
|
|
191
|
+
}, [onAdd, onChange, performValidation, setValue, value]);
|
|
144
192
|
/**
|
|
145
193
|
* Handler for the `onKeyDown` event on the list container.
|
|
146
194
|
*/
|
|
@@ -160,11 +208,13 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
160
208
|
if (isTagSelected) {
|
|
161
209
|
var _inputRef$current;
|
|
162
210
|
|
|
211
|
+
onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
|
|
163
212
|
var newTagsArr = [].concat(_toConsumableArray(value.slice(0, tagCursorPos)), _toConsumableArray(value.slice(tagCursorPos + 1)));
|
|
164
213
|
setValue(newTagsArr);
|
|
165
214
|
setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
|
|
166
215
|
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
167
|
-
|
|
216
|
+
performValidation(newTagsArr);
|
|
217
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
|
|
168
218
|
} else {
|
|
169
219
|
setTagCursorPos(value.length - 1);
|
|
170
220
|
}
|
|
@@ -175,12 +225,15 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
175
225
|
if (isTagSelected) {
|
|
176
226
|
var _inputRef$current2;
|
|
177
227
|
|
|
228
|
+
onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
|
|
229
|
+
|
|
178
230
|
var _newTagsArr = [].concat(_toConsumableArray(value.slice(0, tagCursorPos)), _toConsumableArray(value.slice(tagCursorPos + 1)));
|
|
179
231
|
|
|
180
232
|
setValue(_newTagsArr);
|
|
181
233
|
setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
|
|
182
234
|
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
|
|
183
|
-
|
|
235
|
+
performValidation(_newTagsArr);
|
|
236
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, _newTagsArr);
|
|
184
237
|
}
|
|
185
238
|
|
|
186
239
|
break;
|
|
@@ -189,20 +242,23 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
189
242
|
break;
|
|
190
243
|
}
|
|
191
244
|
}
|
|
192
|
-
}, [isTagSelected, onChange, setValue, tagCursorPos, tagInput, value]);
|
|
245
|
+
}, [isTagSelected, onChange, onDelete, performValidation, setValue, tagCursorPos, tagInput, value]);
|
|
193
246
|
/**
|
|
194
247
|
* Handler for the `onDelete` event on the tag component
|
|
195
248
|
*/
|
|
196
249
|
|
|
197
|
-
var onDeleteTagHandler = useCallback(function (i) {
|
|
250
|
+
var onDeleteTagHandler = useCallback(function (event, i) {
|
|
198
251
|
var _inputRef$current3;
|
|
199
252
|
|
|
253
|
+
onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[i], i);
|
|
200
254
|
var newTagsArr = [].concat(_toConsumableArray(value.slice(0, i)), _toConsumableArray(value.slice(i + 1)));
|
|
255
|
+
setValidationState(validationStates.standBy);
|
|
201
256
|
setValue(newTagsArr);
|
|
202
257
|
setTagCursorPos(newTagsArr.length);
|
|
203
258
|
(_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
|
|
204
|
-
|
|
205
|
-
|
|
259
|
+
performValidation(newTagsArr);
|
|
260
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
|
|
261
|
+
}, [onDelete, value, setValidationState, setValue, performValidation, onChange]);
|
|
206
262
|
/**
|
|
207
263
|
* Handler for the `onClick` event on the list container
|
|
208
264
|
*/
|
|
@@ -218,6 +274,8 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
218
274
|
name: name,
|
|
219
275
|
disabled: disabled,
|
|
220
276
|
readOnly: readOnly,
|
|
277
|
+
status: validationState,
|
|
278
|
+
required: required,
|
|
221
279
|
className: clsx(classes.root, className, disabled && classes.disabled)
|
|
222
280
|
}, (hasLabel || hasDescription) && /*#__PURE__*/React.createElement("div", {
|
|
223
281
|
className: classes.labelContainer
|
|
@@ -236,7 +294,7 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
236
294
|
currentCharQuantity: value.length,
|
|
237
295
|
maxCharQuantity: maxTagsQuantity
|
|
238
296
|
}, countCharProps)), /*#__PURE__*/React.createElement(HvListContainer, {
|
|
239
|
-
className: clsx(classes.tagsList, multiline ? resizable && classes.resizable : classes.singleLine, isStateInvalid && classes.invalid),
|
|
297
|
+
className: clsx(classes.tagsList, multiline ? resizable && classes.resizable : classes.singleLine, canShowError && classes.error, isStateInvalid && classes.invalid),
|
|
240
298
|
onKeyDown: onKeyDownHandler,
|
|
241
299
|
onClick: onContainerClickHandler,
|
|
242
300
|
ref: containerRef
|
|
@@ -263,10 +321,13 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
263
321
|
}, /*#__PURE__*/React.createElement(HvTag, _extends({
|
|
264
322
|
label: label,
|
|
265
323
|
className: clsx(i === tagCursorPos && classes.tagSelected),
|
|
324
|
+
classes: {
|
|
325
|
+
chipRoot: classes.chipRoot
|
|
326
|
+
},
|
|
266
327
|
type: type
|
|
267
328
|
}, !(readOnly || disabled || type === "categorical") && {
|
|
268
|
-
onDelete: function onDelete() {
|
|
269
|
-
return onDeleteTagHandler(i);
|
|
329
|
+
onDelete: function onDelete(event) {
|
|
330
|
+
return onDeleteTagHandler(event, i);
|
|
270
331
|
}
|
|
271
332
|
}, {
|
|
272
333
|
deleteButtonProps: {
|
|
@@ -302,7 +363,11 @@ var HvTagsInput = function HvTagsInput(props) {
|
|
|
302
363
|
"aria-describedby": ariaDescribedBy != null ? ariaDescribedBy : description && setId(elementId, "description")
|
|
303
364
|
}, inputProps),
|
|
304
365
|
inputRef: inputRef
|
|
305
|
-
}, others))))
|
|
366
|
+
}, others)))), canShowError && /*#__PURE__*/React.createElement(HvWarningText, {
|
|
367
|
+
id: setId(elementId, "error"),
|
|
368
|
+
disableBorder: true,
|
|
369
|
+
className: classes.error
|
|
370
|
+
}, validationMessage));
|
|
306
371
|
};
|
|
307
372
|
|
|
308
373
|
process.env.NODE_ENV !== "production" ? HvTagsInput.propTypes = {
|
|
@@ -335,6 +400,11 @@ process.env.NODE_ENV !== "production" ? HvTagsInput.propTypes = {
|
|
|
335
400
|
*/
|
|
336
401
|
root: PropTypes.string,
|
|
337
402
|
|
|
403
|
+
/**
|
|
404
|
+
*
|
|
405
|
+
*/
|
|
406
|
+
chipRoot: PropTypes.string,
|
|
407
|
+
|
|
338
408
|
/**
|
|
339
409
|
* Style applied to the root when resizable is `true`.
|
|
340
410
|
*/
|
|
@@ -401,9 +471,14 @@ process.env.NODE_ENV !== "production" ? HvTagsInput.propTypes = {
|
|
|
401
471
|
tagInputRootFocused: PropTypes.string,
|
|
402
472
|
|
|
403
473
|
/**
|
|
404
|
-
* Styles applied to the container when in single line mode
|
|
474
|
+
* Styles applied to the container when in single line mode.
|
|
475
|
+
*/
|
|
476
|
+
singleLine: PropTypes.string,
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Styles applied to the tags list when an error occurred.
|
|
405
480
|
*/
|
|
406
|
-
|
|
481
|
+
error: PropTypes.string
|
|
407
482
|
}).isRequired,
|
|
408
483
|
|
|
409
484
|
/**
|
|
@@ -464,11 +539,26 @@ process.env.NODE_ENV !== "production" ? HvTagsInput.propTypes = {
|
|
|
464
539
|
*/
|
|
465
540
|
readOnly: PropTypes.bool,
|
|
466
541
|
|
|
542
|
+
/**
|
|
543
|
+
* Indicates that the form element is required.
|
|
544
|
+
*/
|
|
545
|
+
required: PropTypes.bool,
|
|
546
|
+
|
|
467
547
|
/**
|
|
468
548
|
* The function that will be executed onChange.
|
|
469
549
|
*/
|
|
470
550
|
onChange: PropTypes.func,
|
|
471
551
|
|
|
552
|
+
/**
|
|
553
|
+
* The function that will be executed when a tag is deleted.
|
|
554
|
+
*/
|
|
555
|
+
onDelete: PropTypes.func,
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* The function that will be executed when a tag is added.
|
|
559
|
+
*/
|
|
560
|
+
onAdd: PropTypes.func,
|
|
561
|
+
|
|
472
562
|
/**
|
|
473
563
|
* The placeholder value of the input.
|
|
474
564
|
*/
|
|
@@ -513,7 +603,42 @@ process.env.NODE_ENV !== "production" ? HvTagsInput.propTypes = {
|
|
|
513
603
|
/**
|
|
514
604
|
* If `true` the component is in multiline mode.
|
|
515
605
|
*/
|
|
516
|
-
multiline: PropTypes.bool
|
|
606
|
+
multiline: PropTypes.bool,
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* The status of the form element.
|
|
610
|
+
*/
|
|
611
|
+
status: PropTypes.string,
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* The error message to show when `status` is "invalid".
|
|
615
|
+
*/
|
|
616
|
+
statusMessage: PropTypes.string,
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* An Object containing the various texts associated with the input.
|
|
620
|
+
*/
|
|
621
|
+
validationMessages: PropTypes.shape({
|
|
622
|
+
/**
|
|
623
|
+
* The value when a validation fails.
|
|
624
|
+
*/
|
|
625
|
+
error: PropTypes.string,
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* The message that appears when there are too many characters.
|
|
629
|
+
*/
|
|
630
|
+
maxCharError: PropTypes.string,
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* The message that appears when there are too few characters.
|
|
634
|
+
*/
|
|
635
|
+
minCharError: PropTypes.string,
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* The message that appears when the input is empty and required.
|
|
639
|
+
*/
|
|
640
|
+
requiredError: PropTypes.string
|
|
641
|
+
})
|
|
517
642
|
} : void 0;
|
|
518
643
|
export default withStyles(styles, {
|
|
519
644
|
name: "HvTagsInput"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/TagsInput/TagsInput.js"],"names":["React","useRef","useState","useCallback","useMemo","useEffect","PropTypes","clsx","withStyles","setId","useControlled","HvFormElement","HvListContainer","HvListItem","HvTag","HvInput","HvLabel","HvInfoMessage","HvCharCounter","useUniqueId","styles","HvTagsInput","props","classes","className","id","name","valueProp","value","defaultValue","readOnly","disabled","textAreaLabel","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","placeholder","hideCounter","middleCountLabel","maxTagsQuantity","autoFocus","resizable","inputProps","countCharProps","multiline","others","elementId","hasLabel","hasDescription","setValue","tagInput","setTagInput","length","tagCursorPos","setTagCursorPos","isTagSelected","hasCounter","isStateInvalid","inputRef","containerRef","onChangeHandler","event","input","element","document","getElementById","offset","offsetWidth","current","scrollBy","tagId","setTimeout","scrollLeft","offsetLeft","getBoundingClientRect","width","focus","onEnterHandler","tag","newTagsArr","type","onKeyDownHandler","code","slice","onDeleteTagHandler","i","onContainerClickHandler","root","labelContainer","characterCounter","tagsList","singleLine","invalid","map","t","otherProps","gutters","listItemGutters","listItemRoot","tagSelected","onDelete","tabIndex","tagInputContainerRoot","tagInputRoot","inputBorderContainer","tagInputBorderContainer","inputRootFocused","tagInputRootFocused","propTypes","string","shape","isRequired","array","node","bool","func","number","instanceOf","Object"],"mappings":"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","sourcesContent":["import React, { useRef, useState, useCallback, useMemo, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@material-ui/core\";\nimport { setId, useControlled } from \"../utils\";\nimport {\n HvFormElement,\n HvListContainer,\n HvListItem,\n HvTag,\n HvInput,\n HvLabel,\n HvInfoMessage,\n HvCharCounter,\n useUniqueId,\n} from \"..\";\nimport styles from \"./styles\";\n\n/**\n * A text area is a multiline text input box, with an optional character counter when there is a length limit.\n */\nconst HvTagsInput = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n\n value: valueProp,\n defaultValue = [],\n\n readOnly = false,\n disabled = false,\n\n label: textAreaLabel,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n\n placeholder,\n\n hideCounter = false,\n middleCountLabel = \"/\",\n maxTagsQuantity,\n\n autoFocus = false,\n resizable = true,\n\n inputProps = {},\n countCharProps = {},\n\n multiline = false,\n\n ...others\n } = props;\n\n const elementId = useUniqueId(id, \"hvTagsInput\");\n\n const hasLabel = textAreaLabel != null;\n const hasDescription = description != null;\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const [tagInput, setTagInput] = useState(\"\");\n const [tagCursorPos, setTagCursorPos] = useState(value.length);\n\n const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;\n\n const hasCounter = maxTagsQuantity != null && !hideCounter;\n\n const isStateInvalid = useMemo(() => {\n return hasCounter && value.length > maxTagsQuantity;\n }, [hasCounter, maxTagsQuantity, value.length]);\n\n const inputRef = useRef();\n const containerRef = useRef();\n\n /**\n * Handler for the `onChange` event on the tag input\n */\n const onChangeHandler = useCallback((event, input) => {\n setTagInput(input);\n }, []);\n\n useEffect(() => {\n // keep scroll focused on the input when the value changes\n if (!multiline) {\n const element = document.getElementById(\"tag-input\");\n const offset = element?.offsetWidth;\n containerRef?.current?.scrollBy?.(offset ?? 0, 0);\n }\n }, [multiline, value]);\n\n useEffect(() => {\n if (!multiline) {\n const tagId = `tag-${tagCursorPos}`;\n const element = document.getElementById(tagId);\n // this setTimeout is a workaround for Firefox not properly dealing\n // with setting the scrollLeft value.\n setTimeout(() => {\n containerRef.current.scrollLeft = element\n ? element.offsetLeft -\n containerRef.current.getBoundingClientRect().width / 2 +\n element.getBoundingClientRect().width / 2\n : 0;\n }, 50);\n\n element?.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tagCursorPos]);\n\n /**\n * Handler for the `onEnter` event on the tag input\n */\n const onEnterHandler = useCallback(\n (event, tag) => {\n if (tag !== \"\") {\n const newTagsArr = [...value, { label: tag, type: \"semantic\" }];\n setValue(newTagsArr);\n setTagInput(\"\");\n setTagCursorPos(newTagsArr.length);\n\n onChange?.(newTagsArr);\n }\n },\n [onChange, setValue, value]\n );\n\n /**\n * Handler for the `onKeyDown` event on the list container.\n */\n const onKeyDownHandler = useCallback(\n (event) => {\n if (tagInput === \"\") {\n switch (event.code) {\n case \"ArrowLeft\":\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n break;\n case \"ArrowRight\":\n setTagCursorPos(tagCursorPos < value.length ? tagCursorPos + 1 : value.length);\n break;\n case \"Backspace\":\n if (isTagSelected) {\n const newTagsArr = [\n ...value.slice(0, tagCursorPos),\n ...value.slice(tagCursorPos + 1),\n ];\n setValue(newTagsArr);\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n onChange?.(newTagsArr);\n } else {\n setTagCursorPos(value.length - 1);\n }\n break;\n case \"Delete\":\n if (isTagSelected) {\n const newTagsArr = [\n ...value.slice(0, tagCursorPos),\n ...value.slice(tagCursorPos + 1),\n ];\n setValue(newTagsArr);\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n onChange?.(newTagsArr);\n }\n break;\n default:\n break;\n }\n }\n },\n [isTagSelected, onChange, setValue, tagCursorPos, tagInput, value]\n );\n\n /**\n * Handler for the `onDelete` event on the tag component\n */\n const onDeleteTagHandler = useCallback(\n (i) => {\n const newTagsArr = [...value.slice(0, i), ...value.slice(i + 1)];\n setValue(newTagsArr);\n setTagCursorPos(newTagsArr.length);\n inputRef.current?.focus();\n onChange?.(newTagsArr);\n },\n [value, setValue, onChange]\n );\n\n /**\n * Handler for the `onClick` event on the list container\n */\n const onContainerClickHandler = useCallback(() => {\n inputRef.current?.focus();\n setTagCursorPos(value.length);\n }, [value.length]);\n\n return (\n <HvFormElement\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n className={clsx(classes.root, className, {\n [classes.disabled]: disabled,\n })}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n className={classes.label}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={textAreaLabel}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage className={classes.description} id={setId(elementId, \"description\")}>\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n {hasCounter && (\n <HvCharCounter\n id={setId(elementId, \"charCounter\")}\n className={classes.characterCounter}\n separator={middleCountLabel}\n currentCharQuantity={value.length}\n maxCharQuantity={maxTagsQuantity}\n {...countCharProps}\n />\n )}\n\n <HvListContainer\n className={clsx(\n classes.tagsList,\n resizable && multiline && classes.resizable,\n isStateInvalid && classes.invalid,\n !multiline && classes.singleLine\n )}\n onKeyDown={onKeyDownHandler}\n onClick={onContainerClickHandler}\n ref={containerRef}\n >\n {value &&\n value.map((t, i) => {\n const tag =\n typeof t === \"string\"\n ? {\n label: t,\n type: \"semantic\",\n }\n : t;\n const { label, type, ...otherProps } = tag;\n return (\n <HvListItem\n // eslint-disable-next-line react/no-array-index-key\n key={`${tag.label}-${i}`}\n tabIndex={-1}\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n gutters: classes.listItemGutters,\n root: classes.listItemRoot,\n }}\n id={`tag-${i}`}\n >\n <HvTag\n label={label}\n className={clsx(i === tagCursorPos && classes.tagSelected)}\n type={type}\n {...(!(readOnly || disabled || type === \"categorical\") && {\n onDelete: () => onDeleteTagHandler(i),\n })}\n deleteButtonProps={{\n tabIndex: -1,\n }}\n {...otherProps}\n />\n </HvListItem>\n );\n })}\n {!(disabled || readOnly) && (\n <HvListItem\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n root: classes.tagInputContainerRoot,\n gutters: classes.listItemGutters,\n }}\n id={`tag-${value.length}`}\n >\n <HvInput\n value={tagInput}\n disableClear\n onChange={onChangeHandler}\n onEnter={onEnterHandler}\n placeholder={value.length === 0 ? placeholder : \"\"}\n autoFocus={autoFocus}\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n root: classes.tagInputRoot,\n input: classes.input,\n inputBorderContainer: classes.tagInputBorderContainer,\n inputRootFocused: classes.tagInputRootFocused,\n }}\n disabled={disabled}\n readOnly={readOnly || isTagSelected}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : description && setId(elementId, \"description\"),\n\n ...inputProps,\n }}\n inputRef={inputRef}\n {...others}\n />\n </HvListItem>\n )}\n </HvListContainer>\n </HvFormElement>\n );\n};\n\nHvTagsInput.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes: PropTypes.PropTypes.shape({\n /**\n * Styles applied to the input element.\n */\n input: PropTypes.string,\n /**\n * Styles applied to the list item gutters.\n */\n listItemGutters: PropTypes.string,\n /**\n * Styles applied to the list item element.\n */\n listItemRoot: PropTypes.string,\n /**\n * Styles applied to the root container of the textarea.\n */\n root: PropTypes.string,\n /**\n * Style applied to the root when resizable is `true`.\n */\n disabled: PropTypes.string,\n /**\n * Style applied to the root when resizable is `true`.\n */\n resizable: PropTypes.string,\n /**\n * Style applied to the root when invalid.\n */\n invalid: PropTypes.string,\n /**\n * Styles applied to text area container that holds the label, description and counter.\n */\n labelContainer: PropTypes.string,\n /**\n * Styles applied to the label element.\n */\n label: PropTypes.string,\n /**\n * Styles applied to the label element.\n */\n description: PropTypes.string,\n /**\n * Style applied on the character counter.\n */\n characterCounter: PropTypes.string,\n /**\n * Styles applied to the tags list container element.\n */\n tagsList: PropTypes.string,\n /**\n * Styles applied to the tag input container element.\n */\n tagInputContainerRoot: PropTypes.string,\n /**\n * Styles applied to the tag input element.\n */\n tagInputRoot: PropTypes.string,\n /**\n * Styles applied to a tag element when selected\n */\n tagSelected: PropTypes.string,\n /**\n * Styles applied to the input element border.\n */\n tagInputBorderContainer: PropTypes.string,\n /**\n * Styles applied to the input element when focused.\n */\n tagInputRootFocused: PropTypes.string,\n /**\n * Styles applied to the container when in single line mode§.\n */\n singleLine: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the form element root node.\n */\n id: PropTypes.string,\n /**\n * The form element name.\n */\n name: PropTypes.string,\n /**\n * The value of the form element.\n */\n value: PropTypes.array,\n /**\n * When uncontrolled, defines the initial input value.\n */\n defaultValue: PropTypes.array,\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be inputted via inputProps.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n \"aria-label\": PropTypes.string,\n /**\n * @ignore\n */\n \"aria-labelledby\": PropTypes.string,\n /**\n * Provide additional descriptive text for the form element.\n */\n description: PropTypes.node,\n /**\n * @ignore\n */\n \"aria-describedby\": PropTypes.string,\n /**\n * Indicates that the form element is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Indicates that the form element is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * The function that will be executed onChange.\n */\n onChange: PropTypes.func,\n /**\n * The placeholder value of the input.\n */\n placeholder: PropTypes.string,\n /**\n * If `true` the character counter isn't shown even if maxTagsQuantity is set.\n */\n hideCounter: PropTypes.bool,\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel: PropTypes.string,\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxTagsQuantity: PropTypes.number,\n /**\n * Attributes applied to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n /**\n * If `true` it should autofocus.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true` the component is resizable.\n */\n resizable: PropTypes.bool,\n /**\n * Props passed to the HvCharCount component.\n */\n countCharProps: PropTypes.instanceOf(Object),\n /**\n * If `true` the component is in multiline mode.\n */\n multiline: PropTypes.bool,\n};\n\nexport default withStyles(styles, { name: \"HvTagsInput\" })(HvTagsInput);\n"],"file":"TagsInput.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/TagsInput/TagsInput.js"],"names":["React","useRef","useState","useCallback","useMemo","useEffect","PropTypes","clsx","isNil","withStyles","setId","useControlled","HvFormElement","HvListContainer","HvListItem","HvTag","HvInput","HvLabel","HvInfoMessage","HvCharCounter","HvWarningText","useUniqueId","validationStates","DEFAULT_ERROR_MESSAGES","styles","HvTagsInput","props","classes","className","id","name","valueProp","value","defaultValue","readOnly","disabled","required","textAreaLabel","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onAdd","onDelete","placeholder","hideCounter","middleCountLabel","maxTagsQuantity","autoFocus","resizable","inputProps","countCharProps","multiline","status","statusMessage","validationMessages","others","elementId","hasLabel","hasDescription","setValue","tagInput","setTagInput","length","tagCursorPos","setTagCursorPos","standBy","validationState","setValidationState","validationMessage","setValidationMessage","stateValid","setStateValid","isTagSelected","hasCounter","isStateInvalid","inputRef","containerRef","errorMessages","error","requiredError","minCharError","maxCharError","performValidation","currValue","invalid","valid","canShowError","undefined","onChangeHandler","event","input","element","current","children","offset","offsetWidth","scrollBy","setTimeout","container","scrollLeft","offsetLeft","getBoundingClientRect","width","focus","onEnterHandler","tag","preventDefault","newTag","type","newTagsArr","onKeyDownHandler","code","slice","onDeleteTagHandler","i","onContainerClickHandler","root","labelContainer","characterCounter","tagsList","singleLine","map","t","otherProps","gutters","listItemGutters","listItemRoot","tagSelected","chipRoot","tabIndex","tagInputContainerRoot","tagInputRoot","inputBorderContainer","tagInputBorderContainer","inputRootFocused","tagInputRootFocused","propTypes","string","shape","isRequired","array","node","bool","func","number","instanceOf","Object"],"mappings":"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","sourcesContent":["import React, { useRef, useState, useCallback, useMemo, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport { withStyles } from \"@material-ui/core\";\nimport { setId, useControlled } from \"../utils\";\nimport {\n HvFormElement,\n HvListContainer,\n HvListItem,\n HvTag,\n HvInput,\n HvLabel,\n HvInfoMessage,\n HvCharCounter,\n HvWarningText,\n useUniqueId,\n} from \"..\";\nimport validationStates from \"../Forms/FormElement/validationStates\";\nimport { DEFAULT_ERROR_MESSAGES } from \"../BaseInput/validations\";\nimport styles from \"./styles\";\n\n/**\n * A tags input is a single or multiline control that allows the input of tags.\n */\nconst HvTagsInput = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n\n value: valueProp,\n defaultValue = [],\n\n readOnly = false,\n disabled = false,\n required = false,\n\n label: textAreaLabel,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onAdd,\n onDelete,\n\n placeholder,\n\n hideCounter = false,\n middleCountLabel = \"/\",\n maxTagsQuantity,\n\n autoFocus = false,\n resizable = true,\n\n inputProps = {},\n countCharProps = {},\n\n multiline = false,\n\n status,\n statusMessage,\n\n validationMessages,\n\n ...others\n } = props;\n const elementId = useUniqueId(id, \"hvTagsInput\");\n\n const hasLabel = textAreaLabel != null;\n const hasDescription = description != null;\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const [tagInput, setTagInput] = useState(\"\");\n const [tagCursorPos, setTagCursorPos] = useState(value.length);\n\n const [validationState, setValidationState] = useControlled(status, validationStates.standBy);\n const [validationMessage, setValidationMessage] = useControlled(statusMessage, \"\");\n\n const [stateValid, setStateValid] = useState(true);\n\n const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;\n\n const hasCounter = maxTagsQuantity != null && !hideCounter;\n\n const isStateInvalid = useMemo(() => {\n return hasCounter && value.length > maxTagsQuantity;\n }, [hasCounter, maxTagsQuantity, value.length]);\n\n const inputRef = useRef();\n const containerRef = useRef();\n\n const errorMessages = useMemo(\n () => ({ ...DEFAULT_ERROR_MESSAGES, ...validationMessages }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n validationMessages?.error,\n validationMessages?.requiredError,\n validationMessages?.minCharError,\n validationMessages?.maxCharError,\n ]\n );\n\n const performValidation = useCallback(\n (currValue) => {\n if (maxTagsQuantity !== null && currValue.length > maxTagsQuantity) {\n setValidationState(validationStates.invalid);\n setValidationMessage(errorMessages.maxCharError);\n setStateValid(false);\n } else {\n setValidationState(validationStates.valid);\n setValidationMessage(\"\");\n setStateValid(true);\n }\n },\n [errorMessages.maxCharError, maxTagsQuantity, setValidationMessage, setValidationState]\n );\n\n const canShowError =\n (status !== undefined && status === \"invalid\" && statusMessage !== undefined) || !stateValid;\n\n /**\n * Handler for the `onChange` event on the tag input\n */\n const onChangeHandler = useCallback((event, input) => {\n setTagInput(input);\n }, []);\n\n useEffect(() => {\n // keep scroll focused on the input when the value changes\n if (!multiline) {\n const element = containerRef?.current?.children[value.length];\n const offset = element?.offsetWidth;\n containerRef?.current?.scrollBy?.(offset ?? 0, 0);\n }\n }, [multiline, value]);\n\n useEffect(() => {\n if (!multiline) {\n const element = containerRef?.current?.children[tagCursorPos];\n // this setTimeout is a workaround for Firefox not properly dealing\n // with setting the scrollLeft value.\n setTimeout(() => {\n const container = containerRef.current;\n if (isNil(container)) return;\n container.scrollLeft = element\n ? element.offsetLeft -\n container.getBoundingClientRect().width / 2 +\n element.getBoundingClientRect().width / 2\n : 0;\n }, 50);\n\n element?.focus();\n }\n }, [multiline, tagCursorPos]);\n\n /**\n * Handler for the `onEnter` event on the tag input\n */\n const onEnterHandler = useCallback(\n (event, tag) => {\n event.preventDefault();\n if (tag !== \"\") {\n const newTag = { label: tag, type: \"semantic\" };\n const newTagsArr = [...value, newTag];\n setValue(newTagsArr);\n setTagInput(\"\");\n setTagCursorPos(newTagsArr.length);\n performValidation(newTagsArr);\n onAdd?.(event, newTag, newTagsArr.length - 1);\n onChange?.(event, newTagsArr);\n }\n },\n [onAdd, onChange, performValidation, setValue, value]\n );\n\n /**\n * Handler for the `onKeyDown` event on the list container.\n */\n const onKeyDownHandler = useCallback(\n (event) => {\n if (tagInput === \"\") {\n switch (event.code) {\n case \"ArrowLeft\":\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n break;\n case \"ArrowRight\":\n setTagCursorPos(tagCursorPos < value.length ? tagCursorPos + 1 : value.length);\n break;\n case \"Backspace\":\n if (isTagSelected) {\n onDelete?.(event, value[tagCursorPos], tagCursorPos);\n const newTagsArr = [\n ...value.slice(0, tagCursorPos),\n ...value.slice(tagCursorPos + 1),\n ];\n setValue(newTagsArr);\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onChange?.(event, newTagsArr);\n } else {\n setTagCursorPos(value.length - 1);\n }\n break;\n case \"Delete\":\n if (isTagSelected) {\n onDelete?.(event, value[tagCursorPos], tagCursorPos);\n const newTagsArr = [\n ...value.slice(0, tagCursorPos),\n ...value.slice(tagCursorPos + 1),\n ];\n setValue(newTagsArr);\n setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onChange?.(event, newTagsArr);\n }\n break;\n default:\n break;\n }\n }\n },\n [isTagSelected, onChange, onDelete, performValidation, setValue, tagCursorPos, tagInput, value]\n );\n\n /**\n * Handler for the `onDelete` event on the tag component\n */\n const onDeleteTagHandler = useCallback(\n (event, i) => {\n onDelete?.(event, value[i], i);\n const newTagsArr = [...value.slice(0, i), ...value.slice(i + 1)];\n setValidationState(validationStates.standBy);\n setValue(newTagsArr);\n setTagCursorPos(newTagsArr.length);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onChange?.(event, newTagsArr);\n },\n [onDelete, value, setValidationState, setValue, performValidation, onChange]\n );\n\n /**\n * Handler for the `onClick` event on the list container\n */\n const onContainerClickHandler = useCallback(() => {\n inputRef.current?.focus();\n setTagCursorPos(value.length);\n }, [value.length]);\n\n return (\n <HvFormElement\n id={id}\n name={name}\n disabled={disabled}\n readOnly={readOnly}\n status={validationState}\n required={required}\n className={clsx(classes.root, className, {\n [classes.disabled]: disabled,\n })}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n className={classes.label}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={textAreaLabel}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage className={classes.description} id={setId(elementId, \"description\")}>\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n {hasCounter && (\n <HvCharCounter\n id={setId(elementId, \"charCounter\")}\n className={classes.characterCounter}\n separator={middleCountLabel}\n currentCharQuantity={value.length}\n maxCharQuantity={maxTagsQuantity}\n {...countCharProps}\n />\n )}\n\n <HvListContainer\n className={clsx(\n classes.tagsList,\n canShowError && classes.error,\n resizable && multiline && classes.resizable,\n isStateInvalid && classes.invalid,\n !multiline && classes.singleLine\n )}\n onKeyDown={onKeyDownHandler}\n onClick={onContainerClickHandler}\n ref={containerRef}\n >\n {value &&\n value.map((t, i) => {\n const tag =\n typeof t === \"string\"\n ? {\n label: t,\n type: \"semantic\",\n }\n : t;\n const { label, type, ...otherProps } = tag;\n return (\n <HvListItem\n // eslint-disable-next-line react/no-array-index-key\n key={`${tag.label}-${i}`}\n tabIndex={-1}\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n gutters: classes.listItemGutters,\n root: classes.listItemRoot,\n }}\n id={`tag-${i}`}\n >\n <HvTag\n label={label}\n className={clsx(i === tagCursorPos && classes.tagSelected)}\n classes={{\n chipRoot: classes.chipRoot,\n }}\n type={type}\n {...(!(readOnly || disabled || type === \"categorical\") && {\n onDelete: (event) => onDeleteTagHandler(event, i),\n })}\n deleteButtonProps={{\n tabIndex: -1,\n }}\n {...otherProps}\n />\n </HvListItem>\n );\n })}\n {!(disabled || readOnly) && (\n <HvListItem\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n root: classes.tagInputContainerRoot,\n gutters: classes.listItemGutters,\n }}\n id={`tag-${value.length}`}\n >\n <HvInput\n value={tagInput}\n disableClear\n onChange={onChangeHandler}\n onEnter={onEnterHandler}\n placeholder={value.length === 0 ? placeholder : \"\"}\n autoFocus={autoFocus}\n className={clsx(!multiline && classes.singleLine)}\n classes={{\n root: classes.tagInputRoot,\n input: classes.input,\n inputBorderContainer: classes.tagInputBorderContainer,\n inputRootFocused: classes.tagInputRootFocused,\n }}\n disabled={disabled}\n readOnly={readOnly || isTagSelected}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : description && setId(elementId, \"description\"),\n\n ...inputProps,\n }}\n inputRef={inputRef}\n {...others}\n />\n </HvListItem>\n )}\n </HvListContainer>\n {canShowError && (\n <HvWarningText id={setId(elementId, \"error\")} disableBorder className={classes.error}>\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n};\n\nHvTagsInput.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes: PropTypes.PropTypes.shape({\n /**\n * Styles applied to the input element.\n */\n input: PropTypes.string,\n /**\n * Styles applied to the list item gutters.\n */\n listItemGutters: PropTypes.string,\n /**\n * Styles applied to the list item element.\n */\n listItemRoot: PropTypes.string,\n /**\n * Styles applied to the root container of the textarea.\n */\n root: PropTypes.string,\n /**\n *\n */\n chipRoot: PropTypes.string,\n /**\n * Style applied to the root when resizable is `true`.\n */\n disabled: PropTypes.string,\n /**\n * Style applied to the root when resizable is `true`.\n */\n resizable: PropTypes.string,\n /**\n * Style applied to the root when invalid.\n */\n invalid: PropTypes.string,\n /**\n * Styles applied to text area container that holds the label, description and counter.\n */\n labelContainer: PropTypes.string,\n /**\n * Styles applied to the label element.\n */\n label: PropTypes.string,\n /**\n * Styles applied to the label element.\n */\n description: PropTypes.string,\n /**\n * Style applied on the character counter.\n */\n characterCounter: PropTypes.string,\n /**\n * Styles applied to the tags list container element.\n */\n tagsList: PropTypes.string,\n /**\n * Styles applied to the tag input container element.\n */\n tagInputContainerRoot: PropTypes.string,\n /**\n * Styles applied to the tag input element.\n */\n tagInputRoot: PropTypes.string,\n /**\n * Styles applied to a tag element when selected\n */\n tagSelected: PropTypes.string,\n /**\n * Styles applied to the input element border.\n */\n tagInputBorderContainer: PropTypes.string,\n /**\n * Styles applied to the input element when focused.\n */\n tagInputRootFocused: PropTypes.string,\n /**\n * Styles applied to the container when in single line mode.\n */\n singleLine: PropTypes.string,\n /**\n * Styles applied to the tags list when an error occurred.\n */\n error: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the form element root node.\n */\n id: PropTypes.string,\n /**\n * The form element name.\n */\n name: PropTypes.string,\n /**\n * The value of the form element.\n */\n value: PropTypes.array,\n /**\n * When uncontrolled, defines the initial input value.\n */\n defaultValue: PropTypes.array,\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be inputted via inputProps.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n \"aria-label\": PropTypes.string,\n /**\n * @ignore\n */\n \"aria-labelledby\": PropTypes.string,\n /**\n * Provide additional descriptive text for the form element.\n */\n description: PropTypes.node,\n /**\n * @ignore\n */\n \"aria-describedby\": PropTypes.string,\n /**\n * Indicates that the form element is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * Indicates that the form element is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the form element is required.\n */\n required: PropTypes.bool,\n /**\n * The function that will be executed onChange.\n */\n onChange: PropTypes.func,\n /**\n * The function that will be executed when a tag is deleted.\n */\n onDelete: PropTypes.func,\n /**\n * The function that will be executed when a tag is added.\n */\n onAdd: PropTypes.func,\n /**\n * The placeholder value of the input.\n */\n placeholder: PropTypes.string,\n /**\n * If `true` the character counter isn't shown even if maxTagsQuantity is set.\n */\n hideCounter: PropTypes.bool,\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel: PropTypes.string,\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxTagsQuantity: PropTypes.number,\n /**\n * Attributes applied to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n /**\n * If `true` it should autofocus.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true` the component is resizable.\n */\n resizable: PropTypes.bool,\n /**\n * Props passed to the HvCharCount component.\n */\n countCharProps: PropTypes.instanceOf(Object),\n /**\n * If `true` the component is in multiline mode.\n */\n multiline: PropTypes.bool,\n /**\n * The status of the form element.\n */\n status: PropTypes.string,\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage: PropTypes.string,\n\n /**\n * An Object containing the various texts associated with the input.\n */\n validationMessages: PropTypes.shape({\n /**\n * The value when a validation fails.\n */\n error: PropTypes.string,\n /**\n * The message that appears when there are too many characters.\n */\n maxCharError: PropTypes.string,\n /**\n * The message that appears when there are too few characters.\n */\n minCharError: PropTypes.string,\n /**\n * The message that appears when the input is empty and required.\n */\n requiredError: PropTypes.string,\n }),\n};\n\nexport default withStyles(styles, { name: \"HvTagsInput\" })(HvTagsInput);\n"],"file":"TagsInput.js"}
|
|
@@ -4,12 +4,18 @@ var styles = function styles(theme) {
|
|
|
4
4
|
display: "inline-block",
|
|
5
5
|
maxWidth: "100%"
|
|
6
6
|
},
|
|
7
|
+
chipRoot: {
|
|
8
|
+
maxWidth: "none"
|
|
9
|
+
},
|
|
7
10
|
resizable: {
|
|
8
11
|
width: "auto",
|
|
9
12
|
resize: "both",
|
|
10
13
|
overflow: "auto"
|
|
11
14
|
},
|
|
12
15
|
disabled: {},
|
|
16
|
+
error: {
|
|
17
|
+
float: "left"
|
|
18
|
+
},
|
|
13
19
|
invalid: {
|
|
14
20
|
border: "1px solid ".concat(theme.hv.palette.semantic.sema4, "!important")
|
|
15
21
|
},
|
|
@@ -75,21 +81,16 @@ var styles = function styles(theme) {
|
|
|
75
81
|
border: "1px solid ".concat(theme.hv.palette.atmosphere.atmo4),
|
|
76
82
|
borderRadius: "2px",
|
|
77
83
|
"&:hover": {
|
|
78
|
-
cursor: "text"
|
|
79
|
-
|
|
80
|
-
"&:focus": {
|
|
81
|
-
outline: "none"
|
|
84
|
+
cursor: "text",
|
|
85
|
+
border: "1px solid ".concat(theme.hv.palette.accent.acce1)
|
|
82
86
|
},
|
|
83
|
-
"&:focus-visible": {
|
|
87
|
+
"&:focus, &:focus-within, &:focus-visible": {
|
|
84
88
|
outlineColor: "#52A8EC",
|
|
85
89
|
outlineStyle: "solid",
|
|
86
90
|
outlineWidth: "0px",
|
|
87
91
|
outlineOffset: "-1px",
|
|
88
92
|
boxShadow: "0 0 0 1px #52A8EC, 0 0 0 4px rgba(29,155,209,.3)"
|
|
89
93
|
},
|
|
90
|
-
"&:focus-within, &:hover": {
|
|
91
|
-
border: "1px solid ".concat(theme.hv.palette.accent.acce1)
|
|
92
|
-
},
|
|
93
94
|
"&$disabled": {
|
|
94
95
|
backgroundColor: theme.hv.palette.atmosphere.atmo3,
|
|
95
96
|
border: "1px solid ".concat(theme.hv.palette.atmosphere.atmo4),
|
|
@@ -104,6 +105,9 @@ var styles = function styles(theme) {
|
|
|
104
105
|
display: "table-row",
|
|
105
106
|
paddingTop: 0,
|
|
106
107
|
paddingLeft: 4
|
|
108
|
+
},
|
|
109
|
+
"&$error": {
|
|
110
|
+
border: "1px solid ".concat(theme.hv.palette.semantic.sema4)
|
|
107
111
|
}
|
|
108
112
|
},
|
|
109
113
|
tagInputContainerRoot: {
|