@hh.ru/magritte-ui-chips-trigger 4.1.32 → 4.1.33

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/ChipsTrigger.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import './index.css';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
- import { forwardRef, useState, useRef, useCallback, useEffect } from 'react';
3
+ import { forwardRef, useState, useRef, useId, useCallback, useEffect } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { keyboardMatch, keyboardKeys, findNextFocusableElement } from '@hh.ru/magritte-common-keyboard';
6
6
  import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
7
+ import { useTranslation } from '@hh.ru/magritte-common-use-translation';
7
8
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
8
9
  import { CustomChip } from '@hh.ru/magritte-ui-chips';
9
10
  import { FormHelper } from '@hh.ru/magritte-ui-form-helper';
@@ -11,7 +12,7 @@ import { ChevronDownOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';
11
12
  import { useFocus } from '@hh.ru/magritte-ui-input/useFocus';
12
13
  import { useScrollbar, Scrollbar } from '@hh.ru/magritte-ui-scrollbar';
13
14
 
14
- var styles = {"root":"magritte-root___-zVdz_4-1-32","focused":"magritte-focused___0Uzyu_4-1-32","invalid":"magritte-invalid___tVzQV_4-1-32","disabled":"magritte-disabled___UeqcV_4-1-32","label":"magritte-label___j7Trt_4-1-32","scrollable-area":"magritte-scrollable-area___-xMF2_4-1-32","scrollableArea":"magritte-scrollable-area___-xMF2_4-1-32","focus-visible":"magritte-focus-visible___ifvAP_4-1-32","focusVisible":"magritte-focus-visible___ifvAP_4-1-32","large":"magritte-large___JIrIy_4-1-32","field":"magritte-field___rlEmn_4-1-32","icon":"magritte-icon___fDMiz_4-1-32","scrollable-area-wrapper":"magritte-scrollable-area-wrapper___hZNQd_4-1-32","scrollableAreaWrapper":"magritte-scrollable-area-wrapper___hZNQd_4-1-32","medium":"magritte-medium___Xk-XB_4-1-32","chips-and-input":"magritte-chips-and-input___qg-Ba_4-1-32","chipsAndInput":"magritte-chips-and-input___qg-Ba_4-1-32","field-input":"magritte-field-input___04Cag_4-1-32","fieldInput":"magritte-field-input___04Cag_4-1-32","label-wrapper":"magritte-label-wrapper___De7Bm_4-1-32","labelWrapper":"magritte-label-wrapper___De7Bm_4-1-32","icon_expanded":"magritte-icon_expanded___RaOT-_4-1-32","iconExpanded":"magritte-icon_expanded___RaOT-_4-1-32","custom-chip-wrapper":"magritte-custom-chip-wrapper___a9kJ6_4-1-32","customChipWrapper":"magritte-custom-chip-wrapper___a9kJ6_4-1-32"};
15
+ var styles = {"root":"magritte-root___-zVdz_4-1-33","focused":"magritte-focused___0Uzyu_4-1-33","invalid":"magritte-invalid___tVzQV_4-1-33","disabled":"magritte-disabled___UeqcV_4-1-33","label":"magritte-label___j7Trt_4-1-33","scrollable-area":"magritte-scrollable-area___-xMF2_4-1-33","scrollableArea":"magritte-scrollable-area___-xMF2_4-1-33","focus-visible":"magritte-focus-visible___ifvAP_4-1-33","focusVisible":"magritte-focus-visible___ifvAP_4-1-33","large":"magritte-large___JIrIy_4-1-33","field":"magritte-field___rlEmn_4-1-33","icon":"magritte-icon___fDMiz_4-1-33","scrollable-area-wrapper":"magritte-scrollable-area-wrapper___hZNQd_4-1-33","scrollableAreaWrapper":"magritte-scrollable-area-wrapper___hZNQd_4-1-33","medium":"magritte-medium___Xk-XB_4-1-33","chips-and-input":"magritte-chips-and-input___qg-Ba_4-1-33","chipsAndInput":"magritte-chips-and-input___qg-Ba_4-1-33","field-input":"magritte-field-input___04Cag_4-1-33","fieldInput":"magritte-field-input___04Cag_4-1-33","label-wrapper":"magritte-label-wrapper___De7Bm_4-1-33","labelWrapper":"magritte-label-wrapper___De7Bm_4-1-33","icon_expanded":"magritte-icon_expanded___RaOT-_4-1-33","iconExpanded":"magritte-icon_expanded___RaOT-_4-1-33","custom-chip-wrapper":"magritte-custom-chip-wrapper___a9kJ6_4-1-33","customChipWrapper":"magritte-custom-chip-wrapper___a9kJ6_4-1-33"};
15
16
 
16
17
  const focusOnLastChip = (event, chipsContainer, input) => {
17
18
  if (!chipsContainer || !input) {
@@ -23,7 +24,7 @@ const focusOnLastChip = (event, chipsContainer, input) => {
23
24
  nextFocusableElement.focus();
24
25
  }
25
26
  };
26
- const ChipsTrigger = forwardRef(({ size = 'large', placeholder, disabled, expanded: externalExpanded, toggleExpanded: toggleExternalExpanded, state, invalid, maxHeight, description, errorMessage, wrapperRef, onChange, onFocus, onBlur, onKeyDown, onChangeInput: onChangeInputExternal, allowArbitraryValues = true, 'data-qa': dataQa = 'chips-trigger', }, ref) => {
27
+ const ChipsTrigger = forwardRef(({ size = 'large', placeholder, disabled, expanded: externalExpanded, toggleExpanded: toggleExternalExpanded, state, invalid, maxHeight, description, errorMessage, wrapperRef, onChange, onFocus, onBlur, onKeyDown, onChangeInput: onChangeInputExternal, allowArbitraryValues = true, 'data-qa': dataQa = 'chips-trigger', deleteButtonAriaLabel: _deleteButtonAriaLabel, }, ref) => {
27
28
  const { isMobile } = useBreakpoint();
28
29
  const [expanded, setExpanded] = useState(false);
29
30
  const [isFocusVisible, setFocusVisible] = useState(false);
@@ -38,6 +39,10 @@ const ChipsTrigger = forwardRef(({ size = 'large', placeholder, disabled, expand
38
39
  const inputRef = useRef(null);
39
40
  const inputRefCallback = useMultipleRefs(inputRef, ref);
40
41
  const showLabel = state.value === '' && state.chips.length === 0 && placeholder !== '';
42
+ const labelId = useId();
43
+ const ariaLabeledBy = `chips-trigger-label-${labelId}`;
44
+ const trlDelete = useTranslation('ChipsTrigger', 'delete');
45
+ const deleteButtonAriaLabel = typeof trlDelete === 'string' ? trlDelete : _deleteButtonAriaLabel;
41
46
  const onChangeInput = useCallback((value) => {
42
47
  onChange({
43
48
  value,
@@ -135,8 +140,8 @@ const ChipsTrigger = forwardRef(({ size = 'large', placeholder, disabled, expand
135
140
  }, tabIndex: disabled ? undefined : 0, "data-qa": dataQa, children: [jsx("div", { style: scrollableAreaStyle, className: styles.scrollableAreaWrapper, children: jsx("div", { className: styles.scrollableArea, ref: scrollbar.scrollContainerRef, children: jsxs("div", { ref: chipsContainerRefCallback, className: styles.chipsAndInput, children: [state.chips.map((chip, index) => {
136
141
  return (jsx("div", { className: styles.customChipWrapper, onMouseDown: (event) => event.preventDefault(), children: jsx(CustomChip, { Element: "button", size: "small", disabled: disabled, onDelete: () => {
137
142
  deleteHandler(index);
138
- }, dataQaWrapper: `chips-trigger-chip-${chip.value}`, deleteOnly: true, children: chip.label ?? chip.value }) }, `${chip.value}-${index}`));
139
- }), jsxs("div", { className: styles.field, children: [jsx("input", { ref: inputRefCallback, className: styles.fieldInput, type: "text", disabled: disabled, value: state.value, onKeyDown: keyDownHandler, onFocus: focusHandler, onBlur: blurHandler, onChange: changeHandler, "data-qa": "chips-trigger-input", readOnly: isMobile }), showLabel && (jsx("div", { className: styles.labelWrapper, children: jsx("label", { className: styles.label, children: placeholder }) }))] })] }) }) }), jsx("div", { className: classnames(styles.icon, {
143
+ }, dataQaWrapper: `chips-trigger-chip-${chip.value}`, deleteOnly: true, deleteButtonAriaLabel: deleteButtonAriaLabel, children: chip.label ?? chip.value }) }, `${chip.value}-${index}`));
144
+ }), jsxs("div", { className: styles.field, children: [jsx("input", { ref: inputRefCallback, className: styles.fieldInput, type: "text", disabled: disabled, value: state.value, onKeyDown: keyDownHandler, onFocus: focusHandler, onBlur: blurHandler, onChange: changeHandler, "data-qa": "chips-trigger-input", readOnly: isMobile, "aria-labelledby": showLabel ? ariaLabeledBy : undefined }), showLabel && (jsx("div", { className: styles.labelWrapper, children: jsx("label", { className: styles.label, id: ariaLabeledBy, children: placeholder }) }))] })] }) }) }), jsx("div", { className: classnames(styles.icon, {
140
145
  [styles.iconExpanded]: expanded || externalExpanded,
141
146
  }), children: jsx(ChevronDownOutlinedSize24, {}) }), hasVerticalScroll && jsx(Scrollbar, { ...verticalScrollbarProps })] }), jsx(FormHelper, { description: description, errorMessage: errorMessage, disabled: disabled, invalid: invalid })] }));
