@skbkontur/react-ui 3.8.0 → 3.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +54 -2
  2. package/README.md +1 -1
  3. package/cjs/components/Center/Center.d.ts +4 -8
  4. package/cjs/components/Center/Center.js +1 -6
  5. package/cjs/components/Center/Center.js.map +1 -1
  6. package/cjs/components/Center/Center.md +24 -3
  7. package/cjs/components/Checkbox/Checkbox.styles.js +1 -2
  8. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  9. package/cjs/components/CurrencyLabel/CurrencyLabel.js +5 -14
  10. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  11. package/cjs/components/DateInput/DateInput.js +4 -1
  12. package/cjs/components/DateInput/DateInput.js.map +1 -1
  13. package/cjs/components/DateInput/DateInput.styles.d.ts +2 -0
  14. package/cjs/components/DateInput/DateInput.styles.js +13 -1
  15. package/cjs/components/DateInput/DateInput.styles.js.map +1 -1
  16. package/cjs/components/DatePicker/DatePicker.d.ts +3 -2
  17. package/cjs/components/DatePicker/DatePicker.js +12 -5
  18. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  19. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  20. package/cjs/components/Dropdown/Dropdown.js +1 -0
  21. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  22. package/cjs/components/Dropdown/Dropdown.md +0 -1
  23. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +17 -3
  24. package/cjs/components/DropdownMenu/DropdownMenu.js +15 -1
  25. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  26. package/cjs/components/DropdownMenu/DropdownMenu.md +87 -6
  27. package/cjs/components/Kebab/Kebab.d.ts +5 -2
  28. package/cjs/components/Kebab/Kebab.js +5 -1
  29. package/cjs/components/Kebab/Kebab.js.map +1 -1
  30. package/cjs/components/Kebab/Kebab.md +249 -3
  31. package/cjs/components/MenuHeader/MenuHeader.d.ts +5 -1
  32. package/cjs/components/MenuHeader/MenuHeader.js +5 -1
  33. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  34. package/cjs/components/MenuHeader/MenuHeader.md +23 -0
  35. package/cjs/components/MenuItem/MenuItem.d.ts +10 -1
  36. package/cjs/components/MenuItem/MenuItem.js +11 -1
  37. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  38. package/cjs/components/MenuItem/MenuItem.md +106 -4
  39. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +3 -1
  40. package/cjs/components/MenuSeparator/MenuSeparator.js +3 -1
  41. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  42. package/cjs/components/MenuSeparator/MenuSeparator.md +14 -0
  43. package/cjs/components/RadioGroup/RadioGroup.d.ts +51 -61
  44. package/cjs/components/RadioGroup/RadioGroup.js +25 -71
  45. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  46. package/cjs/components/Select/Select.js +6 -1
  47. package/cjs/components/Select/Select.js.map +1 -1
  48. package/cjs/components/Select/Select.styles.d.ts +1 -0
  49. package/cjs/components/Select/Select.styles.js +15 -9
  50. package/cjs/components/Select/Select.styles.js.map +1 -1
  51. package/cjs/components/Select/selectTheme.js +5 -1
  52. package/cjs/components/Select/selectTheme.js.map +1 -1
  53. package/cjs/components/Textarea/Textarea.d.ts +0 -2
  54. package/cjs/components/Textarea/Textarea.js +6 -3
  55. package/cjs/components/Textarea/Textarea.js.map +1 -1
  56. package/cjs/components/Toggle/Toggle.d.ts +47 -1
  57. package/cjs/components/Toggle/Toggle.js +51 -2
  58. package/cjs/components/Toggle/Toggle.js.map +1 -1
  59. package/cjs/components/Toggle/Toggle.md +83 -9
  60. package/cjs/components/Toggle/Toggle.styles.d.ts +2 -0
  61. package/cjs/components/Toggle/Toggle.styles.js +14 -9
  62. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  63. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +26 -8
  64. package/cjs/components/TooltipMenu/TooltipMenu.js +24 -6
  65. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  66. package/cjs/components/TooltipMenu/TooltipMenu.md +76 -8
  67. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  68. package/cjs/internal/CommonWrapper/CommonWrapper.js +8 -0
  69. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  70. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  71. package/cjs/internal/InputLikeText/InputLikeText.js +7 -3
  72. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  73. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
  74. package/cjs/internal/InputLikeText/InputLikeText.styles.js +1 -1
  75. package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  76. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  77. package/cjs/internal/themes/DefaultTheme.d.ts +4 -0
  78. package/cjs/internal/themes/DefaultTheme.js +12 -0
  79. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  80. package/components/Center/Center/Center.js +1 -2
  81. package/components/Center/Center/Center.js.map +1 -1
  82. package/components/Center/Center.d.ts +4 -8
  83. package/components/Center/Center.md +24 -3
  84. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
  85. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  86. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +5 -11
  87. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  88. package/components/DateInput/DateInput/DateInput.js +9 -4
  89. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  90. package/components/DateInput/DateInput.styles/DateInput.styles.js +7 -1
  91. package/components/DateInput/DateInput.styles/DateInput.styles.js.map +1 -1
  92. package/components/DateInput/DateInput.styles.d.ts +2 -0
  93. package/components/DatePicker/DatePicker/DatePicker.js +12 -4
  94. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  95. package/components/DatePicker/DatePicker.d.ts +3 -2
  96. package/components/Dropdown/Dropdown/Dropdown.js +1 -0
  97. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  98. package/components/Dropdown/Dropdown.d.ts +1 -0
  99. package/components/Dropdown/Dropdown.md +0 -1
  100. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
  101. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  102. package/components/DropdownMenu/DropdownMenu.d.ts +17 -3
  103. package/components/DropdownMenu/DropdownMenu.md +87 -6
  104. package/components/Kebab/Kebab/Kebab.js +2 -1
  105. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  106. package/components/Kebab/Kebab.d.ts +5 -2
  107. package/components/Kebab/Kebab.md +249 -3
  108. package/components/MenuHeader/MenuHeader/MenuHeader.js +5 -1
  109. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  110. package/components/MenuHeader/MenuHeader.d.ts +5 -1
  111. package/components/MenuHeader/MenuHeader.md +23 -0
  112. package/components/MenuItem/MenuItem/MenuItem.js +4 -1
  113. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  114. package/components/MenuItem/MenuItem.d.ts +10 -1
  115. package/components/MenuItem/MenuItem.md +106 -4
  116. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +3 -1
  117. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  118. package/components/MenuSeparator/MenuSeparator.d.ts +3 -1
  119. package/components/MenuSeparator/MenuSeparator.md +14 -0
  120. package/components/RadioGroup/RadioGroup/RadioGroup.js +0 -72
  121. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  122. package/components/RadioGroup/RadioGroup.d.ts +51 -61
  123. package/components/Select/Select/Select.js +2 -2
  124. package/components/Select/Select/Select.js.map +1 -1
  125. package/components/Select/Select.styles/Select.styles.js +12 -9
  126. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  127. package/components/Select/Select.styles.d.ts +1 -0
  128. package/components/Select/selectTheme/selectTheme.js +4 -1
  129. package/components/Select/selectTheme/selectTheme.js.map +1 -1
  130. package/components/Textarea/Textarea/Textarea.js +1 -2
  131. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  132. package/components/Textarea/Textarea.d.ts +0 -2
  133. package/components/Toggle/Toggle/Toggle.js +10 -4
  134. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  135. package/components/Toggle/Toggle.d.ts +47 -1
  136. package/components/Toggle/Toggle.md +83 -9
  137. package/components/Toggle/Toggle.styles/Toggle.styles.js +8 -5
  138. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  139. package/components/Toggle/Toggle.styles.d.ts +2 -0
  140. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +9 -6
  141. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  142. package/components/TooltipMenu/TooltipMenu.d.ts +26 -8
  143. package/components/TooltipMenu/TooltipMenu.md +76 -8
  144. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  145. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  146. package/internal/InputLikeText/InputLikeText/InputLikeText.js +5 -3
  147. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  148. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  149. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +1 -1
  150. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
  151. package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -1
  152. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  153. package/internal/themes/DefaultTheme/DefaultTheme.js +20 -0
  154. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  155. package/internal/themes/DefaultTheme.d.ts +4 -0
  156. package/package.json +2 -2
  157. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
  158. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +0 -9
  159. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +0 -1
  160. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +0 -10
  161. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +0 -1
  162. package/components/CurrencyLabel/CurrencyLabel.styles/package.json +0 -6
  163. package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +0 -4
