@skbkontur/react-ui 3.8.5 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/cjs/components/Button/Button.d.ts +66 -10
  3. package/cjs/components/Button/Button.js +55 -0
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Button/Button.md +42 -30
  6. package/cjs/components/Checkbox/Checkbox.d.ts +2 -2
  7. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  8. package/cjs/components/ComboBox/ComboBox.d.ts +6 -0
  9. package/cjs/components/ComboBox/ComboBox.js +4 -0
  10. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  11. package/cjs/components/DateInput/DateInput.d.ts +6 -0
  12. package/cjs/components/DateInput/DateInput.js +6 -0
  13. package/cjs/components/DateInput/DateInput.js.map +1 -1
  14. package/cjs/components/DatePicker/DatePicker.d.ts +6 -0
  15. package/cjs/components/DatePicker/DatePicker.js +6 -0
  16. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  17. package/cjs/components/Dropdown/Dropdown.d.ts +2 -2
  18. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  19. package/cjs/components/Hint/Hint.d.ts +5 -0
  20. package/cjs/components/Hint/Hint.js +5 -0
  21. package/cjs/components/Hint/Hint.js.map +1 -1
  22. package/cjs/components/Input/Input.d.ts +6 -2
  23. package/cjs/components/Input/Input.js +4 -0
  24. package/cjs/components/Input/Input.js.map +1 -1
  25. package/cjs/components/Link/Link.js +3 -6
  26. package/cjs/components/Link/Link.js.map +1 -1
  27. package/cjs/components/Link/Link.mixins.js +2 -1
  28. package/cjs/components/Link/Link.mixins.js.map +1 -1
  29. package/cjs/components/Radio/Radio.d.ts +27 -11
  30. package/cjs/components/Radio/Radio.js +19 -6
  31. package/cjs/components/Radio/Radio.js.map +1 -1
  32. package/cjs/components/Radio/Radio.md +36 -12
  33. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
  34. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  35. package/cjs/components/Select/Select.d.ts +4 -1
  36. package/cjs/components/Select/Select.js +3 -0
  37. package/cjs/components/Select/Select.js.map +1 -1
  38. package/cjs/components/Tabs/Tab.d.ts +2 -2
  39. package/cjs/components/Tabs/Tab.js.map +1 -1
  40. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  41. package/cjs/components/Textarea/Textarea.js +4 -0
  42. package/cjs/components/Textarea/Textarea.js.map +1 -1
  43. package/cjs/components/Toggle/Toggle.d.ts +2 -2
  44. package/cjs/components/Toggle/Toggle.js.map +1 -1
  45. package/cjs/components/Token/Token.d.ts +6 -0
  46. package/cjs/components/Token/Token.js +6 -0
  47. package/cjs/components/Token/Token.js.map +1 -1
  48. package/cjs/components/TokenInput/TokenInput.d.ts +6 -0
  49. package/cjs/components/TokenInput/TokenInput.js +6 -0
  50. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  51. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  52. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  53. package/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  54. package/cjs/components/Tooltip/Tooltip.js +2 -1
  55. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  56. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  57. package/cjs/internal/CustomComboBox/ComboBoxView.js +6 -0
  58. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  59. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  60. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -0
  61. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  62. package/cjs/internal/Popup/Popup.d.ts +13 -0
  63. package/cjs/internal/Popup/Popup.js +25 -3
  64. package/cjs/internal/Popup/Popup.js.map +1 -1
  65. package/cjs/internal/Popup/PopupHelper.js +1 -0
  66. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  67. package/components/Button/Button/Button.js.map +1 -1
  68. package/components/Button/Button.d.ts +66 -10
  69. package/components/Button/Button.md +42 -30
  70. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  71. package/components/Checkbox/Checkbox.d.ts +2 -2
  72. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  73. package/components/ComboBox/ComboBox.d.ts +6 -0
  74. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  75. package/components/DateInput/DateInput.d.ts +6 -0
  76. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  77. package/components/DatePicker/DatePicker.d.ts +6 -0
  78. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  79. package/components/Dropdown/Dropdown.d.ts +2 -2
  80. package/components/Hint/Hint/Hint.js.map +1 -1
  81. package/components/Hint/Hint.d.ts +5 -0
  82. package/components/Input/Input/Input.js.map +1 -1
  83. package/components/Input/Input.d.ts +6 -2
  84. package/components/Link/Link/Link.js +4 -8
  85. package/components/Link/Link/Link.js.map +1 -1
  86. package/components/Link/Link.mixins/Link.mixins.js +1 -1
  87. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  88. package/components/Radio/Radio/Radio.js +6 -5
  89. package/components/Radio/Radio/Radio.js.map +1 -1
  90. package/components/Radio/Radio.d.ts +27 -11
  91. package/components/Radio/Radio.md +36 -12
  92. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  93. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  94. package/components/Select/Select/Select.js.map +1 -1
  95. package/components/Select/Select.d.ts +4 -1
  96. package/components/Tabs/Tab/Tab.js.map +1 -1
  97. package/components/Tabs/Tab.d.ts +2 -2
  98. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  99. package/components/Textarea/Textarea.d.ts +6 -2
  100. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  101. package/components/Toggle/Toggle.d.ts +2 -2
  102. package/components/Token/Token/Token.js.map +1 -1
  103. package/components/Token/Token.d.ts +6 -0
  104. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  105. package/components/TokenInput/TokenInput.d.ts +6 -0
  106. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
  107. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  108. package/components/Tooltip/Tooltip/Tooltip.js +2 -1
  109. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  110. package/components/Tooltip/Tooltip.d.ts +3 -3
  111. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  112. package/internal/CustomComboBox/ComboBoxView.d.ts +6 -0
  113. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  114. package/internal/CustomComboBox/CustomComboBox.d.ts +6 -0
  115. package/internal/Popup/Popup/Popup.js +9 -2
  116. package/internal/Popup/Popup/Popup.js.map +1 -1
  117. package/internal/Popup/Popup.d.ts +13 -0
  118. package/internal/Popup/PopupHelper/PopupHelper.js +2 -1
  119. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  120. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Input.tsx"],"names":["Input","state","polyfillPlaceholder","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","raf","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","styles","root","getSizeClassName","focus","blink","focusFallback","isIE11","isEdge","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","React","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","MaskedInput","event","fieldIsEmpty","target","e","isDeleteKey","isKeyBackspace","isKeyDelete","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 error?: boolean;\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":["Input","state","polyfillPlaceholder","blinking","focused","selectAllId","theme","blinkTimeout","input","selectAll","setSelectionRange","value","length","delaySelectAll","cancelDelayedSelectAll","raf","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","styles","root","getSizeClassName","focus","blink","focusFallback","isIE11","isEdge","warningFallback","errorFallback","style","inputProps","inputFocus","inputDisabled","onChange","handleChange","onFocus","handleFocus","handleKeyDown","handleKeyPress","onBlur","handleBlur","textAlign","ref","refInput","isMaskVisible","undefined","renderMaskedInput","React","createElement","sideContainer","renderLeftIcon","renderPrefix","wrapper","renderPlaceholder","rightContainer","renderSuffix","renderRightIcon","element","MaskedInput","event","fieldIsEmpty","target","e","isDeleteKey","isKeyBackspace","isKeyDelete","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"]}
