@skbkontur/react-ui 6.0.7 → 6.1.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 (178) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/components/Autocomplete/Autocomplete.js +15 -4
  3. package/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/components/Button/Button.d.ts +1 -1
  5. package/components/Button/Button.js +5 -4
  6. package/components/Button/Button.js.map +1 -1
  7. package/components/Calendar/CalendarDay.js +3 -0
  8. package/components/Calendar/CalendarDay.js.map +1 -1
  9. package/components/Calendar/DayCellView.styles.d.ts +1 -0
  10. package/components/Calendar/DayCellView.styles.js +6 -3
  11. package/components/Calendar/DayCellView.styles.js.map +1 -1
  12. package/components/DatePicker/MobilePicker.js +1 -1
  13. package/components/DatePicker/MobilePicker.js.map +1 -1
  14. package/components/DateRangePicker/DateRangePicker.js +1 -1
  15. package/components/DateRangePicker/DateRangePicker.js.map +1 -1
  16. package/components/FxInput/FxInputRestoreBtn.js +1 -1
  17. package/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  18. package/components/Hint/Hint.js +10 -3
  19. package/components/Hint/Hint.js.map +1 -1
  20. package/components/Input/Input.d.ts +19 -1
  21. package/components/Input/Input.js +10 -3
  22. package/components/Input/Input.js.map +1 -1
  23. package/components/Input/InputLayout/InputLayout.d.ts +3 -1
  24. package/components/Input/InputLayout/InputLayout.js +5 -2
  25. package/components/Input/InputLayout/InputLayout.js.map +1 -1
  26. package/components/Input/InputLayout/InputLayout.styles.d.ts +6 -0
  27. package/components/Input/InputLayout/InputLayout.styles.js +19 -1
  28. package/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  29. package/components/Input/InputLayout/InputLayoutAside.d.ts +2 -0
  30. package/components/Input/InputLayout/InputLayoutAside.js +2 -2
  31. package/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  32. package/components/Input/InputLayout/InputLayoutAsideCounter.d.ts +11 -0
  33. package/components/Input/InputLayout/InputLayoutAsideCounter.js +74 -0
  34. package/components/Input/InputLayout/InputLayoutAsideCounter.js.map +1 -0
  35. package/components/Loader/Loader.d.ts +12 -4
  36. package/components/Loader/Loader.js +18 -7
  37. package/components/Loader/Loader.js.map +1 -1
  38. package/components/MenuItem/MenuItem.d.ts +2 -0
  39. package/components/MenuItem/MenuItem.js +32 -8
  40. package/components/MenuItem/MenuItem.js.map +1 -1
  41. package/components/MenuItem/MenuItem.styles.d.ts +3 -0
  42. package/components/MenuItem/MenuItem.styles.js +25 -16
  43. package/components/MenuItem/MenuItem.styles.js.map +1 -1
  44. package/components/Select/Select.js +11 -1
  45. package/components/Select/Select.js.map +1 -1
  46. package/components/SingleToast/SingleToast.d.ts +9 -6
  47. package/components/SingleToast/SingleToast.js +9 -6
  48. package/components/SingleToast/SingleToast.js.map +1 -1
  49. package/components/Spinner/Spinner.d.ts +23 -33
  50. package/components/Spinner/Spinner.js +23 -19
  51. package/components/Spinner/Spinner.js.map +1 -1
  52. package/components/Spinner/Spinner.styles.d.ts +0 -3
  53. package/components/Spinner/Spinner.styles.js +6 -15
  54. package/components/Spinner/Spinner.styles.js.map +1 -1
  55. package/components/Switcher/Switcher.js +1 -0
  56. package/components/Switcher/Switcher.js.map +1 -1
  57. package/components/Textarea/Textarea.js +1 -1
  58. package/components/Textarea/Textarea.js.map +1 -1
  59. package/components/Textarea/Textarea.styles.d.ts +1 -0
  60. package/components/Textarea/Textarea.styles.js +7 -4
  61. package/components/Textarea/Textarea.styles.js.map +1 -1
  62. package/components/Textarea/TextareaCounter.d.ts +2 -0
  63. package/components/Textarea/TextareaCounter.js +22 -4
  64. package/components/Textarea/TextareaCounter.js.map +1 -1
  65. package/components/Toast/Toast.d.ts +13 -14
  66. package/components/Toast/Toast.js +3 -3
  67. package/components/Toast/Toast.js.map +1 -1
  68. package/components/Toast/ToastView.d.ts +8 -5
  69. package/components/Toast/ToastView.js +28 -8
  70. package/components/Toast/ToastView.js.map +1 -1
  71. package/components/Toast/ToastView.styles.d.ts +7 -0
  72. package/components/Toast/ToastView.styles.js +30 -8
  73. package/components/Toast/ToastView.styles.js.map +1 -1
  74. package/components/TokenInput/TokenInput.d.ts +18 -2
  75. package/components/TokenInput/TokenInput.js +236 -79
  76. package/components/TokenInput/TokenInput.js.map +1 -1
  77. package/components/TokenInput/TokenInput.styles.d.ts +1 -0
  78. package/components/TokenInput/TokenInput.styles.js +12 -9
  79. package/components/TokenInput/TokenInput.styles.js.map +1 -1
  80. package/components/TokenInput/TokenInputMenu.d.ts +2 -1
  81. package/components/TokenInput/TokenInputMenu.js +1 -1
  82. package/components/TokenInput/TokenInputMenu.js.map +1 -1
  83. package/components/TokenInput/TokenInputMobileMenu.d.ts +25 -0
  84. package/components/TokenInput/TokenInputMobileMenu.js +40 -0
  85. package/components/TokenInput/TokenInputMobileMenu.js.map +1 -0
  86. package/components/TokenInput/TokenInputReducer.d.ts +2 -0
  87. package/components/TokenInput/TokenInputReducer.js +14 -0
  88. package/components/TokenInput/TokenInputReducer.js.map +1 -1
  89. package/components/Tooltip/Tooltip.d.ts +4 -0
  90. package/components/Tooltip/Tooltip.js +50 -11
  91. package/components/Tooltip/Tooltip.js.map +1 -1
  92. package/internal/CloseButtonIcon/CloseButtonIcon.js +1 -1
  93. package/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  94. package/internal/CommonWrapper/CommonWrapper.js +5 -0
  95. package/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  96. package/internal/CustomComboBox/ComboBoxMenu.js +1 -1
  97. package/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  98. package/internal/CustomComboBox/ComboBoxView.js +13 -2
  99. package/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  100. package/internal/InputLikeText/InputLikeText.d.ts +1 -1
  101. package/internal/InputLikeText/InputLikeText.js.map +1 -1
  102. package/internal/Menu/Menu.js +3 -0
  103. package/internal/Menu/Menu.js.map +1 -1
  104. package/internal/Menu/Menu.styles.d.ts +1 -0
  105. package/internal/Menu/Menu.styles.js +13 -10
  106. package/internal/Menu/Menu.styles.js.map +1 -1
  107. package/internal/MenuMessage/MenuMessage.js +17 -1
  108. package/internal/MenuMessage/MenuMessage.js.map +1 -1
  109. package/internal/MenuMessage/MenuMessage.styles.d.ts +3 -0
  110. package/internal/MenuMessage/MenuMessage.styles.js +13 -4
  111. package/internal/MenuMessage/MenuMessage.styles.js.map +1 -1
  112. package/internal/MobilePopup/MobilePopup.d.ts +8 -0
  113. package/internal/MobilePopup/MobilePopup.js +34 -11
  114. package/internal/MobilePopup/MobilePopup.js.map +1 -1
  115. package/internal/MobilePopup/MobilePopup.styles.d.ts +7 -0
  116. package/internal/MobilePopup/MobilePopup.styles.js +34 -10
  117. package/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  118. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +8 -1
  119. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +18 -1
  120. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -1
  121. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +3 -0
  122. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +14 -4
  123. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -1
  124. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +4 -0
  125. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +48 -11
  126. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  127. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +6 -0
  128. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +28 -8
  129. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  130. package/internal/Popup/Popup.d.ts +13 -9
  131. package/internal/Popup/Popup.js +130 -53
  132. package/internal/Popup/Popup.js.map +1 -1
  133. package/internal/Popup/Popup.styles.js +1 -1
  134. package/internal/Popup/Popup.styles.js.map +1 -1
  135. package/internal/Popup/PopupHelper.d.ts +8 -0
  136. package/internal/Popup/PopupHelper.js +39 -0
  137. package/internal/Popup/PopupHelper.js.map +1 -1
  138. package/internal/Popup/PopupPin.d.ts +19 -4
  139. package/internal/Popup/PopupPin.js +109 -8
  140. package/internal/Popup/PopupPin.js.map +1 -1
  141. package/internal/Popup/PopupPin.styles.d.ts +2 -0
  142. package/internal/Popup/PopupPin.styles.js +11 -5
  143. package/internal/Popup/PopupPin.styles.js.map +1 -1
  144. package/internal/PopupMenu/PopupMenu.d.ts +2 -1
  145. package/internal/PopupMenu/PopupMenu.js +21 -18
  146. package/internal/PopupMenu/PopupMenu.js.map +1 -1
  147. package/internal/SpinnerIcon/SpinnerIcon.d.ts +3 -3
  148. package/internal/SpinnerIcon/SpinnerIcon.js +4 -4
  149. package/internal/SpinnerIcon/SpinnerIcon.js.map +1 -1
  150. package/internal/icons2022/LoadingIcon.js +1 -1
  151. package/internal/icons2022/LoadingIcon.js.map +1 -1
  152. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.d.ts +2 -0
  153. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js +21 -0
  154. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js.map +1 -0
  155. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.d.ts +2 -0
  156. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js +21 -0
  157. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js.map +1 -0
  158. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.d.ts +2 -0
  159. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js +21 -0
  160. package/internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js.map +1 -0
  161. package/internal/themes/BasicTheme.d.ts +83 -4
  162. package/internal/themes/BasicTheme.js +187 -6
  163. package/internal/themes/BasicTheme.js.map +1 -1
  164. package/internal/themes/DarkTheme6_1.d.ts +1 -0
  165. package/internal/themes/DarkTheme6_1.js +41 -0
  166. package/internal/themes/DarkTheme6_1.js.map +1 -0
  167. package/internal/themes/LightTheme6_1.d.ts +1 -0
  168. package/internal/themes/LightTheme6_1.js +39 -0
  169. package/internal/themes/LightTheme6_1.js.map +1 -0
  170. package/lib/getMenuPositions.js +11 -11
  171. package/lib/getMenuPositions.js.map +1 -1
  172. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  173. package/lib/theming/themes/DarkTheme.js +3 -1
  174. package/lib/theming/themes/DarkTheme.js.map +1 -1
  175. package/lib/theming/themes/LightTheme.d.ts +1 -0
  176. package/lib/theming/themes/LightTheme.js +3 -1
  177. package/lib/theming/themes/LightTheme.js.map +1 -1
  178. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../components/Input/Input.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes, ClassAttributes, HTMLAttributes, JSX, ReactElement } from 'react';\nimport React, { createRef } from 'react';\nimport warning from 'warning';\n\nimport { ClearCrossIcon } from '../../internal/ClearCrossIcon/ClearCrossIcon.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { blink } from '../../lib/blink.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { getStyles } from './Input.styles.js';\nimport type { InputElement, InputElementProps } from './Input.typings.js';\nimport { InputLayout } from './InputLayout/InputLayout.js';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type ShowClearIcon = 'auto' | 'always' | 'never';\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): string => {\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 calculateClearCrossShowedState = ({\n showClearIcon,\n notEmptyValue,\n focused,\n hovered,\n}: {\n showClearIcon: ShowClearIcon;\n notEmptyValue: boolean;\n focused?: boolean;\n hovered?: boolean;\n}): boolean => {\n switch (showClearIcon) {\n case 'always':\n return notEmptyValue;\n case 'auto':\n return Boolean((focused || hovered) && notEmptyValue);\n case 'never':\n return false;\n default:\n return catchUnreachableWarning(showClearIcon, false);\n }\n};\n\nexport interface InputProps\n extends\n CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Показывает иконку очистки значения в заполненном поле.\n * @default never */\n showClearIcon?: ShowClearIcon;\n\n /** Добавляет иконку слева.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n leftIcon?: InputIconType;\n\n /** Добавляет иконку справа.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n rightIcon?: InputIconType;\n\n /** Переводит поле в состояние ошибки. */\n error?: boolean;\n\n /** Переводит поле в состояние предупреждения. */\n warning?: boolean;\n\n /** Убирает обводку поля. */\n borderless?: boolean;\n\n /** Выравнивает контент внутри поля. */\n align?: InputAlign;\n\n /** Размер поля.\n * @default small\n */\n size?: SizeProp;\n\n /** Событие изменения значения `value` в поле. */\n onValueChange?: (value: string) => void;\n\n /** @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Тип поля ввода. */\n type?: InputType;\n\n /** Значение внутри поля. */\n value?: string;\n\n /** Устанавливает префикс `ReactNode` перед значением, но после иконки. */\n prefix?: React.ReactNode;\n\n /** Устанавливает суффикс `ReactNode` после значения, но перед правой иконкой. */\n suffix?: React.ReactNode;\n\n /** Выделяет введённое значение при фокусе в поле. Работает с типами `text`, `password`, `tel`, `search`, `url`. */\n selectAllOnFocus?: boolean;\n\n /** Устанавливает обработчик на случай некорректного ввода.\n * Если передан onUnexpectedInput, он будет вызван при ошибке, а эффект мигания можно запустить вручную через публичный метод blink.\n * @param {string} value - значение поля. */\n onUnexpectedInput?: (value: string) => void;\n\n /** Устанавливает радиус скруглений углов.\n * @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n\n /** Устанавливает элемент, заменяющий нативный input. Должен иметь пропсы `InputElementProps` и тип `InputElement`. */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n focused: boolean;\n hovered: boolean;\n clearCrossShowed: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n clearCross: 'Input__clearCross',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'type' | 'showClearIcon'>>;\n\n/**\n * Поле ввода позволяет ввести или отредактировать значение.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\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 type: 'text',\n showClearIcon: 'never',\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n private selectAllId: number | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public input: HTMLInputElement | null = null;\n public labelRef = createRef<HTMLLabelElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private getClearCrossShowed = ({\n focused,\n hovered,\n hasInitialValue,\n }: {\n focused?: boolean;\n hovered?: boolean;\n hasInitialValue?: boolean;\n }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.input?.value || hasInitialValue),\n focused,\n hovered,\n });\n };\n\n public state: InputState = {\n focused: false,\n hovered: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n hasInitialValue: Boolean(this.props.value || this.props.defaultValue),\n }),\n };\n\n public componentWillUnmount() {\n this.cancelDelayedSelectAll();\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\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(): void {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /** Возвращает DOM-узел поля ввода.\n * @public\n */\n public getNode(): HTMLInputElement | null {\n return this.input;\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink(): void {\n blink({ el: this.labelRef.current, blinkColor: this.theme.inputBlinkColor });\n }\n\n /** start - инициирует последовательное изменение числового значения: начинает повторяющееся увеличение/уменьшение, обычно используется при удерживании кнопки «+» или «−» для числового Input. end - останавливает ранее запущенное числоизменение, инициируемое numberStart.\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number): void {\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 warning(false, 'Cannot call \"setSelectionRange\" on unmounted Input');\n return;\n }\n\n if (this.globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n\n this.input?.setSelectionRange(start, end);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Переводит фокус в поле (если ещё не в фокусе) и выделяет весь текст в нём.\n * Работает с типами `text`, `password`, `tel`, `search`, `url`.\n * @public\n */\n public selectAll = (): void => this._selectAll();\n\n public delaySelectAll = (): number | null => {\n return (this.selectAllId = this.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 this.globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\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 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 size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n showClearIcon,\n ...rest\n } = props;\n\n const { focused } = this.state;\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getSizeClassName(), {\n [this.styles.focus(this.theme)]: focused && !warning && !error,\n [this.styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.styles.borderless()]: borderless && !focused,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseOver,\n ref: this.labelRef,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: this.cx(this.styles.input(this.theme), {\n [this.styles.inputFocus(this.theme)]: focused,\n [this.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,\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 const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon data-tid={InputDataTids.clearCross} size={this.size} onClick={this.handleClearInput} />\n ) : (\n rightIcon\n );\n };\n return (\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={getRightIcon()}\n prefix={prefix}\n suffix={suffix}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size: this.size }}\n >\n {input}\n </InputLayout>\n );\n };\n\n private getSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.styles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.styles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.styles.sizeSmall(this.theme)]: true,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InputElement | null) => {\n if (element && 'input' in element) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleClearInput = () => {\n if (this.input) {\n this.input.value = '';\n }\n\n this.setState({ clearCrossShowed: false });\n\n if (this.props.onValueChange) {\n this.props.onValueChange('');\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\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 const clearCrossShowed = this.getClearCrossShowed({ focused: this.state.focused, hovered: this.state.hovered });\n\n if (this.state.clearCrossShowed !== clearCrossShowed) {\n this.setState({\n clearCrossShowed,\n });\n }\n };\n\n private handleMouseEnter = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }),\n });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n private handleMouseLeave = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: false,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }),\n });\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: true, hovered: this.state.hovered }),\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && this.selectAll();\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 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 const showClearIcon = this.props.showClearIcon;\n if (showClearIcon && getRootNode(this)?.contains(event.relatedTarget)) {\n this.setState({ focused: false });\n } else {\n const clearCrossShowed = this.getClearCrossShowed({ focused: false, hovered: this.state.hovered });\n this.setState({\n focused: false,\n clearCrossShowed,\n });\n this.props.onBlur?.(event);\n }\n };\n}\n"]}
