@hitachivantara/uikit-react-core 3.55.0 → 3.55.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.55.1](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-core@3.55.0...@hitachivantara/uikit-react-core@3.55.1) (2022-02-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **TagsInput:** fix reset input on value change ([d4f2df1](https://github.com/lumada-design/hv-uikit-react/commit/d4f2df1f83b6eb7aa2a22556c2a33001a667ab23))
12
+
13
+
14
+
15
+
16
+
6
17
  # [3.55.0](https://github.com/lumada-design/hv-uikit-react/compare/@hitachivantara/uikit-react-core@3.54.2...@hitachivantara/uikit-react-core@3.55.0) (2022-02-07)
7
18
 
8
19
 
@@ -18,7 +18,7 @@ export type HvTagsInputClassKey =
18
18
  | "error";
19
19
 
20
20
  export interface HvTagsInputProps
21
- extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange" | "onBlur"> {
21
+ extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange"> {
22
22
  /**
23
23
  * The label of the form element.
24
24
  *
@@ -136,16 +136,6 @@ var HvTagsInput = function HvTagsInput(props) {
136
136
  value = _useControlled2[0],
137
137
  setValue = _useControlled2[1];
138
138
 
139
- var _useState = (0, _react.useState)(""),
140
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
141
- tagInput = _useState2[0],
142
- setTagInput = _useState2[1];
143
-
144
- var _useState3 = (0, _react.useState)(value.length),
145
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
146
- tagCursorPos = _useState4[0],
147
- setTagCursorPos = _useState4[1];
148
-
149
139
  var _useControlled3 = (0, _utils.useControlled)(status, _validationStates.default.standBy),
150
140
  _useControlled4 = (0, _slicedToArray2.default)(_useControlled3, 2),
151
141
  validationState = _useControlled4[0],
@@ -156,18 +146,29 @@ var HvTagsInput = function HvTagsInput(props) {
156
146
  validationMessage = _useControlled6[0],
157
147
  setValidationMessage = _useControlled6[1];
158
148
 
149
+ var _useState = (0, _react.useState)(""),
150
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
151
+ tagInput = _useState2[0],
152
+ setTagInput = _useState2[1];
153
+
154
+ var _useState3 = (0, _react.useState)(value.length),
155
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
156
+ tagCursorPos = _useState4[0],
157
+ setTagCursorPos = _useState4[1];
158
+
159
159
  var _useState5 = (0, _react.useState)(true),
160
160
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
161
161
  stateValid = _useState6[0],
162
162
  setStateValid = _useState6[1];
163
163
 
164
+ var inputRef = (0, _react.useRef)();
165
+ var containerRef = (0, _react.useRef)();
166
+ var resetInput = (0, _react.useRef)(false);
164
167
  var isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;
165
168
  var hasCounter = maxTagsQuantity != null && !hideCounter;
166
169
  var isStateInvalid = (0, _react.useMemo)(function () {
167
170
  return hasCounter && value.length > maxTagsQuantity;
168
171
  }, [hasCounter, maxTagsQuantity, value.length]);
169
- var inputRef = (0, _react.useRef)();
170
- var containerRef = (0, _react.useRef)();
171
172
  var errorMessages = (0, _react.useMemo)(function () {
172
173
  return _objectSpread(_objectSpread({}, _validations.DEFAULT_ERROR_MESSAGES), validationMessages);
173
174
  }, // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -183,6 +184,27 @@ var HvTagsInput = function HvTagsInput(props) {
183
184
  setStateValid(true);
184
185
  }
185
186
  }, [errorMessages.maxCharError, maxTagsQuantity, setValidationMessage, setValidationState]);
187
+ /**
188
+ * Deletes a Tag from the array of tags and sets the new position for the tag cursor.
189
+ * Also executes the user provided onDelete and onChange events.
190
+ *
191
+ * @param {number} tagPos - the position at which to remove the tag
192
+ * @param {Event} event - the event associated with the delete
193
+ * @param {boolean} end - whether or not to set the cursor at the end of the array
194
+ */
195
+
196
+ var deleteTag = (0, _react.useCallback)(function (tagPos, event, end) {
197
+ var _inputRef$current;
198
+
199
+ var newTagsArr = [].concat((0, _toConsumableArray2.default)(value.slice(0, tagPos)), (0, _toConsumableArray2.default)(value.slice(tagPos + 1)));
200
+ setValue(newTagsArr); // eslint-disable-next-line no-nested-ternary
201
+
202
+ setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);
203
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
204
+ performValidation(newTagsArr);
205
+ onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagPos], tagPos);
206
+ onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
207
+ }, [onChange, onDelete, performValidation, setValue, tagCursorPos, value]);
186
208
  var canShowError = status !== undefined && status === "invalid" && statusMessage !== undefined || !stateValid;