@@ -9,7 +9,10 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
9
9
  import { cx } from "../../../lib/theming/Emotion";
10
10
  import { styles } from "../MenuItem.styles";
11
11
  /**
12
- * Элемент меню.
12
+ *
13
+ * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
14
+ *
15
+ * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
13
16
  */
14
17
 
15
18
  export var MenuItem = /*#__PURE__*/function (_React$Component) {
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","ThemeContext","CommonWrapper","cx","styles","MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /** @ignore */\n _enableIconPadding?: boolean;\n\n comment?: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactElement<any>;\n link?: boolean;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n\n component?: React.ComponentType<any>;\n}\n\n/**\n * Элемент меню.\n */\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\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 private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const { link, comment, icon, loose, state, _enableIconPadding, component, onMouseEnter, onMouseLeave, ...rest } =\n props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = (child: React.ReactNode): child is React.ReactElement<MenuItemProps> => {\n return React.isValidElement<MenuItemProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_ITEM__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isFunction","ThemeContext","CommonWrapper","cx","styles","MenuItem","theme","mouseEntered","renderMain","props","link","comment","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","rest","hover","disabled","iconElement","className","root","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","oneOfType","target","onClick","func","isMenuItem","child","isValidElement","Object","prototype","hasOwnProperty","call","type"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /** @ignore */\n _enableIconPadding?: boolean;\n\n comment?: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactElement<any>;\n\n /**\n * Меняет цвет текста на синий\n */\n link?: boolean;\n\n /** @ignore */\n loose?: boolean;\n\n /** @ignore */\n state?: MenuItemState;\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут title\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n onMouseEnter?: React.MouseEventHandler;\n onMouseLeave?: React.MouseEventHandler;\n\n component?: React.ComponentType<any>;\n}\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\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 private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const { link, comment, icon, loose, state, _enableIconPadding, component, onMouseEnter, onMouseLeave, ...rest } =\n props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid=\"MenuItem__comment\"\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = (child: React.ReactNode): child is React.ReactElement<MenuItemProps> => {\n return React.isValidElement<MenuItemProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__MENU_ITEM__')\n : false;\n};\n"]}
@@ -8,6 +8,9 @@ export interface MenuItemProps extends CommonProps {
8
8
  comment?: React.ReactNode;
9
9
  disabled?: boolean;
10
10
  icon?: React.ReactElement<any>;
11
+ /**
12
+ * Меняет цвет текста на синий
13
+ */
11
14
  link?: boolean;
12
15
  /** @ignore */
13
16
  loose?: boolean;
@@ -16,6 +19,9 @@ export interface MenuItemProps extends CommonProps {
16
19
  onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
17
20
  children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);
18
21
  target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
22
+ /**
23
+ * HTML-атрибут title
24
+ */
19
25
  title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];