1
+ {"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../components/Input/Input.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,MAAM,CAAC,IAAM,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAU,CAAC;AAOnH,MAAM,CAAC,IAAM,qBAAqB,GAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/F,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,IAAe,EAAE,YAAiD;IAAjD,6BAAA,EAAA,oCAAiD;IACtG,OAAO,8DAAsD,IAAI,+CAAoC,YAAY;SAC9G,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,YAAI,CAAC,OAAG,EAAR,CAAQ,CAAC;SACpB,IAAI,CAAC,IAAI,CAAC,mGAAgG,CAAC;AAChH,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,8BAA8B,GAAG,UAAC,EAU9C;QATC,aAAa,mBAAA,EACb,aAAa,mBAAA,EACb,OAAO,aAAA,EACP,OAAO,aAAA;IAOP,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;QACxD,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf;YACE,OAAO,uBAAuB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AA+GF,MAAM,CAAC,IAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,mBAAmB;IAC/B,OAAO,EAAE,gBAAgB;IACzB,eAAe,EAAE,wBAAwB;CACjC,CAAC;AAIX;;GAEG;AAIH;IAA2B,yBAAuC;IAAlE;;QAUU,cAAQ,GAAG,iBAAiB,CAAC,OAAK,CAAC,YAAY,CAAC,CAAC;QAEjD,iBAAW,GAAkB,IAAI,CAAC;QAMnC,WAAK,GAA4B,IAAI,CAAC;QACtC,cAAQ,GAAG,SAAS,EAAoB,CAAC;QAIxC,yBAAmB,GAAG,UAAC,EAQ9B;;gBAPC,OAAO,aAAA,EACP,OAAO,aAAA,EACP,eAAe,qBAAA;YAMf,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,8BAA8B,CAAC;gBACpC,aAAa,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,aAAa;gBAC5C,aAAa,EAAE,OAAO,CAAC,CAAA,MAAA,KAAI,CAAC,KAAK,0CAAE,KAAK,KAAI,eAAe,CAAC;gBAC5D,OAAO,SAAA;gBACP,OAAO,SAAA;aACR,CAAC,CAAC;QACL,CAAC,CAAC;QAEK,WAAK,GAAe;YACzB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,gBAAgB,EAAE,KAAK;YACvB,gBAAgB,EAAE,KAAI,CAAC,mBAAmB,CAAC;gBACzC,OAAO,EAAE,KAAK;gBACd,eAAe,EAAE,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC;aACtE,CAAC;SACH,CAAC;QAiFF;;;;WAIG;QACI,eAAS,GAAG,cAAY,OAAA,KAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC;QAE1C,oBAAc,GAAG;;YACtB,OAAO,CAAC,KAAI,CAAC,WAAW,GAAG,MAAA,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,qBAAqB,mDAAG,KAAI,CAAC,UAAU,CAAC,mCAAI,IAAI,CAAC,CAAC;QACjG,CAAC,CAAC;QAEM,gBAAU,GAAG;YACnB,IAAI,KAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QAEM,4BAAsB,GAAG;;YAC/B,IAAI,KAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAA,MAAA,KAAI,CAAC,YAAY,EAAC,oBAAoB,mDAAG,KAAI,CAAC,WAAW,CAAC,CAAC;gBAC3D,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEM,cAAQ,GAAG,UAAC,UAAiE;YACnF,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC,YAAY,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC;QAEM,gBAAU,GAAG,UAAC,KAAyC;;YAE3D,IAAA,YAAY,GAiCV,KAAK,aAjCK,EACZ,YAAY,GAgCV,KAAK,aAhCK,EACZ,WAAW,GA+BT,KAAK,YA/BI,EACX,SAAS,GA8BP,KAAK,UA9BE,EACT,UAAU,GA6BR,KAAK,WA7BG,EACV,aAAa,GA4BX,KAAK,cA5BM,EACb,KAAK,GA2BH,KAAK,MA3BF,EACL,KAAK,GA0BH,KAAK,MA1BF,EACL,IAAI,GAyBF,KAAK,KAzBH,EACJ,OAAO,GAwBL,KAAK,QAxBA,EACP,QAAQ,GAuBN,KAAK,SAvBC,EACR,SAAS,GAsBP,KAAK,UAtBE,EACT,UAAU,GAqBR,KAAK,WArBG,EACV,KAAK,GAoBH,KAAK,MApBF,EACL,KAAK,GAmBH,KAAK,MAnBF,EACL,IAAI,GAkBF,KAAK,KAlBH,EACJ,IAAI,GAiBF,KAAK,KAjBH,EACJ,WAAW,GAgBT,KAAK,YAhBI,EACX,gBAAgB,GAed,KAAK,iBAfS,EAChB,iBAAiB,GAcf,KAAK,kBAdU,EACjB,aAAa,GAaX,KAAK,cAbM,EACb,WAAW,GAYT,KAAK,YAZI,EACX,QAAQ,GAWN,KAAK,SAXC,EACR,iBAAiB,GAUf,KAAK,kBAVU,EACjB,MAAM,GASJ,KAAK,OATD,EACN,MAAM,GAQJ,KAAK,OARD,EACN,OAAO,GAOL,KAAK,QAPA,EACa,eAAe,GAMjC,KAAK,oBAN4B,EAClB,YAAY,GAK3B,KAAK,iBALsB,EACf,SAAS,GAIrB,KAAK,cAJgB,EACvB,OAAO,GAGL,KAAK,QAHA,EACP,aAAa,GAEX,KAAK,cAFM,EACV,IAAI,UACL,KAAK,EAlCH,gbAkCL,CADQ,CACC;YAEJ,IAAA,KAAgC,KAAI,CAAC,KAAK,EAAxC,OAAO,aAAA,EAAE,gBAAgB,sBAAe,CAAC;YAEjD,IAAM,UAAU,GAAG;gBACjB,SAAS,EAAE,KAAI,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,gBAAgB,EAAE;oBACtE,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;oBAC9D,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU;oBAC9F,GAAC,KAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAG,UAAU,IAAI,CAAC,OAAO;oBAClD,GAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,QAAQ;oBAC5C,GAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO;oBAC1C,GAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,KAAK;wBACtC;gBACF,eAAe,EAAE,YAAY;gBAC7B,KAAK,aAAI,KAAK,OAAA,IAAK,OAAO,CAAE;gBAC5B,YAAY,EAAE,KAAI,CAAC,gBAAgB;gBACnC,YAAY,EAAE,KAAI,CAAC,gBAAgB;gBACnC,WAAW,aAAA;gBACX,GAAG,EAAE,KAAI,CAAC,QAAQ;aACnB,CAAC;YAEF,IAAM,UAAU,yBACX,IAAI,KACP,SAAS,EAAE,KAAI,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC;oBAC9C,GAAC,KAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,OAAO;oBAC7C,GAAC,KAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAG,QAAQ;wBACjD,EACF,KAAK,OAAA,EACL,IAAI,MAAA,EACJ,QAAQ,EAAE,KAAI,CAAC,YAAY,EAC3B,OAAO,EAAE,KAAI,CAAC,WAAW,EACzB,SAAS,EAAE,KAAI,CAAC,aAAa,EAC7B,UAAU,EAAE,KAAI,CAAC,cAAc,EAC/B,MAAM,EAAE,KAAI,CAAC,UAAU,EACvB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAC3B,GAAG,EAAE,KAAI,CAAC,QAAQ,EAClB,IAAI,MAAA,EACJ,WAAW,aAAA,EACX,QAAQ,UAAA,EACR,kBAAkB,EAAE,eAAe,EACnC,YAAY,EAAE,SAAS,GACxB,CAAC;YAEF,IAAM,KAAK,GAAG,CACZ,oBAAC,mBAAmB,IAAC,kBAAkB,EAAE,KAAI,CAAC,UAAU,IAAG,KAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAuB,CAC5G,CAAC;YAEF,IAAM,YAAY,GAAG;gBACnB,OAAO,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACnC,oBAAC,cAAc,gBAAW,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAI,CAAC,gBAAgB,GAAI,CACxG,CAAC,CAAC,CAAC,CACF,SAAS,CACV,CAAC;YACJ,CAAC,CAAC;YACF,OAAO,CACL,oBAAC,WAAW,IACV,cAAc,EAAE,KAAI,CAAC,sBAAsB,EAC3C,cAAc,EAAE,KAAI,CAAC,sBAAsB,EAC3C,MAAM,EAAE,gBAAgB;gBAExB,oBAAC,WAAW,IACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,YAAY,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,KAAI,CAAC,sBAAsB,EAC/C,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,IAAI,EAAE,KAAI,CAAC,IAAI,EACf,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,SAAA,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,EAAE,IAEjE,KAAK,CACM,CACF,CACf,CAAC;QACJ,CAAC,CAAC;QAEM,4BAAsB,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAA1C,CAA0C,CAAC;QAoB1E,cAAQ,GAAG,UAAC,OAA+C;YACjE,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBAClC,KAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,KAAI,CAAC,KAAK,GAAG,OAAO,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEM,sBAAgB,GAAG;YACzB,IAAI,KAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,CAAC;YAED,KAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3C,IAAI,KAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC7B,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,kBAAY,GAAG,UAAC,KAA0C;YAChE,IAAI,KAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC7B,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAED,IAAM,gBAAgB,GAAG,KAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEhH,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;gBACrD,KAAI,CAAC,QAAQ,CAAC;oBACZ,gBAAgB,kBAAA;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,CAAiD;YAC3E,KAAI,CAAC,QAAQ,CAAC;gBACZ,OAAO,EAAE,IAAI;gBACb,gBAAgB,EAAE,KAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC3F,CAAC,CAAC;YACH,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QACM,sBAAgB,GAAG,UAAC,CAAiD;YAC3E,KAAI,CAAC,QAAQ,CAAC;gBACZ,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,KAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC5F,CAAC,CAAC;YACH,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,KAAyC;YAC9D,KAAI,CAAC,QAAQ,CAAC;gBACZ,OAAO,EAAE,IAAI;gBACb,gBAAgB,EAAE,IAAI;gBACtB,gBAAgB,EAAE,KAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3F,CAAC,CAAC;YAEH,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAChC,KAAI,CAAC,KAAK,IAAI,KAAI,CAAC,SAAS,EAAE,CAAC;YACjC,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACvB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,CAAwC;YAC/D,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,IAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACvD,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,oBAAc,GAAG,UAAC,KAA4C;YACpE,IAAI,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC1B,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC9D,KAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC;QAEM,2BAAqB,GAAG,UAAC,KAAsC;YAAtC,sBAAA,EAAA,QAAgB,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YACrE,IAAI,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACjC,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,KAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEM,gBAAU,GAAG,cAAM,OAAA,KAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAjC,CAAiC,CAAC;QAErD,gBAAU,GAAG,UAAC,KAAyC;;YAC7D,IAAM,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC/C,IAAI,aAAa,KAAI,MAAA,WAAW,CAAC,KAAI,CAAC,0CAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,EAAE,CAAC;gBACtE,KAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAM,gBAAgB,GAAG,KAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnG,KAAI,CAAC,QAAQ,CAAC;oBACZ,OAAO,EAAE,KAAK;oBACd,gBAAgB,kBAAA;iBACjB,CAAC,CAAC;gBACH,MAAA,MAAA,KAAI,CAAC,KAAK,EAAC,MAAM,mDAAG,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;;IACJ,CAAC;cAnaY,KAAK;IAqDT,oCAAoB,GAA3B;QACE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACI,qBAAK,GAAZ;QACE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,oBAAI,GAAX;QACE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,uBAAO,GAAd;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,qBAAK,GAAZ;QACE,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;OAKG;IACI,iCAAiB,GAAxB,UAAyB,KAAa,EAAE,GAAW;;QACjD,gDAAgD;QAChD,sFAAsF;QACtF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAE5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,CAAA,MAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,0CAAE,aAAa,MAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,MAAA,IAAI,CAAC,KAAK,0CAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,sBAAM,GAAb;QAAA,iBAeC;QAdC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,CACL,oBAAC,YAAY,CAAC,QAAQ,QACnB,UAAC,KAAK;YACL,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,OAAO,CACL,oBAAC,aAAa,aAAC,WAAW,EAAE,KAAI,CAAC,WAAW,IAAM,KAAI,CAAC,QAAQ,EAAE,GAC9D,KAAI,CAAC,UAAU,CACF,CACjB,CAAC;QACJ,CAAC,CACqB,CACzB,CAAC;IACJ,CAAC;IAyJO,gCAAgB,GAAxB;;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,EAAE;oBACZ,GAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;wBACzC,CAAC;YACL,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,EAAE;oBACZ,GAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;wBAC1C,CAAC;YACL,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,EAAE;oBACZ,GAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAG,IAAI;wBACzC,CAAC;QACP,CAAC;IACH,CAAC;;IA1Sa,yBAAmB,GAAG,OAAO,AAAV,CAAW;IAC9B,iBAAW,GAAG,OAAO,AAAV,CAAW;IAEtB,kBAAY,GAAiB;QACzC,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,OAAO;KACvB,AAHyB,CAGxB;IAPS,KAAK;QAHjB,qBAAqB;QACrB,QAAQ;QACR,QAAQ;OACI,KAAK,CAmajB;IAAD,YAAC;CAAA,AAnaD,CAA2B,KAAK,CAAC,SAAS,GAmazC;SAnaY,KAAK","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport invariant from 'invariant';\nimport type { AriaAttributes, ClassAttributes, HTMLAttributes, JSX, ReactElement, ReactNode } from 'react';\nimport React, { createRef } from 'react';\nimport warning from 'warning';\n\nimport { ClearCrossIcon } from '../../internal/ClearCrossIcon/ClearCrossIcon.js';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { RenderLayer } from '../../internal/RenderLayer/index.js';\nimport { blink } from '../../lib/blink.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { getRootNode, rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport { catchUnreachableWarning } from '../../lib/typeGuards.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { Override } from '../../typings/utility-types.js';\nimport { getStyles } from './Input.styles.js';\nimport type { InputElement, InputElementProps } from './Input.typings.js';\nimport { InputLayout } from './InputLayout/InputLayout.js';\n\nexport const inputTypes = ['password', 'text', 'number', 'tel', 'search', 'time', 'date', 'url', 'email'] as const;\n\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type ShowClearIcon = 'auto' | 'always' | 'never';\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): string => {\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 calculateClearCrossShowedState = ({\n showClearIcon,\n notEmptyValue,\n focused,\n hovered,\n}: {\n showClearIcon: ShowClearIcon;\n notEmptyValue: boolean;\n focused?: boolean;\n hovered?: boolean;\n}): boolean => {\n switch (showClearIcon) {\n case 'always':\n return notEmptyValue;\n case 'auto':\n return Boolean((focused || hovered) && notEmptyValue);\n case 'never':\n return false;\n default:\n return catchUnreachableWarning(showClearIcon, false);\n }\n};\n\nexport interface InputProps\n extends\n CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-controls' | 'aria-label'>,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /** Показывает иконку очистки значения в заполненном поле.\n * @default never */\n showClearIcon?: ShowClearIcon;\n\n /** Добавляет иконку слева.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n leftIcon?: InputIconType;\n\n /** Добавляет иконку справа.\n * При использовании `ReactNode` применяются дефолтные стили для иконки.\n * При использовании `() => ReactNode` применяются только стили для позиционирования. */\n rightIcon?: InputIconType;\n\n /** Переводит поле в состояние ошибки. */\n error?: boolean;\n\n /** Переводит поле в состояние предупреждения. */\n warning?: boolean;\n\n /** Убирает обводку поля. */\n borderless?: boolean;\n\n /** Выравнивает контент внутри поля. */\n align?: InputAlign;\n\n /** Размер поля.\n * @default small\n */\n size?: SizeProp;\n\n /** Событие изменения значения `value` в поле. */\n onValueChange?: (value: string) => void;\n\n /** @ignore */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** @ignore */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n\n /** Тип поля ввода. */\n type?: InputType;\n\n /** Значение внутри поля. */\n value?: string;\n\n /** Устанавливает префикс `ReactNode` перед значением, но после иконки. */\n prefix?: React.ReactNode;\n\n /** Устанавливает суффикс `ReactNode` после значения, но перед правой иконкой. */\n suffix?: React.ReactNode;\n\n /** Выделяет введённое значение при фокусе в поле. Работает с типами `text`, `password`, `tel`, `search`, `url`. */\n selectAllOnFocus?: boolean;\n\n /** Отображает счётчик введённых символов. */\n showLengthCounter?: boolean;\n\n /** Допустимое количество символов в поле. Отображается в счётчике символов.\n * @default maxLength */\n lengthCounter?: number;\n\n /** Подсказка для счётчика символов.\n *\n * Если передать `ReactNode`, рисует тултип со встроенной иконкой.\n * Если передать функцию, рисует произвольный элемент.\n * @example\n * ```\n * counterHelp={() => <Hint text=\"...\"><Icon /></Hint>}\n * ``` */\n counterHelp?: ReactNode | (() => ReactNode);\n\n /** Устанавливает обработчик на случай некорректного ввода.\n * Если передан onUnexpectedInput, он будет вызван при ошибке, а эффект мигания можно запустить вручную через публичный метод blink.\n * @param {string} value - значение поля. */\n onUnexpectedInput?: (value: string) => void;\n\n /** Устанавливает радиус скруглений углов.\n * @ignore */\n corners?: Partial<\n Pick<\n React.CSSProperties,\n 'borderTopRightRadius' | 'borderBottomRightRadius' | 'borderBottomLeftRadius' | 'borderTopLeftRadius'\n >\n >;\n\n /** Устанавливает элемент, заменяющий нативный input. Должен иметь пропсы `InputElementProps` и тип `InputElement`. */\n element?: ReactElement<InputElementProps>;\n }\n > {}\n\nexport interface InputState {\n focused: boolean;\n hovered: boolean;\n clearCrossShowed: boolean;\n isCounterVisible: boolean;\n}\n\nexport const InputDataTids = {\n root: 'Input__root',\n clearCross: 'Input__clearCross',\n counter: 'Input__counter',\n counterHelpIcon: 'Input__counterHelpIcon',\n} as const;\n\ntype DefaultProps = Required<Pick<InputProps, 'type' | 'showClearIcon'>>;\n\n/**\n * Поле ввода позволяет ввести или отредактировать значение.\n */\n@withRenderEnvironment\n@rootNode\n@withSize\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 type: 'text',\n showClearIcon: 'never',\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(Input.defaultProps);\n\n private selectAllId: number | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public input: HTMLInputElement | null = null;\n public labelRef = createRef<HTMLLabelElement>();\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n private getClearCrossShowed = ({\n focused,\n hovered,\n hasInitialValue,\n }: {\n focused?: boolean;\n hovered?: boolean;\n hasInitialValue?: boolean;\n }): boolean => {\n if (this.props.disabled) {\n return false;\n }\n return calculateClearCrossShowedState({\n showClearIcon: this.getProps().showClearIcon,\n notEmptyValue: Boolean(this.input?.value || hasInitialValue),\n focused,\n hovered,\n });\n };\n\n public state: InputState = {\n focused: false,\n hovered: false,\n isCounterVisible: false,\n clearCrossShowed: this.getClearCrossShowed({\n focused: false,\n hasInitialValue: Boolean(this.props.value || this.props.defaultValue),\n }),\n };\n\n public componentWillUnmount() {\n this.cancelDelayedSelectAll();\n }\n\n /** Программно устанавливает фокус на поле.\n * Появляется фокусная рамка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.\n * @public\n */\n public focus(): void {\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(): void {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input.blur();\n }\n\n /** Возвращает DOM-узел поля ввода.\n * @public\n */\n public getNode(): HTMLInputElement | null {\n return this.input;\n }\n\n /** Кратковременно визуально подсвечивает поле ввода, чтобы привлечь внимание пользователя.\n * @public\n */\n public blink(): void {\n blink({ el: this.labelRef.current, blinkColor: this.theme.inputBlinkColor });\n }\n\n /** start - инициирует последовательное изменение числового значения: начинает повторяющееся увеличение/уменьшение, обычно используется при удерживании кнопки «+» или «−» для числового Input. end - останавливает ранее запущенное числоизменение, инициируемое numberStart.\n * [Документация](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange)\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number): void {\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 warning(false, 'Cannot call \"setSelectionRange\" on unmounted Input');\n return;\n }\n\n if (this.globalObject.document?.activeElement !== this.input) {\n this.focus();\n }\n\n this.input?.setSelectionRange(start, end);\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Переводит фокус в поле (если ещё не в фокусе) и выделяет весь текст в нём.\n * Работает с типами `text`, `password`, `tel`, `search`, `url`.\n * @public\n */\n public selectAll = (): void => this._selectAll();\n\n public delaySelectAll = (): number | null => {\n return (this.selectAllId = this.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 this.globalObject.cancelAnimationFrame?.(this.selectAllId);\n this.selectAllId = null;\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 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 size,\n placeholder,\n selectAllOnFocus,\n showLengthCounter,\n lengthCounter,\n counterHelp,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n corners,\n 'aria-describedby': ariaDescribedby,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n element,\n showClearIcon,\n ...rest\n } = props;\n\n const { focused, isCounterVisible } = this.state;\n\n const labelProps = {\n className: this.cx(this.styles.root(this.theme), this.getSizeClassName(), {\n [this.styles.focus(this.theme)]: focused && !warning && !error,\n [this.styles.hovering(this.theme)]: !focused && !disabled && !warning && !error && !borderless,\n [this.styles.borderless()]: borderless && !focused,\n [this.styles.disabled(this.theme)]: disabled,\n [this.styles.warning(this.theme)]: warning,\n [this.styles.error(this.theme)]: error,\n }),\n 'aria-controls': ariaControls,\n style: { width, ...corners },\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onMouseOver,\n ref: this.labelRef,\n };\n\n const inputProps: InputElementProps & ClassAttributes<HTMLInputElement> = {\n ...rest,\n className: this.cx(this.styles.input(this.theme), {\n [this.styles.inputFocus(this.theme)]: focused,\n [this.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,\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 const getRightIcon = () => {\n return this.state.clearCrossShowed ? (\n <ClearCrossIcon data-tid={InputDataTids.clearCross} size={this.size} onClick={this.handleClearInput} />\n ) : (\n rightIcon\n );\n };\n return (\n <RenderLayer\n onFocusOutside={this.handleCloseCounterHelp}\n onClickOutside={this.handleCloseCounterHelp}\n active={isCounterVisible}\n >\n <InputLayout\n leftIcon={leftIcon}\n rightIcon={getRightIcon()}\n prefix={prefix}\n suffix={suffix}\n value={value}\n showLengthCounter={showLengthCounter}\n isCounterVisible={isCounterVisible}\n lengthCounter={lengthCounter}\n counterHelp={counterHelp}\n onCloseCounterHelp={this.handleCloseCounterHelp}\n maxLength={this.props.maxLength}\n size={this.size}\n labelProps={labelProps}\n context={{ disabled: Boolean(disabled), focused, size: this.size }}\n >\n {input}\n </InputLayout>\n </RenderLayer>\n );\n };\n\n private handleCloseCounterHelp = () => this.setState({ isCounterVisible: false });\n\n private getSizeClassName() {\n switch (this.size) {\n case 'large':\n return this.cx({\n [this.styles.sizeLarge(this.theme)]: true,\n });\n case 'medium':\n return this.cx({\n [this.styles.sizeMedium(this.theme)]: true,\n });\n case 'small':\n default:\n return this.cx({\n [this.styles.sizeSmall(this.theme)]: true,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | InputElement | null) => {\n if (element && 'input' in element) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleClearInput = () => {\n if (this.input) {\n this.input.value = '';\n }\n\n this.setState({ clearCrossShowed: false });\n\n if (this.props.onValueChange) {\n this.props.onValueChange('');\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\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 const clearCrossShowed = this.getClearCrossShowed({ focused: this.state.focused, hovered: this.state.hovered });\n\n if (this.state.clearCrossShowed !== clearCrossShowed) {\n this.setState({\n clearCrossShowed,\n });\n }\n };\n\n private handleMouseEnter = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: true }),\n });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n private handleMouseLeave = (e: React.MouseEvent<HTMLLabelElement, MouseEvent>) => {\n this.setState({\n hovered: false,\n clearCrossShowed: this.getClearCrossShowed({ focused: this.state.focused, hovered: false }),\n });\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n isCounterVisible: true,\n clearCrossShowed: this.getClearCrossShowed({ focused: true, hovered: this.state.hovered }),\n });\n\n if (this.props.selectAllOnFocus) {\n this.input && this.selectAll();\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 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 const showClearIcon = this.props.showClearIcon;\n if (showClearIcon && getRootNode(this)?.contains(event.relatedTarget)) {\n this.setState({ focused: false });\n } else {\n const clearCrossShowed = this.getClearCrossShowed({ focused: false, hovered: this.state.hovered });\n this.setState({\n focused: false,\n clearCrossShowed,\n });\n this.props.onBlur?.(event);\n }\n };\n}\n"]}
@@ -2,12 +2,14 @@ import React from 'react';
2
2
  import type { CommonProps } from '../../../internal/CommonWrapper/index.js';