187
209
  /**
188
210
  * Handler for the `onChange` event on the tag input
@@ -192,20 +214,10 @@ var HvTagsInput = function HvTagsInput(props) {
192
214
  setTagInput(input);
193
215
  }, []);
194
216
  (0, _react.useEffect)(function () {
195
- // keep scroll focused on the input when the value changes
196
217
  if (!multiline) {
197
- var _containerRef$current, _containerRef$current2, _containerRef$current3;
218
+ var _containerRef$current;
198
219
 
199
- 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];
200
- var offset = element === null || element === void 0 ? void 0 : element.offsetWidth;
201
- 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);
202
- }
203
- }, [multiline, value]);
204
- (0, _react.useEffect)(function () {
205
- if (!multiline) {
206
- var _containerRef$current4;
207
-
208
- 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
220
+ var element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[tagCursorPos]; // this setTimeout is a workaround for Firefox not properly dealing
209
221
  // with setting the scrollLeft value.
210
222
 
211
223
  setTimeout(function () {
@@ -216,6 +228,13 @@ var HvTagsInput = function HvTagsInput(props) {
216
228
  element === null || element === void 0 ? void 0 : element.focus();
217
229
  }
218
230
  }, [multiline, tagCursorPos]);
231
+ (0, _react.useEffect)(function () {
232
+ if (resetInput.current) {
233
+ setTagInput("");
234
+ setTagCursorPos(value.length);
235
+ resetInput.current = false;
236
+ }
237
+ }, [value]);
219
238
  /**
220
239
  * Handler for the `onEnter` event on the tag input
221
240
  */
@@ -230,8 +249,7 @@ var HvTagsInput = function HvTagsInput(props) {
230
249
  };
231
250
  var newTagsArr = [].concat((0, _toConsumableArray2.default)(value), [newTag]);
232
251
  setValue(newTagsArr);
233
- setTagInput("");
234
- setTagCursorPos(newTagsArr.length);
252
+ resetInput.current = true;
235
253
  performValidation(newTagsArr);
236
254
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(event, newTag, newTagsArr.length - 1);
237
255
  onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
@@ -254,15 +272,7 @@ var HvTagsInput = function HvTagsInput(props) {
254
272
 
255
273
  case "Backspace":
256
274
  if (isTagSelected) {
257
- var _inputRef$current;
258
-
259
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
260
- var newTagsArr = [].concat((0, _toConsumableArray2.default)(value.slice(0, tagCursorPos)), (0, _toConsumableArray2.default)(value.slice(tagCursorPos + 1)));
261
- setValue(newTagsArr);
262
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
263
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
264
- performValidation(newTagsArr);
265
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
275
+ deleteTag(tagCursorPos, event, false);
266
276
  } else {
267
277
  setTagCursorPos(value.length - 1);
268
278
  }
@@ -271,17 +281,7 @@ var HvTagsInput = function HvTagsInput(props) {
271
281
 
272
282
  case "Delete":
273
283
  if (isTagSelected) {
274
- var _inputRef$current2;
275
-
276
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
277
-
278
- var _newTagsArr = [].concat((0, _toConsumableArray2.default)(value.slice(0, tagCursorPos)), (0, _toConsumableArray2.default)(value.slice(tagCursorPos + 1)));
279
-
280
- setValue(_newTagsArr);
281
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
282
- (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
283
- performValidation(_newTagsArr);
284
- onChange === null || onChange === void 0 ? void 0 : onChange(event, _newTagsArr);
284
+ deleteTag(tagCursorPos, event, false);
285
285
  }
286
286
 
287
287
  break;
@@ -290,31 +290,23 @@ var HvTagsInput = function HvTagsInput(props) {
290
290
  break;
291
291
  }
292
292
  }
293
- }, [isTagSelected, onChange, onDelete, performValidation, setValue, tagCursorPos, tagInput, value]);
293
+ }, [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]);
294
294
  /**
295
295
  * Handler for the `onDelete` event on the tag component
296
296
  */
297
297
 
298
298
  var onDeleteTagHandler = (0, _react.useCallback)(function (event, i) {
299
- var _inputRef$current3;
300
-
301
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[i], i);
302
- var newTagsArr = [].concat((0, _toConsumableArray2.default)(value.slice(0, i)), (0, _toConsumableArray2.default)(value.slice(i + 1)));
299
+ deleteTag(i, event, true);
303
300
  setValidationState(_validationStates.default.standBy);
304
- setValue(newTagsArr);
305
- setTagCursorPos(newTagsArr.length);
306
- (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
307
- performValidation(newTagsArr);
308
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
309
- }, [onDelete, value, setValidationState, setValue, performValidation, onChange]);
301
+ }, [deleteTag, setValidationState]);
310
302
  /**
311
303
  * Handler for the `onClick` event on the list container
312
304
  */