20
26
  href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];
21
27
  onMouseEnter?: React.MouseEventHandler;
@@ -23,7 +29,10 @@ export interface MenuItemProps extends CommonProps {
23
29
  component?: React.ComponentType<any>;
24
30
  }
25
31
  /**
26
- * Элемент меню.
32
+ *
33
+ * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.
34
+ *
35
+ * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
27
36
  */
28
37
  export declare class MenuItem extends React.Component<MenuItemProps> {
29
38
  static __KONTUR_REACT_UI__: string;
@@ -1,7 +1,109 @@
1
+ Меню с базовыми элементами меню.
2
+
3
+ ```jsx harmony
4
+ import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
+
6
+ <DropdownMenu
7
+ caption={<Button use="primary">Открыть меню с базовыми элементами меню</Button>}
8
+ >
9
+ <MenuItem>Базовый элемент меню</MenuItem>
10
+ <MenuItem>Ещё один базовый элемент меню</MenuItem>
11
+ <MenuItem>И ещё один</MenuItem>
12
+ </DropdownMenu>
13
+ ```
14
+
15
+ Меню с отключёнными и базовыми элементами меню.
16
+ <br/>
17
+ К отключённым элементам меню не применяются стили при наведении и их нельзя затаргетить с клавиатуры.
18
+
1
19
  ```jsx harmony
2
- import { Link } from '@skbkontur/react-ui';
20
+ import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
21
+
22
+ <DropdownMenu
23
+ caption={<Button use="primary">Открыть меню с базовыми и отключёнными элементами</Button>}
24
+ >
25
+ <MenuItem>Это базовый элемент меню</MenuItem>
26
+ <MenuItem disabled>А это отключённый</MenuItem>
27
+ <MenuItem>А это снова базовый</MenuItem>
28
+ <MenuItem disabled>И снова отключённый</MenuItem>
29
+ <MenuItem disabled>И вот ещё один отключённый</MenuItem>
30
+ </DropdownMenu>
31
+ ```
32
+
33
+ Меню с элементами меню содержащими описание.
34
+
35
+ ```jsx harmony
36
+ import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
37
+
38
+ <DropdownMenu
39
+ caption={<Button use="primary">Открыть меню с причастными к Pied Piper</Button>}
40
+ >
41
+ <MenuItem comment="Системный инженер">Bertram Gilfoyle</MenuItem>
42
+ <MenuItem comment="Hooli CEO">Gavin Belson</MenuItem>
43
+ <MenuItem comment="Java-разработчик">Dinesh Chugtai</MenuItem>
44
+ <MenuItem comment="Основатель Pied Piper">Richard Hendricks</MenuItem>
45
+ <MenuItem comment="Владелец инкубатора">Erlich Bachman</MenuItem>
46
+ </DropdownMenu>
47
+ ```
48
+
49
+ Меню с элементами меню содержащими иконки.
50
+
51
+ ```jsx harmony
52
+ import { Button, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
53
+ import DeviceSmartphoneIcon from '@skbkontur/react-icons/DeviceSmartphone';
54
+ import OkIcon from '@skbkontur/react-icons/Ok';
55
+ import ThumbDownIcon from '@skbkontur/react-icons/ThumbDown';
56
+
57
+
58
+ <DropdownMenu
59
+ caption={<Button use="primary">Открыть меню с иконками</Button>}
60
+ >
61
+ <MenuItem icon={<OkIcon />}>Базовый элемент меню c иконкой</MenuItem>
62
+ <MenuItem
63
+ disabled
64
+ icon={<ThumbDownIcon />}
65
+ >
66
+ Отключённый элемент меню с иконкой
67
+ </MenuItem>
68
+ <MenuItem
69
+ icon={<DeviceSmartphoneIcon />}
70
+ comment="А слева вы можете видеть икону 21-го века"
71
+ >
72
+ Элемент меню с описанием и иконкой
73
+ </MenuItem>
74
+ </DropdownMenu>
75
+ ```
76
+
77
+ Меню с элементами меню обёрнутыми в контрол ссылки.
78
+
79
+ ```jsx harmony
80
+ import { Button, MenuItem, DropdownMenu, Link } from '@skbkontur/react-ui';
81
+
82
+ const LinkMenuItem = ({link, title}) => {
83
+ return <MenuItem
84
+ href={link}
85
+ component={({ href, ...rest }) => {
86
+ return <Link target="_blank" rel="noopener noreferrer" href={href} {...rest} />
87
+ }}
88
+ >
89
+ {title}
90
+ </MenuItem>
91
+ }
3
92
 
4
- <MenuItem href="//tech.skbkontur.ru/react-ui/" component={({ href, ...rest }) => <Link to={href} {...rest} />}>
5
- Awesome link
6
- </MenuItem>;
93
+ <DropdownMenu
94
+ caption={<Button use="primary">Открыть меню с ссылками</Button>}
95
+ >
96
+ <LinkMenuItem
97
+ link="http://tech.skbkontur.ru/react-ui/"
98
+ title="Начало документации"
99
+ />
100
+ <LinkMenuItem
101
+ link="https://guides.kontur.ru/"
102
+ title="Контур Гайды"
103
+ />
104
+ <LinkMenuItem
105
+ link="https://github.com/skbkontur/retail-ui/graphs/contributors"
106
+ title="Список прекрасных людей"
107
+ />
108
+ </DropdownMenu>
7
109
  ```
@@ -3,7 +3,9 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
3
3
  import { CommonWrapper } from "../../../internal/CommonWrapper";
4
4
  import { styles } from "../MenuSeparator.styles";
5
5
  /**
6
- * Разделитель в меню.
6
+ * Добавляет разделительную линию между элементами меню.
7
+ *
8
+ * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
7
9
  */
8
10
 
9
11
  function MenuSeparator(props) {
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparator","props","theme","root","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;AAGA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGN,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBI,KAAnB;AACE,iCAAK,SAAS,EAAEF,MAAM,CAACI,IAAP,CAAYD,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACI,mBAAd,GAAoC,eAApC;;AAEA,SAASJ,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n * Разделитель в меню.\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
1
+ {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparator","props","theme","root","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGN,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBI,KAAnB;AACE,iCAAK,SAAS,EAAEF,MAAM,CAACI,IAAP,CAAYD,KAAZ,CAAhB,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACI,mBAAd,GAAoC,eAApC;;AAEA,SAASJ,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n/**\n * Добавляет разделительную линию между элементами меню.\n *\n * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\nfunction MenuSeparator(props: MenuSeparatorProps) {\n const theme = useContext(ThemeContext);\n\n return (\n <CommonWrapper {...props}>\n <div className={styles.root(theme)} />\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
@@ -1,7 +1,9 @@
1
1
  import { CommonProps } from '../../internal/CommonWrapper';
2
2
  export declare type MenuSeparatorProps = CommonProps;
3
3
  /**
4
- * Разделитель в меню.
4
+ * Добавляет разделительную линию между элементами меню.
5
+ *
6
+ * Сущности в которых может быть использован `MenuSeparator`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).
5
7
  */
6
8
  declare function MenuSeparator(props: MenuSeparatorProps): JSX.Element;
7
9
  declare namespace MenuSeparator {
@@ -0,0 +1,14 @@
1
+ Пример меню с разделителями.
2
+
3
+ ```jsx harmony
4
+ import { Button, MenuHeader, MenuItem, DropdownMenu } from '@skbkontur/react-ui';
5
+
6
+ <DropdownMenu caption={<Button use="primary">Открыть меню с разделителями</Button>}>
7
+ <MenuItem>У меня есть разделитель</MenuItem>
8
+ <MenuSeparator />
9
+ <MenuItem>У меня тоже!</MenuItem>
10
+ <MenuSeparator />
11
+ <MenuItem>А у меня нет :(</MenuItem>
12
+ <MenuItem>Как и у меня :(</MenuItem>
13
+ </DropdownMenu>;
14
+ ```
@@ -203,85 +203,13 @@ RadioGroup.childContextTypes = {
203
203
  onSelect: PropTypes.func
204
204
  };
205
205
  RadioGroup.propTypes = {
206
- /**
207
- * Может быть использовано, если не передан параметр `items`
208
- *
209
- * `children` может содержать любую разметку с компонентами Radio.
210
- * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
211
- * как и параметр `value` самой радиогруппы.
212
- *
213
- * Значения активного элемента сравниваются по строгому равенству `===`
214
- */
215
206
  children: PropTypes.node,
216
-
217
- /**
218
- * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок
219
- * или значей из параметра `items`
220
- */
221
- defaultValue: PropTypes.any,
222
-
223
- /**
224
- * Дизейблит все радиокнопки
225
- */
226
207
  disabled: PropTypes.bool,
227
-
228
- /**
229
- * Переводит все радиокнопки в состоянии ошибки
230
- */
231
208
  error: PropTypes.bool,
232
-
233
- /**
234
- * Выравнивает элементы в строку. Не работает с `children`
235
- */
236
209
  inline: PropTypes.bool,
237
-
238
- /**
239
- * Может быть использовано, если не передан параметр `children`
240
- *
241
- * Массив параметров радиокнопок. Может быть типа `Array<Value>` или
242
- * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`
243
- * — значение которое будет использовано вторым параметром в `renderItem`.
244
- * Если тип `items: Array<Value>`, то он будет приведен к типу
245
- * `Array<[Value, Value]>`
246
- */
247
- items: PropTypes.any,
248
-
249
- /**
250
- * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется
251
- * случайное имя по алгоритму
252
- * [uuid v1](https://github.com/kelektiv/node-uuid#version-1)
253
- */
254
210
  name: PropTypes.string,
255
-
256
- /**
257
- * Метод отрисовки контента радиокнопки. Не работает с `children`.
258
- *
259
- * Принимает два аргумента: `(value: Value, data: Data) => React.Node`
260
- */
261
- renderItem: PropTypes.func,
262
-
263
- /**
264
- * Значение радиогруппы. Должно быть одним из значений радиокнопок.
265
- * Если не указано, то компонент будет работать, как неконтроллируемый
266
- */
267
- value: PropTypes.any,
268
-
269
- /**
270
- * Переводит все радиокнопки в состоянии предупреждения
271
- */
272
211
  warning: PropTypes.bool,
273
-
274
- /**
275
- * Ширина радиогруппы. Не работает с `children`
276
- */
277
212
  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
278
-
279
- /**
280
- * Обработчик события при переключении радиокнопок.
281
- * Имеет тип
282
- * `(value: Value) => any`
283
- */
284
- onValueChange: PropTypes.func,
285
213
  onBlur: PropTypes.func,
286
214
  onMouseEnter: PropTypes.func,
287
215
  onMouseLeave: PropTypes.func,
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n defaultValue?: T;\n value?: T;\n items?: T[] | [T, React.ReactNode][];\n name?: string;\n disabled?: boolean;\n warning?: boolean;\n error?: boolean;\n inline?: boolean;\n width?: React.CSSProperties['width'];\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\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 /**\n * Может быть использовано, если не передан параметр `items`\n *\n * `children` может содержать любую разметку с компонентами Radio.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n children: PropTypes.node,\n\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значей из параметра `items`\n */\n defaultValue: PropTypes.any,\n\n /**\n * Дизейблит все радиокнопки\n */\n disabled: PropTypes.bool,\n\n /**\n * Переводит все радиокнопки в состоянии ошибки\n */\n error: PropTypes.bool,\n\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline: PropTypes.bool,\n\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: PropTypes.any,\n\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя по алгоритму\n * [uuid v1](https://github.com/kelektiv/node-uuid#version-1)\n */\n name: PropTypes.string,\n\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem: PropTypes.func,\n\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value: PropTypes.any,\n\n /**\n * Переводит все радиокнопки в состоянии предупреждения\n */\n warning: PropTypes.bool,\n\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /**\n * Обработчик события при переключении радиокнопок.\n * Имеет тип\n * `(value: Value) => any`\n */\n onValueChange: PropTypes.func,\n\n onBlur: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n };\n\n public static defaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n public getChildContext() {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur } = this.props;\n const style = {\n width: width != null ? width : 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n\n return (\n <CommonWrapper {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span ref={this.ref} style={style} className={styles.root()} {...handlers}>\n {this.renderChildren()}\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => this.props.value != null;\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const itemProps = {\n key: typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : index,\n className: cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps}>\n <Radio value={itemValue}>{this.getProps().renderItem<T>(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | [T, React.ReactNode][],\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
1
+ {"version":3,"sources":["RadioGroup.tsx"],"names":["React","PropTypes","invariant","getRandomID","Radio","createPropsGetter","FocusTrap","ThemeContext","CommonWrapper","cx","styles","Prevent","RadioGroup","props","theme","node","name","getProps","defaultProps","getValue","isControlled","value","state","activeItem","getName","handleSelect","setState","onValueChange","renderRadio","itemValue","data","index","itemProps","key","className","item","itemFirst","itemInline","inline","renderItem","ref","element","defaultValue","getChildContext","onSelect","disabled","error","warning","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","style","handlers","root","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","childContextTypes","bool","string","any","func","propTypes","oneOfType","number","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport { getRandomID } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтроллируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | [T, React.ReactNode][];\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние предупреждения\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние ошибки\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n /**\n * Может быть использовано, если не передан параметр `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"]}
@@ -3,15 +3,56 @@ import PropTypes from 'prop-types';
3
3
  import { CommonProps } from '../../internal/CommonWrapper';
4
4
  import { Prevent } from './Prevent';
5
5
  export interface RadioGroupProps<T = string | number> extends CommonProps {
6
+ /**
7
+ * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок
8
+ * или значений из параметра `items`
9
+ */
6
10
  defaultValue?: T;
11
+ /**
12
+ * Значение радиогруппы. Должно быть одним из значений радиокнопок.
13
+ * Если не указано, то компонент будет работать, как неконтроллируемый
14
+ */
7
15
  value?: T;
16
+ /**
17
+ * Может быть использовано, если не передан параметр `children`
18
+ *
19
+ * Массив параметров радиокнопок. Может быть типа `Array<Value>` или
20
+ * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`
21
+ * — значение которое будет использовано вторым параметром в `renderItem`.
22
+ * Если тип `items: Array<Value>`, то он будет приведен к типу
23
+ * `Array<[Value, Value]>`
24
+ */
8
25
  items?: T[] | [T, React.ReactNode][];
26
+ /**
27
+ * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется
28
+ * случайное имя
29
+ */
9
30
  name?: string;
31
+ /**
32
+ * Дизейблит все радиокнопки
33
+ */
10
34
  disabled?: boolean;
35
+ /**
36
+ * Переводит все радиокнопки в состояние предупреждения
37
+ */
11
38
  warning?: boolean;
39
+ /**
40
+ * Переводит все радиокнопки в состояние ошибки
41
+ */
12
42
  error?: boolean;
43
+ /**
44
+ * Выравнивает элементы в строку. Не работает с `children`
45
+ */
13
46
  inline?: boolean;
47
+ /**
48
+ * Ширина радиогруппы. Не работает с `children`
49
+ */
14
50
  width?: React.CSSProperties['width'];
51
+ /**
52
+ * Метод отрисовки контента радиокнопки. Не работает с `children`.
53
+ *
54
+ * Принимает два аргумента: `(value: Value, data: Data) => React.Node`
55
+ */
15
56
  renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;
16
57
  /** Вызывается при изменении `value` */
17
58
  onValueChange?: (value: T) => void;
@@ -19,6 +60,16 @@ export interface RadioGroupProps<T = string | number> extends CommonProps {
19
60
  onMouseLeave?: () => any;
20
61
  onMouseOver?: () => any;
21
62
  onMouseEnter?: () => any;
63
+ /**
64
+ * Может быть использовано, если не передан параметр `items`
65
+ *
66
+ * `children` может содержать любую разметку с компонентами Radio.
67
+ * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
68
+ * как и параметр `value` самой радиогруппы.
69
+ *
70
+ * Значения активного элемента сравниваются по строгому равенству `===`
71
+ */
72
+ children?: React.ReactNode;
22
73
  }
23
74
  export interface RadioGroupState<T> {
24
75
  activeItem?: T;
@@ -34,74 +85,13 @@ export declare class RadioGroup<T> extends React.Component<RadioGroupProps<T>, R
34
85
  onSelect: PropTypes.Requireable<(...args: any[]) => any>;
35
86
  };
36
87
  static propTypes: {
37
- /**
38
- * Может быть использовано, если не передан параметр `items`
39
- *
40
- * `children` может содержать любую разметку с компонентами Radio.
41
- * Каждому компоненту Radio нужно указать параметр `value`, такого же типа
42
- * как и параметр `value` самой радиогруппы.
43
- *
44
- * Значения активного элемента сравниваются по строгому равенству `===`
45
- */
46
88
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
47
- /**
48
- * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок
49
- * или значей из параметра `items`
50
- */
51
- defaultValue: PropTypes.Requireable<any>;
52
- /**
53
- * Дизейблит все радиокнопки
54
- */
55
89
  disabled: PropTypes.Requireable<boolean>;
56
- /**
57
- * Переводит все радиокнопки в состоянии ошибки
58
- */
59
90
  error: PropTypes.Requireable<boolean>;
60
- /**
61
- * Выравнивает элементы в строку. Не работает с `children`
62
- */
63
91
  inline: PropTypes.Requireable<boolean>;
64
- /**
65
- * Может быть использовано, если не передан параметр `children`
66
- *
67
- * Массив параметров радиокнопок. Может быть типа `Array<Value>` или
68
- * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`
69
- * — значение которое будет использовано вторым параметром в `renderItem`.
70
- * Если тип `items: Array<Value>`, то он будет приведен к типу
71
- * `Array<[Value, Value]>`
72
- */
73
- items: PropTypes.Requireable<any>;
74
- /**
75
- * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется
76
- * случайное имя по алгоритму
77
- * [uuid v1](https://github.com/kelektiv/node-uuid#version-1)
78
- */
79
92
  name: PropTypes.Requireable<string>;
80
- /**
81
- * Метод отрисовки контента радиокнопки. Не работает с `children`.
82
- *
83
- * Принимает два аргумента: `(value: Value, data: Data) => React.Node`
84
- */
85
- renderItem: PropTypes.Requireable<(...args: any[]) => any>;
86
- /**
87
- * Значение радиогруппы. Должно быть одним из значений радиокнопок.
88
- * Если не указано, то компонент будет работать, как неконтроллируемый
89
- */
90
- value: PropTypes.Requireable<any>;
91
- /**
92
- * Переводит все радиокнопки в состоянии предупреждения
93
- */
94
93
  warning: PropTypes.Requireable<boolean>;
95
- /**
96
- * Ширина радиогруппы. Не работает с `children`
97
- */
98
94
  width: PropTypes.Requireable<string | number>;
99
- /**
100
- * Обработчик события при переключении радиокнопок.
101
- * Имеет тип
102
- * `(value: Value) => any`
103
- */
104
- onValueChange: PropTypes.Requireable<(...args: any[]) => any>;
105
95
  onBlur: PropTypes.Requireable<(...args: any[]) => any>;
106
96
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
107
97
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
@@ -322,7 +322,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
322
322
  };
323
323
 
324
324
  _proto.renderDefaultButton = function renderDefaultButton(params) {
325
- var _cx;
325
+ var _cx, _cx2;
326
326
 
327
327
  var buttonProps = _extends({}, filterProps(this.props, PASS_BUTTON_PROPS), {
328
328
  align: 'left',
@@ -345,7 +345,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), _dec(_class =
345
345
  }, this.props._icon && /*#__PURE__*/React.createElement("div", {
346
346
  className: this.getLeftIconClass(this.props.size)
347
347
  }, this.props._icon), /*#__PURE__*/React.createElement("span", labelProps, params.label), /*#__PURE__*/React.createElement("div", {
348
- className: cx(styles.arrowWrap(this.theme), useIsCustom && styles.customUseArrow())
348
+ className: cx(styles.arrowWrap(this.theme), (_cx2 = {}, _cx2[styles.arrowDisabled(this.theme)] = this.props.disabled, _cx2[styles.customUseArrow()] = useIsCustom, _cx2))
349
349
  }, /*#__PURE__*/React.createElement(ArrowChevronDownIcon, null))));
350
350
  };
351
351