@skbkontur/react-ui 3.9.2 → 3.9.4

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 (81) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/cjs/components/Button/Button.d.ts +3 -0
  3. package/cjs/components/Button/Button.js +8 -1
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Checkbox/Checkbox.d.ts +0 -1
  6. package/cjs/components/Checkbox/Checkbox.js +21 -18
  7. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  8. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +2 -1
  9. package/cjs/components/CurrencyInput/CurrencyInput.js +29 -1
  10. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  11. package/cjs/components/Gapped/Gapped.d.ts +1 -0
  12. package/cjs/components/Gapped/Gapped.js +14 -9
  13. package/cjs/components/Gapped/Gapped.js.map +1 -1
  14. package/cjs/components/Input/Input.d.ts +4 -0
  15. package/cjs/components/Input/Input.js +9 -0
  16. package/cjs/components/Input/Input.js.map +1 -1
  17. package/cjs/components/Loader/Loader.js +2 -1
  18. package/cjs/components/Loader/Loader.js.map +1 -1
  19. package/cjs/components/Radio/Radio.js +4 -1
  20. package/cjs/components/Radio/Radio.js.map +1 -1
  21. package/cjs/components/RadioGroup/RadioGroup.d.ts +9 -10
  22. package/cjs/components/RadioGroup/RadioGroup.js +10 -11
  23. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  24. package/cjs/components/Select/Select.js +3 -2
  25. package/cjs/components/Select/Select.js.map +1 -1
  26. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  27. package/cjs/components/SidePage/SidePage.js +3 -1
  28. package/cjs/components/SidePage/SidePage.js.map +1 -1
  29. package/cjs/internal/Popup/Popup.js +5 -1
  30. package/cjs/internal/Popup/Popup.js.map +1 -1
  31. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  32. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js +20 -0
  33. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  34. package/cjs/lib/getDisplayName.d.ts +3 -0
  35. package/cjs/lib/getDisplayName.js +9 -0
  36. package/cjs/lib/getDisplayName.js.map +1 -0
  37. package/cjs/lib/withClassWrapper.d.ts +71 -0
  38. package/cjs/lib/withClassWrapper.js +59 -0
  39. package/cjs/lib/withClassWrapper.js.map +1 -0
  40. package/components/Button/Button/Button.js +10 -0
  41. package/components/Button/Button/Button.js.map +1 -1
  42. package/components/Button/Button.d.ts +3 -0
  43. package/components/Checkbox/Checkbox/Checkbox.js +18 -20
  44. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  45. package/components/Checkbox/Checkbox.d.ts +0 -1
  46. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +34 -1
  47. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  48. package/components/CurrencyInput/CurrencyInput.d.ts +2 -1
  49. package/components/Gapped/Gapped/Gapped.js +9 -10
  50. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  51. package/components/Gapped/Gapped.d.ts +1 -0
  52. package/components/Input/Input/Input.js +8 -0
  53. package/components/Input/Input/Input.js.map +1 -1
  54. package/components/Input/Input.d.ts +4 -0
  55. package/components/Loader/Loader/Loader.js +3 -2
  56. package/components/Loader/Loader/Loader.js.map +1 -1
  57. package/components/Radio/Radio/Radio.js +4 -1
  58. package/components/Radio/Radio/Radio.js.map +1 -1
  59. package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -0
  60. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  61. package/components/RadioGroup/RadioGroup.d.ts +9 -10
  62. package/components/Select/Select/Select.js +6 -1
  63. package/components/Select/Select/Select.js.map +1 -1
  64. package/components/SidePage/SidePage/SidePage.js +2 -0
  65. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  66. package/components/SidePage/SidePage.d.ts +1 -0
  67. package/internal/Popup/Popup/Popup.js +6 -1
  68. package/internal/Popup/Popup/Popup.js.map +1 -1
  69. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js +19 -0
  70. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  71. package/lib/events/fixFirefoxModifiedClickOnLabel/package.json +6 -0
  72. package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  73. package/lib/getDisplayName/getDisplayName.js +3 -0
  74. package/lib/getDisplayName/getDisplayName.js.map +1 -0
  75. package/lib/getDisplayName/package.json +6 -0
  76. package/lib/getDisplayName.d.ts +3 -0
  77. package/lib/withClassWrapper/package.json +6 -0
  78. package/lib/withClassWrapper/withClassWrapper.js +70 -0
  79. package/lib/withClassWrapper/withClassWrapper.js.map +1 -0
  80. package/lib/withClassWrapper.d.ts +71 -0
  81. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Input.tsx"],"names":["invariant","React","raf","isIE11","isEdge","isKeyBackspace","isKeyDelete","someKeys","polyfillPlaceholder","MaskedInput","ThemeContext","CommonWrapper","cx","styles","Input","state","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","cancelBlink","callback","clearTimeout","setState","renderMain","props","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","warning","leftIcon","rightIcon","borderless","align","type","mask","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","rest","labelProps","className","root","getSizeClassName","focus","blink","focusFallback","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","componentDidMount","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","blur","offsetWidth","window","setTimeout","start","end","Error","document","activeElement","render","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","Function","useDefaultColor","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Boolean","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport React from 'react';\nimport raf from 'raf';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { MaskedInput } from '../../internal/MaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Input.styles';\n\nexport type InputSize = 'small' | 'medium' | 'large';\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = 'password' | 'text';\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport interface InputProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /** Паттерн маски */\n mask?: Nullable<string>;\n /** Символ маски */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /** Показывать символы маски */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: InputSize;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Тип */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает синим.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n polyfillPlaceholder: boolean;\n}\n\n/**\n * Интерфес пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n\n public static defaultProps: {\n size: InputSize;\n } = {\n size: 'small',\n };\n\n public state: InputState = {\n polyfillPlaceholder: false,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout = 0;\n private input: HTMLInputElement | null = null;\n\n public componentDidMount() {\n if (polyfillPlaceholder) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: InputProps) {\n if (polyfillPlaceholder && !nextProps.value) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input!.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input!.blur();\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.input) {\n this.focus();\n }\n\n this.input.setSelectionRange(start, end);\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n style: { width },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n 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: 'text',\n placeholder: !this.isMaskVisible && !polyfillPlaceholder ? placeholder : undefined,\n disabled,\n };\n\n if (type === 'password') {\n inputProps.type = type;\n }\n\n const input = mask ? this.renderMaskedInput(inputProps, mask) : React.createElement('input', inputProps);\n\n return (\n <label {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(\n inputProps: React.InputHTMLAttributes<HTMLInputElement> & {\n capture?: boolean;\n },\n mask: string,\n ) {\n return (\n <MaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (this.state.polyfillPlaceholder && this.props.placeholder && !this.isMaskVisible && !this.props.value) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | MaskedInput | null) => {\n if (element instanceof MaskedInput) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (polyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Input.tsx"],"names":["invariant","React","raf","isIE11","isEdge","isKeyBackspace","isKeyDelete","someKeys","polyfillPlaceholder","MaskedInput","ThemeContext","CommonWrapper","cx","styles","Input","state","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","cancel","cancelBlink","callback","clearTimeout","setState","renderMain","props","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onKeyPress","onValueChange","width","error","warning","leftIcon","rightIcon","borderless","align","type","mask","maskChar","alwaysShowMask","size","placeholder","selectAllOnFocus","disabled","onUnexpectedInput","prefix","suffix","formatChars","rest","labelProps","className","root","getSizeClassName","focus","blink","focusFallback","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","event","fieldIsEmpty","target","e","isDeleteKey","currentTarget","repeat","handleUnexpectedInput","maxLength","handleMaskedValueChange","prefixDisabled","suffixDisabled","componentDidMount","componentWillUnmount","UNSAFE_componentWillReceiveProps","nextProps","blur","getNode","offsetWidth","window","setTimeout","start","end","Error","document","activeElement","render","getIconSizeClassname","right","rightIconLarge","leftIconLarge","rightIconMedium","leftIconMedium","rightIconSmall","leftIconSmall","renderIcon","icon","sizeClassName","iconNode","Function","useDefaultColor","iconDisabled","placeholderDisabled","placeholderFocus","sizeLarge","sizeLargeFallback","sizeMedium","sizeMediumFallback","sizeSmall","sizeSmallFallback","Boolean","Component","__KONTUR_REACT_UI__","defaultProps"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport React from 'react';\nimport raf from 'raf';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { isKeyBackspace, isKeyDelete, someKeys } from '../../lib/events/keyboard/identifiers';\nimport { polyfillPlaceholder } from '../../lib/polyfillPlaceholder';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { MaskedInput } from '../../internal/MaskedInput';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Input.styles';\n\nexport type InputSize = 'small' | 'medium' | 'large';\nexport type InputAlign = 'left' | 'center' | 'right';\nexport type InputType = 'password' | 'text';\nexport type InputIconType = React.ReactNode | (() => React.ReactNode);\n\nexport interface InputProps\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Иконка слева\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n leftIcon?: InputIconType;\n /**\n * Иконка справа\n * Если `ReactNode` применяются дефолтные стили для иконки\n * Если `() => ReactNode` применяются только стили для позиционирование\n */\n rightIcon?: InputIconType;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /** Режим прозрачной рамки */\n borderless?: boolean;\n /** Выравнивание текста */\n align?: InputAlign;\n /** Паттерн маски */\n mask?: Nullable<string>;\n /** Символ маски */\n maskChar?: Nullable<string>;\n /**\n * Словарь символов-регулярок для задания маски\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' }\n */\n formatChars?: Record<string, string>;\n /** Показывать символы маски */\n alwaysShowMask?: boolean;\n /** Размер */\n size?: InputSize;\n /** onValueChange */\n onValueChange?: (value: string) => void;\n /** Вызывается на label */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /** Вызывается на label */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Тип */\n type?: InputType;\n /** Значение */\n value?: string;\n capture?: boolean;\n\n /**\n * Префикс\n * `ReactNode` перед значением, но после иконки\n */\n prefix?: React.ReactNode;\n /**\n * Суффикс\n * `ReactNode` после значения, но перед правой иконкой\n */\n suffix?: React.ReactNode;\n /** Выделять введенное значение при фокусе */\n selectAllOnFocus?: boolean;\n /**\n * Обработчик неправильного ввода.\n * По-умолчанию, инпут вспыхивает синим.\n * Если передан - вызывается переданный обработчик,\n * в таком случае вспыхивание можно вызвать\n * публичным методом инстанса `blink()`.\n *\n * @param value значение инпута.\n */\n onUnexpectedInput?: (value: string) => void;\n }\n > {}\n\nexport interface InputState {\n blinking: boolean;\n focused: boolean;\n polyfillPlaceholder: boolean;\n}\n\n/**\n * Интерфес пропсов наследуется от `React.InputHTMLAttributes<HTMLInputElement>`.\n * Все пропсы кроме перечисленных, `className` и `style` передаются в `<input>`\n */\nexport class Input extends React.Component<InputProps, InputState> {\n public static __KONTUR_REACT_UI__ = 'Input';\n\n public static defaultProps: {\n size: InputSize;\n } = {\n size: 'small',\n };\n\n public state: InputState = {\n polyfillPlaceholder: false,\n blinking: false,\n focused: false,\n };\n\n private selectAllId: number | null = null;\n private theme!: Theme;\n private blinkTimeout = 0;\n private input: HTMLInputElement | null = null;\n\n public componentDidMount() {\n if (polyfillPlaceholder) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n public componentWillUnmount() {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n }\n this.cancelDelayedSelectAll();\n }\n\n public UNSAFE_componentWillReceiveProps(nextProps: InputProps) {\n if (polyfillPlaceholder && !nextProps.value) {\n this.setState({ polyfillPlaceholder: true });\n }\n }\n\n /**\n * @public\n */\n public focus() {\n invariant(this.input, 'Cannot call \"focus\" because Input is not mounted');\n this.input!.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n invariant(this.input, 'Cannot call \"blur\" because Input is not mounted');\n this.input!.blur();\n }\n\n /**\n * @public\n */\n public getNode() {\n return this.input;\n }\n\n /**\n * @public\n */\n public blink() {\n if (this.blinkTimeout) {\n this.cancelBlink(() => {\n // trigger reflow to restart animation\n // @see https://css-tricks.com/restart-css-animation/#article-header-id-0\n void (this.input && this.input.offsetWidth);\n this.blink();\n });\n return;\n }\n this.setState({ blinking: true }, () => {\n this.blinkTimeout = window.setTimeout(this.cancelBlink, 150);\n });\n }\n\n /**\n * @public\n * @param {number} start\n * @param {number} end\n */\n public setSelectionRange(start: number, end: number) {\n if (!this.input) {\n throw new Error('Cannot call \"setSelectionRange\" on unmounted Input');\n }\n\n if (document.activeElement !== this.input) {\n this.focus();\n }\n\n this.input.setSelectionRange(start, end);\n }\n\n public get isMaskVisible(): boolean {\n const { mask, alwaysShowMask } = this.props;\n const { focused } = this.state;\n return Boolean(mask && (focused || alwaysShowMask));\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public selectAll = (): void => {\n if (this.input) {\n this.setSelectionRange(0, this.input.value.length);\n }\n };\n\n private delaySelectAll = (): number => (this.selectAllId = raf(this.selectAll));\n\n private cancelDelayedSelectAll = (): void => {\n if (this.selectAllId) {\n raf.cancel(this.selectAllId);\n this.selectAllId = null;\n }\n };\n\n private cancelBlink = (callback?: () => void): void => {\n if (this.blinkTimeout) {\n clearTimeout(this.blinkTimeout);\n this.blinkTimeout = 0;\n if (this.state.blinking) {\n this.setState({ blinking: false }, callback);\n return;\n }\n }\n if (callback) {\n callback();\n }\n };\n\n private renderMain = (props: CommonWrapperRestProps<InputProps>) => {\n const {\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onKeyPress,\n onValueChange,\n width,\n error,\n warning,\n leftIcon,\n rightIcon,\n borderless,\n value,\n align,\n type,\n mask,\n maskChar,\n alwaysShowMask,\n size,\n placeholder,\n selectAllOnFocus,\n disabled,\n onUnexpectedInput,\n prefix,\n suffix,\n formatChars,\n ...rest\n } = props;\n\n const { blinking, focused } = this.state;\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.getSizeClassName(), {\n [styles.focus(this.theme)]: focused,\n [styles.blink(this.theme)]: blinking,\n [styles.borderless()]: borderless && !focused,\n [styles.disabled(this.theme)]: disabled,\n [styles.warning(this.theme)]: warning,\n [styles.error(this.theme)]: error,\n [styles.focusFallback(this.theme)]: focused && (isIE11 || isEdge),\n [styles.warningFallback(this.theme)]: warning && (isIE11 || isEdge),\n [styles.errorFallback(this.theme)]: error && (isIE11 || isEdge),\n }),\n style: { width },\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n };\n\n const inputProps = {\n ...rest,\n className: cx(styles.input(this.theme), {\n [styles.inputFocus(this.theme)]: focused,\n [styles.inputDisabled(this.theme)]: disabled,\n }),\n value,\n 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: 'text',\n placeholder: !this.isMaskVisible && !polyfillPlaceholder ? placeholder : undefined,\n disabled,\n };\n\n if (type === 'password') {\n inputProps.type = type;\n }\n\n const input = mask ? this.renderMaskedInput(inputProps, mask) : React.createElement('input', inputProps);\n\n return (\n <label {...labelProps}>\n <span className={styles.sideContainer()}>\n {this.renderLeftIcon()}\n {this.renderPrefix()}\n </span>\n <span className={styles.wrapper()}>\n {input}\n {this.renderPlaceholder()}\n </span>\n <span className={cx(styles.sideContainer(), styles.rightContainer())}>\n {this.renderSuffix()}\n {this.renderRightIcon()}\n </span>\n </label>\n );\n };\n\n private renderMaskedInput(\n inputProps: React.InputHTMLAttributes<HTMLInputElement> & {\n capture?: boolean;\n },\n mask: string,\n ) {\n return (\n <MaskedInput\n {...inputProps}\n mask={mask}\n maskChar={this.props.maskChar}\n alwaysShowMask={this.props.alwaysShowMask}\n formatChars={this.props.formatChars}\n onChange={this.props.onChange}\n onValueChange={this.handleMaskedValueChange}\n onUnexpectedInput={this.handleUnexpectedInput}\n />\n );\n }\n\n private getIconSizeClassname(right = false) {\n switch (this.props.size) {\n case 'large':\n return right ? styles.rightIconLarge(this.theme) : styles.leftIconLarge(this.theme);\n case 'medium':\n return right ? styles.rightIconMedium(this.theme) : styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return right ? styles.rightIconSmall(this.theme) : styles.leftIconSmall(this.theme);\n }\n }\n\n private renderLeftIcon() {\n return this.renderIcon(this.props.leftIcon, this.getIconSizeClassname());\n }\n\n private renderRightIcon() {\n return this.renderIcon(this.props.rightIcon, this.getIconSizeClassname(true));\n }\n\n private renderIcon(icon: InputIconType, sizeClassName: string) {\n if (!icon) {\n return null;\n }\n const { disabled } = this.props;\n const iconNode = icon instanceof Function ? icon() : icon;\n\n return (\n <span\n className={cx(styles.icon(), sizeClassName, styles.useDefaultColor(this.theme), {\n [styles.iconDisabled()]: disabled,\n })}\n >\n {iconNode}\n </span>\n );\n }\n\n private renderPlaceholder() {\n const { disabled } = this.props;\n const { focused } = this.state;\n let placeholder = null;\n\n if (this.state.polyfillPlaceholder && this.props.placeholder && !this.isMaskVisible && !this.props.value) {\n placeholder = (\n <div\n className={cx(styles.placeholder(this.theme), {\n [styles.placeholderDisabled(this.theme)]: disabled,\n [styles.placeholderFocus(this.theme)]: focused,\n })}\n style={{ textAlign: this.props.align || 'inherit' }}\n >\n {this.props.placeholder}\n </div>\n );\n }\n\n return placeholder;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx({\n [styles.sizeLarge(this.theme)]: true,\n [styles.sizeLargeFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'medium':\n return cx({\n [styles.sizeMedium(this.theme)]: true,\n [styles.sizeMediumFallback(this.theme)]: isIE11 || isEdge,\n });\n case 'small':\n default:\n return cx({\n [styles.sizeSmall(this.theme)]: true,\n [styles.sizeSmallFallback(this.theme)]: isIE11 || isEdge,\n });\n }\n }\n\n private refInput = (element: HTMLInputElement | MaskedInput | null) => {\n if (element instanceof MaskedInput) {\n this.input = element.input;\n } else {\n this.input = element;\n }\n };\n\n private handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (polyfillPlaceholder) {\n const fieldIsEmpty = event.target.value === '';\n if (this.state.polyfillPlaceholder !== fieldIsEmpty) {\n this.setState({ polyfillPlaceholder: fieldIsEmpty });\n }\n }\n\n if (this.props.onValueChange) {\n this.props.onValueChange(event.target.value);\n }\n\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({\n focused: true,\n });\n\n if (this.props.selectAllOnFocus) {\n // https://github.com/facebook/react/issues/7769\n this.input && !isIE11 ? this.selectAll() : this.delaySelectAll();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n\n const isDeleteKey = someKeys(isKeyBackspace, isKeyDelete)(e);\n\n if (!e.currentTarget.value && isDeleteKey && !e.repeat) {\n this.handleUnexpectedInput();\n }\n };\n\n private handleKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyPress) {\n this.props.onKeyPress(event);\n }\n\n if (this.props.maxLength === event.currentTarget.value.length) {\n this.handleUnexpectedInput(event.currentTarget.value);\n }\n };\n\n private handleMaskedValueChange = (value: string) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private handleUnexpectedInput = (value: string = this.props.value || '') => {\n if (this.props.onUnexpectedInput) {\n this.props.onUnexpectedInput(value);\n } else {\n this.blink();\n }\n };\n\n private handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n this.setState({ focused: false });\n\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n private renderPrefix = () => {\n const { prefix, disabled } = this.props;\n\n if (!prefix) {\n return null;\n }\n\n return (\n <span className={cx(styles.prefix(this.theme), { [styles.prefixDisabled(this.theme)]: disabled })}>{prefix}</span>\n );\n };\n\n private renderSuffix = () => {\n const { suffix, disabled } = this.props;\n\n if (!suffix) {\n return null;\n }\n\n return (\n <span className={cx(styles.suffix(this.theme), { [styles.suffixDisabled(this.theme)]: disabled })}>{suffix}</span>\n );\n };\n}\n"]}
@@ -110,6 +110,10 @@ export declare class Input extends React.Component<InputProps, InputState> {
110
110
  * @public
111
111
  */
112
112
  blur(): void;
113
+ /**
114
+ * @public
115
+ */
116
+ getNode(): HTMLInputElement | null;
113
117
  /**
114
118
  * @public
115
119
  */
@@ -129,9 +129,10 @@ export var Loader = /*#__PURE__*/function (_React$Component) {
129
129
  };
130
130
 
131
131
  _this.enableChildrenFocus = function () {
132
- _this.makeUnobservable();
132
+ _this.makeUnobservable(); // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers
133
133
 
134
- document.querySelectorAll('[origin-tabindex]').forEach(function (el) {
134
+
135
+ Array.from(document.querySelectorAll('[origin-tabindex]')).forEach(function (el) {
135
136
  var _el$getAttribute;
136
137
 
137
138
  el.setAttribute('tabindex', (_el$getAttribute = el.getAttribute('origin-tabindex')) != null ? _el$getAttribute : '0');
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","styles","Loader","props","theme","spinnerContainerNode","childrenContainerNode","spinnerNode","layoutEvents","spinnerTask","childrenObserver","childrenRef","element","spinnerRef","checkSpinnerPosition","getBoundingClientRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","disableChildrenFocus","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","renderMain","type","caption","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = this.spinnerContainerNode.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n if (this.spinnerNode) {\n const spinnerHeight = this.spinnerNode.getBoundingClientRect().height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n document.querySelectorAll('[origin-tabindex]').forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
1
+ {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","styles","Loader","props","theme","spinnerContainerNode","childrenContainerNode","spinnerNode","layoutEvents","spinnerTask","childrenObserver","childrenRef","element","spinnerRef","checkSpinnerPosition","getBoundingClientRect","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","disableChildrenFocus","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","renderMain","type","caption","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","defaultProps","Types","normal","propTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\n/**\n * DRAFT - лоадер-контейнер\n */\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? 'Loader__Veil' : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={'Loader__Spinner'}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = this.spinnerContainerNode.getBoundingClientRect();\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n if (this.spinnerNode) {\n const spinnerHeight = this.spinnerNode.getBoundingClientRect().height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
@@ -7,6 +7,7 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
7
7
  import { CommonWrapper } from "../../../internal/CommonWrapper";
8
8
  import { cx } from "../../../lib/theming/Emotion";
9
9
  import { keyListener } from "../../../lib/events/keyListener";
10
+ import { fixFirefoxModifiedClickOnLabel } from "../../../lib/events/fixFirefoxModifiedClickOnLabel";
10
11
  import { styles, globalClasses } from "../Radio.styles";
11
12
  /**
12
13
  * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
@@ -70,7 +71,8 @@ export var Radio = /*#__PURE__*/function (_React$Component) {
70
71
  className: cx(styles.root(_this.theme), _this.props.checked && styles.rootChecked(_this.theme)),
71
72
  onMouseOver: _this.handleMouseOver,
72
73
  onMouseEnter: _this.handleMouseEnter,
73
- onMouseLeave: _this.handleMouseLeave
74
+ onMouseLeave: _this.handleMouseLeave,
75
+ onClick: fixFirefoxModifiedClickOnLabel(_this.inputEl)
74
76
  };
75
77
 
76
78
  if (_this._isInRadioGroup()) {
@@ -80,6 +82,7 @@ export var Radio = /*#__PURE__*/function (_React$Component) {
80
82
  inputProps.checked = checked;
81
83
  inputProps.name = _this.context.name;
82
84
  inputProps.suppressHydrationWarning = true;
85
+ labelProps.className = cx(styles.root(_this.theme), checked && styles.rootChecked(_this.theme));
83
86
  radioProps.className = cx(radioProps.className, (_cx2 = {}, _cx2[styles.checked(_this.theme)] = checked, _cx2[styles.checkedDisabled(_this.theme)] = checked && disabled, _cx2));
84
87
  }
85
88
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.tsx"],"names":["React","PropTypes","ThemeContext","CommonWrapper","cx","keyListener","styles","globalClasses","Radio","state","focusedByKeyboard","theme","inputEl","createRef","renderMain","props","disabled","context","warning","error","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","radio","checked","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","root","rootChecked","handleMouseOver","handleMouseEnter","handleMouseLeave","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderLabel","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","any","func","string","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static contextTypes = {\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n name: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n private theme!: Theme;\n private inputEl = React.createRef<HTMLInputElement>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.radio(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.radio]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.props.checked && styles.rootChecked(this.theme)),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderLabel()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderLabel() {\n const labelClassNames = cx({\n [styles.label(this.theme)]: true,\n [styles.labelDisabled()]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={labelClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
1
+ {"version":3,"sources":["Radio.tsx"],"names":["React","PropTypes","ThemeContext","CommonWrapper","cx","keyListener","fixFirefoxModifiedClickOnLabel","styles","globalClasses","Radio","state","focusedByKeyboard","theme","inputEl","createRef","renderMain","props","disabled","context","warning","error","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","radio","checked","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","root","rootChecked","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","placeholder","children","renderLabel","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","any","func","string","bool","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\n\nimport { styles, globalClasses } from './Radio.styles';\n\nexport interface RadioProps<T>\n extends CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static contextTypes = {\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n name: PropTypes.string,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n warning: PropTypes.bool,\n };\n\n public static defaultProps = {\n focused: false,\n };\n\n private theme!: Theme;\n private inputEl = React.createRef<HTMLInputElement>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n\n const radioProps = {\n className: cx({\n [styles.radio(this.theme)]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [styles.focus(this.theme)]: this.props.focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.radio]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: cx(styles.root(this.theme), this.props.checked && styles.rootChecked(this.theme)),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = cx(styles.root(this.theme), checked && styles.rootChecked(this.theme));\n radioProps.className = cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label {...labelProps}>\n <input {...inputProps} />\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderLabel()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderLabel() {\n const labelClassNames = cx({\n [styles.label(this.theme)]: true,\n [styles.labelDisabled()]: !!(this.props.disabled || this.context.disabled),\n });\n\n return <div className={labelClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.props.onBlur?.(e);\n this.setState({ focusedByKeyboard: false });\n };\n}\n"]}
@@ -57,6 +57,16 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
57
57
  import { cx } from "../../../lib/theming/Emotion";
58
58
  import { styles } from "../RadioGroup.styles";
59
59
  import { Prevent } from "../Prevent";
60
+ /**
61
+ *
62
+ * `children` может содержать любую разметку с компонентами Radio,
63
+ * если не передан параметр `items`.
64
+ * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
65
+ * как и параметр `value` самой радиогруппы.
66
+ *
67
+ * Значения активного элемента сравниваются по строгому равенству `===`
68
+ */
69
+
60
70
  export var RadioGroup = /*#__PURE__*/function (_React$Component) {
61
71
  _inheritsLoose(RadioGroup, _React$Component);
62
72
 
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | [T, React.ReactNode][];\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n /**\n * Может быть использовано, если не передан параметр `items`\n *\n * `children` может содержать любую разметку с компонентами Radio.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n children?: React.ReactNode;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static childContextTypes = {\n error: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n };\n\n public static propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inline: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n public getChildContext() {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width != null ? width : 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n {this.renderChildren()}\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => this.props.value != null;\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | [T, React.ReactNode][],\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
1
+ {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | [T, React.ReactNode][];\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\n/**\n *\n * `children` может содержать любую разметку с компонентами Radio,\n * если не передан параметр `items`.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n\n public static childContextTypes = {\n error: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n disabled: PropTypes.bool,\n activeItem: PropTypes.any,\n onSelect: PropTypes.func,\n };\n\n public static propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n inline: PropTypes.bool,\n name: PropTypes.string,\n warning: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onBlur: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n public getChildContext() {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width != null ? width : 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n {this.renderChildren()}\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => this.props.value != null;\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | [T, React.ReactNode][],\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
@@ -60,20 +60,19 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
60
60
  onMouseLeave?: () => any;
61
61
  onMouseOver?: () => any;
62
62
  onMouseEnter?: () => any;
63
- /**
64
- * Может быть использовано, если не передан параметр `items`
65
- *
66
- * `children` может содержать любую разметку с компонентами Radio.
67
- * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
68
- * как и параметр `value` самой радиогруппы.
69
- *
70
- * Значения активного элемента сравниваются по строгому равенству `===`
71
- */
72
- children?: React.ReactNode;
73
63
  }
74
64
  export interface RadioGroupState<T> {
75
65
  activeItem?: T;
76
66
  }
67
+ /**
68
+ *
69
+ * `children` может содержать любую разметку с компонентами Radio,
70
+ * если не передан параметр `items`.
71
+ * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
72
+ * как и параметр `value` самой радиогруппы.
73
+ *
74
+ * Значения активного элемента сравниваются по строгому равенству `===`
75
+ */
77
76
  export declare class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {
78
77
  static __KONTUR_REACT_UI__: string;
79
78
  static childContextTypes: {
@@ -210,9 +210,13 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
210
210
  };
211
211
 
212
212
  _this.handleSearch = function (value) {
213
+ var _this$menu;
214
+
213
215
  _this.setState({
214
216
  searchPattern: value
215
217
  });
218
+
219
+ (_this$menu = _this.menu) == null ? void 0 : _this$menu.highlightItem(1);
216
220
  };
217
221
 
218
222
  _this.buttonRef = function (element) {
@@ -374,7 +378,8 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
374
378
  var _this4 = this;
375
379
 
376
380
  var search = this.props.search ? /*#__PURE__*/React.createElement("div", {
377
- className: styles.search()
381
+ className: styles.search(),
382
+ onKeyDown: this.handleKey
378
383
  }, /*#__PURE__*/React.createElement(Input, {
379
384
  ref: this.focusInput,
380
385
  onValueChange: this.handleSearch,