313
305
 
314
306
  var onContainerClickHandler = (0, _react.useCallback)(function () {
315
- var _inputRef$current4;
307
+ var _inputRef$current2;
316
308
 
317
- (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.focus();
309
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
318
310
  setTagCursorPos(value.length);
319
311
  }, [value.length]);
320
312
  return /*#__PURE__*/_react.default.createElement(_.HvFormElement, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/TagsInput/TagsInput.js"],"names":["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","validationStates","standBy","validationState","setValidationState","validationMessage","setValidationMessage","stateValid","setStateValid","isTagSelected","hasCounter","isStateInvalid","inputRef","containerRef","errorMessages","DEFAULT_ERROR_MESSAGES","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","PropTypes","string","shape","isRequired","array","node","bool","func","number","instanceOf","Object","styles"],"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"}
1
+ {"version":3,"sources":["../../src/TagsInput/TagsInput.js"],"names":["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","validationStates","standBy","validationState","setValidationState","validationMessage","setValidationMessage","tagInput","setTagInput","length","tagCursorPos","setTagCursorPos","stateValid","setStateValid","inputRef","containerRef","resetInput","isTagSelected","hasCounter","isStateInvalid","errorMessages","DEFAULT_ERROR_MESSAGES","error","requiredError","minCharError","maxCharError","performValidation","currValue","invalid","valid","deleteTag","tagPos","event","end","newTagsArr","slice","current","focus","canShowError","undefined","onChangeHandler","input","element","children","setTimeout","container","scrollLeft","offsetLeft","getBoundingClientRect","width","onEnterHandler","tag","preventDefault","newTag","type","onKeyDownHandler","code","onDeleteTagHandler","i","onContainerClickHandler","root","labelContainer","characterCounter","tagsList","singleLine","map","t","otherProps","gutters","listItemGutters","listItemRoot","tagSelected","chipRoot","tabIndex","tagInputContainerRoot","tagInputRoot","inputBorderContainer","tagInputBorderContainer","inputRootFocused","tagInputRootFocused","propTypes","PropTypes","string","shape","isRequired","array","node","bool","func","number","instanceOf","Object","styles"],"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 const [validationState, setValidationState] = useControlled(status, validationStates.standBy);\n const [validationMessage, setValidationMessage] = useControlled(statusMessage, \"\");\n\n const [tagInput, setTagInput] = useState(\"\");\n const [tagCursorPos, setTagCursorPos] = useState(value.length);\n const [stateValid, setStateValid] = useState(true);\n\n const inputRef = useRef();\n const containerRef = useRef();\n const resetInput = useRef(false);\n\n const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;\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 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 /**\n * Deletes a Tag from the array of tags and sets the new position for the tag cursor.\n * Also executes the user provided onDelete and onChange events.\n *\n * @param {number} tagPos - the position at which to remove the tag\n * @param {Event} event - the event associated with the delete\n * @param {boolean} end - whether or not to set the cursor at the end of the array\n */\n const deleteTag = useCallback(\n (tagPos, event, end) => {\n const newTagsArr = [...value.slice(0, tagPos), ...value.slice(tagPos + 1)];\n setValue(newTagsArr);\n // eslint-disable-next-line no-nested-ternary\n setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onDelete?.(event, value[tagPos], tagPos);\n onChange?.(event, newTagsArr);\n },\n [onChange, onDelete, performValidation, setValue, tagCursorPos, value]\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 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 useEffect(() => {\n if (resetInput.current) {\n setTagInput(\"\");\n setTagCursorPos(value.length);\n resetInput.current = false;\n }\n }, [value]);\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 resetInput.current = true;\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 deleteTag(tagCursorPos, event, false);\n } else {\n setTagCursorPos(value.length - 1);\n }\n break;\n case \"Delete\":\n if (isTagSelected) {\n deleteTag(tagCursorPos, event, false);\n }\n break;\n default:\n break;\n }\n }\n },\n [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]\n );\n\n /**\n * Handler for the `onDelete` event on the tag component\n */\n const onDeleteTagHandler = useCallback(\n (event, i) => {\n deleteTag(i, event, true);\n setValidationState(validationStates.standBy);\n },\n [deleteTag, setValidationState]\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"}
@@ -18,7 +18,7 @@ export type HvTagsInputClassKey =
18
18
  | "error";
19
19
 
20
20
  export interface HvTagsInputProps
21
- extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange" | "onBlur"> {
21
+ extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange"> {
22
22
  /**
23
23
  * The label of the form element.
24
24
  *
@@ -88,16 +88,6 @@ var HvTagsInput = function HvTagsInput(props) {
88
88
  value = _useControlled2[0],
89
89
  setValue = _useControlled2[1];
90
90
 
91
- var _useState = useState(""),
92
- _useState2 = _slicedToArray(_useState, 2),
93
- tagInput = _useState2[0],
94
- setTagInput = _useState2[1];
95
-
96
- var _useState3 = useState(value.length),
97
- _useState4 = _slicedToArray(_useState3, 2),
98
- tagCursorPos = _useState4[0],
99
- setTagCursorPos = _useState4[1];
100
-
101
91
  var _useControlled3 = useControlled(status, validationStates.standBy),
102
92
  _useControlled4 = _slicedToArray(_useControlled3, 2),
103
93
  validationState = _useControlled4[0],
@@ -108,18 +98,29 @@ var HvTagsInput = function HvTagsInput(props) {
108
98
  validationMessage = _useControlled6[0],
109
99
  setValidationMessage = _useControlled6[1];
110
100
 
101
+ var _useState = useState(""),
102
+ _useState2 = _slicedToArray(_useState, 2),
103
+ tagInput = _useState2[0],
104
+ setTagInput = _useState2[1];
105
+
106
+ var _useState3 = useState(value.length),
107
+ _useState4 = _slicedToArray(_useState3, 2),
108
+ tagCursorPos = _useState4[0],
109
+ setTagCursorPos = _useState4[1];
110
+
111
111
  var _useState5 = useState(true),
112
112
  _useState6 = _slicedToArray(_useState5, 2),
113
113
  stateValid = _useState6[0],
114
114
  setStateValid = _useState6[1];
115
115
 
116
+ var inputRef = useRef();
117
+ var containerRef = useRef();
118
+ var resetInput = useRef(false);
116
119
  var isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;
117
120
  var hasCounter = maxTagsQuantity != null && !hideCounter;
118
121
  var isStateInvalid = useMemo(function () {
119
122
  return hasCounter && value.length > maxTagsQuantity;
120
123
  }, [hasCounter, maxTagsQuantity, value.length]);
121
- var inputRef = useRef();
122
- var containerRef = useRef();
123
124
  var errorMessages = useMemo(function () {
124
125
  return _objectSpread(_objectSpread({}, DEFAULT_ERROR_MESSAGES), validationMessages);
125
126
  }, // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -135,6 +136,27 @@ var HvTagsInput = function HvTagsInput(props) {
135
136
  setStateValid(true);
136
137
  }
137
138
  }, [errorMessages.maxCharError, maxTagsQuantity, setValidationMessage, setValidationState]);
139
+ /**
140
+ * Deletes a Tag from the array of tags and sets the new position for the tag cursor.
141
+ * Also executes the user provided onDelete and onChange events.
142
+ *
143
+ * @param {number} tagPos - the position at which to remove the tag
144
+ * @param {Event} event - the event associated with the delete
145
+ * @param {boolean} end - whether or not to set the cursor at the end of the array
146
+ */
147
+
148
+ var deleteTag = useCallback(function (tagPos, event, end) {
149
+ var _inputRef$current;
150
+
151
+ var newTagsArr = [].concat(_toConsumableArray(value.slice(0, tagPos)), _toConsumableArray(value.slice(tagPos + 1)));
152
+ setValue(newTagsArr); // eslint-disable-next-line no-nested-ternary
153
+
154
+ setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);
155
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
156
+ performValidation(newTagsArr);
157
+ onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagPos], tagPos);
158
+ onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
159
+ }, [onChange, onDelete, performValidation, setValue, tagCursorPos, value]);
138
160
  var canShowError = status !== undefined && status === "invalid" && statusMessage !== undefined || !stateValid;
