@skbkontur/react-ui 5.3.6 → 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 +22 -0
- package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -2
- package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
- 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/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +3 -2
- package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","unmask","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (restProps.unmask && maskRef && maskRef.rawInputValue === '' && maskRef.unmaskedValue !== '') {\n // Для случаев, когда в value остаются только зафиксированные - {} - очищаем value полностью\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -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
|
}
|