3
3
  import type { InputProps } from '../Input.js';
4
4
  import type { InputLayoutContextProps } from './InputLayoutContext.js';
5
- type InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix'>;
5
+ type InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix' | 'value' | 'showLengthCounter' | 'lengthCounter' | 'counterHelp' | 'maxLength' | 'size'>;
6
6
  export interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {
7
7
  labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & {
8
8
  ref?: React.Ref<HTMLLabelElement>;
9
9
  };
10
10
  context: Partial<InputLayoutContextProps>;
11
+ isCounterVisible?: boolean;
12
+ onCloseCounterHelp?: () => void;
11
13
  tag?: 'label' | 'span';
12
14
  }
13
15
  export declare const InputLayout: import("../../../lib/forwardRefAndName.js").ReactUIComponentWithRef<HTMLLabelElement, InputLayoutRootProps> & Record<never, never>;
@@ -17,17 +17,20 @@ import { useStyles } from '../../../lib/renderEnvironment/index.js';
17
17
  import { InputDataTids } from '../Input.js';
18
18
  import { getStylesLayout } from './InputLayout.styles.js';
19
19
  import { InputLayoutAside } from './InputLayoutAside.js';
20
+ import { InputLayoutAsideCounter } from './InputLayoutAsideCounter.js';
20
21
  import { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext.js';
21
22
  export var InputLayout = forwardRefAndName('InputLayout', function (props, ref) {
23
+ var _a;
22
24
  var stylesLayout = useStyles(getStylesLayout);
23
- var leftIcon = props.leftIcon, rightIcon = props.rightIcon, prefix = props.prefix, suffix = props.suffix, labelProps = props.labelProps, context = props.context, children = props.children, _a = props.tag, tag = _a === void 0 ? 'label' : _a;
25
+ var leftIcon = props.leftIcon, rightIcon = props.rightIcon, prefix = props.prefix, suffix = props.suffix, value = props.value, showLengthCounter = props.showLengthCounter, isCounterVisible = props.isCounterVisible, lengthCounter = props.lengthCounter, counterHelp = props.counterHelp, onCloseCounterHelp = props.onCloseCounterHelp, maxLength = props.maxLength, size = props.size, labelProps = props.labelProps, context = props.context, children = props.children, _b = props.tag, tag = _b === void 0 ? 'label' : _b;
24
26
  var _context = __assign(__assign({}, InputLayoutContextDefault), context);
25
27
  var Tag = tag;
28
+ var counter = showLengthCounter && isCounterVisible ? (React.createElement(InputLayoutAsideCounter, { key: "counter", inputValue: value, length: (_a = maxLength !== null && maxLength !== void 0 ? maxLength : lengthCounter) !== null && _a !== void 0 ? _a : 0, help: counterHelp, onCloseHelp: onCloseCounterHelp, size: size })) : undefined;
26
29
  return (React.createElement(InputLayoutContext.Provider, { value: _context },
27
30
  React.createElement(CommonWrapper, __assign({}, props),
28
31
  React.createElement(Tag, __assign({ "data-tid": InputDataTids.root }, labelProps, { ref: mergeRefs(ref, labelProps.ref) }),
29
32
  React.createElement(InputLayoutAside, { icon: leftIcon, text: prefix, side: "left" }),
30
33
  React.createElement("span", { className: stylesLayout.input() }, children),
31
- React.createElement(InputLayoutAside, { icon: rightIcon, text: suffix, side: "right" })))));
34
+ React.createElement(InputLayoutAside, { icon: rightIcon, text: suffix, counter: counter, side: "right" })))));
32
35
  });