139
161
  /**
140
162
  * Handler for the `onChange` event on the tag input
@@ -144,20 +166,10 @@ var HvTagsInput = function HvTagsInput(props) {
144
166
  setTagInput(input);
145
167
  }, []);
146
168
  useEffect(function () {
147
- // keep scroll focused on the input when the value changes
148
169
  if (!multiline) {
149
- var _containerRef$current, _containerRef$current2, _containerRef$current3;
170
+ var _containerRef$current;
150
171
 
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];
152
- var offset = element === null || element === void 0 ? void 0 : element.offsetWidth;
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);
154
- }
155
- }, [multiline, value]);
156
- useEffect(function () {
157
- if (!multiline) {
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
172
+ var element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[tagCursorPos]; // this setTimeout is a workaround for Firefox not properly dealing
161
173
  // with setting the scrollLeft value.
162
174
 
163
175
  setTimeout(function () {
@@ -168,6 +180,13 @@ var HvTagsInput = function HvTagsInput(props) {
168
180
  element === null || element === void 0 ? void 0 : element.focus();
169
181
  }
170
182
  }, [multiline, tagCursorPos]);
183
+ useEffect(function () {
184
+ if (resetInput.current) {
185
+ setTagInput("");
186
+ setTagCursorPos(value.length);
187
+ resetInput.current = false;
188
+ }
189
+ }, [value]);
171
190
  /**
172
191
  * Handler for the `onEnter` event on the tag input
173
192
  */
