@skbkontur/react-ui 5.3.7 → 5.3.8
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 +11 -0
- package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
- package/cjs/components/TokenInput/TokenInput.js +39 -24
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +35 -29
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +2 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/package.json +1 -1
|
@@ -21,6 +21,7 @@ import { getRootNode, rootNode } from "../../../lib/rootNode";
|
|
|
21
21
|
import { createPropsGetter } from "../../../lib/createPropsGetter";
|
|
22
22
|
import { getUid } from "../../../lib/uidUtils";
|
|
23
23
|
import { TokenView } from "../../Token/TokenView";
|
|
24
|
+
import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
|
|
24
25
|
import { TokenInputLocaleHelper } from "../locale";
|
|
25
26
|
import { styles } from "../TokenInput.styles";
|
|
26
27
|
import { tokenInputReducer } from "../TokenInputReducer";
|
|
@@ -275,7 +276,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
275
276
|
if (query === void 0) {
|
|
276
277
|
query = '';
|
|
277
278
|
}
|
|
278
|
-
if (!(_this.props.getItems && (_this.
|
|
279
|
+
if (!(_this.props.getItems && (_this.isInputValueChanged || !_this.props.hideMenuIfEmptyInputValue))) {
|
|
279
280
|
_context.next = 15;
|
|
280
281
|
break;
|
|
281
282
|
}
|
|
@@ -308,7 +309,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
308
309
|
autocompleteItemsUnique.unshift(editingItem);
|
|
309
310
|
}
|
|
310
311
|
}
|
|
311
|
-
if (query === '' || _this.
|
|
312
|
+
if (query === '' || _this.isInputValueChanged) {
|
|
312
313
|
_this.dispatch({
|
|
313
314
|
type: 'SET_AUTOCOMPLETE_ITEMS',
|
|
314
315
|
payload: autocompleteItemsUnique
|
|
@@ -570,7 +571,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
570
571
|
type: 'SET_EDITING_TOKEN_INDEX',
|
|
571
572
|
payload: editingTokenIndex
|
|
572
573
|
});
|
|
573
|
-
if (_this.
|
|
574
|
+
if (_this.isInputValueChanged) {
|
|
574
575
|
if (_this.state.reservedInputValue === undefined) {
|
|
575
576
|
_this.dispatch({
|
|
576
577
|
type: 'SET_TEMPORARY_QUERY',
|
|
@@ -596,7 +597,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
596
597
|
var editedItem = _this.getProps().valueToItem(inputValue);
|
|
597
598
|
var newItems = selectedItems.concat([]);
|
|
598
599
|
if (!_this.hasValueInItems(selectedItems, editedItem)) {
|
|
599
|
-
newItems.splice.apply(newItems, [editingTokenIndex, 1].concat(
|
|
600
|
+
newItems.splice.apply(newItems, [editingTokenIndex, 1].concat(_this.isInputValueChanged ? [editedItem] : []));
|
|
600
601
|
_this.handleValueChange(newItems);
|
|
601
602
|
}
|
|
602
603
|
_this.dispatch({
|
|
@@ -625,25 +626,27 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
625
626
|
_this.checkForUnexpectedInput = function () {
|
|
626
627
|
var inputValue = _this.state.inputValue;
|
|
627
628
|
var onUnexpectedInput = _this.props.onUnexpectedInput;
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
if (returnedValue === null) {
|
|
635
|
-
_this.dispatch({
|
|
636
|
-
type: 'CLEAR_INPUT'
|
|
637
|
-
}, function () {
|
|
638
|
-
if (_this.isEditingMode) {
|
|
639
|
-
_this.finishTokenEdit();
|
|
640
|
-
}
|
|
641
|
-
});
|
|
642
|
-
return;
|
|
643
|
-
}
|
|
644
|
-
if (returnedValue) {
|
|
645
|
-
_this.selectItem(returnedValue);
|
|
629
|
+
|
|
630
|
+
// чекаем не возвращает ли что-нибудь обработчик
|
|
631
|
+
var returnedValue = onUnexpectedInput == null ? void 0 : onUnexpectedInput(inputValue);
|
|
632
|
+
if (returnedValue === undefined) {
|
|
633
|
+
if (_this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode && _this.type === TokenInputType.WithoutReference) {
|
|
634
|
+
_this.handleAddItem();
|
|
646
635
|
}
|
|
636
|
+
return;
|
|
637
|
+
}
|
|
638
|
+
if (returnedValue === null) {
|
|
639
|
+
_this.dispatch({
|
|
640
|
+
type: 'CLEAR_INPUT'
|
|
641
|
+
}, function () {
|
|
642
|
+
if (_this.isEditingMode) {
|
|
643
|
+
_this.finishTokenEdit();
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
return;
|
|
647
|
+
}
|
|
648
|
+
if (returnedValue) {
|
|
649
|
+
_this.selectItem(returnedValue);
|
|
647
650
|
}
|
|
648
651
|
};
|
|
649
652
|
_this.handleChangeInputValue = function (event) {
|
|
@@ -654,7 +657,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
654
657
|
if (query.endsWith(' ')) {
|
|
655
658
|
query = query.trimRight() + ' ';
|
|
656
659
|
}
|
|
657
|
-
if (_this.
|
|
660
|
+
if (_this.isInputValueChanged && query === '') {
|
|
658
661
|
_this.dispatch({
|
|
659
662
|
type: 'SET_AUTOCOMPLETE_ITEMS',
|
|
660
663
|
payload: undefined
|
|
@@ -844,9 +847,12 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
844
847
|
};
|
|
845
848
|
_proto.render = function render() {
|
|
846
849
|
var _this2 = this;
|
|
847
|
-
return /*#__PURE__*/React.createElement(
|
|
848
|
-
_this2.
|
|
849
|
-
return
|
|
850
|
+
return /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Consumer, null, function (flags) {
|
|
851
|
+
_this2.featureFlags = getFullReactUIFlagsContext(flags);
|
|
852
|
+
return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
|
|
853
|
+
_this2.theme = theme;
|
|
854
|
+
return _this2.renderMain();
|
|
855
|
+
});
|
|
850
856
|
});
|
|
851
857
|
};
|
|
852
858
|
_proto.getLabelSizeClassName = function getLabelSizeClassName() {
|
|
@@ -905,7 +911,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
905
911
|
reservedInputValue = _this$state3.reservedInputValue,
|
|
906
912
|
autocompleteItems = _this$state3.autocompleteItems,
|
|
907
913
|
loading = _this$state3.loading;
|
|
908
|
-
var showMenu = this.type !== TokenInputType.WithoutReference && this.isCursorVisible && activeTokens.length === 0 && (
|
|
914
|
+
var showMenu = this.type !== TokenInputType.WithoutReference && this.isCursorVisible && activeTokens.length === 0 && (this.isInputValueChanged || !hideMenuIfEmptyInputValue);
|
|
909
915
|
var theme = this.theme;
|
|
910
916
|
var inputInlineStyles = {
|
|
911
917
|
// вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости
|
|
@@ -994,7 +1000,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
994
1000
|
});
|
|
995
1001
|
};
|
|
996
1002
|
_proto.isCursorVisibleForState = function isCursorVisibleForState(state) {
|
|
997
|
-
return state.inFocus && (
|
|
1003
|
+
return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);
|
|
998
1004
|
};
|
|
999
1005
|
_proto.updateInputTextWidth = function updateInputTextWidth() {
|
|
1000
1006
|
if (this.textHelper) {
|
|
@@ -1039,7 +1045,7 @@ export var TokenInput = (_dec = locale('TokenInput', TokenInputLocaleHelper), ro
|
|
|
1039
1045
|
if (selectedItems && this.hasValueInItems(selectedItems, value)) {
|
|
1040
1046
|
return false;
|
|
1041
1047
|
}
|
|
1042
|
-
if (this.type === TokenInputType.Combined && this.
|
|
1048
|
+
if (this.type === TokenInputType.Combined && this.isInputValueChanged) {
|
|
1043
1049
|
return true;
|
|
1044
1050
|
}
|
|
1045
1051
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","isEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","getProps","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","valueToString","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps","selectedItems","delimiters","tokens","map","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps2","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps3","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","_this$input3","_this$input4","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps4","indexOfActiveToken","itemsNew","_this$input6","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps5","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps6","_this$state2","editedItem","splice","onUnexpectedInput","returnedValue","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","showAddItemHint","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps7","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","render","_this2","Consumer","theme","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps8","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onKeyDown","onPaste","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","isInputValueChanged","_this$state4","_this$getProps9","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport isEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (item: string) => T;\n\n /** Определяет уникальный ключ по элементу. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n | 'size'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n size: 'small',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (inputValue !== '' || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.getProps().size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n text={inputValue}\n theme={this.theme}\n size={this.getProps().size}\n />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.getProps().size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.props.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.state.inputValue !== '') {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (state.inputValue !== '' || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.state.inputValue !== '' || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.state.inputValue !== '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.state.inputValue !== '') {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const selectedItems = this.getProps().selectedItems;\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const editedItem = this.getProps().valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(inputValue !== '' ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n if (onUnexpectedInput) {\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput(inputValue);\n\n if (returnedValue === undefined) {\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.state.inputValue !== '' && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled, size } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","isEqual","globalObject","PopupIds","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowRight","isKeyArrowUp","isKeyArrowVertical","isKeyBackspace","isKeyComma","isKeyDelete","isKeyEnter","isKeyEscape","isShortcutSelectAll","LayoutEvents","Token","MenuItem","emptyHandler","getRandomID","ThemeContext","locale","CommonWrapper","cx","getRootNode","rootNode","createPropsGetter","getUid","TokenView","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","TokenInputLocaleHelper","styles","tokenInputReducer","TokenInputMenu","TextWidthHelper","TEMP_FAKE_FLAG","TokenInputType","DefaultState","inputValue","reservedInputValue","undefined","autocompleteItems","activeTokens","editingTokenIndex","inFocus","loading","preventBlur","inputValueWidth","inputValueHeight","TokenInputDataTids","root","tokenInputMenu","label","defaultToKey","item","toString","identity","defaultRenderToken","_ref","isActive","onClick","onDoubleClick","onRemove","disabled","size","createElement","key","TokenInput","_dec","_class","_TokenInput","_React$PureComponent","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","_textareaId","rootId","input","tokensInputMenu","textHelper","wrapper","memoizedTokens","Map","hasValueInItems","items","value","includes","some","inputRef","node","tokensInputMenuRef","textHelperRef","wrapperRef","dispatch","action","cb","setState","prevState","handleInputFocus","event","type","getProps","onFocus","handleInputBlur","isBlurToMenu","handleOutsideBlur","_this$input","preventDefault","focus","requestAnimationFrame","_this$input2","payload","onBlur","_this$state","isEditingMode","finishTokenEdit","isTokenValueChanged","valueToString","selectItem","isInputChanged","checkForUnexpectedInput","menuRef","document","_this$tokensInputMenu","menu","getMenuRef","relatedTarget","activeElement","contains","handleWrapperMouseDown","_this$wrapper","target","isClickOnToken","handleWrapperMouseUp","handleCopy","isCursorVisible","_this$getProps","selectedItems","delimiters","tokens","map","token","indexOf","sort","index","clipboardData","setData","join","handleInputPaste","WithReference","paste","getData","_this$getProps2","valueToItem","onValueChange","delimiter","stopPropagation","trim","split","RegExp","filter","Boolean","newItems","tryGetItems","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","query","_this$getProps3","isSelectedItem","isEditingItem","autocompleteItemsUnique","editingItem","selectItemIndex","wrap","_callee$","_context","prev","next","props","getItems","isInputValueChanged","hideMenuIfEmptyInputValue","sent","unshift","emit","highlightMenuItem","findIndex","toLowerCase","setTimeout","_this$menuRef","highlightItem","stop","_x","handleKeyDown","handleInputKeyDown","handleWrapperKeyDown","e","_this$input3","_this$input4","WithoutReference","newValue","handleAddItem","isRightmostTokenNotDisabled","isTokenDisabled","enter","up","down","blur","moveFocusToLastToken","selectionStart","getAvailableTokenIndex","itemNew","focusInput","_this$input5","selectInputText","setSelectionRange","_this$wrapper2","_this$getProps4","indexOfActiveToken","itemsNew","_this$input6","handleWrapperArrows","handleTokenEdit","activeItemIndex","newItemIndex","isLeftEdge","isRightEdge","shiftKey","handleWrapperArrowsWithoutShift","handleWrapperArrowsWithShift","_this$input7","handleValueChange","_this$getProps5","handleRemoveToken","_","filteredActiveTokens","handleTokenClick","ctrlKey","_this$getProps6","_this$state2","editedItem","splice","onUnexpectedInput","returnedValue","featureFlags","tokenInputCreateTokenOnBlurInWithoutReferenceMode","handleChangeInputValue","trimLeft","endsWith","trimRight","onInputValueChange","Combined","renderTokensStart","slice","renderToken","renderTokensEnd","_this$props$selectedI","_this$props","_this$props$renderTok","handleIconClick","handleTokenDoubleClick","renderedToken","set","renderAddButton","showAddItemHint","_this$locale","addButtonComment","addButtonTitle","comment","itemIndex","has","get","startIndex","isDirectionLeft","_this$getProps7","step","availableIndex","_inheritsLoose","_proto","prototype","getDelimiters","_this$props$delimiter","every","propsGetter","defaultProps","propsWithOldDelimiters","_extends","componentDidMount","_globalObject$documen","updateInputTextWidth","addEventListener","autoFocus","componentDidUpdate","prevProps","clear","isCursorVisibleForState","componentWillUnmount","_globalObject$documen2","removeEventListener","_this$input8","_this$input9","render","_this2","Consumer","flags","theme","renderMain","getLabelSizeClassName","labelLarge","labelMedium","labelSmall","getInputSizeClassName","inputLarge","inputMedium","inputSmall","_cx","_cx2","_cx3","Error","_this$props2","maxMenuHeight","error","warning","renderNotFound","inputMode","renderTotalCount","totalCount","ariaDescribedby","ariaLabel","_this$getProps8","width","onMouseEnter","onMouseLeave","menuWidth","menuAlign","renderItem","_this$state3","showMenu","inputInlineStyles","height","caretColor","labelClassName","hovering","labelDisabled","labelFocused","inputClassName","inputDisabled","placeholder","inputNode","className","inputPlaceholderWrapper","hideCloseButton","id","textareaId","ref","style","spellCheck","onChange","onKeyDown","onPaste","rootNodeRef","setRootNode","onMouseDown","onMouseUp","htmlFor","text","popupMenuId","opened","anchorElementForCursor","anchorElementRoot","reservedInput","reset","parseFloat","getTextWidth","toFixed","getTextHeight","_createClass","_this$props$id","_this$state4","_this$getProps9","PureComponent","__KONTUR_REACT_UI__","displayName","renderValue","toKey"],"sources":["TokenInput.tsx"],"sourcesContent":["import type {\n AriaAttributes,\n ChangeEvent,\n FocusEvent,\n FocusEventHandler,\n HTMLAttributes,\n KeyboardEvent,\n MouseEventHandler,\n ReactNode,\n} from 'react';\nimport React from 'react';\nimport isEqual from 'lodash.isequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PopupIds } from '../../internal/Popup';\nimport {\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowRight,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyBackspace,\n isKeyComma,\n isKeyDelete,\n isKeyEnter,\n isKeyEscape,\n isShortcutSelectAll,\n} from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Menu } from '../../internal/Menu';\nimport type { TokenProps, TokenSize } from '../Token';\nimport { Token } from '../Token';\nimport type { MenuItemState } from '../MenuItem';\nimport { MenuItem } from '../MenuItem';\nimport type { AnyObject } from '../../lib/utils';\nimport { emptyHandler, getRandomID } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { locale } from '../../lib/locale/decorators';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { getUid } from '../../lib/uidUtils';\nimport { TokenView } from '../Token/TokenView';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport type { TokenInputLocale } from './locale';\nimport { TokenInputLocaleHelper } from './locale';\nimport { styles } from './TokenInput.styles';\nimport type { TokenInputAction } from './TokenInputReducer';\nimport { tokenInputReducer } from './TokenInputReducer';\nimport { TokenInputMenu } from './TokenInputMenu';\nimport { TextWidthHelper } from './TextWidthHelper';\n\nconst TEMP_FAKE_FLAG = 'TEMP_FAKE_FLAG';\n\nexport enum TokenInputType {\n WithReference,\n WithoutReference,\n Combined,\n}\n\nexport type TokenInputMenuAlign = 'left' | 'cursor';\n\nexport interface TokenInputProps<T>\n extends CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Задает выбранные токены, которые будут отображаться в поле ввода. */\n selectedItems?: T[];\n\n /** Задает функцию, которая вызывается при добавлении нового токена. */\n onValueChange?: (items: T[]) => void;\n\n /** Задает HTML-событие `onmouseenter`.\n * @ignore */\n onMouseEnter?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onmouseleave`.\n * @ignore */\n onMouseLeave?: MouseEventHandler<HTMLDivElement>;\n\n /** Задает HTML-событие `onfocus`.\n * @ignore */\n onFocus?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Задает HTML-событие `onblur`.\n * @ignore */\n onBlur?: FocusEventHandler<HTMLTextAreaElement>;\n\n /** Устанавливает фокус на контроле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Задает размер контрола. */\n size?: TokenSize;\n\n /** Задает тип инпута.\n * Возможные значения:\n * `TokenInputType.WithReference` (можно выбирать токены только из предложенных, нельзя добавить новые).\n * `TokenInputType.WithoutReference` (можно добавлять токены, но нельзя выбирать).\n * `TokenInputType.Combined` (можно и выбирать, и добавлять). */\n type?: TokenInputType;\n\n /** Задает ширину выпадающего меню. Может быть 'auto', в пикселях, процентах (от ширины инпута) и других конкретных единицах.\n * Если menuAlign = 'cursor', то ширина выпадающего меню всегда будет равна 'auto' (по ширине текста). */\n menuWidth?: React.CSSProperties['width'];\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: TokenInputMenuAlign;\n\n /** Задает функцию поиска элементов, должна возвращать Promise с массивом элементов. По умолчанию ожидаются строки.\n * Элементы могут быть любого типа. В таком случае необходимо определить свойства `renderItem`, `valueToString`. */\n getItems?: (query: string) => Promise<T[]>;\n\n /** Скрывает меню при пустом вводе. */\n hideMenuIfEmptyInputValue?: boolean;\n\n /** Задает функцию, которая отображает элемент списка. */\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode | null;\n\n /** Задает функцию, которая отображает выбранное значение. */\n renderValue?: (item: T) => React.ReactNode;\n\n /** Задает функцию, которая возвращает строковое представление токена.\n * @default item => item */\n valueToString?: (item: T) => string;\n\n /** Задает функцию, которая отображает сообщение об общем количестве элементов.\n * `found` учитывает только компонент `MenuItem`. Им \"оборачиваются\" элементы, возвращаемые `getItems()`. */\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n\n /** Определяет общее количество элементов. Необходим для работы `renderTotalCount`. */\n totalCount?: number;\n\n /** Задает функцию, которая отображает заданное содержимое при пустом результате поиска. Не работает, если рендерится `AddButton`. */\n renderNotFound?: () => React.ReactNode;\n\n /** Преобразует значение в элемент списка. */\n valueToItem?: (item: string) => T;\n\n /** Определяет уникальный ключ по элементу. */\n toKey?: (item: T) => string | number | undefined;\n\n /** Задает текст, который отображается если не введено никакое значение. */\n placeholder?: string;\n\n /** Задает символы, которые разделяют введённый текст на токены. */\n delimiters?: string[];\n\n /** Переводит контрол в состояние валидации \"ошибка\". */\n error?: boolean;\n\n /** Переводит контрол в состояние валидации \"предупреждение\". */\n warning?: boolean;\n\n /** Делает компонент недоступным. */\n disabled?: boolean;\n\n /** Задает ширину токен-инпута. */\n width?: string | number;\n\n /** Задает максимальную высоту выпадающего меню. */\n maxMenuHeight?: number | string;\n\n /** Задает функцию, которая отображает токен и предоставляет возможность кастомизации внешнего вида и поведения токена. */\n renderToken?: (item: T, props: Partial<TokenProps>) => ReactNode;\n\n /** Задает функцию, вызывающуюся при изменении текста в поле ввода. */\n onInputValueChange?: (value: string) => void;\n\n /** Задает функцию отрисовки кнопки добавления в выпадающем списке */\n renderAddButton?: (query?: string, onAddItem?: () => void) => ReactNode;\n\n /** Задает функцию для обработки ввода строки в инпут и последующую потерю фокуса компонентом.\n * Функция срабатывает с аргументом инпута строки\n *\n * Если при потере фокуса в выпадающем списке будет только один элемент и результат `valueToString` с этим элементом будет\n * совпадать со значением в текстовом поле, то сработает `onValueChange` со значением данного элемента\n *\n * Сама функция также может вернуть значение, неравное `undefined`, с которым будет вызван `onValueChange`.\n * При возвращаемом значении `null` будет выполнена очистка текущего значения инпута, а в режиме редактирования токен будет удален. */\n onUnexpectedInput?: (value: string) => void | null | undefined | T;\n\n /** Задает типы вводимых данных. */\n inputMode?: React.HTMLAttributes<HTMLTextAreaElement>['inputMode'];\n}\n\nexport interface TokenInputState<T> {\n autocompleteItems?: T[];\n activeTokens: T[];\n editingTokenIndex: number;\n clickedToken?: T;\n clickedTokenTimeout?: number;\n inFocus?: boolean;\n inputValue: string;\n reservedInputValue: string | undefined;\n inputValueWidth: number;\n inputValueHeight: number;\n preventBlur?: boolean;\n loading?: boolean;\n}\n\nexport const DefaultState = {\n inputValue: '',\n reservedInputValue: undefined,\n autocompleteItems: undefined,\n activeTokens: [],\n editingTokenIndex: -1,\n inFocus: false,\n loading: false,\n preventBlur: false,\n inputValueWidth: 2,\n inputValueHeight: 22,\n};\n\nexport const TokenInputDataTids = {\n root: 'TokenInput__root',\n tokenInputMenu: 'TokenInputMenu__root',\n label: 'TokenInput__label',\n} as const;\n\ntype DefaultProps<T> = Required<\n Pick<\n TokenInputProps<T>,\n | 'selectedItems'\n | 'delimiters'\n | 'renderItem'\n | 'renderValue'\n | 'valueToString'\n | 'valueToItem'\n | 'toKey'\n | 'onValueChange'\n | 'width'\n | 'onBlur'\n | 'onFocus'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'menuWidth'\n | 'menuAlign'\n | 'size'\n >\n>;\n\nconst defaultToKey = <T extends AnyObject>(item: T): string => item.toString();\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint\nconst identity = <T extends unknown>(item: T): T => item;\nconst defaultRenderToken = <T extends AnyObject>(\n item: T,\n { isActive, onClick, onDoubleClick, onRemove, disabled, size }: Partial<TokenProps>,\n) => (\n <Token\n key={item.toString()}\n isActive={isActive}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onRemove={onRemove}\n disabled={disabled}\n size={size}\n >\n {item.toString()}\n </Token>\n);\n\n/**\n * Поле с токенами `TokenInput` — это поле ввода со списком подсказок.\n *\n * Поле с токенами используют для выбора нескольких значений из справочника и для добавления своих значений.\n */\n@rootNode\n@locale('TokenInput', TokenInputLocaleHelper)\nexport class TokenInput<T = string> extends React.PureComponent<TokenInputProps<T>, TokenInputState<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInput';\n public static displayName = 'TokenInput';\n\n public static defaultProps: DefaultProps<any> = {\n selectedItems: [],\n // TEMP_FAKE_FLAG помогает узнать, остались ли разделители дефолтными или пользователь передал их равными дефолтным.\n delimiters: [',', TEMP_FAKE_FLAG],\n renderItem: identity,\n renderValue: identity,\n valueToString: identity,\n valueToItem: (item: string) => item,\n toKey: defaultToKey,\n onValueChange: () => void 0,\n width: 250 as string | number,\n onBlur: emptyHandler,\n onFocus: emptyHandler,\n onMouseEnter: emptyHandler,\n onMouseLeave: emptyHandler,\n menuWidth: 'auto',\n menuAlign: 'cursor',\n size: 'small',\n };\n\n private getDelimiters(): string[] {\n const delimiters = this.props.delimiters ?? [];\n if (delimiters.every((delimiter) => delimiter !== TEMP_FAKE_FLAG)) {\n return delimiters;\n }\n return delimiters.filter((delimiter) => delimiter !== TEMP_FAKE_FLAG);\n }\n\n private getProps() {\n const propsGetter = createPropsGetter(TokenInput.defaultProps);\n const propsWithOldDelimiters = propsGetter.apply(this);\n return { ...propsWithOldDelimiters, delimiters: this.getDelimiters() };\n }\n\n private get textareaId() {\n return this.props.id ?? this._textareaId;\n }\n\n public state: TokenInputState<T> = DefaultState;\n\n private readonly _textareaId: string = getUid();\n private rootId = PopupIds.root + getRandomID();\n private readonly locale!: TokenInputLocale;\n private theme!: Theme;\n public featureFlags!: ReactUIFeatureFlags;\n private input: HTMLTextAreaElement | null = null;\n private tokensInputMenu: TokenInputMenu<T> | null = null;\n private textHelper: TextWidthHelper | null = null;\n private wrapper: HTMLLabelElement | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private memoizedTokens = new Map();\n\n public componentDidMount() {\n this.updateInputTextWidth();\n globalObject.document?.addEventListener('copy', this.handleCopy);\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n\n public componentDidUpdate(prevProps: TokenInputProps<T> & DefaultProps<T>, prevState: TokenInputState<T>) {\n if (prevState.inputValue !== this.state.inputValue) {\n this.updateInputTextWidth();\n }\n if (prevState.activeTokens.length === 0 && this.state.activeTokens.length > 0) {\n this.dispatch({\n type: 'SET_AUTOCOMPLETE_ITEMS',\n payload: undefined,\n });\n }\n if (prevProps.selectedItems.length !== this.getProps().selectedItems.length) {\n LayoutEvents.emit();\n this.memoizedTokens.clear();\n }\n if (!this.isCursorVisibleForState(prevState) && this.isCursorVisible) {\n this.tryGetItems(this.isEditingMode ? '' : this.state.inputValue);\n }\n }\n\n public componentWillUnmount() {\n globalObject.document?.removeEventListener('copy', this.handleCopy);\n }\n\n /**\n * @public\n */\n public focus() {\n this.input?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.input?.blur();\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private getLabelSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.labelLarge(this.theme);\n case 'medium':\n return styles.labelMedium(this.theme);\n case 'small':\n default:\n return styles.labelSmall(this.theme);\n }\n }\n\n private getInputSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.inputLarge(this.theme);\n case 'medium':\n return styles.inputMedium(this.theme);\n case 'small':\n default:\n return styles.inputSmall(this.theme);\n }\n }\n\n private renderMain() {\n if (this.type !== TokenInputType.WithoutReference && !this.props.getItems) {\n throw Error('Missed getItems for type ' + this.type);\n }\n\n const {\n maxMenuHeight,\n error,\n warning,\n disabled,\n renderNotFound,\n hideMenuIfEmptyInputValue,\n inputMode,\n renderTotalCount,\n totalCount,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n } = this.props;\n\n const { selectedItems, width, onMouseEnter, onMouseLeave, menuWidth, menuAlign, renderItem } = this.getProps();\n\n const {\n activeTokens,\n inFocus,\n inputValueWidth,\n inputValueHeight,\n inputValue,\n reservedInputValue,\n autocompleteItems,\n loading,\n } = this.state;\n\n const showMenu =\n this.type !== TokenInputType.WithoutReference &&\n this.isCursorVisible &&\n activeTokens.length === 0 &&\n (this.isInputValueChanged || !hideMenuIfEmptyInputValue);\n\n const theme = this.theme;\n\n const inputInlineStyles: React.CSSProperties = {\n // вычисляем ширину чтобы input автоматически перенёсся на следующую строку при необходимости\n width: inputValueWidth,\n height: inputValueHeight,\n // в ie не работает, но альтернативный способ --- дать tabindex для label --- предположительно ещё сложнее\n caretColor: this.isCursorVisible ? undefined : 'transparent',\n };\n\n const labelClassName = cx(styles.label(theme), this.getLabelSizeClassName(), {\n [styles.hovering(this.theme)]: !inFocus && !disabled && !warning && !error,\n [styles.labelDisabled(theme)]: !!disabled,\n [styles.labelFocused(theme)]: !!inFocus,\n [styles.error(theme)]: !!error,\n [styles.warning(theme)]: !!warning,\n });\n const inputClassName = cx(styles.input(theme), this.getInputSizeClassName(), {\n [styles.inputDisabled(theme)]: !!disabled,\n });\n\n const placeholder = selectedItems.length === 0 && !inputValue ? this.props.placeholder : '';\n\n const inputNode = (\n <TokenView\n size={this.getProps().size}\n className={cx({\n // input растягивается на всю ширину чтобы placeholder не обрезался\n [styles.inputPlaceholderWrapper()]: Boolean(placeholder),\n })}\n hideCloseButton={Boolean(placeholder)}\n >\n <textarea\n id={this.textareaId}\n ref={this.inputRef}\n value={inputValue}\n style={inputInlineStyles}\n spellCheck={false}\n disabled={disabled}\n className={inputClassName}\n placeholder={placeholder}\n onFocus={this.handleInputFocus}\n onBlur={this.handleInputBlur}\n onChange={this.handleChangeInputValue}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handleInputPaste}\n inputMode={inputMode}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedby}\n />\n </TokenView>\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={TokenInputDataTids.root} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>\n <label\n ref={this.wrapperRef}\n style={{ width }}\n className={labelClassName}\n onMouseDown={this.handleWrapperMouseDown}\n onMouseUp={this.handleWrapperMouseUp}\n htmlFor={this.textareaId}\n aria-controls={this.rootId}\n data-tid={TokenInputDataTids.label}\n >\n <TextWidthHelper\n ref={this.textHelperRef}\n text={inputValue}\n theme={this.theme}\n size={this.getProps().size}\n />\n {this.renderTokensStart()}\n {inputNode}\n {showMenu && (\n <TokenInputMenu\n popupMenuId={this.rootId}\n ref={this.tokensInputMenuRef}\n items={autocompleteItems}\n loading={loading}\n opened={showMenu}\n maxMenuHeight={maxMenuHeight}\n anchorElementForCursor={this.input}\n anchorElementRoot={this.wrapper}\n renderNotFound={renderNotFound}\n renderItem={renderItem}\n onValueChange={this.selectItem}\n renderAddButton={this.renderAddButton}\n menuWidth={menuWidth}\n menuAlign={menuAlign}\n renderTotalCount={renderTotalCount}\n totalCount={totalCount}\n size={this.getProps().size}\n />\n )}\n {this.renderTokensEnd()}\n {this.isEditingMode ? (\n <TokenView size={this.props.size}>\n <span className={styles.reservedInput(theme)}>{reservedInputValue}</span>\n </TokenView>\n ) : null}\n </label>\n </div>\n </CommonWrapper>\n );\n }\n\n /**\n * Сбрасывает введенное пользователем значение\n * @public\n */\n public reset() {\n this.dispatch({ type: 'RESET' });\n }\n\n private hasValueInItems = (items: T[], value: T) => {\n if (typeof value === 'string') {\n return items.includes(value);\n }\n // todo: как то не очень\n return items.some((item) => isEqual(item, value));\n };\n\n private get showAddItemHint() {\n const items = this.state.autocompleteItems;\n const value = this.getProps().valueToItem(this.state.inputValue);\n\n if (items && this.hasValueInItems(items, value)) {\n return false;\n }\n\n const selectedItems = this.getProps().selectedItems;\n if (selectedItems && this.hasValueInItems(selectedItems, value)) {\n return false;\n }\n\n if (this.type === TokenInputType.Combined && this.isInputValueChanged) {\n return true;\n }\n }\n\n private get type() {\n return this.props.type ? this.props.type : TokenInputType.WithReference;\n }\n\n private get menuRef(): Menu | null {\n return this.tokensInputMenu && this.tokensInputMenu.getMenuRef();\n }\n\n private get isCursorVisible() {\n return this.isCursorVisibleForState(this.state);\n }\n\n private get isEditingMode() {\n return this.state.editingTokenIndex > -1;\n }\n\n private isCursorVisibleForState(state: TokenInputState<T>) {\n return state.inFocus && (this.isInputValueChanged || state.activeTokens.length === 0);\n }\n\n private inputRef = (node: HTMLTextAreaElement) => (this.input = node);\n private tokensInputMenuRef = (node: TokenInputMenu<T>) => (this.tokensInputMenu = node);\n private textHelperRef = (node: TextWidthHelper) => (this.textHelper = node);\n private wrapperRef = (node: HTMLLabelElement) => (this.wrapper = node);\n\n private dispatch = (action: TokenInputAction, cb?: () => void) => {\n this.setState((prevState) => tokenInputReducer(prevState, action), cb);\n };\n\n private updateInputTextWidth() {\n if (this.textHelper) {\n // в IE текст иногда не помещается в input\n // из-за округления, поэтому округляем явно\n const inputValueWidth = parseFloat(this.textHelper.getTextWidth().toFixed(2));\n const inputValueHeight = parseFloat(this.textHelper.getTextHeight().toFixed(2));\n\n this.dispatch({ type: 'SET_INPUT_VALUE_WIDTH', payload: inputValueWidth }, LayoutEvents.emit);\n this.dispatch({ type: 'SET_INPUT_VALUE_HEIGHT', payload: inputValueHeight }, LayoutEvents.emit);\n }\n }\n\n private handleInputFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'SET_FOCUS_IN' });\n this.getProps().onFocus(event);\n };\n\n private handleInputBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n const isBlurToMenu = this.isBlurToMenu(event);\n\n if (!isBlurToMenu) {\n this.handleOutsideBlur();\n }\n\n if (isBlurToMenu || this.state.preventBlur) {\n event.preventDefault();\n // первый focus нужен для предотвращения/уменьшения моргания в других браузерах\n this.input?.focus();\n // в firefox не работает без второго focus\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n } else {\n this.dispatch({ type: 'BLUR' });\n this.getProps().onBlur(event);\n }\n };\n\n private handleOutsideBlur = () => {\n const { inputValue, autocompleteItems } = this.state;\n\n if (inputValue === '') {\n // если стерли содержимое токена в режиме редактирования, то удаляем токен\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n return;\n }\n\n // если не изменилось значение токена при редактировании\n if (this.isEditingMode && !this.isTokenValueChanged) {\n this.finishTokenEdit();\n return;\n }\n\n // чекаем автокомплит на совпадение с введенным значением в инпут\n if (autocompleteItems && autocompleteItems.length === 1) {\n const item = autocompleteItems[0];\n\n if (this.getProps().valueToString(item) === inputValue) {\n this.isEditingMode ? this.finishTokenEdit() : this.selectItem(item);\n\n return;\n }\n }\n\n if (this.isInputChanged) {\n this.checkForUnexpectedInput();\n }\n };\n\n private get isInputChanged() {\n if (this.isEditingMode) {\n return this.isTokenValueChanged;\n }\n\n return this.isInputValueChanged;\n }\n\n private get isInputValueChanged() {\n const { inputValue } = this.state;\n\n return inputValue !== '';\n }\n\n private get isTokenValueChanged() {\n const { inputValue, editingTokenIndex } = this.state;\n const { valueToString, selectedItems } = this.getProps();\n\n if (this.isEditingMode) {\n return valueToString(selectedItems[editingTokenIndex]) !== inputValue;\n }\n\n return false;\n }\n\n private isBlurToMenu = (event: FocusEvent<HTMLElement>) => {\n if (this.menuRef && globalObject.document) {\n const menu = getRootNode(this.tokensInputMenu?.getMenuRef());\n const relatedTarget = event.relatedTarget || globalObject.document.activeElement;\n\n if (menu && menu.contains(relatedTarget)) {\n return true;\n }\n }\n return false;\n };\n\n private handleWrapperMouseDown = (event: React.MouseEvent<HTMLElement>) => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: true });\n const target = event.target as HTMLElement;\n const isClickOnToken = target && this.wrapper?.contains(target) && target !== this.wrapper && target !== this.input;\n if (!isClickOnToken) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n }\n };\n\n private handleWrapperMouseUp = () => {\n this.dispatch({ type: 'SET_PREVENT_BLUR', payload: false });\n };\n\n private handleCopy = (event: any) => {\n if (!this.state.inFocus || this.state.activeTokens.length === 0 || this.isCursorVisible) {\n return;\n }\n event.preventDefault();\n const { selectedItems, valueToString, delimiters } = this.getProps();\n // упорядочивание токенов по индексу\n const tokens = this.state.activeTokens\n .map((token) => selectedItems.indexOf(token))\n .sort()\n .map((index) => selectedItems[index])\n .map((item) => valueToString(item));\n event.clipboardData.setData('text/plain', tokens.join(delimiters[0]));\n };\n\n private handleInputPaste = (event: React.ClipboardEvent<HTMLElement>) => {\n if (this.type === TokenInputType.WithReference || !event.clipboardData) {\n return;\n }\n const paste = event.clipboardData.getData('text');\n const { delimiters, selectedItems, valueToItem, onValueChange } = this.getProps();\n if (delimiters.some((delimiter) => paste.includes(delimiter))) {\n event.preventDefault();\n event.stopPropagation();\n const tokens = paste.trim().split(new RegExp(`[${delimiters.join('')}]+`));\n const items = tokens\n .filter(Boolean)\n .map((token) => valueToItem(token))\n .filter((item) => item && !this.hasValueInItems(selectedItems, item));\n const newItems = selectedItems.concat(items);\n onValueChange(newItems);\n\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n this.tryGetItems();\n }\n };\n\n private tryGetItems = async (query = '') => {\n if (this.props.getItems && (this.isInputValueChanged || !this.props.hideMenuIfEmptyInputValue)) {\n this.dispatch({ type: 'SET_LOADING', payload: true });\n const autocompleteItems = await this.props.getItems(query);\n this.dispatch({ type: 'SET_LOADING', payload: false });\n\n const { selectedItems, valueToItem, valueToString } = this.getProps();\n const isSelectedItem = (item: T) => this.hasValueInItems(selectedItems, item);\n const isEditingItem = (item: T) => {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n return !!editingItem && isEqual(item, editingItem);\n };\n\n const autocompleteItemsUnique = autocompleteItems.filter((item) => !isSelectedItem(item) || isEditingItem(item));\n\n if (this.isEditingMode) {\n const editingItem = selectedItems[this.state.editingTokenIndex];\n if (\n isEqual(editingItem, valueToItem(this.state.inputValue)) &&\n !this.hasValueInItems(autocompleteItemsUnique, editingItem)\n ) {\n autocompleteItemsUnique.unshift(editingItem);\n }\n }\n\n if (query === '' || this.isInputValueChanged) {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: autocompleteItemsUnique }, () => {\n LayoutEvents.emit();\n this.highlightMenuItem();\n });\n }\n const selectItemIndex = autocompleteItemsUnique.findIndex(\n (item) => valueToString(item).toLowerCase() === this.state.inputValue.toLowerCase(),\n );\n setTimeout(() => this.menuRef?.highlightItem(selectItemIndex < 0 ? 0 : selectItemIndex), 0);\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (this.isCursorVisible) {\n this.handleInputKeyDown(event);\n } else {\n this.handleWrapperKeyDown(event);\n }\n };\n\n private handleInputKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n e.stopPropagation();\n\n if (\n (this.type !== TokenInputType.WithReference &&\n this.getProps().delimiters.some((key) => key === e.key || (key === ',' && isKeyComma(e)))) ||\n (isKeyEnter(e) && this.type === TokenInputType.WithoutReference)\n ) {\n e.preventDefault();\n const newValue = this.state.inputValue;\n if (newValue !== '') {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n } else {\n this.handleAddItem();\n }\n }\n }\n const isRightmostTokenNotDisabled = !this.isTokenDisabled(this.getProps().selectedItems.length - 1);\n switch (true) {\n case isKeyEnter(e):\n if (this.menuRef) {\n this.menuRef.enter(e);\n }\n // don't allow textarea\n // became multiline\n e.preventDefault();\n break;\n case isKeyArrowVertical(e):\n e.preventDefault();\n if (this.menuRef) {\n if (isKeyArrowUp(e)) {\n this.menuRef.up();\n } else {\n this.menuRef.down();\n }\n }\n break;\n case isKeyEscape(e):\n this.input?.blur();\n break;\n case isKeyBackspace(e):\n if (!this.isEditingMode && isRightmostTokenNotDisabled) {\n this.moveFocusToLastToken();\n }\n break;\n case isKeyArrowLeft(e):\n if (this.input?.selectionStart === 0) {\n const index = this.getAvailableTokenIndex(this.getProps().selectedItems.length);\n const itemNew = this.getProps().selectedItems[index];\n if (itemNew) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n }\n break;\n }\n };\n\n private moveFocusToLastToken() {\n const items = this.getProps().selectedItems;\n if (this.state.inputValue === '' && items && items.length > 0) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: items.slice(-1) });\n }\n }\n\n private focusInput = () => {\n globalObject.requestAnimationFrame?.(() => this.input?.focus());\n };\n\n private selectInputText = () => {\n if (this.input) {\n this.input.setSelectionRange(0, this.state.inputValue.length);\n }\n };\n\n private handleWrapperKeyDown = (e: KeyboardEvent<HTMLElement>) => {\n const { selectedItems, onValueChange } = this.getProps();\n switch (true) {\n case isKeyBackspace(e):\n case isKeyDelete(e): {\n const indexOfActiveToken = this.getProps().selectedItems.indexOf(\n this.state.activeTokens[this.state.activeTokens.length - 1],\n );\n if (!this.isEditingMode && !this.isTokenDisabled(indexOfActiveToken)) {\n const itemsNew = selectedItems.filter((item) => !this.hasValueInItems(this.state.activeTokens, item));\n onValueChange(itemsNew);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => {\n LayoutEvents.emit();\n this.input?.focus();\n });\n }\n break;\n }\n case isKeyArrowHorizontal(e):\n this.handleWrapperArrows(e);\n break;\n case isKeyEscape(e):\n this.wrapper?.blur();\n break;\n case isKeyEnter(e):\n e.preventDefault();\n if (this.state.activeTokens.length === 1) {\n this.handleTokenEdit(this.state.activeTokens[0]);\n }\n break;\n case isShortcutSelectAll(e):\n e.preventDefault();\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: selectedItems.filter((item) => !this.isTokenDisabled(selectedItems.indexOf(item))),\n });\n break;\n }\n };\n\n private handleWrapperArrows = (e: KeyboardEvent<HTMLElement>) => {\n e.preventDefault();\n const selectedItems = this.getProps().selectedItems;\n const activeTokens = this.state.activeTokens;\n const activeItemIndex = selectedItems.indexOf(activeTokens[0]);\n const newItemIndex = this.getAvailableTokenIndex(activeItemIndex, isKeyArrowLeft(e));\n const isLeftEdge = activeItemIndex === 0 && isKeyArrowLeft(e);\n const isRightEdge = newItemIndex === selectedItems.length && isKeyArrowRight(e);\n if (!e.shiftKey && activeTokens.length === 1) {\n this.handleWrapperArrowsWithoutShift(isLeftEdge, isRightEdge, newItemIndex);\n } else {\n this.handleWrapperArrowsWithShift(isLeftEdge, isRightEdge, newItemIndex);\n }\n };\n\n private handleWrapperArrowsWithoutShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (isRightEdge) {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' }, () => this.input?.focus());\n } else if (!isLeftEdge) {\n this.dispatch({\n type: 'SET_ACTIVE_TOKENS',\n payload: [this.getProps().selectedItems[newItemIndex]],\n });\n }\n };\n\n private handleWrapperArrowsWithShift = (isLeftEdge: boolean, isRightEdge: boolean, newItemIndex: number) => {\n if (!isLeftEdge && !isRightEdge) {\n const itemNew = this.getProps().selectedItems[newItemIndex];\n const itemsNew = [itemNew, ...this.state.activeTokens.filter((item) => !isEqual(item, itemNew))];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: itemsNew });\n }\n };\n\n private handleValueChange = (items: T[]) => {\n this.getProps().onValueChange(items);\n };\n\n private handleAddItem = () => {\n const item = this.getProps().valueToItem(this.state.inputValue);\n if (item) {\n this.selectItem(item);\n }\n };\n\n private selectItem = (item: T) => {\n const { selectedItems, valueToString } = this.getProps();\n if (this.isEditingMode) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(item) }, this.finishTokenEdit);\n } else if (!this.hasValueInItems(selectedItems, item)) {\n this.handleValueChange(selectedItems.concat([item]));\n this.dispatch({ type: 'CLEAR_INPUT' });\n this.tryGetItems();\n }\n };\n\n private handleRemoveToken = (item: T) => {\n this.props.onValueChange?.(this.getProps().selectedItems.filter((_) => !isEqual(_, item)));\n const filteredActiveTokens = this.state.activeTokens.filter((_) => !isEqual(_, item));\n\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: filteredActiveTokens });\n if (filteredActiveTokens.length === 0) {\n this.focusInput();\n }\n\n this.tryGetItems();\n };\n\n private handleTokenClick = (event: React.MouseEvent<HTMLElement>, itemNew: T) => {\n const items = this.state.activeTokens;\n if (event.ctrlKey) {\n const newItems = this.hasValueInItems(this.state.activeTokens, itemNew)\n ? items.filter((item) => !isEqual(item, itemNew))\n : [...items, itemNew];\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: newItems });\n } else {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [itemNew] });\n }\n this.focusInput();\n };\n\n private handleTokenEdit = (itemNew: T) => {\n const { selectedItems, valueToString } = this.getProps();\n const editingTokenIndex = selectedItems.findIndex((item) => item === itemNew);\n this.dispatch({ type: 'SET_EDITING_TOKEN_INDEX', payload: editingTokenIndex });\n\n if (this.isInputValueChanged) {\n if (this.state.reservedInputValue === undefined) {\n this.dispatch({ type: 'SET_TEMPORARY_QUERY', payload: this.state.inputValue });\n }\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: valueToString(itemNew) }, this.selectInputText);\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n\n this.tryGetItems();\n };\n\n private finishTokenEdit = () => {\n const selectedItems = this.getProps().selectedItems;\n const { editingTokenIndex, inputValue, reservedInputValue } = this.state;\n const editedItem = this.getProps().valueToItem(inputValue);\n const newItems = selectedItems.concat([]);\n\n if (!this.hasValueInItems(selectedItems, editedItem)) {\n newItems.splice(editingTokenIndex, 1, ...(this.isInputValueChanged ? [editedItem] : []));\n this.handleValueChange(newItems);\n }\n\n this.dispatch({ type: 'REMOVE_EDITING_TOKEN_INDEX' });\n\n if (reservedInputValue) {\n this.dispatch({ type: 'UPDATE_QUERY', payload: reservedInputValue });\n this.dispatch({ type: 'REMOVE_TEMPORARY_QUERY' });\n } else {\n this.dispatch({ type: 'CLEAR_INPUT' });\n }\n\n if (newItems.length === selectedItems.length) {\n this.dispatch({ type: 'SET_ACTIVE_TOKENS', payload: [newItems[editingTokenIndex]] });\n }\n };\n\n private checkForUnexpectedInput = () => {\n const { inputValue } = this.state;\n const { onUnexpectedInput } = this.props;\n\n // чекаем не возвращает ли что-нибудь обработчик\n const returnedValue = onUnexpectedInput?.(inputValue);\n\n if (returnedValue === undefined) {\n if (\n this.featureFlags.tokenInputCreateTokenOnBlurInWithoutReferenceMode &&\n this.type === TokenInputType.WithoutReference\n ) {\n this.handleAddItem();\n }\n\n return;\n }\n\n if (returnedValue === null) {\n this.dispatch({ type: 'CLEAR_INPUT' }, () => {\n if (this.isEditingMode) {\n this.finishTokenEdit();\n }\n });\n\n return;\n }\n\n if (returnedValue) {\n this.selectItem(returnedValue);\n }\n };\n\n private handleChangeInputValue = (event: ChangeEvent<HTMLTextAreaElement>) => {\n this.dispatch({ type: 'REMOVE_ALL_ACTIVE_TOKENS' });\n let query = event.target.value.trimLeft();\n\n if (query.endsWith(' ')) {\n query = query.trimRight() + ' ';\n }\n if (this.isInputValueChanged && query === '') {\n this.dispatch({ type: 'SET_AUTOCOMPLETE_ITEMS', payload: undefined });\n }\n this.dispatch({ type: 'UPDATE_QUERY', payload: query }, () => {\n this.tryGetItems(query);\n });\n if (this.props.onInputValueChange) {\n this.props.onInputValueChange(query);\n }\n };\n\n private highlightMenuItem = () => {\n if (\n this.menuRef &&\n this.state.autocompleteItems &&\n this.state.autocompleteItems.length > 0 &&\n this.type !== TokenInputType.Combined\n ) {\n this.menuRef.highlightItem(0);\n }\n };\n\n private renderTokensStart = () => {\n const { editingTokenIndex } = this.state;\n const selectedItems = this.getProps().selectedItems;\n const delimiter = editingTokenIndex >= 0 ? editingTokenIndex : selectedItems.length;\n return selectedItems.slice(0, delimiter).map(this.renderToken);\n };\n\n private renderTokensEnd = () => {\n if (this.state.editingTokenIndex >= 0) {\n return this.getProps()\n .selectedItems.slice(this.state.editingTokenIndex + 1)\n .map(this.renderToken);\n }\n };\n\n private renderToken = (item: T) => {\n const { renderToken = defaultRenderToken, disabled, size } = this.props;\n\n const isActive = this.state.activeTokens.includes(item);\n\n // TODO useCallback\n const handleIconClick: React.MouseEventHandler<HTMLElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleRemoveToken(item);\n }\n };\n\n // TODO useCallback\n const handleTokenClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode) {\n this.handleTokenClick(event, item);\n }\n };\n\n const handleTokenDoubleClick: React.MouseEventHandler<HTMLDivElement> = (event) => {\n event.stopPropagation();\n if (!this.isEditingMode && !disabled) {\n this.handleTokenEdit(item);\n }\n };\n\n const renderedToken = renderToken(item as T & AnyObject, {\n size,\n isActive,\n onClick: handleTokenClick,\n onDoubleClick: handleTokenDoubleClick,\n onRemove: handleIconClick,\n disabled,\n });\n\n this.memoizedTokens.set(this.props.selectedItems?.indexOf(item), renderedToken);\n return renderedToken;\n };\n\n private renderAddButton = (value = this.state.inputValue): React.ReactNode | undefined => {\n if (!this.showAddItemHint) {\n return;\n }\n\n if (this.props.renderAddButton) {\n return this.props.renderAddButton(value, this.handleAddItem);\n }\n\n const { addButtonComment, addButtonTitle } = this.locale;\n\n return (\n <MenuItem onClick={this.handleAddItem} comment={addButtonComment} key=\"renderAddButton\">\n {addButtonTitle} {value}\n </MenuItem>\n );\n };\n\n private isTokenDisabled = (itemIndex: number) => {\n let renderedToken;\n if (this.memoizedTokens.has(itemIndex)) {\n renderedToken = this.memoizedTokens.get(itemIndex);\n } else if (itemIndex < 0 || itemIndex > this.getProps().selectedItems.length - 1) {\n return false;\n } else {\n renderedToken = this.renderToken(this.getProps().selectedItems[itemIndex]) as React.ReactElement<\n TokenInputProps<unknown>\n >;\n }\n return renderedToken.props.disabled;\n };\n\n private getAvailableTokenIndex = (startIndex: number, isDirectionLeft = true) => {\n const { selectedItems } = this.getProps();\n const step = isDirectionLeft ? -1 : +1;\n let availableIndex = startIndex + step;\n\n while (this.isTokenDisabled(availableIndex)) {\n availableIndex += step;\n if (availableIndex === selectedItems.length) {\n return availableIndex;\n } else if (availableIndex === -1) {\n return startIndex;\n }\n }\n\n return availableIndex;\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import type { TokenProps, TokenSize } from '../Token';
|
|
|
4
4
|
import type { MenuItemState } from '../MenuItem';
|
|
5
5
|
import type { CommonProps } from '../../internal/CommonWrapper';
|
|
6
6
|
import type { TGetRootNode } from '../../lib/rootNode';
|
|
7
|
+
import type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
|
|
7
8
|
export declare enum TokenInputType {
|
|
8
9
|
WithReference = 0,
|
|
9
10
|
WithoutReference = 1,
|
|
@@ -146,6 +147,7 @@ export declare class TokenInput<T = string> extends React.PureComponent<TokenInp
|
|
|
146
147
|
private rootId;
|
|
147
148
|
private readonly locale;
|
|
148
149
|
private theme;
|
|
150
|
+
featureFlags: ReactUIFeatureFlags;
|
|
149
151
|
private input;
|
|
150
152
|
private tokensInputMenu;
|
|
151
153
|
private textHelper;
|
|
@@ -10,4 +10,5 @@ export declare const getFullReactUIFlagsContext: (flags: ReactUIFeatureFlags) =>
|
|
|
10
10
|
autocompleteUseMaskedInput?: boolean | undefined;
|
|
11
11
|
sidePageDisableHeaderShrink?: boolean | undefined;
|
|
12
12
|
sidePageNotCutTitleOnStuckByDefault?: boolean | undefined;
|
|
13
|
+
tokenInputCreateTokenOnBlurInWithoutReferenceMode?: boolean | undefined;
|
|
13
14
|
};
|