33
36
  //# sourceMappingURL=InputLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayout.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAWxF,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAAyC,aAAa,EAAE,UAAC,KAAK,EAAE,GAAG;IAC7G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IACxC,IAAA,QAAQ,GAA8E,KAAK,SAAnF,EAAE,SAAS,GAAmE,KAAK,UAAxE,EAAE,MAAM,GAA2D,KAAK,OAAhE,EAAE,MAAM,GAAmD,KAAK,OAAxD,EAAE,UAAU,GAAuC,KAAK,WAA5C,EAAE,OAAO,GAA8B,KAAK,QAAnC,EAAE,QAAQ,GAAoB,KAAK,SAAzB,EAAE,KAAkB,KAAK,IAAV,EAAb,GAAG,mBAAG,OAAO,KAAA,CAAW;IACpG,IAAM,QAAQ,yBAAiC,yBAAyB,GAAK,OAAO,CAAE,CAAC;IACvF,IAAM,GAAG,GAAG,GAAG,CAAC;IAEhB,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;QAC1C,oBAAC,aAAa,eAAK,KAAK;YACtB,oBAAC,GAAG,yBAAW,aAAa,CAAC,IAAI,IAAM,UAAU,IAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;gBACpF,oBAAC,gBAAgB,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG;gBAC9D,8BAAM,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAG,QAAQ,CAAQ;gBACxD,oBAAC,gBAAgB,IAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,OAAO,GAAG,CAC5D,CACQ,CACY,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type { CommonProps } from '../../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { mergeRefs } from '../../../lib/mergeRefs.js';\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { InputDataTids } from '../Input.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAside } from './InputLayoutAside.js';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext.js';\nimport type { InputLayoutContextProps } from './InputLayoutContext.js';\n\ntype InputLayoutRootFromInputProps = Pick<InputProps, 'leftIcon' | 'rightIcon' | 'prefix' | 'suffix'>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & { ref?: React.Ref<HTMLLabelElement> };\n context: Partial<InputLayoutContextProps>;\n tag?: 'label' | 'span';\n}\n\nexport const InputLayout = forwardRefAndName<HTMLLabelElement, InputLayoutRootProps>('InputLayout', (props, ref) => {\n const stylesLayout = useStyles(getStylesLayout);\n const { leftIcon, rightIcon, prefix, suffix, labelProps, context, children, tag = 'label' } = props;\n const _context: InputLayoutContextProps = { ...InputLayoutContextDefault, ...context };\n const Tag = tag;\n\n return (\n <InputLayoutContext.Provider value={_context}>\n <CommonWrapper {...props}>\n <Tag data-tid={InputDataTids.root} {...labelProps} ref={mergeRefs(ref, labelProps.ref)}>\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n <span className={stylesLayout.input()}>{children}</span>\n <InputLayoutAside icon={rightIcon} text={suffix} side=\"right\" />\n </Tag>\n </CommonWrapper>\n </InputLayoutContext.Provider>\n );\n});\n"]}