@@ -139,11 +139,8 @@ Link = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Li
139
139
  onClick: _this._handleClick,
140
140
  onFocus: _this._handleFocus,
141
141
  onBlur: _this._handleBlur,
142
- tabIndex: _this.props.tabIndex };
142
+ tabIndex: disabled || loading ? -1 : _this.props.tabIndex };
143
143
 
144
- if (disabled) {
145
- props.tabIndex = -1;
146
- }
147
144
 
148
145
  return /*#__PURE__*/(
149
146
  _react.default.createElement("a", (0, _extends2.default)({}, rest, linkProps),
@@ -171,11 +168,11 @@ Link = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Li
171
168
  };_this.
172
169
 
173
170
  _handleClick = function (event) {var _this$props =
174
- _this.props,href = _this$props.href,onClick = _this$props.onClick,disabled = _this$props.disabled;
171
+ _this.props,href = _this$props.href,onClick = _this$props.onClick,disabled = _this$props.disabled,loading = _this$props.loading;
175
172
  if (!href) {
176
173
  event.preventDefault();
177
174
  }
178
- if (onClick && !disabled) {
175
+ if (onClick && !disabled && !loading) {
179
176
  onClick(event);
180
177
  }
181
178
  };return _this;}var _proto = Link.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this2.props, _this2.renderMain);});};return Link;}(_react.default.Component);exports.Link = Link;Link.__KONTUR_REACT_UI__ = 'Link';Link.propTypes = { disabled: _propTypes.default.bool, href: _propTypes.default.string, icon: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]), use: _propTypes.default.oneOf(['default', 'success', 'danger', 'grayed']) };Link.defaultProps = { href: '', use: 'default' };
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["Link","state","focusedByTab","theme","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","styles","arrow","focused","linkProps","className","root","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","event","requestAnimationFrame","keyListener","isTabPressed","setState","preventDefault","render","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","oneOfType","node","oneOf","defaultProps"],"mappings":"8bAAA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA;AACA;AACA,G;AACaA,I;;;;;;;;;;;;;;;;;;AAkBJC,IAAAA,K,GAAQ;AACbC,MAAAA,YAAY,EAAE,KADD,E;;;AAIPC,IAAAA,K;;;;;;;;;;;;AAYAC,IAAAA,U,GAAa,UAACC,KAAD,EAA8C;AACzDC,MAAAA,QADyD,GAC+BD,KAD/B,CACzDC,QADyD,CAC/CC,IAD+C,GAC+BF,KAD/B,CAC/CE,IAD+C,CACzCC,IADyC,GAC+BH,KAD/B,CACzCG,IADyC,CACnCC,GADmC,GAC+BJ,KAD/B,CACnCI,GADmC,CAC9BC,OAD8B,GAC+BL,KAD/B,CAC9BK,OAD8B,CACrBC,OADqB,GAC+BN,KAD/B,CACrBM,OADqB,CACZC,aADY,GAC+BP,KAD/B,CACZO,aADY,CACQC,SADR,GAC+BR,KAD/B,CACGS,GADH,CACsBC,IADtB,+CAC+BV,KAD/B;;AAGjE,UAAIW,WAAW,GAAG,IAAlB;AACA,UAAIR,IAAJ,EAAU;AACRQ,QAAAA,WAAW;AACT,+CAAM,SAAS,EAAEC,aAAOT,IAAP,CAAY,MAAKL,KAAjB,CAAjB;AACGO,QAAAA,OAAO,gBAAG,6BAAC,gBAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,IAAI,EAAC,MAApC,GAAH,GAAmDF,IAD7D,CADF;;;AAKD;;AAED,UAAIU,KAAK,GAAG,IAAZ;AACA,UAAIP,OAAJ,EAAa;AACXO,QAAAA,KAAK,gBAAG,uCAAM,SAAS,EAAED,aAAOC,KAAP,EAAjB,GAAR;AACD;;AAED,UAAIJ,GAAG,GAAGD,SAAV;AACA,UAAI,OAAOC,GAAP,KAAe,WAAf,IAA8BP,IAAlC,EAAwC;AACtCO,QAAAA,GAAG,iBAAc,2BAAeP,IAAf,IAAuB,aAAvB,GAAuC,EAArD,CAAH;AACD;;AAED,UAAMY,OAAO,GAAG,CAACb,QAAD,IAAa,MAAKL,KAAL,CAAWC,YAAxC;;AAEA,UAAMkB,SAAS,GAAG;AAChBC,QAAAA,SAAS,EAAE;AACRJ,qBAAOK,IAAP,CAAY,MAAKnB,KAAjB,CADQ,IACkB,IADlB;AAERc,qBAAOM,MAAP,CAAc,MAAKpB,KAAnB,CAFQ,IAEoB,CAAC,CAACQ,OAFtB;AAGRM,qBAAOO,YAAP,EAHQ,IAGgB,CAAC,CAACZ,aAHlB;AAIRK,qBAAOQ,UAAP,CAAkB,MAAKtB,KAAvB,CAJQ,IAIwBM,GAAG,KAAK,SAJhC;AAKRQ,qBAAOS,UAAP,CAAkB,MAAKvB,KAAvB,CALQ,IAKwBM,GAAG,KAAK,SALhC;AAMRQ,qBAAOU,SAAP,CAAiB,MAAKxB,KAAtB,CANQ,IAMuBM,GAAG,KAAK,QAN/B;AAORQ,qBAAOW,SAAP,CAAiB,MAAKzB,KAAtB,CAPQ,IAOuBM,GAAG,KAAK,QAP/B;AAQRQ,qBAAOY,cAAP,CAAsB,MAAK1B,KAA3B,CARQ,IAQ4BM,GAAG,KAAK,QAAR,IAAoBU,OARhD;AASRF,qBAAOa,KAAP,CAAa,MAAK3B,KAAlB,CATQ,IASmBgB,OATnB;AAURF,qBAAOX,QAAP,CAAgB,MAAKH,KAArB,CAVQ,IAUsB,CAAC,CAACG,QAAF,IAAc,CAAC,CAACI,OAVtC,OADK;;AAahBH,QAAAA,IAAI,EAAJA,IAbgB;AAchBO,QAAAA,GAAG,EAAHA,GAdgB;AAehBiB,QAAAA,OAAO,EAAE,MAAKC,YAfE;AAgBhBC,QAAAA,OAAO,EAAE,MAAKC,YAhBE;AAiBhBC,QAAAA,MAAM,EAAE,MAAKC,WAjBG;AAkBhBC,QAAAA,QAAQ,EAAE,MAAKhC,KAAL,CAAWgC,QAlBL,EAAlB;;AAoBA,UAAI/B,QAAJ,EAAc;AACZD,QAAAA,KAAK,CAACgC,QAAN,GAAiB,CAAC,CAAlB;AACD;;AAED;AACE,qEAAOtB,IAAP,EAAiBK,SAAjB;AACGJ,QAAAA,WADH;AAEG,cAAKX,KAAL,CAAWiC,QAFd;AAGGpB,QAAAA,KAHH,CADF;;;AAOD,K;;AAEOgB,IAAAA,Y,GAAe,UAACK,KAAD,EAAgD;AACrE,UAAI,CAAC,MAAKlC,KAAL,CAAWC,QAAhB,EAA0B;AACxB;AACA;AACAkC,QAAAA,qBAAqB,CAAC,YAAM;AAC1B,cAAIC,yBAAYC,YAAhB,EAA8B;AAC5B,kBAAKC,QAAL,CAAc,EAAEzC,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJoB,CAArB;AAKD;AACF,K;;AAEOkC,IAAAA,W,GAAc,YAAM;AAC1B,YAAKO,QAAL,CAAc,EAAEzC,YAAY,EAAE,KAAhB,EAAd;AACD,K;;AAEO8B,IAAAA,Y,GAAe,UAACO,KAAD,EAAgD;AACjC,YAAKlC,KAD4B,CAC7DE,IAD6D,eAC7DA,IAD6D,CACvDwB,OADuD,eACvDA,OADuD,CAC9CzB,QAD8C,eAC9CA,QAD8C;AAErE,UAAI,CAACC,IAAL,EAAW;AACTgC,QAAAA,KAAK,CAACK,cAAN;AACD;AACD,UAAIb,OAAO,IAAI,CAACzB,QAAhB,EAA0B;AACxByB,QAAAA,OAAO,CAACQ,KAAD,CAAP;AACD;AACF,K,kDA5FMM,M,GAAP,kBAA6B,mBAC3B,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAC1C,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBAAO,6BAAC,4BAAD,EAAmB,MAAI,CAACE,KAAxB,EAAgC,MAAI,CAACD,UAArC,CAAP,CACD,CAJH,CADF,CAQD,C,eAhCuB0C,eAAMC,S,sBAAnB/C,I,CACGgD,mB,GAAsB,M,CADzBhD,I,CAGGiD,S,GAAY,EACxB3C,QAAQ,EAAE4C,mBAAUC,IADI,EAGxB5C,IAAI,EAAE2C,mBAAUE,MAHQ,EAKxB5C,IAAI,EAAE0C,mBAAUG,SAAV,CAAoB,CAACH,mBAAUE,MAAX,EAAmBF,mBAAUI,IAA7B,CAApB,CALkB,EAOxB7C,GAAG,EAAEyC,mBAAUK,KAAV,CAAgB,CAAC,SAAD,EAAY,SAAZ,EAAuB,QAAvB,EAAiC,QAAjC,CAAhB,CAPmB,E,CAHfvD,I,CAaGwD,Y,GAAe,EAC3BjD,IAAI,EAAE,EADqB,EAE3BE,GAAG,EAAE,SAFsB,E","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\n/**\n * Элемент ссылки из HTML.\n */\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps = {\n href: '',\n use: 'default',\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\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 private renderMain = (props: CommonWrapperRestProps<LinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>\n {loading ? <Spinner caption={null} dimmed type=\"mini\" /> : icon}\n </span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened()]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: this.props.tabIndex,\n };\n if (disabled) {\n props.tabIndex = -1;\n }\n\n return (\n <a {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLAnchorElement>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { href, onClick, disabled } = this.props;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled) {\n onClick(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["Link","state","focusedByTab","theme","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","styles","arrow","focused","linkProps","className","root","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","event","requestAnimationFrame","keyListener","isTabPressed","setState","preventDefault","render","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","oneOfType","node","oneOf","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\n/**\n * Элемент ссылки из HTML.\n */\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps = {\n href: '',\n use: 'default',\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\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 private renderMain = (props: CommonWrapperRestProps<LinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>\n {loading ? <Spinner caption={null} dimmed type=\"mini\" /> : icon}\n </span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened()]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n return (\n <a {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLAnchorElement>) => {\n if (!this.props.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { href, onClick, disabled, loading } = this.props;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n"]}
@@ -11,7 +11,8 @@
11
11
  };exports.linkMixin = linkMixin;