@@ -182,8 +201,7 @@ var HvTagsInput = function HvTagsInput(props) {
182
201
  };
183
202
  var newTagsArr = [].concat(_toConsumableArray(value), [newTag]);
184
203
  setValue(newTagsArr);
185
- setTagInput("");
186
- setTagCursorPos(newTagsArr.length);
204
+ resetInput.current = true;
187
205
  performValidation(newTagsArr);
188
206
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(event, newTag, newTagsArr.length - 1);
189
207
  onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
@@ -206,15 +224,7 @@ var HvTagsInput = function HvTagsInput(props) {
206
224
 
207
225
  case "Backspace":
208
226
  if (isTagSelected) {
209
- var _inputRef$current;
210
-
211
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
212
- var newTagsArr = [].concat(_toConsumableArray(value.slice(0, tagCursorPos)), _toConsumableArray(value.slice(tagCursorPos + 1)));
213
- setValue(newTagsArr);
214
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
215
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
216
- performValidation(newTagsArr);
217
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
227
+ deleteTag(tagCursorPos, event, false);
218
228
  } else {
219
229
  setTagCursorPos(value.length - 1);
220
230
  }
@@ -223,17 +233,7 @@ var HvTagsInput = function HvTagsInput(props) {
223
233
 
224
234
  case "Delete":
225
235
  if (isTagSelected) {
226
- var _inputRef$current2;
227
-
228
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
229
-
230
- var _newTagsArr = [].concat(_toConsumableArray(value.slice(0, tagCursorPos)), _toConsumableArray(value.slice(tagCursorPos + 1)));
231
-
232
- setValue(_newTagsArr);
233
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
234
- (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
235
- performValidation(_newTagsArr);
236
- onChange === null || onChange === void 0 ? void 0 : onChange(event, _newTagsArr);
236
+ deleteTag(tagCursorPos, event, false);
237
237
  }
238
238
 
239
239
  break;
@@ -242,31 +242,23 @@ var HvTagsInput = function HvTagsInput(props) {
242
242
  break;
243
243
  }
244
244
  }
245
- }, [isTagSelected, onChange, onDelete, performValidation, setValue, tagCursorPos, tagInput, value]);
245
+ }, [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]);
246
246
  /**
247
247
  * Handler for the `onDelete` event on the tag component
248
248
  */
249
249
 
250
250
  var onDeleteTagHandler = useCallback(function (event, i) {
251
- var _inputRef$current3;
252
-
253
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[i], i);
254
- var newTagsArr = [].concat(_toConsumableArray(value.slice(0, i)), _toConsumableArray(value.slice(i + 1)));
251
+ deleteTag(i, event, true);
255
252
  setValidationState(validationStates.standBy);
256
- setValue(newTagsArr);
257
- setTagCursorPos(newTagsArr.length);
258
- (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
259
- performValidation(newTagsArr);
260
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
261
- }, [onDelete, value, setValidationState, setValue, performValidation, onChange]);
253
+ }, [deleteTag, setValidationState]);
262
254
  /**
263
255
  * Handler for the `onClick` event on the list container
264
256
  */
265
257
 