1
+ {"version":3,"file":"InputLayout.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAyBxF,MAAM,CAAC,IAAM,WAAW,GAAG,iBAAiB,CAAyC,aAAa,EAAE,UAAC,KAAK,EAAE,GAAG;;IAC7G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAE9C,IAAA,QAAQ,GAgBN,KAAK,SAhBC,EACR,SAAS,GAeP,KAAK,UAfE,EACT,MAAM,GAcJ,KAAK,OAdD,EACN,MAAM,GAaJ,KAAK,OAbD,EACN,KAAK,GAYH,KAAK,MAZF,EACL,iBAAiB,GAWf,KAAK,kBAXU,EACjB,gBAAgB,GAUd,KAAK,iBAVS,EAChB,aAAa,GASX,KAAK,cATM,EACb,WAAW,GAQT,KAAK,YARI,EACX,kBAAkB,GAOhB,KAAK,mBAPW,EAClB,SAAS,GAMP,KAAK,UANE,EACT,IAAI,GAKF,KAAK,KALH,EACJ,UAAU,GAIR,KAAK,WAJG,EACV,OAAO,GAGL,KAAK,QAHA,EACP,QAAQ,GAEN,KAAK,SAFC,EACR,KACE,KAAK,IADM,EAAb,GAAG,mBAAG,OAAO,KAAA,CACL;IACV,IAAM,QAAQ,yBAAiC,yBAAyB,GAAK,OAAO,CAAE,CAAC;IACvF,IAAM,GAAG,GAAG,GAAG,CAAC;IAChB,IAAM,OAAO,GACX,iBAAiB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CACtC,oBAAC,uBAAuB,IACtB,GAAG,EAAC,SAAS,EACb,UAAU,EAAE,KAAK,EACjB,MAAM,EAAE,MAAA,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,aAAa,mCAAI,CAAC,EACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,IAAI,GACV,CACH,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CACL,oBAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ;QAC1C,oBAAC,aAAa,eAAK,KAAK;YACtB,oBAAC,GAAG,yBAAW,aAAa,CAAC,IAAI,IAAM,UAAU,IAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;gBACpF,oBAAC,gBAAgB,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,GAAG;gBAC9D,8BAAM,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,IAAG,QAAQ,CAAQ;gBACxD,oBAAC,gBAAgB,IAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,GAAG,CAC9E,CACQ,CACY,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type { CommonProps } from '../../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../../internal/CommonWrapper/index.js';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName.js';\nimport { mergeRefs } from '../../../lib/mergeRefs.js';\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { InputDataTids } from '../Input.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAside } from './InputLayoutAside.js';\nimport { InputLayoutAsideCounter } from './InputLayoutAsideCounter.js';\nimport { InputLayoutContext, InputLayoutContextDefault } from './InputLayoutContext.js';\nimport type { InputLayoutContextProps } from './InputLayoutContext.js';\n\ntype InputLayoutRootFromInputProps = Pick<\n InputProps,\n | 'leftIcon'\n | 'rightIcon'\n | 'prefix'\n | 'suffix'\n | 'value'\n | 'showLengthCounter'\n | 'lengthCounter'\n | 'counterHelp'\n | 'maxLength'\n | 'size'\n>;\n\nexport interface InputLayoutRootProps extends InputLayoutRootFromInputProps, CommonProps {\n labelProps: React.LabelHTMLAttributes<HTMLLabelElement> & { ref?: React.Ref<HTMLLabelElement> };\n context: Partial<InputLayoutContextProps>;\n isCounterVisible?: boolean;\n onCloseCounterHelp?: () => void;\n tag?: 'label' | 'span';\n}\n\nexport const InputLayout = forwardRefAndName<HTMLLabelElement, InputLayoutRootProps>('InputLayout', (props, ref) => {\n const stylesLayout = useStyles(getStylesLayout);\n const {\n leftIcon,\n rightIcon,\n prefix,\n suffix,\n value,\n showLengthCounter,\n isCounterVisible,\n lengthCounter,\n counterHelp,\n onCloseCounterHelp,\n maxLength,\n size,\n labelProps,\n context,\n children,\n tag = 'label',\n } = props;\n const _context: InputLayoutContextProps = { ...InputLayoutContextDefault, ...context };\n const Tag = tag;\n const counter =\n showLengthCounter && isCounterVisible ? (\n <InputLayoutAsideCounter\n key=\"counter\"\n inputValue={value}\n length={maxLength ?? lengthCounter ?? 0}\n help={counterHelp}\n onCloseHelp={onCloseCounterHelp}\n size={size}\n />\n ) : undefined;\n\n return (\n <InputLayoutContext.Provider value={_context}>\n <CommonWrapper {...props}>\n <Tag data-tid={InputDataTids.root} {...labelProps} ref={mergeRefs(ref, labelProps.ref)}>\n <InputLayoutAside icon={leftIcon} text={prefix} side=\"left\" />\n <span className={stylesLayout.input()}>{children}</span>\n <InputLayoutAside icon={rightIcon} text={suffix} counter={counter} side=\"right\" />\n </Tag>\n </CommonWrapper>\n </InputLayoutContext.Provider>\n );\n});\n"]}
@@ -8,4 +8,10 @@ export declare const getStylesLayout: import("../../../lib/theming/Emotion.js").
8
8
  iconDisabled(t: Theme): string;
