@skbkontur/react-ui 4.25.0 → 4.25.1-MaskedInput-fix.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -21
  3. package/cjs/components/Gapped/Gapped.md +43 -43
  4. package/cjs/components/Input/Input.d.ts +3 -2
  5. package/cjs/components/Input/Input.js +7 -4
  6. package/cjs/components/Input/Input.js.map +1 -1
  7. package/cjs/components/MaskedInput/MaskedInput.d.ts +22 -4
  8. package/cjs/components/MaskedInput/MaskedInput.helpers.d.ts +10 -0
  9. package/cjs/components/MaskedInput/MaskedInput.helpers.js +30 -0
  10. package/cjs/components/MaskedInput/MaskedInput.helpers.js.map +1 -0
  11. package/cjs/components/MaskedInput/MaskedInput.js +190 -20
  12. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  13. package/cjs/components/MaskedInput/MaskedInput.md +173 -9
  14. package/cjs/components/MaskedInput/MaskedInput.styles.d.ts +3 -0
  15. package/cjs/components/MaskedInput/MaskedInput.styles.js +4 -0
  16. package/cjs/components/MaskedInput/MaskedInput.styles.js.map +1 -0
  17. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  18. package/cjs/index.d.ts +3 -0
  19. package/cjs/index.js +3 -0
  20. package/cjs/index.js.map +1 -1
  21. package/cjs/internal/MaskedInputElement/MaskedInputElement.d.ts +6 -9
  22. package/cjs/internal/MaskedInputElement/MaskedInputElement.js +99 -129
  23. package/cjs/internal/MaskedInputElement/MaskedInputElement.js.map +1 -1
  24. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +2 -3
  25. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js +7 -17
  26. package/cjs/internal/MaskedInputElement/MaskedInputElement.styles.js.map +1 -1
  27. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  28. package/cjs/lib/styles/HoldSelectionColor.js +1 -1
  29. package/cjs/lib/styles/HoldSelectionColor.js.map +1 -1
  30. package/cjs/lib/styles/UiFont.d.ts +4 -0
  31. package/cjs/lib/styles/UiFont.js +39 -0
  32. package/cjs/lib/styles/UiFont.js.map +1 -0
  33. package/components/Gapped/Gapped.md +43 -43
  34. package/components/Input/Input/Input.js +8 -4
  35. package/components/Input/Input/Input.js.map +1 -1
  36. package/components/Input/Input.d.ts +3 -2
  37. package/components/MaskedInput/MaskedInput/MaskedInput.js +171 -22
  38. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  39. package/components/MaskedInput/MaskedInput.d.ts +22 -4
  40. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js +27 -0
  41. package/components/MaskedInput/MaskedInput.helpers/MaskedInput.helpers.js.map +1 -0
  42. package/components/MaskedInput/MaskedInput.helpers/package.json +6 -0
  43. package/components/MaskedInput/MaskedInput.helpers.d.ts +10 -0
  44. package/components/MaskedInput/MaskedInput.md +173 -9
  45. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js +4 -0
  46. package/components/MaskedInput/MaskedInput.styles/MaskedInput.styles.js.map +1 -0
  47. package/components/MaskedInput/MaskedInput.styles/package.json +6 -0
  48. package/components/MaskedInput/MaskedInput.styles.d.ts +3 -0
  49. package/components/RadioGroup/RadioGroup.md +43 -43
  50. package/index.d.ts +3 -0
  51. package/index.js +3 -0
  52. package/index.js.map +1 -1
  53. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js +105 -161
  54. package/internal/MaskedInputElement/MaskedInputElement/MaskedInputElement.js.map +1 -1
  55. package/internal/MaskedInputElement/MaskedInputElement.d.ts +6 -9
  56. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js +5 -8
  57. package/internal/MaskedInputElement/MaskedInputElement.styles/MaskedInputElement.styles.js.map +1 -1
  58. package/internal/MaskedInputElement/MaskedInputElement.styles.d.ts +2 -3
  59. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  60. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js +1 -1
  61. package/lib/styles/HoldSelectionColor/HoldSelectionColor.js.map +1 -1
  62. package/lib/styles/UiFont/UiFont.js +30 -0
  63. package/lib/styles/UiFont/UiFont.js.map +1 -0
  64. package/lib/styles/UiFont/package.json +6 -0
  65. package/lib/styles/UiFont.d.ts +4 -0
  66. package/package.json +2 -5
  67. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +0 -16
  68. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js +0 -52
  69. package/cjs/internal/MaskedInputElement/MaskedInputElement.helpers.js.map +0 -1
  70. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js +0 -43
  71. package/internal/MaskedInputElement/MaskedInputElement.helpers/MaskedInputElement.helpers.js.map +0 -1
  72. package/internal/MaskedInputElement/MaskedInputElement.helpers/package.json +0 -6
  73. package/internal/MaskedInputElement/MaskedInputElement.helpers.d.ts +0 -16
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.25.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.25.0...@skbkontur/react-ui@4.25.1) (2024-06-17)
7
+
8
+ **Note:** Version bump only for package @skbkontur/react-ui
9
+
10
+
11
+
12
+
13
+
6
14
  # [4.25.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.24.0...@skbkontur/react-ui@4.25.0) (2024-06-17)