12
12
 
13
13
  var linkDisabledMixin = function linkDisabledMixin() {
14
- return "\n box-shadow: none;\n cursor: default;\n text-decoration: none;\n\n &:hover {\n text-decoration: none;\n }\n ";
14
+ return "\n box-shadow: none;\n cursor: default;\n pointer-events: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: none;\n }\n ";
15
+
15
16
 
16
17
 
17
18
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.mixins.ts"],"names":["linkMixin","hoverTextDecoration","linkDisabledMixin","linkUseColorsMixin","mainColor","hoverColor","activeColor"],"mappings":"2HAAO,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,mBAAD,EAAiC;AACxD;;;;;;AAMuBA,EAAAA,mBANvB;;;AASD,CAVM,C;;AAYA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,GAAM;AACrC;;;;;;;;;AASD,CAVM,C;;AAYA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,SAAD,EAAoBC,UAApB,EAAwCC,WAAxC,EAAgE;AAChG;AACWF,EAAAA,SADX;;;AAIaC,EAAAA,UAJb;;;;AAQaC,EAAAA,WARb;;;AAWD,CAZM,C","sourcesContent":["export const linkMixin = (hoverTextDecoration: string) => {\n return `\n border-radius: 1px;\n outline: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: ${hoverTextDecoration};\n }\n `;\n};\n\nexport const linkDisabledMixin = () => {\n return `\n box-shadow: none;\n cursor: default;\n text-decoration: none;\n\n &:hover {\n text-decoration: none;\n }\n `;\n};\n\nexport const linkUseColorsMixin = (mainColor: string, hoverColor: string, activeColor: string) => {\n return `\n color: ${mainColor};\n\n &:hover {\n color: ${hoverColor};\n }\n\n &:active {\n color: ${activeColor};\n }\n `;\n};\n"]}
1
+ {"version":3,"sources":["Link.mixins.ts"],"names":["linkMixin","hoverTextDecoration","linkDisabledMixin","linkUseColorsMixin","mainColor","hoverColor","activeColor"],"mappings":"2HAAO,IAAMA,SAAS,GAAG,SAAZA,SAAY,CAACC,mBAAD,EAAiC;AACxD;;;;;;AAMuBA,EAAAA,mBANvB;;;AASD,CAVM,C;;AAYA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,GAAM;AACrC;;;;;;;;;;AAUD,CAXM,C;;AAaA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,SAAD,EAAoBC,UAApB,EAAwCC,WAAxC,EAAgE;AAChG;AACWF,EAAAA,SADX;;;AAIaC,EAAAA,UAJb;;;;AAQaC,EAAAA,WARb;;;AAWD,CAZM,C","sourcesContent":["export const linkMixin = (hoverTextDecoration: string) => {\n return `\n border-radius: 1px;\n outline: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: ${hoverTextDecoration};\n }\n `;\n};\n\nexport const linkDisabledMixin = () => {\n return `\n box-shadow: none;\n cursor: default;\n pointer-events: none;\n text-decoration: none;\n\n &:hover {\n text-decoration: none;\n }\n `;\n};\n\nexport const linkUseColorsMixin = (mainColor: string, hoverColor: string, activeColor: string) => {\n return `\n color: ${mainColor};\n\n &:hover {\n color: ${hoverColor};\n }\n\n &:active {\n color: ${activeColor};\n }\n `;\n};\n"]}
@@ -3,30 +3,46 @@ import PropTypes from 'prop-types';
3
3
  import { Override } from '../../typings/utility-types';
4
4
  import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
5
5
  export interface RadioProps<T> extends CommonProps, Override<React.InputHTMLAttributes<HTMLInputElement>, {
6
- /** Состояние ошибки */
6
+ /**
7
+ * Cостояние валидации при ошибке.
8
+ */
7
9
  error?: boolean;
8
- /** Состояние Предупреждения */
10
+ /**
11
+ * Cостояние валидации при предупреждении.
12
+ */
9
13
  warning?: boolean;
10
- /** Состояние фокуса */
14
+ /**
15
+ * Состояние фокуса.
16
+ */
11
17
  focused?: boolean;
12
- /** Состояние нажатия */
13
- pressed?: boolean;
14
- /** Состояние hover */
15
- hovered?: boolean;
16
- /** Состояние active */
17
- active?: boolean;
18
- /** Вызывается при изменении `value` */
18
+ /**
19
+ * Функция, вызываемая при изменении `value`.
20
+ */
19
21
  onValueChange?: (value: T) => void;
22
+ /**
23
+ * HTML-событие `onmouseenter`
24
+ */
20
25
  onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;
26
+ /**
27
+ * HTML-событие `mouseleave`
28
+ */
21
29
  onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;
30
+ /**
31
+ * HTML-событие `onmouseover`
32
+ */
22
33
  onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
23
- /** Значение */
34
+ /**
35
+ * HTML-атрибут `value`.
36
+ */
24
37
  value: T;
25
38
  }> {
26
39
  }
27
40
  export interface RadioState {
28
41
  focusedByKeyboard: boolean;
29
42
  }
43
+ /**
44
+ * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
45
+ */
30
46
  export declare class Radio<T> extends React.Component<RadioProps<T>, RadioState> {
31
47
  static __KONTUR_REACT_UI__: string;
32
48
  state: {
@@ -8,7 +8,7 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
8
8
  var _Emotion = require("../../lib/theming/Emotion");
9
9
  var _keyListener = require("../../lib/events/keyListener");
10
10
 
11
- var _Radio = require("./Radio.styles");var
11
+ var _Radio = require("./Radio.styles");
12
12
 
13
13
 
14
14
 
@@ -41,6 +41,22 @@ var _Radio = require("./Radio.styles");var
41
41
 
42
42
 
43
43
 
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+ /**
58
+ * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.
59
+ */var
44
60
  Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Radio, _React$Component);function Radio() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
45
61
 
46
62
 
@@ -90,10 +106,7 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
90
106
 
91
107
 
92
108
 
93
- renderMain = function (props) {var _cx;var
94
-
95
- active =
96
-
109
+ renderMain = function (props) {var _cx;var _props$disabled =
97
110
 
98
111
 
99
112
 
@@ -104,7 +117,7 @@ Radio = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(R
104
117
 
105
118
 
106
119
 
107
- props.active,_props$disabled = props.disabled,disabled = _props$disabled === void 0 ? _this.context.disabled : _props$disabled,_props$warning = props.warning,warning = _props$warning === void 0 ? _this.context.warning : _props$warning,_props$error = props.error,error = _props$error === void 0 ? _this.context.error : _props$error,focused = props.focused,pressed = props.pressed,hovered = props.hovered,onMouseOver = props.onMouseOver,onMouseEnter = props.onMouseEnter,onMouseLeave = props.onMouseLeave,onValueChange = props.onValueChange,rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["active", "disabled", "warning", "error", "focused", "pressed", "hovered", "onMouseOver", "onMouseEnter", "onMouseLeave", "onValueChange"]);
120
+ props.disabled,disabled = _props$disabled === void 0 ? _this.context.disabled : _props$disabled,_props$warning = props.warning,warning = _props$warning === void 0 ? _this.context.warning : _props$warning,_props$error = props.error,error = _props$error === void 0 ? _this.context.error : _props$error,focused = props.focused,onMouseOver = props.onMouseOver,onMouseEnter = props.onMouseEnter,onMouseLeave = props.onMouseLeave,onValueChange = props.onValueChange,rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["disabled", "warning", "error", "focused", "onMouseOver", "onMouseEnter", "onMouseLeave", "onValueChange"]);
108
121
 
109
122
  var radioProps = {
110
123
  className: (0, _Emotion.cx)((_cx = {}, _cx[
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.tsx"],"names":["Radio","state","focusedByKeyboard","theme","inputEl","React","createRef","renderMain","props","active","disabled","context","warning","error","focused","pressed","hovered","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","styles","radio","checked","focus","checkedDisabled","globalClasses","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","keyListener","isArrowPressed","isTabPressed","setState","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","PropTypes","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 error?: boolean;\n /** Состояние Предупреждения */\n warning?: boolean;\n /** Состояние фокуса */\n focused?: boolean;\n /** Состояние нажатия */\n pressed?: boolean;\n /** Состояние hover */\n hovered?: boolean;\n /** Состояние active */\n active?: boolean;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /** Значение */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\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 active,\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n focused,\n pressed,\n hovered,\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":["Radio","state","focusedByKeyboard","theme","inputEl","React","createRef","renderMain","props","disabled","context","warning","error","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","radioProps","className","styles","radio","checked","focus","checkedDisabled","globalClasses","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","keyListener","isArrowPressed","isTabPressed","setState","render","current","blur","labelClassNames","label","labelDisabled","Component","__KONTUR_REACT_UI__","contextTypes","PropTypes","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,14 +1,38 @@
1
+ Различные виды радио-кнопок.
2
+
3
+ ```jsx harmony
4
+ import { Gapped, Radio, RadioGroup } from '@skbkontur/react-ui';
5
+
6
+ const [chosen, setChosen] = React.useState(null);
7
+
8
+ <RadioGroup onValueChange={(value) => setChosen(value)}>
9
+ <Gapped gap={3} vertical>
10
+ <Radio value={1}>
11
+ Обычная радио-кнопка
12
+ </Radio>
13
+ <Radio value={2} disabled>
14
+ Отключенная радио-кнопка
15
+ </Radio>
16
+ <Radio value={3} checked={!chosen}>
17
+ Радио-кнопка отмеченная по умолчанию
18
+ </Radio>
19
+ <Radio value={4} focused>
20
+ Радио-кнопка в состоянии <b>focused</b> (меняется только обводка)
21
+ </Radio>
22
+ <Radio value={5} error>
23
+ Радио-кнопка в состоянии <b>error</b>
24
+ </Radio>
25
+ <Radio value={6} warning>
26
+ Радио-кнопка в состоянии <b>warning</b>
27
+ </Radio>
28
+ </Gapped>
29
+ </RadioGroup>
30
+ ```
31
+
32
+ Радио-кнопки могут иметь сразу несколько состояний.
33
+
1
34
  ```jsx harmony
2
- import { Gapped, Radio } from '@skbkontur/react-ui';
3
-
4
- <Gapped gap={20}>
5
- <Radio value="value" />
6
- <Radio value="value" disabled />
7
- <Radio value="value" disabled checked />
8
- <Radio value="value" checked />
9
- <Radio value="value" focused />
10
- <Radio value="value" focused checked />
11
- <Radio value="value" error />
12
- <Radio value="value" warning />
13
- </Gapped>;
35
+ <Radio disabled checked warning>
36
+ Отключенная, отмеченная радио-кнопка в состоянии <b>warning</b>
37
+ </Radio>
14
38
  ```
@@ -33,11 +33,11 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
33
33
  */
34
34
  disabled?: boolean;
35
35
  /**
36
- * Переводит все радиокнопки в состояние предупреждения
36
+ * Переводит все радиокнопки в состояние валидации: предупреждение.
37
37
  */
38
38
  warning?: boolean;
39
39
  /**
40
- * Переводит все радиокнопки в состояние ошибки
40
+ * Переводит все радиокнопки в состояние валидации: ошибка.
41
41
  */
42
42
  error?: boolean;
43
43
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","styles","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","React","Component","__KONTUR_REACT_UI__","childContextTypes","PropTypes","bool","string","any","func","propTypes","oneOfType","number","Prevent","_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":["RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","styles","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","React","Component","__KONTUR_REACT_UI__","childContextTypes","PropTypes","bool","string","any","func","propTypes","oneOfType","number","Prevent","_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"]}
@@ -24,7 +24,7 @@ export interface SelectProps<TValue, TItem> extends CommonProps {
24
24
  disablePortal?: boolean;
25
25
  disabled?: boolean;
26
26
  /**
27
- * Визуально показать наличие ошибки.
27
+ * Cостояние валидации при ошибке.
28
28
  */
29
29
  error?: boolean;
30
30
  filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;
@@ -84,6 +84,9 @@ export interface SelectProps<TValue, TItem> extends CommonProps {
84
84
  search?: boolean;
85
85
  value?: TValue;
86
86
  width?: number | string;
87
+ /**
88
+ * Cостояние валидации при предупреждении.
89
+ */
87
90
  warning?: boolean;
88
91
  use?: ButtonUse;
89
92
  size?: ButtonSize;
@@ -142,6 +142,9 @@ var PASS_BUTTON_PROPS = {
142
142
 
143
143
 
144
144
 
145
+
146
+
147
+
145
148
 
146
149
 
147
150