266
258
  var onContainerClickHandler = useCallback(function () {
267
- var _inputRef$current4;
259
+ var _inputRef$current2;
268
260
 
269
- (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.focus();
261
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
270
262
  setTagCursorPos(value.length);
271
263
  }, [value.length]);
272
264
  return /*#__PURE__*/React.createElement(HvFormElement, {
@@ -1 +1 @@
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"}
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","standBy","validationState","setValidationState","validationMessage","setValidationMessage","tagInput","setTagInput","length","tagCursorPos","setTagCursorPos","stateValid","setStateValid","inputRef","containerRef","resetInput","isTagSelected","hasCounter","isStateInvalid","errorMessages","error","requiredError","minCharError","maxCharError","performValidation","currValue","invalid","valid","deleteTag","tagPos","event","end","newTagsArr","slice","current","focus","canShowError","undefined","onChangeHandler","input","element","children","setTimeout","container","scrollLeft","offsetLeft","getBoundingClientRect","width","onEnterHandler","tag","preventDefault","newTag","type","onKeyDownHandler","code","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 const [validationState, setValidationState] = useControlled(status, validationStates.standBy);\n const [validationMessage, setValidationMessage] = useControlled(statusMessage, \"\");\n\n const [tagInput, setTagInput] = useState(\"\");\n const [tagCursorPos, setTagCursorPos] = useState(value.length);\n const [stateValid, setStateValid] = useState(true);\n\n const inputRef = useRef();\n const containerRef = useRef();\n const resetInput = useRef(false);\n\n const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;\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 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 /**\n * Deletes a Tag from the array of tags and sets the new position for the tag cursor.\n * Also executes the user provided onDelete and onChange events.\n *\n * @param {number} tagPos - the position at which to remove the tag\n * @param {Event} event - the event associated with the delete\n * @param {boolean} end - whether or not to set the cursor at the end of the array\n */\n const deleteTag = useCallback(\n (tagPos, event, end) => {\n const newTagsArr = [...value.slice(0, tagPos), ...value.slice(tagPos + 1)];\n setValue(newTagsArr);\n // eslint-disable-next-line no-nested-ternary\n setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onDelete?.(event, value[tagPos], tagPos);\n onChange?.(event, newTagsArr);\n },\n [onChange, onDelete, performValidation, setValue, tagCursorPos, value]\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 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 useEffect(() => {\n if (resetInput.current) {\n setTagInput(\"\");\n setTagCursorPos(value.length);\n resetInput.current = false;\n }\n }, [value]);\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 resetInput.current = true;\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 deleteTag(tagCursorPos, event, false);\n } else {\n setTagCursorPos(value.length - 1);\n }\n break;\n case \"Delete\":\n if (isTagSelected) {\n deleteTag(tagCursorPos, event, false);\n }\n break;\n default:\n break;\n }\n }\n },\n [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]\n );\n\n /**\n * Handler for the `onDelete` event on the tag component\n */\n const onDeleteTagHandler = useCallback(\n (event, i) => {\n deleteTag(i, event, true);\n setValidationState(validationStates.standBy);\n },\n [deleteTag, setValidationState]\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"}
@@ -18,7 +18,7 @@ export type HvTagsInputClassKey =
18
18
  | "error";
19
19
 
20
20
  export interface HvTagsInputProps
21
- extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange" | "onBlur"> {
21
+ extends StandardProps<HvInputProps, HvTagsInputClassKey, "onChange"> {
22
22
  /**
23
23
  * The label of the form element.
24
24
  *
@@ -61,18 +61,19 @@ const HvTagsInput = props => {
61
61
  const hasLabel = textAreaLabel != null;
62
62
  const hasDescription = description != null;
63
63
  const [value, setValue] = useControlled(valueProp, defaultValue);
64
- const [tagInput, setTagInput] = useState("");
65
- const [tagCursorPos, setTagCursorPos] = useState(value.length);
66
64
  const [validationState, setValidationState] = useControlled(status, validationStates.standBy);
67
65
  const [validationMessage, setValidationMessage] = useControlled(statusMessage, "");
66
+ const [tagInput, setTagInput] = useState("");
67
+ const [tagCursorPos, setTagCursorPos] = useState(value.length);
68
68
  const [stateValid, setStateValid] = useState(true);
69
+ const inputRef = useRef();
70
+ const containerRef = useRef();
71
+ const resetInput = useRef(false);
69
72
  const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;
70
73
  const hasCounter = maxTagsQuantity != null && !hideCounter;
71
74
  const isStateInvalid = useMemo(() => {
72
75
  return hasCounter && value.length > maxTagsQuantity;
73
76
  }, [hasCounter, maxTagsQuantity, value.length]);
74
- const inputRef = useRef();
75
- const containerRef = useRef();
76
77
  const errorMessages = useMemo(() => _objectSpread(_objectSpread({}, DEFAULT_ERROR_MESSAGES), validationMessages), // eslint-disable-next-line react-hooks/exhaustive-deps
77
78
  [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]);
78
79
  const performValidation = useCallback(currValue => {
@@ -86,6 +87,27 @@ const HvTagsInput = props => {
86
87
  setStateValid(true);
87
88
  }
88
89
  }, [errorMessages.maxCharError, maxTagsQuantity, setValidationMessage, setValidationState]);
90
+ /**
91
+ * Deletes a Tag from the array of tags and sets the new position for the tag cursor.
92
+ * Also executes the user provided onDelete and onChange events.
93
+ *
94
+ * @param {number} tagPos - the position at which to remove the tag
95
+ * @param {Event} event - the event associated with the delete
96
+ * @param {boolean} end - whether or not to set the cursor at the end of the array
97
+ */
98
+
99
+ const deleteTag = useCallback((tagPos, event, end) => {
100
+ var _inputRef$current;
101
+
102
+ const newTagsArr = [...value.slice(0, tagPos), ...value.slice(tagPos + 1)];
103
+ setValue(newTagsArr); // eslint-disable-next-line no-nested-ternary
104
+
105
+ setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);
106
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
107
+ performValidation(newTagsArr);
108
+ onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagPos], tagPos);
109
+ onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
110
+ }, [onChange, onDelete, performValidation, setValue, tagCursorPos, value]);
89
111
  const canShowError = status !== undefined && status === "invalid" && statusMessage !== undefined || !stateValid;
90
112
  /**
91
113
  * Handler for the `onChange` event on the tag input
@@ -95,20 +117,10 @@ const HvTagsInput = props => {
95
117
  setTagInput(input);
96
118
  }, []);
97
119
  useEffect(() => {
98
- // keep scroll focused on the input when the value changes
99
120
  if (!multiline) {
100
- var _containerRef$current, _containerRef$current2, _containerRef$current3;
121
+ var _containerRef$current;
101
122
 
102
- const element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[value.length];
103
- const offset = element === null || element === void 0 ? void 0 : element.offsetWidth;
104
- 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);
105
- }
106
- }, [multiline, value]);
107
- useEffect(() => {
108
- if (!multiline) {
109
- var _containerRef$current4;
110
-
111
- const 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
123
+ const element = containerRef === null || containerRef === void 0 ? void 0 : (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[tagCursorPos]; // this setTimeout is a workaround for Firefox not properly dealing
112
124
  // with setting the scrollLeft value.
113
125
 
114
126
  setTimeout(() => {
@@ -119,6 +131,13 @@ const HvTagsInput = props => {
119
131
  element === null || element === void 0 ? void 0 : element.focus();
120
132
  }
121
133
  }, [multiline, tagCursorPos]);
134
+ useEffect(() => {
135
+ if (resetInput.current) {
136
+ setTagInput("");
137
+ setTagCursorPos(value.length);
138
+ resetInput.current = false;
139
+ }
140
+ }, [value]);
122
141
  /**
123
142
  * Handler for the `onEnter` event on the tag input
124
143
  */
@@ -133,8 +152,7 @@ const HvTagsInput = props => {
133
152
  };
134
153
  const newTagsArr = [...value, newTag];
135
154
  setValue(newTagsArr);
136
- setTagInput("");
137
- setTagCursorPos(newTagsArr.length);
155
+ resetInput.current = true;
138
156
  performValidation(newTagsArr);
139
157
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(event, newTag, newTagsArr.length - 1);
140
158
  onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
@@ -157,15 +175,7 @@ const HvTagsInput = props => {
157
175
 
158
176
  case "Backspace":
159
177
  if (isTagSelected) {
160
- var _inputRef$current;
161
-
162
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
163
- const newTagsArr = [...value.slice(0, tagCursorPos), ...value.slice(tagCursorPos + 1)];
164
- setValue(newTagsArr);
165
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
166
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
167
- performValidation(newTagsArr);
168
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
178
+ deleteTag(tagCursorPos, event, false);
169
179
  } else {
170
180
  setTagCursorPos(value.length - 1);
171
181
  }
@@ -174,15 +184,7 @@ const HvTagsInput = props => {
174
184
 
175
185
  case "Delete":
176
186
  if (isTagSelected) {
177
- var _inputRef$current2;
178
-
179
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[tagCursorPos], tagCursorPos);
180
- const newTagsArr = [...value.slice(0, tagCursorPos), ...value.slice(tagCursorPos + 1)];
181
- setValue(newTagsArr);
182
- setTagCursorPos(tagCursorPos > 0 ? tagCursorPos - 1 : 0);
183
- (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
184
- performValidation(newTagsArr);
185
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
187
+ deleteTag(tagCursorPos, event, false);
186
188
  }
187
189
 
188
190
  break;
@@ -191,31 +193,23 @@ const HvTagsInput = props => {
191
193
  break;
192
194
  }
193
195
  }
194
- }, [isTagSelected, onChange, onDelete, performValidation, setValue, tagCursorPos, tagInput, value]);
196
+ }, [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]);
195
197
  /**
196
198
  * Handler for the `onDelete` event on the tag component
197
199
  */