7
15
 
8
16
 
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 SKB Kontur
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017 SKB Kontur
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,43 +1,43 @@
1
- Вывод элементов с горизонтальным расположением
2
-
3
- ```jsx harmony
4
- import { Button } from '@skbkontur/react-ui';
5
-
6
- <Gapped gap={20}>
7
- <Button use="primary">Сохранить</Button>
8
- <Button>Отмена</Button>
9
- </Gapped>;
10
- ```
11
-
12
- Вертикальное расположение
13
-
14
- ```jsx harmony
15
- import { Checkbox } from '@skbkontur/react-ui';
16
-
17
- <Gapped vertical gap={20}>
18
- <Checkbox checked>Write todos</Checkbox>
19
- <Checkbox initialIndeterminate>Work in progress</Checkbox>
20
- <Checkbox>Make things done</Checkbox>
21
- </Gapped>;
22
- ```
23
-
24
- По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
25
- При этом между строчками будет отступ равный значению свойста `gap`
26
- В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
27
-
28
- ```jsx harmony
29
- import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
30
-
31
- <>
32
- {"U Can't Touch This! => "}
33
- <Toggle />
34
-
35
- <div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
36
- <Gapped wrap gap={50}>
37
- <Button use="primary">Сохранить</Button>
38
- <Button>Отмена</Button>
39
- <Checkbox>Я не робот</Checkbox>
40
- </Gapped>
41
- </div>
42
- </>;
43
- ```
1
+ Вывод элементов с горизонтальным расположением
2
+
3
+ ```jsx harmony
4
+ import { Button } from '@skbkontur/react-ui';
5
+
6
+ <Gapped gap={20}>
7
+ <Button use="primary">Сохранить</Button>
8
+ <Button>Отмена</Button>
9
+ </Gapped>;
10
+ ```
11
+
12
+ Вертикальное расположение
13
+
14
+ ```jsx harmony
15
+ import { Checkbox } from '@skbkontur/react-ui';
16
+
17
+ <Gapped vertical gap={20}>
18
+ <Checkbox checked>Write todos</Checkbox>
19
+ <Checkbox initialIndeterminate>Work in progress</Checkbox>
20
+ <Checkbox>Make things done</Checkbox>
21
+ </Gapped>;
22
+ ```
23
+
24
+ По умолчанию `Gapped` выстраивает элементы в одну строчку, но с помощью свойства `wrap` можно включить перенос элементов на новую строку.
25
+ При этом между строчками будет отступ равный значению свойста `gap`
26
+ В таком случае из-за особенности верстки `Gapped` может перекрывать элементы расположенные сверху-слева.
27
+
28
+ ```jsx harmony
29
+ import { Button, Checkbox, Toggle } from '@skbkontur/react-ui';
30
+
31
+ <>
32
+ {"U Can't Touch This! => "}
33
+ <Toggle />
34
+
35
+ <div style={{ paddingTop: '10px', position: 'relative', width: '250px' }}>
36
+ <Gapped wrap gap={50}>
37
+ <Button use="primary">Сохранить</Button>
38
+ <Button>Отмена</Button>
39
+ <Checkbox>Я не робот</Checkbox>
40
+ </Gapped>
41
+ </div>
42
+ </>;
43
+ ```
@@ -132,7 +132,7 @@ export declare class Input extends React.Component<InputProps, InputState> {
132
132
  private selectAllId;
133
133
  private theme;
134
134
  private blinkTimeout;
135
- private input;
135
+ input: HTMLInputElement | null;
136
136
  private setRootNode;
137
137
  private outputMaskError;
138
138
  componentDidMount(): void;
@@ -169,7 +169,8 @@ export declare class Input extends React.Component<InputProps, InputState> {
169
169
  * @public
170
170
  */
171
171
  selectAll: () => void;
172
- private delaySelectAll;
172
+ delaySelectAll: () => number | null;
173
+ private _selectAll;
173
174
  private cancelDelayedSelectAll;
174
175
  private cancelBlink;
175
176
  private getInput;
@@ -322,15 +322,18 @@ Input = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
322
322
 
323
323
 
324
324
 
325
- selectAll = function () {
325
+ selectAll = function () {return _this._selectAll();};_this.
326
+
327
+ delaySelectAll = function () {var _globalObject$request;
328
+ return _this.selectAllId = (_globalObject$request = _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(_this._selectAll)) != null ? _globalObject$request : null;
329
+ };_this.
330
+
331
+ _selectAll = function () {
326
332
  if (_this.input) {
327
333
  _this.setSelectionRange(0, _this.input.value.length);
328
334
  }
329
335
  };_this.
330
336
 
331
- delaySelectAll = function () {var _globalObject$request;return (
332
- _this.selectAllId = (_globalObject$request = _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(_this.selectAll)) != null ? _globalObject$request : null);};_this.
333
-
334
337
  cancelDelayedSelectAll = function () {
335
338
  if (_this.selectAllId) {
336
339
  _globalObject.globalObject.cancelAnimationFrame == null ? void 0 : _globalObject.globalObject.cancelAnimationFrame(_this.selectAllId);
@@ -1 +1 @@
1
- {"version":3,"sources":["Input.tsx"],"names":["inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","rootNode","getProps","defaultProps","state","needsPolyfillPlaceholder","blinking","focused","selectAllId","input","selectAll","setSelectionRange","value","length","delaySelectAll","globalObject","requestAnimationFrame","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","React","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","warning","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","styles","theme","getSizeClassName","focus","hovering","blink","focusFallback","isIE11","isEdge","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","resetFocus","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","InternalMaskedInput","event","fieldIsEmpty","target","e","isDeleteKey","isKeyBackspace","isKeyDelete","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n private input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number | null =>\n (this.selectAllId = globalObject.requestAnimationFrame?.(this.selectAll) ?? null);\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>{this.getInput(inputProps)}</FocusControlWrapper>\n );\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled(this.theme)]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private resetFocus = () => this.setState({ focused: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Input.tsx"],"names":["inputTypes","selectionAllowedTypes","selectionErrorMessage","type","allowedTypes","map","i","join","maskForbiddenTypes","maskAllowedTypes","filter","includes","maskErrorMessage","InputDataTids","root","Input","rootNode","getProps","defaultProps","state","needsPolyfillPlaceholder","blinking","focused","selectAllId","input","selectAll","_selectAll","delaySelectAll","globalObject","requestAnimationFrame","setSelectionRange","value","length","cancelDelayedSelectAll","cancelAnimationFrame","cancelBlink","callback","blinkTimeout","clearTimeout","setState","getInput","inputProps","props","element","React","cloneElement","mask","canBeUsedWithMask","renderMaskedInput","createElement","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","role","warning","leftIcon","rightIcon","borderless","align","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","corners","ariaDescribedby","ariaControls","ariaLabel","rest","labelProps","className","styles","theme","getSizeClassName","focus","hovering","blink","focusFallback","isIE11","isEdge","warningFallback","errorFallback","style","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","resetFocus","Boolean","defaultValue","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","InternalMaskedInput","event","fieldIsEmpty","target","e","isDeleteKey","isKeyBackspace","isKeyDelete","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","outputMaskError","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","blur","getNode","offsetWidth","setTimeout","start","end","Error","document","activeElement","render","setRootNode","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","useDefaultColor","iconFocus","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Component","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport invariant from 'invariant';\nimport React, { AriaAttributes, ClassAttributes, HTMLAttributes, ReactElement } from 'react';\nimport warning from 'warning';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { needsPolyfillPlaceholder } from '../../lib/needsPolyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { InternalMaskedInput } from '../../internal/InternalMaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isFunction } from '../../lib/utils';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { InputElement, InputElementProps } from './Input.typings';\nimport { styles } from './Input.styles';\nimport { InputLayout } from './InputLayout/InputLayout';\nimport { PolyfillPlaceholder } from './InputLayout/PolyfillPlaceholder';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\n/**\n * @deprecated use SizeProp\n */\nexport type InputSize = SizeProp;\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = typeof inputTypes[number];\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport const selectionAllowedTypes: InputType[] = ['text', 'password', 'tel', 'search', 'url'];\nexport const selectionErrorMessage = (type: InputType, allowedTypes: InputType[] = selectionAllowedTypes) => {\n return `<Input />. Selection is not supported by the type \"${type}\". Types that support selection: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}. Reason: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange.`;\n};\n\nexport const maskForbiddenTypes: InputType[] = ['number', 'date', 'time'];\nexport const maskAllowedTypes: InputType[] = inputTypes.filter((type) => {\n return !maskForbiddenTypes.includes(type);\n});\nexport const maskErrorMessage = (type: InputType, allowedTypes: InputType[] = maskAllowedTypes) => {\n return `<Input />. Prop \"mask\" does not support type \"${type}\". Supported types: ${allowedTypes\n .map((i) => `\"${i}\"`)\n .join(', ')}.`;\n};\n\nexport interface InputProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /**\n * Паттерн маски. Доступен для типов `text`, `password`, `email`, `tel`, `search`, `url`\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n mask?: Nullable<string>;\n /**\n * Символ маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /**\n * Показывать символы маски\n * @deprecated Со следующей мажорной версии Input перестанет поддерживать маску. Используйте MaskedInput\n */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: SizeProp;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * Тип. Возможные значения: 'password' | 'text' | 'number' | 'tel' | 'search' | 'time' | 'date' | 'url' | 'email'\n * */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе. Работает с типами `text`, `password`, `tel`, `search`, `url`. [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange) */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает акцентным цветом.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n /** @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n /**\n * Элемент заменяет нативный input.\n * Должен иметь пропы `InputElementProps` и тип `InputElement`\n * */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n needsPolyfillPlaceholder: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'size' | 'type'>>;\n\n/**\n * Интерфейс пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\n@rootNode\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n public static displayName = 'Input';\n\n public static defaultProps: DefaultProps = {\n size: 'small',\n type: 'text',\n };\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n public state: InputState = {\n needsPolyfillPlaceholder,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout: SafeTimer;\n public input: HTMLInputElement | null = null;\n private setRootNode!: TSetRootNode;\n\n private outputMaskError() {\n warning(!(this.props.mask && this.canBeUsedWithMask), maskErrorMessage(this.getProps().type));\n }\n\n public componentDidMount() {\n this.outputMaskError();\n }\n\n public componentDidUpdate(prevProps: Readonly<InputProps>) {\n if (this.props.type !== prevProps.type || this.props.mask !== prevProps.mask) {\n this.outputMaskError();\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = globalObject.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n // https://github.com/facebook/react/issues/7769\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n if (!selectionAllowedTypes.includes(this.getProps().type)) {\n warning(false, selectionErrorMessage(this.getProps().type));\n\n return;\n }\n\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n if (this.props.mask && this.props.value && this.props.value?.length < this.props.mask.length) {\n globalObject.setTimeout(() => {\n this.input?.setSelectionRange(start, end);\n }, 150);\n } else {\n this.input?.setSelectionRange(start, end);\n }\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private get canBeUsedWithMask() {\n return maskForbiddenTypes.includes(this.getProps().type);\n }\n\n /**\n * Работает с типами `text`, `password`, `tel`, `search`, `url`\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n */\n public selectAll = (): void => this._selectAll();\n\n public delaySelectAll = (): number | null => {\n return (this.selectAllId = globalObject.requestAnimationFrame?.(this._selectAll) ?? null);\n };\n\n private _selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n globalObject.clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private getInput = (inputProps: InputElementProps & ClassAttributes<HTMLInputElement>) => {\n if (this.props.element) {\n return React.cloneElement(this.props.element, inputProps);\n }\n\n return this.props.mask && !this.canBeUsedWithMask\n ? this.renderMaskedInput(inputProps, this.props.mask)\n : React.createElement('input', inputProps);\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n role,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused && !warning && !error,\n [styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n role,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onKeyDown: this.handleKeyDown,\n onKeyPress: this.handleKeyPress,\n onBlur: this.handleBlur,\n style: { textAlign: align },\n ref: this.refInput,\n type,\n placeholder: !this.isMaskVisible && !needsPolyfillPlaceholder ? placeholder : undefined,\n disabled,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n };\n\n const input = (\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>{this.getInput(inputProps)}</FocusControlWrapper>\n );\n\n if (isTheme2022(this.theme)) {\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size }}\n >\n {input}\n {this.state.needsPolyfillPlaceholder && (\n <PolyfillPlaceholder\n isMaskVisible={this.isMaskVisible}\n value={value}\n defaultValue={this.props.defaultValue}\n align={align}\n >\n {placeholder}\n </PolyfillPlaceholder>\n )}\n </InputLayout>\n );\n }\n\n return (\n <label data-tid={InputDataTids.root} {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(inputProps: React.InputHTMLAttributes<HTMLInputElement>, mask: string) {\n return (\n <InternalMaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.getProps().size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = isFunction(icon) ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconFocus(this.theme)]: this.state.focused,\n [styles.iconDisabled(this.theme)]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (\n this.state.needsPolyfillPlaceholder &&\n this.props.placeholder &&\n !this.isMaskVisible &&\n !this.props.value &&\n !this.props.defaultValue\n ) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.getProps().size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InternalMaskedInput | InputElement | null) => {\n if (element instanceof InternalMaskedInput || (element && 'input' in element)) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (needsPolyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.needsPolyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ needsPolyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private resetFocus = () => this.setState({ focused: false });\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(event);\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
@@ -1,5 +1,7 @@
1
- import { Input, InputProps, InputType } from '../Input';
1
+ import { InputMask, MaskedPatternOptions } from 'imask';
2
+ import { IMaskInputProps } from 'react-imask';
2
3
  import { Nullable } from '../../typings/utility-types';
4
+ import { Input, InputProps, InputType } from '../Input';
3
5
  export interface MaskedProps {
4
6
  /** Паттерн маски */
5
7
  mask: string;
@@ -10,11 +12,27 @@ export interface MaskedProps {
10
12
  * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }
11
13
  */
12
14
  formatChars?: Record<string, string>;
13
- /** Показывать символы маски */
14
- alwaysShowMask?: boolean;
15
+ /**
16
+ * Показывать символы маски
17
+ *
18
+ * null - не показывать
19
+ * true - показывать всегда
20
+ * false - показывать по фокусу
21
+ */
22
+ alwaysShowMask?: boolean | null;
23
+ /**
24
+ * Пропы для компонента `IMaskInput`
25
+ *
26
+ * @see https://imask.js.org/guide.html
27
+ */
28
+ imaskProps?: IMaskInputProps<HTMLInputElement>;
15
29
  }
16
30
  export declare type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;
17
- export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'mask' | 'maxLength' | 'type' | 'element'> {
31
+ export interface IMaskRefType {
32
+ maskRef: InputMask<MaskedPatternOptions>;
33
+ element: HTMLInputElement;
34
+ }
35
+ export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'mask' | 'maxLength' | 'type' | 'alwaysShowMask'> {
18
36
  type?: MaskInputType;
19
37
  }
20
38
  /**
@@ -0,0 +1,10 @@
1
+ import IMask, { Definitions } from 'imask';
2
+ export declare type AnyIMaskType = ReturnType<typeof IMask.createMask>;
3
+ export declare const DEFAULT_MASK_CHAR = "_";
4
+ export declare const DEFINITIONS: Readonly<{
5
+ '9': RegExp;
6
+ a: RegExp;
7
+ '*': RegExp;
8
+ }>;
9
+ export declare function getDefinitions(formatChars: Record<string, string> | undefined): Definitions;
10
+ export declare function getMaskChar(maskChar: string | null | undefined): string;
@@ -0,0 +1,30 @@
1
+ "use strict";exports.__esModule = true;exports.DEFINITIONS = exports.DEFAULT_MASK_CHAR = void 0;exports.getDefinitions = getDefinitions;exports.getMaskChar = getMaskChar;
2
+
3
+ var _utils = require("../../lib/utils");
4
+
5
+
6
+
7
+ var DEFAULT_MASK_CHAR = '_';exports.DEFAULT_MASK_CHAR = DEFAULT_MASK_CHAR;
8
+ var DEFINITIONS = Object.freeze({ '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ });exports.DEFINITIONS = DEFINITIONS;
9
+
10
+ function getDefinitions(formatChars) {
11
+ if ((0, _utils.isNonNullable)(formatChars)) {
12
+ var chars = {};
13
+
14
+ for (var key in formatChars) {
15
+ chars[key] = new RegExp(formatChars[key]);
16
+ }
17
+
18
+ return chars;
19
+ }
20
+
21
+ return DEFINITIONS;
22
+ }
23
+
24
+ function getMaskChar(maskChar) {
25
+ if (maskChar === null) {
26
+ return '';
27
+ }
28
+
29
+ return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;
30
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MaskedInput.helpers.ts"],"names":["DEFAULT_MASK_CHAR","DEFINITIONS","Object","freeze","a","getDefinitions","formatChars","chars","key","RegExp","getMaskChar","maskChar","undefined"],"mappings":";;AAEA;;;;AAIO,IAAMA,iBAAiB,GAAG,GAA1B,C;AACA,IAAMC,WAAW,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAE,KAAK,OAAP,EAAgBC,CAAC,EAAE,UAAnB,EAA+B,KAAK,aAApC,EAAd,CAApB,C;;AAEA,SAASC,cAAT,CAAwBC,WAAxB,EAAsF;AAC3F,MAAI,0BAAcA,WAAd,CAAJ,EAAgC;AAC9B,QAAMC,KAA6B,GAAG,EAAtC;;AAEA,SAAK,IAAMC,GAAX,IAAkBF,WAAlB,EAA+B;AAC7BC,MAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,IAAIC,MAAJ,CAAWH,WAAW,CAACE,GAAD,CAAtB,CAAb;AACD;;AAED,WAAOD,KAAP;AACD;;AAED,SAAON,WAAP;AACD;;AAEM,SAASS,WAAT,CAAqBC,QAArB,EAAkE;AACvE,MAAIA,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAO,EAAP;AACD;;AAED,SAAOA,QAAQ,KAAKC,SAAb,GAAyBZ,iBAAzB,GAA6CW,QAApD;AACD","sourcesContent":["import IMask, { Definitions } from 'imask';\n\nimport { isNonNullable } from '../../lib/utils';\n\nexport type AnyIMaskType = ReturnType<typeof IMask.createMask>;\n\nexport const DEFAULT_MASK_CHAR = '_';\nexport const DEFINITIONS = Object.freeze({ '9': /[0-9]/, a: /[A-Za-z]/, '*': /[A-Za-z0-9]/ });\n\nexport function getDefinitions(formatChars: Record<string, string> | undefined): Definitions {\n if (isNonNullable(formatChars)) {\n const chars: Record<string, RegExp> = {};\n\n for (const key in formatChars) {\n chars[key] = new RegExp(formatChars[key]);\n }\n\n return chars;\n }\n\n return DEFINITIONS;\n}\n\nexport function getMaskChar(maskChar: string | null | undefined): string {\n if (maskChar === null) {\n return '';\n }\n\n return maskChar === undefined ? DEFAULT_MASK_CHAR : maskChar;\n}\n"]}