9
9
  text(t: Theme): string;
10
10
  textDisabled(t: Theme): string;
11
+ counter(t: Theme): string;
12
+ counterSmall(t: Theme): string;
13
+ counterMedium(t: Theme): string;
14
+ counterLarge(t: Theme): string;
15
+ counterError(t: Theme): string;
16
+ counterHelp(t: Theme): string;
11
17
  }>;
@@ -32,7 +32,25 @@ export var getStylesLayout = memoizeGetStyles(function (emotion) {
32
32
  textDisabled: function (t) {
33
33
  return emotion.css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.inputPlaceholderColorDisabled);
34
34
  },
35
+ counter: function (t) {
36
+ return emotion.css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n font-variant-numeric: tabular-nums;\n color: ", ";\n "], ["\n font-variant-numeric: tabular-nums;\n color: ", ";\n "])), t.inputCounterColor);
37
+ },
38
+ counterSmall: function (t) {
39
+ return emotion.css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftSmall);
40
+ },
41
+ counterMedium: function (t) {
42
+ return emotion.css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftMedium);
43
+ },
44
+ counterLarge: function (t) {
45
+ return emotion.css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterMarginLeftLarge);
46
+ },
47
+ counterError: function (t) {
48
+ return emotion.css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n color: ", ";\n "], ["\n color: ", ";\n "])), t.inputCounterColorError);
49
+ },
50
+ counterHelp: function (t) {
51
+ return emotion.css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n margin-left: ", ";\n "], ["\n margin-left: ", ";\n "])), t.inputCounterHelpMarginLeft);
52
+ },
35
53
  };
36
54
  });
37
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
55
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13;
38
56
  //# sourceMappingURL=InputLayout.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayout.styles.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IAC/D,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,0MAAA,uIAMjB,KAAC;QACJ,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,iOAAA,qIAMF,EAAoB,uBAEnC,KAFe,oBAAoB,EAElC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAgB,WAC1B,KADU,CAAC,CAAC,cAAc,EACzB;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,6HAAA,6CAEP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAA+B,WACzC,KADU,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { ZERO_WIDTH_SPACE_CSS } from '../../../lib/chars.js';\nimport { memoizeGetStyles } from '../../../lib/theming/Emotion.js';\nimport type { Theme } from '../../../lib/theming/Theme.js';\nimport { getStyles } from '../Input.styles.js';\n\nexport const getStylesLayout = memoizeGetStyles((emotion: Emotion) => {\n const styles = getStyles(emotion);\n\n return {\n root(t: Theme) {\n return styles.root(t);\n },\n input() {\n return emotion.css`\n min-width: 0;\n overflow: hidden;\n position: relative;\n width: 100%;\n display: flex;\n `;\n },\n aside() {\n return emotion.css`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::before {\n content: '${ZERO_WIDTH_SPACE_CSS}';\n }\n `;\n },\n icon(t: Theme) {\n return emotion.css`\n color: ${t.inputIconColor};\n `;\n },\n iconFocus(t: Theme) {\n return emotion.css`\n color: ${t.inputFocusedIconColor};\n `;\n },\n iconDisabled(t: Theme) {\n return emotion.css`\n cursor: default;\n color: ${t.inputIconColorDisabled};\n `;\n },\n text(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n textDisabled(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColorDisabled};\n `;\n },\n };\n});\n"]}