142
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ChipsTrigger.js","sources":["../src/ChipsTrigger.tsx"],"sourcesContent":["import {\n forwardRef,\n InputHTMLAttributes,\n useState,\n useCallback,\n KeyboardEventHandler,\n useRef,\n SyntheticEvent,\n useEffect,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { findNextFocusableElement, keyboardKeys, keyboardMatch } from '@hh.ru/magritte-common-keyboard';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { CustomChip } from '@hh.ru/magritte-ui-chips';\nimport { ChipsTriggerProps } from '@hh.ru/magritte-ui-chips-trigger/types';\nimport { FormHelper } from '@hh.ru/magritte-ui-form-helper';\nimport { ChevronDownOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { useFocus } from '@hh.ru/magritte-ui-input/useFocus';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\n\nimport styles from './chips-trigger.less';\n\nconst focusOnLastChip = (event: SyntheticEvent, chipsContainer: HTMLElement | null, input: HTMLElement | null) => {\n if (!chipsContainer || !input) {\n return;\n }\n const nextFocusableElement = findNextFocusableElement(chipsContainer, input, 'left', 'list');\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n};\n\ntype State = {\n hadFocusWhenClicked: boolean;\n wasExpandedWhenClicked: boolean;\n};\n\nexport const ChipsTrigger = forwardRef<\n HTMLInputElement,\n ChipsTriggerProps & Omit<InputHTMLAttributes<HTMLInputElement>, keyof ChipsTriggerProps>\n>(\n (\n {\n size = 'large',\n placeholder,\n disabled,\n expanded: externalExpanded,\n toggleExpanded: toggleExternalExpanded,\n state,\n invalid,\n maxHeight,\n description,\n errorMessage,\n wrapperRef,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onChangeInput: onChangeInputExternal,\n allowArbitraryValues = true,\n 'data-qa': dataQa = 'chips-trigger',\n },\n ref\n ) => {\n const { isMobile } = useBreakpoint();\n const [expanded, setExpanded] = useState(false);\n const [isFocusVisible, setFocusVisible] = useState(false);\n const stateRef = useRef<State>({ hadFocusWhenClicked: false, wasExpandedWhenClicked: false });\n\n const { hasVerticalScroll, verticalScrollbarProps, ...scrollbar } = useScrollbar({\n axis: disabled ? 'none' : 'vertical',\n });\n\n const chipsRootRef = useRef<HTMLDivElement>(null);\n const chipsRootRefCallback = useMultipleRefs(wrapperRef, chipsRootRef);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRefCallback = useMultipleRefs(chipsContainerRef, scrollbar.contentWrapperRef);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputRefCallback = useMultipleRefs(inputRef, ref);\n const showLabel = state.value === '' && state.chips.length === 0 && placeholder !== '';\n\n const onChangeInput = useCallback(\n (value: string) => {\n onChange({\n value,\n chips: state.chips,\n event: { type: 'change', modifier: 'keyboard' },\n });\n onChangeInputExternal?.(value);\n },\n [state.chips, onChange, onChangeInputExternal]\n );\n const { changeHandler, focusHandler, blurHandler, isFocused } = useFocus(onChangeInput, onFocus, onBlur);\n\n useEffect(() => {\n if (inputRef.current) {\n setFocusVisible(isFocused && inputRef.current.classList.contains('focus-visible'));\n }\n }, [isFocused]);\n\n const deleteHandler = useCallback(\n (index: number) => {\n const deletedChip = state.chips.splice(index, 1);\n onChange({\n value: state.value,\n chips: [...state.chips],\n event: { type: 'remove', modifier: 'cross', element: deletedChip?.[0] },\n });\n },\n [onChange, state.chips, state.value]\n );\n\n const keyDownHandler = useCallback<KeyboardEventHandler>(\n (event) => {\n // создаем новый чипс и затираем текстовый инпут\n if (allowArbitraryValues && keyboardMatch(event.nativeEvent, keyboardKeys.Enter)) {\n if (state.value.length === 0) {\n return;\n }\n onChange({\n value: '',\n chips: [...state.chips, { value: state.value, userInput: true }],\n event: { type: 'add', modifier: 'enter' },\n });\n onChangeInputExternal?.('');\n }\n // удаляем последний созданный чипс\n if (state.value === '' && keyboardMatch(event.nativeEvent, keyboardKeys.Backspace)) {\n if (state.chips.length === 0) {\n return;\n }\n const deletedChip = state.chips.pop();\n onChange({\n value: state.value,\n chips: [...state.chips],\n event: { type: 'remove', modifier: 'backspace', element: deletedChip },\n });\n }\n // пытаемся найти ближайший чипс для фокуса\n if (state.value === '' && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowLeft)) {\n focusOnLastChip(event, chipsContainerRef.current, inputRef.current);\n }\n },\n [allowArbitraryValues, onChange, onChangeInputExternal, state]\n );\n\n // при выставлении высоты учитваем падинги\n // иначе высота будет больше значения свойства\n const scrollableAreaStyle = maxHeight\n ? { maxHeight: `${maxHeight - (size === 'medium' ? 16 : 24)}px` }\n : undefined;\n\n return (\n <div>\n <div\n ref={chipsRootRefCallback}\n className={classnames(styles.root, styles[size], scrollbar.hoverContainerCssClass, {\n [styles.focused]: isFocused,\n [styles.focusVisible]: isFocusVisible,\n [styles.disabled]: !!disabled,\n [styles.invalid]: !!invalid,\n })}\n onFocus={() => {\n if (disabled) {\n return;\n }\n if (!inputRef.current) {\n return;\n }\n setExpanded(true);\n // добавляем .focus() еще и тут\n // чтобы не сбрасывать фокус во время клика по chip\n // или по клику на враппер\n if (document.activeElement === chipsRootRef.current) {\n inputRef.current.focus();\n }\n }}\n onBlur={(event) => {\n stateRef.current.hadFocusWhenClicked &&=\n event.relatedTarget === chipsRootRef.current || event.relatedTarget === inputRef.current;\n setExpanded(false);\n }}\n onKeyDown={onKeyDown}\n onMouseDown={() => {\n // при повторном клике по инпуту в фокусе нужно закрыть дроп\n // при этом клик может прийтись на обертку, из-за чего инпут поймает blur и повторный фокус\n // что усложняет проверку того, что инпут уже был в фокусе в момент клика\n // поэтому в цепочке mouseDown -> blur -> focus -> click храним флаг, что фокус не вышел за пределы компонента\n stateRef.current.hadFocusWhenClicked = document.activeElement === inputRef.current;\n stateRef.current.wasExpandedWhenClicked = !!externalExpanded;\n }}\n onClick={() => {\n if (\n stateRef.current.hadFocusWhenClicked &&\n stateRef.current.wasExpandedWhenClicked === externalExpanded\n ) {\n toggleExternalExpanded?.();\n }\n stateRef.current.hadFocusWhenClicked = false;\n stateRef.current.wasExpandedWhenClicked = false;\n }}\n tabIndex={disabled ? undefined : 0}\n data-qa={dataQa}\n >\n <div style={scrollableAreaStyle} className={styles.scrollableAreaWrapper}>\n <div\n className={styles.scrollableArea}\n ref={scrollbar.scrollContainerRef as React.Ref<HTMLDivElement>}\n >\n <div ref={chipsContainerRefCallback} className={styles.chipsAndInput}>\n {state.chips.map((chip, index) => {\n return (\n <div\n key={`${chip.value}-${index}`}\n className={styles.customChipWrapper}\n onMouseDown={(event) => event.preventDefault()}\n >\n <CustomChip\n Element=\"button\"\n size=\"small\"\n disabled={disabled}\n onDelete={() => {\n deleteHandler(index);\n }}\n dataQaWrapper={`chips-trigger-chip-${chip.value}`}\n deleteOnly\n >\n {chip.label ?? chip.value}\n </CustomChip>\n </div>\n );\n })}\n <div className={styles.field}>\n <input\n ref={inputRefCallback}\n className={styles.fieldInput}\n type=\"text\"\n disabled={disabled}\n value={state.value}\n onKeyDown={keyDownHandler}\n onFocus={focusHandler}\n onBlur={blurHandler}\n onChange={changeHandler}\n data-qa=\"chips-trigger-input\"\n readOnly={isMobile}\n />\n {showLabel && (\n <div className={styles.labelWrapper}>\n <label className={styles.label}>{placeholder}</label>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <div\n className={classnames(styles.icon, {\n [styles.iconExpanded]: expanded || externalExpanded,\n })}\n >\n <ChevronDownOutlinedSize24 />\n </div>\n {hasVerticalScroll && <Scrollbar {...verticalScrollbarProps} />}\n </div>\n <FormHelper\n description={description}\n errorMessage={errorMessage}\n disabled={disabled}\n invalid={invalid}\n />\n </div>\n );\n }\n);\n\nChipsTrigger.displayName = 'ChipsTrigger';\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChipsTrigger.js","sources":["../src/ChipsTrigger.tsx"],"sourcesContent":["import {\n InputHTMLAttributes,\n KeyboardEventHandler,\n SyntheticEvent,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport classnames from 'classnames';\n\nimport { findNextFocusableElement, keyboardKeys, keyboardMatch } from '@hh.ru/magritte-common-keyboard';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { CustomChip } from '@hh.ru/magritte-ui-chips';\nimport { ChipsTriggerProps } from '@hh.ru/magritte-ui-chips-trigger/types';\nimport { FormHelper } from '@hh.ru/magritte-ui-form-helper';\nimport { ChevronDownOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { useFocus } from '@hh.ru/magritte-ui-input/useFocus';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\n\nimport styles from './chips-trigger.less';\n\nconst focusOnLastChip = (event: SyntheticEvent, chipsContainer: HTMLElement | null, input: HTMLElement | null) => {\n if (!chipsContainer || !input) {\n return;\n }\n const nextFocusableElement = findNextFocusableElement(chipsContainer, input, 'left', 'list');\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n};\n\ntype State = {\n hadFocusWhenClicked: boolean;\n wasExpandedWhenClicked: boolean;\n};\n\nexport const ChipsTrigger = forwardRef<\n HTMLInputElement,\n ChipsTriggerProps & Omit<InputHTMLAttributes<HTMLInputElement>, keyof ChipsTriggerProps>\n>(\n (\n {\n size = 'large',\n placeholder,\n disabled,\n expanded: externalExpanded,\n toggleExpanded: toggleExternalExpanded,\n state,\n invalid,\n maxHeight,\n description,\n errorMessage,\n wrapperRef,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onChangeInput: onChangeInputExternal,\n allowArbitraryValues = true,\n 'data-qa': dataQa = 'chips-trigger',\n deleteButtonAriaLabel: _deleteButtonAriaLabel,\n },\n ref\n ) => {\n const { isMobile } = useBreakpoint();\n const [expanded, setExpanded] = useState(false);\n const [isFocusVisible, setFocusVisible] = useState(false);\n const stateRef = useRef<State>({ hadFocusWhenClicked: false, wasExpandedWhenClicked: false });\n\n const { hasVerticalScroll, verticalScrollbarProps, ...scrollbar } = useScrollbar({\n axis: disabled ? 'none' : 'vertical',\n });\n\n const chipsRootRef = useRef<HTMLDivElement>(null);\n const chipsRootRefCallback = useMultipleRefs(wrapperRef, chipsRootRef);\n const chipsContainerRef = useRef<HTMLDivElement>(null);\n const chipsContainerRefCallback = useMultipleRefs(chipsContainerRef, scrollbar.contentWrapperRef);\n const inputRef = useRef<HTMLInputElement>(null);\n const inputRefCallback = useMultipleRefs(inputRef, ref);\n const showLabel = state.value === '' && state.chips.length === 0 && placeholder !== '';\n const labelId = useId();\n const ariaLabeledBy = `chips-trigger-label-${labelId}`;\n const trlDelete = useTranslation('ChipsTrigger', 'delete');\n const deleteButtonAriaLabel = typeof trlDelete === 'string' ? trlDelete : _deleteButtonAriaLabel;\n\n const onChangeInput = useCallback(\n (value: string) => {\n onChange({\n value,\n chips: state.chips,\n event: { type: 'change', modifier: 'keyboard' },\n });\n onChangeInputExternal?.(value);\n },\n [state.chips, onChange, onChangeInputExternal]\n );\n const { changeHandler, focusHandler, blurHandler, isFocused } = useFocus(onChangeInput, onFocus, onBlur);\n\n useEffect(() => {\n if (inputRef.current) {\n setFocusVisible(isFocused && inputRef.current.classList.contains('focus-visible'));\n }\n }, [isFocused]);\n\n const deleteHandler = useCallback(\n (index: number) => {\n const deletedChip = state.chips.splice(index, 1);\n onChange({\n value: state.value,\n chips: [...state.chips],\n event: { type: 'remove', modifier: 'cross', element: deletedChip?.[0] },\n });\n },\n [onChange, state.chips, state.value]\n );\n\n const keyDownHandler = useCallback<KeyboardEventHandler>(\n (event) => {\n // создаем новый чипс и затираем текстовый инпут\n if (allowArbitraryValues && keyboardMatch(event.nativeEvent, keyboardKeys.Enter)) {\n if (state.value.length === 0) {\n return;\n }\n onChange({\n value: '',\n chips: [...state.chips, { value: state.value, userInput: true }],\n event: { type: 'add', modifier: 'enter' },\n });\n onChangeInputExternal?.('');\n }\n // удаляем последний созданный чипс\n if (state.value === '' && keyboardMatch(event.nativeEvent, keyboardKeys.Backspace)) {\n if (state.chips.length === 0) {\n return;\n }\n const deletedChip = state.chips.pop();\n onChange({\n value: state.value,\n chips: [...state.chips],\n event: { type: 'remove', modifier: 'backspace', element: deletedChip },\n });\n }\n // пытаемся найти ближайший чипс для фокуса\n if (state.value === '' && keyboardMatch(event.nativeEvent, keyboardKeys.ArrowLeft)) {\n focusOnLastChip(event, chipsContainerRef.current, inputRef.current);\n }\n },\n [allowArbitraryValues, onChange, onChangeInputExternal, state]\n );\n\n // при выставлении высоты учитваем падинги\n // иначе высота будет больше значения свойства\n const scrollableAreaStyle = maxHeight\n ? { maxHeight: `${maxHeight - (size === 'medium' ? 16 : 24)}px` }\n : undefined;\n\n return (\n <div>\n <div\n ref={chipsRootRefCallback}\n className={classnames(styles.root, styles[size], scrollbar.hoverContainerCssClass, {\n [styles.focused]: isFocused,\n [styles.focusVisible]: isFocusVisible,\n [styles.disabled]: !!disabled,\n [styles.invalid]: !!invalid,\n })}\n onFocus={() => {\n if (disabled) {\n return;\n }\n if (!inputRef.current) {\n return;\n }\n setExpanded(true);\n // добавляем .focus() еще и тут\n // чтобы не сбрасывать фокус во время клика по chip\n // или по клику на враппер\n if (document.activeElement === chipsRootRef.current) {\n inputRef.current.focus();\n }\n }}\n onBlur={(event) => {\n stateRef.current.hadFocusWhenClicked &&=\n event.relatedTarget === chipsRootRef.current || event.relatedTarget === inputRef.current;\n setExpanded(false);\n }}\n onKeyDown={onKeyDown}\n onMouseDown={() => {\n // при повторном клике по инпуту в фокусе нужно закрыть дроп\n // при этом клик может прийтись на обертку, из-за чего инпут поймает blur и повторный фокус\n // что усложняет проверку того, что инпут уже был в фокусе в момент клика\n // поэтому в цепочке mouseDown -> blur -> focus -> click храним флаг, что фокус не вышел за пределы компонента\n stateRef.current.hadFocusWhenClicked = document.activeElement === inputRef.current;\n stateRef.current.wasExpandedWhenClicked = !!externalExpanded;\n }}\n onClick={() => {\n if (\n stateRef.current.hadFocusWhenClicked &&\n stateRef.current.wasExpandedWhenClicked === externalExpanded\n ) {\n toggleExternalExpanded?.();\n }\n stateRef.current.hadFocusWhenClicked = false;\n stateRef.current.wasExpandedWhenClicked = false;\n }}\n tabIndex={disabled ? undefined : 0}\n data-qa={dataQa}\n >\n <div style={scrollableAreaStyle} className={styles.scrollableAreaWrapper}>\n <div\n className={styles.scrollableArea}\n ref={scrollbar.scrollContainerRef as React.Ref<HTMLDivElement>}\n >\n <div ref={chipsContainerRefCallback} className={styles.chipsAndInput}>\n {state.chips.map((chip, index) => {\n return (\n <div\n key={`${chip.value}-${index}`}\n className={styles.customChipWrapper}\n onMouseDown={(event) => event.preventDefault()}\n >\n <CustomChip\n Element=\"button\"\n size=\"small\"\n disabled={disabled}\n onDelete={() => {\n deleteHandler(index);\n }}\n dataQaWrapper={`chips-trigger-chip-${chip.value}`}\n deleteOnly\n deleteButtonAriaLabel={deleteButtonAriaLabel}\n >\n {chip.label ?? chip.value}\n </CustomChip>\n </div>\n );\n })}\n <div className={styles.field}>\n <input\n ref={inputRefCallback}\n className={styles.fieldInput}\n type=\"text\"\n disabled={disabled}\n value={state.value}\n onKeyDown={keyDownHandler}\n onFocus={focusHandler}\n onBlur={blurHandler}\n onChange={changeHandler}\n data-qa=\"chips-trigger-input\"\n readOnly={isMobile}\n aria-labelledby={showLabel ? ariaLabeledBy : undefined}\n />\n {showLabel && (\n <div className={styles.labelWrapper}>\n <label className={styles.label} id={ariaLabeledBy}>\n {placeholder}\n </label>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <div\n className={classnames(styles.icon, {\n [styles.iconExpanded]: expanded || externalExpanded,\n })}\n >\n <ChevronDownOutlinedSize24 />\n </div>\n {hasVerticalScroll && <Scrollbar {...verticalScrollbarProps} />}\n </div>\n <FormHelper\n description={description}\n errorMessage={errorMessage}\n disabled={disabled}\n invalid={invalid}\n />\n </div>\n );\n }\n);\n\nChipsTrigger.displayName = 'ChipsTrigger';\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;AA0BA,MAAM,eAAe,GAAG,CAAC,KAAqB,EAAE,cAAkC,EAAE,KAAyB,KAAI;AAC7G,IAAA,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK,EAAE;QAC3B,OAAO;KACV;AACD,IAAA,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7F,IAAA,IAAI,oBAAoB,KAAK,IAAI,EAAE;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,oBAAoB,CAAC,KAAK,EAAE,CAAC;KAChC;AACL,CAAC,CAAC;AAOK,MAAM,YAAY,GAAG,UAAU,CAIlC,CACI,EACI,IAAI,GAAG,OAAO,EACd,WAAW,EACX,QAAQ,EACR,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,sBAAsB,EACtC,KAAK,EACL,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EAAE,qBAAqB,EACpC,oBAAoB,GAAG,IAAI,EAC3B,SAAS,EAAE,MAAM,GAAG,eAAe,EACnC,qBAAqB,EAAE,sBAAsB,GAChD,EACD,GAAG,KACH;AACA,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;IACrC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9F,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAAE,GAAG,YAAY,CAAC;QAC7E,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU;AACvC,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,oBAAoB,GAAG,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACvE,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACvD,MAAM,yBAAyB,GAAG,eAAe,CAAC,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAClG,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACxD,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,KAAK,EAAE,CAAC;AACvF,IAAA,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;AACxB,IAAA,MAAM,aAAa,GAAG,CAAuB,oBAAA,EAAA,OAAO,EAAE,CAAC;IACvD,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC3D,IAAA,MAAM,qBAAqB,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAEjG,IAAA,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,KAAa,KAAI;AACd,QAAA,QAAQ,CAAC;YACL,KAAK;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE;AAClD,SAAA,CAAC,CAAC;AACH,QAAA,qBAAqB,GAAG,KAAK,CAAC,CAAC;KAClC,EACD,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CACjD,CAAC;AACF,IAAA,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzG,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AAClB,YAAA,eAAe,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;SACtF;AACL,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhB,IAAA,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,KAAa,KAAI;AACd,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjD,QAAA,QAAQ,CAAC;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,YAAA,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AACvB,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,EAAE;AAC1E,SAAA,CAAC,CAAC;AACP,KAAC,EACD,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CACvC,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,WAAW,CAC9B,CAAC,KAAK,KAAI;;AAEN,QAAA,IAAI,oBAAoB,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE;YAC9E,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO;aACV;AACD,YAAA,QAAQ,CAAC;AACL,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAChE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,aAAA,CAAC,CAAC;AACH,YAAA,qBAAqB,GAAG,EAAE,CAAC,CAAC;SAC/B;;AAED,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE;YAChF,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO;aACV;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACtC,YAAA,QAAQ,CAAC;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AACvB,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;AACzE,aAAA,CAAC,CAAC;SACN;;AAED,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE;YAChF,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SACvE;KACJ,EACD,CAAC,oBAAoB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,KAAK,CAAC,CACjE,CAAC;;;IAIF,MAAM,mBAAmB,GAAG,SAAS;UAC/B,EAAE,SAAS,EAAE,GAAG,SAAS,IAAI,IAAI,KAAK,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA,EAAA,CAAI,EAAE;UAC/D,SAAS,CAAC;IAEhB,QACIA,yBACIA,IACI,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,sBAAsB,EAAE;AAC/E,oBAAA,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS;AAC3B,oBAAA,CAAC,MAAM,CAAC,YAAY,GAAG,cAAc;AACrC,oBAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;AAC7B,oBAAA,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AAC9B,iBAAA,CAAC,EACF,OAAO,EAAE,MAAK;oBACV,IAAI,QAAQ,EAAE;wBACV,OAAO;qBACV;AACD,oBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;wBACnB,OAAO;qBACV;oBACD,WAAW,CAAC,IAAI,CAAC,CAAC;;;;oBAIlB,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,CAAC,OAAO,EAAE;AACjD,wBAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;qBAC5B;AACL,iBAAC,EACD,MAAM,EAAE,CAAC,KAAK,KAAI;oBACd,QAAQ,CAAC,OAAO,CAAC,mBAAmB;AAChC,wBAAA,KAAK,CAAC,aAAa,KAAK,YAAY,CAAC,OAAO,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,OAAO,CAAC;oBAC7F,WAAW,CAAC,KAAK,CAAC,CAAC;iBACtB,EACD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAK;;;;;AAKd,oBAAA,QAAQ,CAAC,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,OAAO,CAAC;oBACnF,QAAQ,CAAC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC,gBAAgB,CAAC;AACjE,iBAAC,EACD,OAAO,EAAE,MAAK;AACV,oBAAA,IACI,QAAQ,CAAC,OAAO,CAAC,mBAAmB;AACpC,wBAAA,QAAQ,CAAC,OAAO,CAAC,sBAAsB,KAAK,gBAAgB,EAC9D;wBACE,sBAAsB,IAAI,CAAC;qBAC9B;AACD,oBAAA,QAAQ,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC7C,oBAAA,QAAQ,CAAC,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpD,iBAAC,EACD,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,CAAC,EACzB,SAAA,EAAA,MAAM,EAEf,QAAA,EAAA,CAAAC,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAA,QAAA,EACpEA,GACI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,cAAc,EAChC,GAAG,EAAE,SAAS,CAAC,kBAA+C,EAE9D,QAAA,EAAAD,IAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,EAAA,QAAA,EAAA,CAC/D,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC7B,wCAAA,QACIC,GAEI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,iBAAiB,EACnC,WAAW,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,EAAE,EAE9C,QAAA,EAAAA,GAAA,CAAC,UAAU,EACP,EAAA,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAK;oDACX,aAAa,CAAC,KAAK,CAAC,CAAC;AACzB,iDAAC,EACD,aAAa,EAAE,CAAA,mBAAA,EAAsB,IAAI,CAAC,KAAK,CAAE,CAAA,EACjD,UAAU,EAAA,IAAA,EACV,qBAAqB,EAAE,qBAAqB,EAE3C,QAAA,EAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAChB,EAhBR,EAAA,CAAA,EAAG,IAAI,CAAC,KAAK,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAiB3B,EACR;qCACL,CAAC,EACFD,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAAA,CACxBC,GACI,CAAA,OAAA,EAAA,EAAA,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,aAAa,EAAA,SAAA,EACf,qBAAqB,EAC7B,QAAQ,EAAE,QAAQ,qBACD,SAAS,GAAG,aAAa,GAAG,SAAS,GACxD,EACD,SAAS,KACNA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,YAAY,EAAA,QAAA,EAC/BA,GAAO,CAAA,OAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,EAC5C,QAAA,EAAA,WAAW,EACR,CAAA,EAAA,CACN,CACT,CAAA,EAAA,CACC,IACJ,EACJ,CAAA,EAAA,CACJ,EACNA,GAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,4BAAA,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,IAAI,gBAAgB;AACtD,yBAAA,CAAC,YAEFA,GAAC,CAAA,yBAAyB,EAAG,EAAA,CAAA,EAAA,CAC3B,EACL,iBAAiB,IAAIA,GAAC,CAAA,SAAS,OAAK,sBAAsB,EAAA,CAAI,CAC7D,EAAA,CAAA,EACNA,IAAC,UAAU,EAAA,EACP,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAClB,CAAA,CAAA,EAAA,CACA,EACR;AACN,CAAC,EACH;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
@@ -5,6 +5,7 @@ import { ChipsTrigger } from './ChipsTrigger.js';
5
5
  import 'classnames';
6
6
  import '@hh.ru/magritte-common-keyboard';
7
7
  import '@hh.ru/magritte-common-use-multiple-refs';
8
+ import '@hh.ru/magritte-common-use-translation';
8
9
  import '@hh.ru/magritte-ui-breakpoint';
9
10
  import '@hh.ru/magritte-ui-chips';
10
11
  import '@hh.ru/magritte-ui-form-helper';
@@ -1 +1 @@
1
- {"version":3,"file":"UncontrolledChipsTrigger.js","sources":["../src/UncontrolledChipsTrigger.tsx"],"sourcesContent":["import { forwardRef, InputHTMLAttributes, useState } from 'react';\n\nimport { ChipsTrigger } from '@hh.ru/magritte-ui-chips-trigger/ChipsTrigger';\nimport { UncontrolledChipsTriggerProps, ChipsTriggerState } from '@hh.ru/magritte-ui-chips-trigger/types';\n\nconst DEFAULT_STATE = {\n value: '',\n chips: [],\n};\n\nexport const UncontrolledChipsTrigger = forwardRef<\n HTMLInputElement,\n UncontrolledChipsTriggerProps & Omit<InputHTMLAttributes<HTMLInputElement>, keyof UncontrolledChipsTriggerProps>\n>(({ state: defaultState = DEFAULT_STATE, onChange, name, ...restProps }, ref) => {\n const [state, setState] = useState<ChipsTriggerState>({ ...defaultState });\n return (\n <>\n <ChipsTrigger\n {...restProps}\n state={state}\n onChange={(newState) => {\n setState(newState);\n onChange?.(newState);\n }}\n ref={ref}\n />\n {state.chips.map((chip) => (\n <input type=\"hidden\" name={name} value={chip.value} key={chip.value} />\n ))}\n </>\n );\n});\n\nUncontrolledChipsTrigger.displayName = 'UncontrolledChipsTrigger';\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;AAKA,MAAM,aAAa,GAAG;AAClB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;CACZ,CAAC;AAEW,MAAA,wBAAwB,GAAG,UAAU,CAGhD,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,KAAI;AAC7E,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC3E,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,YAAY,EAAA,EAAA,GACL,SAAS,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,QAAQ,KAAI;oBACnB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnB,oBAAA,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACzB,iBAAC,EACD,GAAG,EAAE,GAAG,EACV,CAAA,EACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAClBA,GAAO,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAO,EAAA,IAAI,CAAC,KAAK,CAAI,CAC1E,CAAC,CAAA,EAAA,CACH,EACL;AACN,CAAC,EAAE;AAEH,wBAAwB,CAAC,WAAW,GAAG,0BAA0B;;;;"}
1
+ {"version":3,"file":"UncontrolledChipsTrigger.js","sources":["../src/UncontrolledChipsTrigger.tsx"],"sourcesContent":["import { forwardRef, InputHTMLAttributes, useState } from 'react';\n\nimport { ChipsTrigger } from '@hh.ru/magritte-ui-chips-trigger/ChipsTrigger';\nimport { UncontrolledChipsTriggerProps, ChipsTriggerState } from '@hh.ru/magritte-ui-chips-trigger/types';\n\nconst DEFAULT_STATE = {\n value: '',\n chips: [],\n};\n\nexport const UncontrolledChipsTrigger = forwardRef<\n HTMLInputElement,\n UncontrolledChipsTriggerProps & Omit<InputHTMLAttributes<HTMLInputElement>, keyof UncontrolledChipsTriggerProps>\n>(({ state: defaultState = DEFAULT_STATE, onChange, name, ...restProps }, ref) => {\n const [state, setState] = useState<ChipsTriggerState>({ ...defaultState });\n return (\n <>\n <ChipsTrigger\n {...restProps}\n state={state}\n onChange={(newState) => {\n setState(newState);\n onChange?.(newState);\n }}\n ref={ref}\n />\n {state.chips.map((chip) => (\n <input type=\"hidden\" name={name} value={chip.value} key={chip.value} />\n ))}\n </>\n );\n});\n\nUncontrolledChipsTrigger.displayName = 'UncontrolledChipsTrigger';\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;;AAKA,MAAM,aAAa,GAAG;AAClB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;CACZ,CAAC;AAEW,MAAA,wBAAwB,GAAG,UAAU,CAGhD,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,KAAI;AAC7E,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAC3E,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,YAAY,EAAA,EAAA,GACL,SAAS,EACb,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,QAAQ,KAAI;oBACnB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnB,oBAAA,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACzB,iBAAC,EACD,GAAG,EAAE,GAAG,EACV,CAAA,EACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAClBA,GAAO,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAO,EAAA,IAAI,CAAC,KAAK,CAAI,CAC1E,CAAC,CAAA,EAAA,CACH,EACL;AACN,CAAC,EAAE;AAEH,wBAAwB,CAAC,WAAW,GAAG,0BAA0B;;;;"}
package/index.css CHANGED
@@ -58,7 +58,7 @@
58
58
  --magritte-color-component-input-icon-state-chevron-hovered-v24-3-0:#8293a2;
59
59
  --magritte-color-component-input-icon-state-chevron-disabled-v24-3-0:#96aabb;
60
60
  }
61
- .magritte-root___-zVdz_4-1-32{
61
+ .magritte-root___-zVdz_4-1-33{
62
62
  display:inline-flex;
63
63
  position:relative;
64
64
  width:100%;
@@ -74,101 +74,101 @@
74
74
  --magritte-ui-scrollbar-border-radius:12px;
75
75
  }
76
76
  @media (min-width: 1020px){
77
- body.magritte-old-layout .magritte-root___-zVdz_4-1-32:not(.magritte-focused___0Uzyu_4-1-32):not(.magritte-invalid___tVzQV_4-1-32):not(.magritte-disabled___UeqcV_4-1-32):hover{
77
+ body.magritte-old-layout .magritte-root___-zVdz_4-1-33:not(.magritte-focused___0Uzyu_4-1-33):not(.magritte-invalid___tVzQV_4-1-33):not(.magritte-disabled___UeqcV_4-1-33):hover{
78
78
  background-color:var(--magritte-color-component-input-background-state-field-hovered-v24-3-0);
79
79
  box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-hovered-v24-3-0);
80
80
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-hovered-v24-3-0);
81
81
  }
82
- body.magritte-old-layout .magritte-root___-zVdz_4-1-32:not(.magritte-focused___0Uzyu_4-1-32):not(.magritte-invalid___tVzQV_4-1-32):not(.magritte-disabled___UeqcV_4-1-32):hover .magritte-label___j7Trt_4-1-32{
82
+ body.magritte-old-layout .magritte-root___-zVdz_4-1-33:not(.magritte-focused___0Uzyu_4-1-33):not(.magritte-invalid___tVzQV_4-1-33):not(.magritte-disabled___UeqcV_4-1-33):hover .magritte-label___j7Trt_4-1-33{
83
83
  color:var(--magritte-color-component-input-text-state-placeholder-hovered-v24-3-0);
84
84
  }
85
85
  }
86
86
  @media (min-width: 1024px){
87
- body:not(.magritte-old-layout) .magritte-root___-zVdz_4-1-32:not(.magritte-focused___0Uzyu_4-1-32):not(.magritte-invalid___tVzQV_4-1-32):not(.magritte-disabled___UeqcV_4-1-32):hover{
87
+ body:not(.magritte-old-layout) .magritte-root___-zVdz_4-1-33:not(.magritte-focused___0Uzyu_4-1-33):not(.magritte-invalid___tVzQV_4-1-33):not(.magritte-disabled___UeqcV_4-1-33):hover{
88
88
  background-color:var(--magritte-color-component-input-background-state-field-hovered-v24-3-0);
89
89
  box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-hovered-v24-3-0);
90
90
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-hovered-v24-3-0);
91
91
  }
92
- body:not(.magritte-old-layout) .magritte-root___-zVdz_4-1-32:not(.magritte-focused___0Uzyu_4-1-32):not(.magritte-invalid___tVzQV_4-1-32):not(.magritte-disabled___UeqcV_4-1-32):hover .magritte-label___j7Trt_4-1-32{
92
+ body:not(.magritte-old-layout) .magritte-root___-zVdz_4-1-33:not(.magritte-focused___0Uzyu_4-1-33):not(.magritte-invalid___tVzQV_4-1-33):not(.magritte-disabled___UeqcV_4-1-33):hover .magritte-label___j7Trt_4-1-33{
93
93
  color:var(--magritte-color-component-input-text-state-placeholder-hovered-v24-3-0);
94
94
  }
95
95
  }
96
- .magritte-root___-zVdz_4-1-32:not(.magritte-disabled___UeqcV_4-1-32){
96
+ .magritte-root___-zVdz_4-1-33:not(.magritte-disabled___UeqcV_4-1-33){
97
97
  cursor:text;
98
98
  }
99
- .magritte-root___-zVdz_4-1-32.magritte-focused___0Uzyu_4-1-32{
99
+ .magritte-root___-zVdz_4-1-33.magritte-focused___0Uzyu_4-1-33{
100
100
  background-color:var(--magritte-color-component-input-background-state-field-focused-v24-3-0);
101
101
  box-shadow:inset 0 0 0 2px var(--magritte-color-component-input-stroke-state-field-focused-v24-3-0);
102
102
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-focused-v24-3-0);
103
103
  }
104
- .magritte-root___-zVdz_4-1-32.magritte-focused___0Uzyu_4-1-32 .magritte-label___j7Trt_4-1-32{
104
+ .magritte-root___-zVdz_4-1-33.magritte-focused___0Uzyu_4-1-33 .magritte-label___j7Trt_4-1-33{
105
105
  color:var(--magritte-color-component-input-text-state-placeholder-focused-v24-3-0);
106
106
  }
107
- .magritte-root___-zVdz_4-1-32.magritte-invalid___tVzQV_4-1-32{
107
+ .magritte-root___-zVdz_4-1-33.magritte-invalid___tVzQV_4-1-33{
108
108
  background-color:var(--magritte-color-component-input-background-state-field-invalid-v24-3-0);
109
109
  box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-invalid-v24-3-0);
110
110
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-invalid-v24-3-0);
111
111
  }
112
- .magritte-root___-zVdz_4-1-32.magritte-invalid___tVzQV_4-1-32 .magritte-label___j7Trt_4-1-32{
112
+ .magritte-root___-zVdz_4-1-33.magritte-invalid___tVzQV_4-1-33 .magritte-label___j7Trt_4-1-33{
113
113
  color:var(--magritte-color-component-input-text-state-placeholder-invalid-v24-3-0);
114
114
  }
115
- .magritte-root___-zVdz_4-1-32.magritte-disabled___UeqcV_4-1-32{
115
+ .magritte-root___-zVdz_4-1-33.magritte-disabled___UeqcV_4-1-33{
116
116
  background-color:var(--magritte-color-component-input-background-state-field-disabled-v24-3-0);
117
117
  box-shadow:inset 0 0 0 1px var(--magritte-color-component-input-stroke-state-field-disabled-v24-3-0);
118
118
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-disabled-v24-3-0);
119
119
  --magritte-ui-chip-text-color-override:var(--magritte-color-component-input-chips-text-state-neutral-disable-v24-3-0);
120
120
  --magritte-ui-chip-background-color-override:var(--magritte-color-component-input-chips-background-state-neutral-disable-v24-3-0);
121
121
  }
122
- .magritte-root___-zVdz_4-1-32.magritte-disabled___UeqcV_4-1-32 .magritte-label___j7Trt_4-1-32{
122
+ .magritte-root___-zVdz_4-1-33.magritte-disabled___UeqcV_4-1-33 .magritte-label___j7Trt_4-1-33{
123
123
  color:var(--magritte-color-component-input-text-state-placeholder-disabled-v24-3-0);
124
124
  }
125
- .magritte-root___-zVdz_4-1-32.magritte-disabled___UeqcV_4-1-32 .magritte-scrollable-area___-xMF2_4-1-32{
125
+ .magritte-root___-zVdz_4-1-33.magritte-disabled___UeqcV_4-1-33 .magritte-scrollable-area___-xMF2_4-1-33{
126
126
  overflow:hidden;
127
127
  }
128
- .magritte-root___-zVdz_4-1-32.magritte-focus-visible___ifvAP_4-1-32{
128
+ .magritte-root___-zVdz_4-1-33.magritte-focus-visible___ifvAP_4-1-33{
129
129
  outline:var(--magritte-color-component-input-stroke-state-accent-focused-accessible-v24-3-0) solid 4px;
130
130
  }
131
- .magritte-root___-zVdz_4-1-32.magritte-focus-visible___ifvAP_4-1-32.magritte-invalid___tVzQV_4-1-32{
131
+ .magritte-root___-zVdz_4-1-33.magritte-focus-visible___ifvAP_4-1-33.magritte-invalid___tVzQV_4-1-33{
132
132
  outline-color:var(--magritte-color-component-input-stroke-state-negative-focused-accessible-v24-3-0);
133
133
  }
134
- .magritte-large___JIrIy_4-1-32{
134
+ .magritte-large___JIrIy_4-1-33{
135
135
  padding-left:12px;
136
136
  padding-top:12px;
137
137
  padding-bottom:12px;
138
138
  padding-right:2px;
139
139
  }
140
- .magritte-large___JIrIy_4-1-32 .magritte-field___rlEmn_4-1-32{
140
+ .magritte-large___JIrIy_4-1-33 .magritte-field___rlEmn_4-1-33{
141
141
  margin-left:4px;
142
142
  }
143
- .magritte-large___JIrIy_4-1-32 .magritte-icon___fDMiz_4-1-32{
143
+ .magritte-large___JIrIy_4-1-33 .magritte-icon___fDMiz_4-1-33{
144
144
  top:12px;
145
145
  right:16px;
146
146
  }
147
- .magritte-large___JIrIy_4-1-32 .magritte-scrollable-area-wrapper___hZNQd_4-1-32{
147
+ .magritte-large___JIrIy_4-1-33 .magritte-scrollable-area-wrapper___hZNQd_4-1-33{
148
148
  padding-right:calc(24px + 10px + 12px);
149
149
  }
150
- .magritte-medium___Xk-XB_4-1-32{
150
+ .magritte-medium___Xk-XB_4-1-33{
151
151
  padding-left:8px;
152
152
  padding-top:8px;
153
153
  padding-bottom:8px;
154
154
  padding-right:2px;
155
155
  }
156
- .magritte-medium___Xk-XB_4-1-32 .magritte-field___rlEmn_4-1-32{
156
+ .magritte-medium___Xk-XB_4-1-33 .magritte-field___rlEmn_4-1-33{
157
157
  margin-left:8px;
158
158
  }
159
- .magritte-medium___Xk-XB_4-1-32 .magritte-icon___fDMiz_4-1-32{
159
+ .magritte-medium___Xk-XB_4-1-33 .magritte-icon___fDMiz_4-1-33{
160
160
  top:8px;
161
161
  right:12px;
162
162
  }
163
- .magritte-medium___Xk-XB_4-1-32 .magritte-scrollable-area-wrapper___hZNQd_4-1-32{
163
+ .magritte-medium___Xk-XB_4-1-33 .magritte-scrollable-area-wrapper___hZNQd_4-1-33{
164
164
  padding-right:calc(24px + 6px + 12px);
165
165
  }
166
- .magritte-scrollable-area-wrapper___hZNQd_4-1-32{
166
+ .magritte-scrollable-area-wrapper___hZNQd_4-1-33{
167
167
  width:100%;
168
168
  position:relative;
169
169
  overflow:hidden;
170
170
  }
171
- .magritte-scrollable-area___-xMF2_4-1-32{
171
+ .magritte-scrollable-area___-xMF2_4-1-33{
172
172
  height:100%;
173
173
  display:flex;
174
174
  align-items:flex-start;
@@ -176,17 +176,17 @@
176
176
  overscroll-behavior:contain;
177
177
  scrollbar-width:none;
178
178
  }
179
- .magritte-scrollable-area___-xMF2_4-1-32::-webkit-scrollbar{
179
+ .magritte-scrollable-area___-xMF2_4-1-33::-webkit-scrollbar{
180
180
  display:none;
181
181
  }
182
- .magritte-chips-and-input___qg-Ba_4-1-32{
182
+ .magritte-chips-and-input___qg-Ba_4-1-33{
183
183
  display:flex;
184
184
  gap:6px;
185
185
  flex-wrap:wrap;
186
186
  align-items:center;
187
187
  width:100%;
188
188
  }
189
- .magritte-field___rlEmn_4-1-32{
189
+ .magritte-field___rlEmn_4-1-33{
190
190
  display:flex;
191
191
  align-items:center;
192
192
  position:relative;
@@ -202,7 +202,7 @@
202
202
  text-transform:none;
203
203
  text-decoration:none;
204
204
  }
205
- .magritte-field-input___04Cag_4-1-32{
205
+ .magritte-field-input___04Cag_4-1-33{
206
206
  border:0;
207
207
  padding:0;
208
208
  background:none;
@@ -210,19 +210,19 @@
210
210
  width:100%;
211
211
  z-index:1;
212
212
  }
213
- .magritte-label-wrapper___De7Bm_4-1-32{
213
+ .magritte-label-wrapper___De7Bm_4-1-33{
214
214
  display:flex;
215
215
  align-items:center;
216
216
  position:absolute;
217
217
  height:100%;
218
218
  inset:0;
219
219
  }
220
- .magritte-label___j7Trt_4-1-32{
220
+ .magritte-label___j7Trt_4-1-33{
221
221
  color:var(--magritte-color-component-input-text-placeholder-v24-3-0);
222
222
  overflow:hidden;
223
223
  text-overflow:ellipsis;
224
224
  }
225
- .magritte-icon___fDMiz_4-1-32{
225
+ .magritte-icon___fDMiz_4-1-33{
226
226
  display:inline-flex;
227
227
  margin-left:auto;
228
228
  padding:4px 0;
@@ -231,11 +231,11 @@
231
231
  transition-duration:var(--magritte-semantic-animation-ease-in-out-100-duration-v24-3-0);
232
232
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-100-timing-function-v24-3-0);
233
233
  }
234
- .magritte-icon_expanded___RaOT-_4-1-32{
234
+ .magritte-icon_expanded___RaOT-_4-1-33{
235
235
  transform:rotate(-180deg);
236
236
  --magritte-ui-icon-color-override:var(--magritte-color-component-input-icon-state-chevron-focused-v24-3-0);
237
237
  }
238
- .magritte-custom-chip-wrapper___a9kJ6_4-1-32{
238
+ .magritte-custom-chip-wrapper___a9kJ6_4-1-33{
239
239
  display:inline-flex;
240
240
  min-width:0;
241
241
  }
package/index.js CHANGED
@@ -6,6 +6,7 @@ import 'react';
6
6
  import 'classnames';
7
7
  import '@hh.ru/magritte-common-keyboard';
8
8
  import '@hh.ru/magritte-common-use-multiple-refs';
9
+ import '@hh.ru/magritte-common-use-translation';
9
10
  import '@hh.ru/magritte-ui-breakpoint';
10
11
  import '@hh.ru/magritte-ui-chips';
11
12
  import '@hh.ru/magritte-ui-form-helper';
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-chips-trigger",
3
- "version": "4.1.32",
3
+ "version": "4.1.33",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -28,14 +28,15 @@
28
28
  "dependencies": {
29
29
  "@hh.ru/magritte-common-keyboard": "4.1.5",
30
30
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.10",
31
+ "@hh.ru/magritte-common-use-translation": "2.0.1",
31
32
  "@hh.ru/magritte-design-tokens": "24.3.0",
32
33
  "@hh.ru/magritte-ui-breakpoint": "6.0.6",
33
- "@hh.ru/magritte-ui-chips": "6.0.40",
34
+ "@hh.ru/magritte-ui-chips": "6.0.41",
34
35
  "@hh.ru/magritte-ui-form-helper": "2.0.24",
35
36
  "@hh.ru/magritte-ui-icon": "13.7.8",
36
- "@hh.ru/magritte-ui-input": "9.2.1",
37
+ "@hh.ru/magritte-ui-input": "9.2.2",
37
38
  "@hh.ru/magritte-ui-mock-component": "1.1.6",
38
39
  "@hh.ru/magritte-ui-scrollbar": "1.0.16"
39
40
  },
40
- "gitHead": "e786b993672ad1023ac0424de3e909cda38ee241"
41
+ "gitHead": "b9e92926505959141c69ee7564ade841a2a1b39f"
41
42
  }
package/types.d.ts CHANGED
@@ -54,6 +54,8 @@ export interface ChipsTriggerProps {
54
54
  allowArbitraryValues?: boolean;
55
55
  /** Кастомный data-qa для тестирования */
56
56
  'data-qa'?: string;
57
+ /** aria-label кнопки удаления */
58
+ deleteButtonAriaLabel?: string;
57
59
  }
58
60
  export type UncontrolledChipsTriggerProps = Partial<ChipsTriggerProps>;
59
61
  export {};