198
200
 
199
201
  const onDeleteTagHandler = useCallback((event, i) => {
200
- var _inputRef$current3;
201
-
202
- onDelete === null || onDelete === void 0 ? void 0 : onDelete(event, value[i], i);
203
- const newTagsArr = [...value.slice(0, i), ...value.slice(i + 1)];
202
+ deleteTag(i, event, true);
204
203
  setValidationState(validationStates.standBy);
205
- setValue(newTagsArr);
206
- setTagCursorPos(newTagsArr.length);
207
- (_inputRef$current3 = inputRef.current) === null || _inputRef$current3 === void 0 ? void 0 : _inputRef$current3.focus();
208
- performValidation(newTagsArr);
209
- onChange === null || onChange === void 0 ? void 0 : onChange(event, newTagsArr);
210
- }, [onDelete, value, setValidationState, setValue, performValidation, onChange]);
204
+ }, [deleteTag, setValidationState]);
211
205
  /**
212
206
  * Handler for the `onClick` event on the list container
213
207
  */
214
208
 
215
209
  const onContainerClickHandler = useCallback(() => {
216
- var _inputRef$current4;
210
+ var _inputRef$current2;
217
211
 
218
- (_inputRef$current4 = inputRef.current) === null || _inputRef$current4 === void 0 ? void 0 : _inputRef$current4.focus();
212
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus();
219
213
  setTagCursorPos(value.length);
220
214
  }, [value.length]);