1
+ {"version":3,"file":"InputLayout.styles.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayout.styles.ts"],"names":[],"mappings":";;;;AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,IAAM,eAAe,GAAG,gBAAgB,CAAC,UAAC,OAAgB;IAC/D,IAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO;QACL,IAAI,YAAC,CAAQ;YACX,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,0MAAA,uIAMjB,KAAC;QACJ,CAAC;QACD,KAAK;YACH,OAAO,OAAO,CAAC,GAAG,iOAAA,qIAMF,EAAoB,uBAEnC,KAFe,oBAAoB,EAElC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAgB,WAC1B,KADU,CAAC,CAAC,cAAc,EACzB;QACJ,CAAC;QACD,SAAS,YAAC,CAAQ;YAChB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,6HAAA,6CAEP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,IAAI,YAAC,CAAQ;YACX,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAAuB,WACjC,KADU,CAAC,CAAC,qBAAqB,EAChC;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,mGAAA,mBACP,EAA+B,WACzC,KADU,CAAC,CAAC,6BAA6B,EACxC;QACJ,CAAC;QACD,OAAO,YAAC,CAAQ;YACd,OAAO,OAAO,CAAC,GAAG,gJAAA,gEAEP,EAAmB,WAC7B,KADU,CAAC,CAAC,iBAAiB,EAC5B;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,yGAAA,yBACD,EAA6B,WAC7C,KADgB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QACD,aAAa,YAAC,CAAQ;YACpB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA8B,WAC9C,KADgB,CAAC,CAAC,4BAA4B,EAC7C;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA6B,WAC7C,KADgB,CAAC,CAAC,2BAA2B,EAC5C;QACJ,CAAC;QACD,YAAY,YAAC,CAAQ;YACnB,OAAO,OAAO,CAAC,GAAG,qGAAA,mBACP,EAAwB,WAClC,KADU,CAAC,CAAC,sBAAsB,EACjC;QACJ,CAAC;QACD,WAAW,YAAC,CAAQ;YAClB,OAAO,OAAO,CAAC,GAAG,2GAAA,yBACD,EAA4B,WAC5C,KADgB,CAAC,CAAC,0BAA0B,EAC3C;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\n\nimport { ZERO_WIDTH_SPACE_CSS } from '../../../lib/chars.js';\nimport { memoizeGetStyles } from '../../../lib/theming/Emotion.js';\nimport type { Theme } from '../../../lib/theming/Theme.js';\nimport { getStyles } from '../Input.styles.js';\n\nexport const getStylesLayout = memoizeGetStyles((emotion: Emotion) => {\n const styles = getStyles(emotion);\n\n return {\n root(t: Theme) {\n return styles.root(t);\n },\n input() {\n return emotion.css`\n min-width: 0;\n overflow: hidden;\n position: relative;\n width: 100%;\n display: flex;\n `;\n },\n aside() {\n return emotion.css`\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::before {\n content: '${ZERO_WIDTH_SPACE_CSS}';\n }\n `;\n },\n icon(t: Theme) {\n return emotion.css`\n color: ${t.inputIconColor};\n `;\n },\n iconFocus(t: Theme) {\n return emotion.css`\n color: ${t.inputFocusedIconColor};\n `;\n },\n iconDisabled(t: Theme) {\n return emotion.css`\n cursor: default;\n color: ${t.inputIconColorDisabled};\n `;\n },\n text(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColor};\n `;\n },\n textDisabled(t: Theme) {\n return emotion.css`\n color: ${t.inputPlaceholderColorDisabled};\n `;\n },\n counter(t: Theme) {\n return emotion.css`\n font-variant-numeric: tabular-nums;\n color: ${t.inputCounterColor};\n `;\n },\n counterSmall(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftSmall};\n `;\n },\n counterMedium(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftMedium};\n `;\n },\n counterLarge(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterMarginLeftLarge};\n `;\n },\n counterError(t: Theme) {\n return emotion.css`\n color: ${t.inputCounterColorError};\n `;\n },\n counterHelp(t: Theme) {\n return emotion.css`\n margin-left: ${t.inputCounterHelpMarginLeft};\n `;\n },\n };\n});\n"]}
@@ -1,8 +1,10 @@
1
+ import type { ReactElement } from 'react';
1
2
  import React from 'react';
2
3
  import type { InputProps } from '../Input.js';
3
4
  export interface InputLayoutAsideProps {
4
5
  icon: InputProps['leftIcon'] | InputProps['rightIcon'];
5
6
  text: InputProps['prefix'] | InputProps['suffix'];
7
+ counter?: ReactElement;
6
8
  side: 'left' | 'right';
7
9
  }
8
10
  export declare const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps>;