221
215
  return /*#__PURE__*/React.createElement(HvFormElement, {
@@ -1 +1 @@
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","value","valueProp","defaultValue","readOnly","disabled","required","label","textAreaLabel","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","tagCursorPos","setTagCursorPos","length","validationState","setValidationState","standBy","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"}
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","value","valueProp","defaultValue","readOnly","disabled","required","label","textAreaLabel","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onAdd","onDelete","placeholder","hideCounter","middleCountLabel","maxTagsQuantity","autoFocus","resizable","inputProps","countCharProps","multiline","status","statusMessage","validationMessages","others","elementId","hasLabel","hasDescription","setValue","validationState","setValidationState","standBy","validationMessage","setValidationMessage","tagInput","setTagInput","tagCursorPos","setTagCursorPos","length","stateValid","setStateValid","inputRef","containerRef","resetInput","isTagSelected","hasCounter","isStateInvalid","errorMessages","error","requiredError","minCharError","maxCharError","performValidation","currValue","invalid","valid","deleteTag","tagPos","event","end","newTagsArr","slice","current","focus","canShowError","undefined","onChangeHandler","input","element","children","setTimeout","container","scrollLeft","offsetLeft","getBoundingClientRect","width","onEnterHandler","tag","preventDefault","newTag","type","onKeyDownHandler","code","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 const [validationState, setValidationState] = useControlled(status, validationStates.standBy);\n const [validationMessage, setValidationMessage] = useControlled(statusMessage, \"\");\n\n const [tagInput, setTagInput] = useState(\"\");\n const [tagCursorPos, setTagCursorPos] = useState(value.length);\n const [stateValid, setStateValid] = useState(true);\n\n const inputRef = useRef();\n const containerRef = useRef();\n const resetInput = useRef(false);\n\n const isTagSelected = tagCursorPos >= 0 && tagCursorPos < value.length;\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 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 /**\n * Deletes a Tag from the array of tags and sets the new position for the tag cursor.\n * Also executes the user provided onDelete and onChange events.\n *\n * @param {number} tagPos - the position at which to remove the tag\n * @param {Event} event - the event associated with the delete\n * @param {boolean} end - whether or not to set the cursor at the end of the array\n */\n const deleteTag = useCallback(\n (tagPos, event, end) => {\n const newTagsArr = [...value.slice(0, tagPos), ...value.slice(tagPos + 1)];\n setValue(newTagsArr);\n // eslint-disable-next-line no-nested-ternary\n setTagCursorPos(end ? newTagsArr.length : tagCursorPos > 0 ? tagCursorPos - 1 : 0);\n inputRef.current?.focus();\n performValidation(newTagsArr);\n onDelete?.(event, value[tagPos], tagPos);\n onChange?.(event, newTagsArr);\n },\n [onChange, onDelete, performValidation, setValue, tagCursorPos, value]\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 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 useEffect(() => {\n if (resetInput.current) {\n setTagInput(\"\");\n setTagCursorPos(value.length);\n resetInput.current = false;\n }\n }, [value]);\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 resetInput.current = true;\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 deleteTag(tagCursorPos, event, false);\n } else {\n setTagCursorPos(value.length - 1);\n }\n break;\n case \"Delete\":\n if (isTagSelected) {\n deleteTag(tagCursorPos, event, false);\n }\n break;\n default:\n break;\n }\n }\n },\n [deleteTag, isTagSelected, tagCursorPos, tagInput, value.length]\n );\n\n /**\n * Handler for the `onDelete` event on the tag component\n */\n const onDeleteTagHandler = useCallback(\n (event, i) => {\n deleteTag(i, event, true);\n setValidationState(validationStates.standBy);\n },\n [deleteTag, setValidationState]\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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-core",
3
- "version": "3.55.0",
3
+ "version": "3.55.1",
4
4
  "description": "A collection of React components for the Hitachi Vantara's Design System.",
5
5
  "homepage": "https://github.com/lumada-design/hv-uikit-react",
6
6
  "license": "Apache-2.0",
@@ -104,5 +104,5 @@
104
104
  "publishConfig": {
105
105
  "access": "public"
106
106
  },
107
- "gitHead": "d3894300f3391f85905ca7c5e872bb1ea50e3c99"
107
+ "gitHead": "e5fc10f26f06ed20b9fa4203b5a8f0a0c905391c"
108
108
  }