@@ -4,12 +4,12 @@ import { getStylesLayout } from './InputLayout.styles.js';
4
4
  import { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';
5
5
  import { InputLayoutAsideText } from './InputLayoutAsideText.js';
6
6
  export var InputLayoutAside = function (_a) {
7
- var icon = _a.icon, text = _a.text, side = _a.side;
7
+ var icon = _a.icon, text = _a.text, counter = _a.counter, side = _a.side;
8
8
  var stylesLayout = useStyles(getStylesLayout);
9
9
  var asideClassName = stylesLayout.aside();
10
10
  var _icon = React.createElement(InputLayoutAsideIcon, { key: "icon", icon: icon, side: side });
11
11
  var _text = React.createElement(InputLayoutAsideText, { key: "text", text: text });
12
- var child = side === 'left' ? [_icon, _text] : [_text, _icon];
12
+ var child = side === 'left' ? [_icon, _text] : [_text, counter, _icon];
13
13
  return React.createElement("span", { className: asideClassName }, child);
14
14
  };
15
15
  //# sourceMappingURL=InputLayoutAside.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputLayoutAside.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAside.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQjE,MAAM,CAAC,IAAM,gBAAgB,GAAmD,UAAC,EAAoB;QAAlB,IAAI,UAAA,EAAE,IAAI,UAAA,EAAE,IAAI,UAAA;IACjG,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IAC1E,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAE9D,IAAM,KAAK,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEhE,OAAO,8BAAM,SAAS,EAAE,cAAc,IAAG,KAAK,CAAQ,CAAC;AACzD,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';\nimport { InputLayoutAsideText } from './InputLayoutAsideText.js';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, side }) => {\n const stylesLayout = useStyles(getStylesLayout);\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return <span className={asideClassName}>{child}</span>;\n};\n"]}
1
+ {"version":3,"file":"InputLayoutAside.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAside.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AASjE,MAAM,CAAC,IAAM,gBAAgB,GAAmD,UAAC,EAA6B;QAA3B,IAAI,UAAA,EAAE,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,IAAI,UAAA;IAC1G,IAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;IAChD,IAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;IAE5C,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAAC;IAC1E,IAAM,KAAK,GAAG,oBAAC,oBAAoB,IAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAE9D,IAAM,KAAK,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEzE,OAAO,8BAAM,SAAS,EAAE,cAAc,IAAG,KAAK,CAAQ,CAAC;AACzD,CAAC,CAAC","sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\n\nimport { useStyles } from '../../../lib/renderEnvironment/index.js';\nimport type { InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon.js';\nimport { InputLayoutAsideText } from './InputLayoutAsideText.js';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n counter?: ReactElement;\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon, text, counter, side }) => {\n const stylesLayout = useStyles(getStylesLayout);\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, counter, _icon];\n\n return <span className={asideClassName}>{child}</span>;\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { SizeProp } from '../../../lib/types/props.js';
3
+ import { type InputProps } from '../Input.js';
4
+ export interface InputLayoutAsideCounterProps {
5
+ length: number;
6
+ inputValue: InputProps['value'];
7
+ help: InputProps['counterHelp'];
8
+ onCloseHelp?: () => void;
9
+ size?: SizeProp;
10
+ }
11
+ export declare const InputLayoutAsideCounter: React.FunctionComponent<InputLayoutAsideCounterProps>;
@@ -0,0 +1,74 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React, { useCallback } from 'react';
13
+ import { Tooltip } from '../../../components/Tooltip/Tooltip.js';
14
+ import { QuestionCircleIcon16Light } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';
15
+ import { QuestionCircleIcon20Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';
16
+ import { QuestionCircleIcon24Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js';
17
+ import { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';
18
+ import { ThemeContext } from '../../../lib/theming/ThemeContext.js';
19
+ import { isFunction } from '../../../lib/utils.js';
20
+ import { InputDataTids } from '../Input.js';
21
+ import { getStylesLayout } from './InputLayout.styles.js';
22
+ var handleHelpMouseDown = function (e) { return e.preventDefault(); };
23
+ export var InputLayoutAsideCounter = function (_a) {
24
+ var _b;
25
+ var length = _a.length, inputValue = _a.inputValue, help = _a.help, onCloseHelp = _a.onCloseHelp, size = _a.size;
26
+ var theme = React.useContext(ThemeContext);
27
+ var cx = useEmotion().cx;
28
+ var stylesLayout = useStyles(getStylesLayout);
29
+ var renderTooltipContent = useCallback(function () {
30
+ if (typeof help === 'function') {
31
+ return help();
32
+ }
33
+ return help;
34
+ }, [help]);
35
+ var getHelpIcon = function () {
36
+ switch (size) {
37
+ case 'large':
38
+ return React.createElement(QuestionCircleIcon24Regular, __assign({}, helpIconProps));
39
+ case 'medium':
40
+ return React.createElement(QuestionCircleIcon20Regular, __assign({}, helpIconProps));
41
+ case 'small':
42
+ default:
43
+ return React.createElement(QuestionCircleIcon16Light, __assign({}, helpIconProps));
44
+ }
45
+ };
46
+ var helpIconProps = {
47
+ onMouseDown: handleHelpMouseDown,
48
+ color: theme.inputCounterHelpIconColor,
49
+ 'data-tid': InputDataTids.counterHelpIcon,
50
+ style: { cursor: 'pointer' },
51
+ };
52
+ var counterHelp = isFunction(help) ? (help()) : (React.createElement(Tooltip, { pos: 'right bottom', trigger: 'click', render: renderTooltipContent, onCloseClick: onCloseHelp, size: size }, getHelpIcon()));
53
+ var asideClassName = stylesLayout.aside();
54
+ var getCounterSizeClassName = function () {
55
+ switch (size) {
56
+ case 'large':
57
+ return stylesLayout.counterLarge(theme);
58
+ case 'medium':
59
+ return stylesLayout.counterMedium(theme);
60
+ case 'small':
61
+ default:
62
+ return stylesLayout.counterSmall(theme);
63
+ }
64
+ };
65
+ var inputValueLength = inputValue ? inputValue.length : 0;
66
+ var counterValue = length - inputValueLength;
67
+ var isNegativeValue = counterValue < 0;
68
+ return (React.createElement("span", { "data-tid": InputDataTids.counter, className: cx(asideClassName, getCounterSizeClassName(), stylesLayout.counter(theme), (_b = {},
69
+ _b[stylesLayout.counterError(theme)] = isNegativeValue,
70
+ _b)) },
71
+ isNegativeValue ? "\u2013".concat(-counterValue) : counterValue,
72
+ help && React.createElement("span", { className: stylesLayout.counterHelp(theme) }, counterHelp)));
73
+ };
74
+ //# sourceMappingURL=InputLayoutAsideCounter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputLayoutAsideCounter.js","sourceRoot":"","sources":["../../../../components/Input/InputLayout/InputLayoutAsideCounter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { SyntheticEvent } from 'react';\nimport React, { useCallback } from 'react';\n\nimport { Tooltip } from '../../../components/Tooltip/Tooltip.js';\nimport { QuestionCircleIcon16Light } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon16Light.js';\nimport { QuestionCircleIcon20Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon20Regular.js';\nimport { QuestionCircleIcon24Regular } from '../../../internal/icons2022/QuestionCircleIcon/QuestionCircleIcon24Regular.js';\nimport { useEmotion, useStyles } from '../../../lib/renderEnvironment/index.js';\nimport { ThemeContext } from '../../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../../lib/types/props.js';\nimport { isFunction } from '../../../lib/utils.js';\nimport { InputDataTids, type InputProps } from '../Input.js';\nimport { getStylesLayout } from './InputLayout.styles.js';\n\nexport interface InputLayoutAsideCounterProps {\n length: number;\n inputValue: InputProps['value'];\n help: InputProps['counterHelp'];\n onCloseHelp?: () => void;\n size?: SizeProp;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const InputLayoutAsideCounter: React.FunctionComponent<InputLayoutAsideCounterProps> = ({\n length,\n inputValue,\n help,\n onCloseHelp,\n size,\n}) => {\n const theme = React.useContext(ThemeContext);\n const { cx } = useEmotion();\n const stylesLayout = useStyles(getStylesLayout);\n\n const renderTooltipContent = useCallback(() => {\n if (typeof help === 'function') {\n return help();\n }\n return help;\n }, [help]);\n\n const getHelpIcon = () => {\n switch (size) {\n case 'large':\n return <QuestionCircleIcon24Regular {...helpIconProps} />;\n case 'medium':\n return <QuestionCircleIcon20Regular {...helpIconProps} />;\n case 'small':\n default:\n return <QuestionCircleIcon16Light {...helpIconProps} />;\n }\n };\n const helpIconProps = {\n onMouseDown: handleHelpMouseDown,\n color: theme.inputCounterHelpIconColor,\n 'data-tid': InputDataTids.counterHelpIcon,\n style: { cursor: 'pointer' },\n };\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip\n pos={'right bottom'}\n trigger={'click'}\n render={renderTooltipContent}\n onCloseClick={onCloseHelp}\n size={size}\n >\n {getHelpIcon()}\n </Tooltip>\n );\n\n const asideClassName = stylesLayout.aside();\n const getCounterSizeClassName = () => {\n switch (size) {\n case 'large':\n return stylesLayout.counterLarge(theme);\n case 'medium':\n return stylesLayout.counterMedium(theme);\n case 'small':\n default:\n return stylesLayout.counterSmall(theme);\n }\n };\n\n const inputValueLength = inputValue ? inputValue.length : 0;\n const counterValue = length - inputValueLength;\n const isNegativeValue = counterValue < 0;\n\n return (\n <span\n data-tid={InputDataTids.counter}\n className={cx(asideClassName, getCounterSizeClassName(), stylesLayout.counter(theme), {\n [stylesLayout.counterError(theme)]: isNegativeValue,\n })}\n >\n {isNegativeValue ? `–${-counterValue}` : counterValue}\n {help && <span className={stylesLayout.counterHelp(theme)}>{counterHelp}</span>}\n </span>\n );\n};\n"]}
@@ -1,9 +1,12 @@
1
1
  import React from 'react';
2
2
  import type { CommonProps } from '../../internal/CommonWrapper/index.js';
3
3
  import type { TGetRootNode } from '../../lib/rootNode/index.js';
4
+ import type { SizeProp } from '../../lib/types/props.js';
4
5
  import type { AnyObject } from '../../lib/utils.js';
5
6
  import type { SpinnerProps } from '../Spinner/index.js';
6
7
  declare const types: readonly ["mini", "normal", "big"];
8
+ /** @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу `SizeContext`. Они будут удалены в `7.0`.
9
+ * @see {@link SizeProp} */
7
10
  export type LoaderType = (typeof types)[number];
8
11
  export interface LoaderProps extends CommonProps {
9
12
  /** @ignore */
@@ -12,13 +15,16 @@ export interface LoaderProps extends CommonProps {
12
15
  * @default false */
13
16
  active?: boolean;
14
17
  /** Подпись под спиннером.
15
- * @default ""
16
- */
18
+ * @default "" */
17
19
  caption?: SpinnerProps['caption'];
18
20
  /** Задает компонент, заменяющий спиннер. */
19
21
  component?: React.ReactNode;
20
22
  /** Размер спиннера и текста.
21
- * @default normal. */
23
+ * @default small */
24
+ size?: SizeProp;
25
+ /** Размер спиннера и текста.
26
+ * @deprecated Начиная с версии `6.1`, тип и проп устарели в пользу нового `SizeContext`. Они будут удалены в `7.0`.
27
+ * @see {@link size} */
22
28
  type?: LoaderType;
23
29
  /** Время в миллисекундах для показа вуали без спиннера.
24
30
  * @default 300 */
@@ -38,7 +44,7 @@ export declare const LoaderDataTids: {
38
44
  readonly veil: "Loader__Veil";
39
45
  readonly spinner: "Loader__Spinner";
40
46
  };
41
- type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
47
+ type DefaultProps = Required<Pick<LoaderProps, 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
42
48
  /**
43
49
  * С помощью лоадера можно отобразить процесс выполнения задачи.
44
50
  * Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.
@@ -54,6 +60,7 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
54
60
  private cx;
55
61
  private styles;
56
62
  private theme;
63
+ private size;
57
64
  getRootNode: TGetRootNode;
58
65
  private setRootNode;
59
66
  private spinnerContainerNode;
@@ -77,5 +84,6 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
77
84
  private enableChildrenFocus;
78
85
  private makeObservable;
79
86
  private makeUnobservable;
87
+ private typeToSize;
80
88
  }
81
89
  export {};
@@ -42,6 +42,7 @@ import { isBrowser } from '../../lib/globalObject.js';
42
42
  import * as LayoutEvents from '../../lib/LayoutEvents.js';
43
43
  import { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';
44
44
  import { rootNode } from '../../lib/rootNode/index.js';
45
+ import { withSize } from '../../lib/size/SizeDecorator.js';
45
46
  import { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration.js';
46
47
  import { ThemeContext } from '../../lib/theming/ThemeContext.js';
47
48
  import { Spinner } from '../Spinner/index.js';
@@ -162,6 +163,16 @@ var Loader = /** @class */ (function (_super) {
162
163
  (_a = _this.childrenObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
163
164
  _this.childrenObserver = null;
164
165
  };
166
+ _this.typeToSize = function (type) {
167
+ switch (type) {
168
+ case 'mini':
169
+ return 'small';
170
+ case 'normal':
171
+ return 'medium';
172
+ case 'big':
173
+ return 'large';
174
+ }
175
+ };
165
176
  _this.spinnerContainerNode = null;
166
177
  _this.childrenContainerNode = null;
167
178
  _this.childrenObserver = null;
@@ -246,17 +257,17 @@ var Loader = /** @class */ (function (_super) {
246
257
  };
247
258
  Loader.prototype.renderMain = function () {
248
259
  var _a;
249
- var _b = this.props, caption = _b.caption, component = _b.component;
250
- var type = this.getProps().type;
260
+ var _b = this.props, caption = _b.caption, component = _b.component, size = _b.size, type = _b.type;
251
261
  var isLoaderActive = this.state.isLoaderActive;
262
+ var parsedSize = size || !type ? this.size : this.typeToSize(type);
252
263
  return (React.createElement(CommonWrapper, __assign({ rootNodeRef: this.setRootNode }, this.props),
253
264
  React.createElement("div", { className: this.styles.loader(), "data-tid": this.props['data-tid'] || (isLoaderActive ? LoaderDataTids.veil : LoaderDataTids.idle) },
254
265
  React.createElement(ZIndex, { applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children),
255
266
  isLoaderActive && (React.createElement(ZIndex, { wrapperRef: this.spinnerRef, className: this.cx((_a = {},
256
267
  _a[this.styles.active(this.theme)] = isLoaderActive,
257
- _a)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))))));
268
+ _a)) }, this.state.isSpinnerVisible && this.renderSpinner(parsedSize, caption, component))))));
258
269
  };
259
- Loader.prototype.renderSpinner = function (type, caption, component) {
270
+ Loader.prototype.renderSpinner = function (size, caption, component) {
260
271
  var _a;
261
272
  var _this = this;
262
273
  return (React.createElement("span", { "data-tid": LoaderDataTids.spinner, className: this.cx(this.styles.spinnerContainer(), (_a = {},
@@ -264,20 +275,20 @@ var Loader = /** @class */ (function (_super) {
264
275
  _a)), style: this.state.spinnerStyle },
265
276
  React.createElement("div", { className: this.styles.spinnerComponentWrapper(), ref: function (element) {
266
277
  _this.spinnerNode = element;
267
- } }, component !== undefined ? component : React.createElement(Spinner, { type: type, caption: caption }))));
278
+ } }, component !== undefined ? component : React.createElement(Spinner, { size: size, caption: caption }))));
268
279
  };
269
280
  var Loader_1;
270
281
  Loader.__KONTUR_REACT_UI__ = 'Loader';
271
282
  Loader.displayName = 'Loader';
272
283
  Loader.defaultProps = {
273
- type: 'normal',
274
284
  active: false,
275
285
  delayBeforeSpinnerShow: isTestEnv ? 0 : 300,
276
286
  minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,
277
287
  };
278
288
  Loader = Loader_1 = __decorate([
279
289
  withRenderEnvironment,
280
- rootNode
290
+ rootNode,
291
+ withSize
281
292
  ], Loader);
282
293
  return Loader;
283
294
  }(React.Component));