@skbkontur/react-ui 4.11.0 → 4.12.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 (204) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +2 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +31 -7
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/locale/index.d.ts +4 -0
  6. package/cjs/components/Autocomplete/locale/index.js +11 -0
  7. package/cjs/components/Autocomplete/locale/index.js.map +1 -0
  8. package/cjs/components/Autocomplete/locale/locales/en.d.ts +2 -0
  9. package/cjs/components/Autocomplete/locale/locales/en.js +6 -0
  10. package/cjs/components/Autocomplete/locale/locales/en.js.map +1 -0
  11. package/cjs/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  12. package/cjs/components/Autocomplete/locale/locales/ru.js +6 -0
  13. package/cjs/components/Autocomplete/locale/locales/ru.js.map +1 -0
  14. package/cjs/components/Autocomplete/locale/types.d.ts +5 -0
  15. package/cjs/components/Autocomplete/locale/types.js +1 -0
  16. package/cjs/components/Autocomplete/locale/types.js.map +1 -0
  17. package/cjs/components/ComboBox/ComboBox.md +42 -0
  18. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  19. package/cjs/components/Dropdown/Dropdown.d.ts +2 -1
  20. package/cjs/components/Dropdown/Dropdown.js +3 -1
  21. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  22. package/cjs/components/DropdownMenu/DropdownMenu.md +27 -0
  23. package/cjs/components/Hint/Hint.d.ts +0 -3
  24. package/cjs/components/Hint/Hint.js +2 -27
  25. package/cjs/components/Hint/Hint.js.map +1 -1
  26. package/cjs/components/Hint/Hint.md +29 -0
  27. package/cjs/components/Hint/Hint.styles.d.ts +0 -1
  28. package/cjs/components/Hint/Hint.styles.js +2 -10
  29. package/cjs/components/Hint/Hint.styles.js.map +1 -1
  30. package/cjs/components/MenuItem/MenuItem.js +10 -8
  31. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  32. package/cjs/components/MenuItem/MenuItem.styles.d.ts +5 -1
  33. package/cjs/components/MenuItem/MenuItem.styles.js +28 -12
  34. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  35. package/cjs/components/MenuSeparator/MenuSeparator.js +12 -1
  36. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  37. package/cjs/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  38. package/cjs/components/MenuSeparator/MenuSeparator.styles.js +8 -1
  39. package/cjs/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
  40. package/cjs/components/Modal/Modal.js +1 -5
  41. package/cjs/components/Modal/Modal.js.map +1 -1
  42. package/cjs/components/Select/Select.d.ts +2 -1
  43. package/cjs/components/Select/Select.js +13 -8
  44. package/cjs/components/Select/Select.js.map +1 -1
  45. package/cjs/components/SidePage/SidePage.js +0 -2
  46. package/cjs/components/SidePage/SidePage.js.map +1 -1
  47. package/cjs/components/Toast/Toast.d.ts +6 -3
  48. package/cjs/components/Toast/Toast.js +15 -8
  49. package/cjs/components/Toast/Toast.js.map +1 -1
  50. package/cjs/components/Toast/Toast.md +129 -0
  51. package/cjs/components/Toast/ToastStatic.d.ts +3 -2
  52. package/cjs/components/Toast/ToastStatic.js +5 -5
  53. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  54. package/cjs/components/Tooltip/Tooltip.d.ts +0 -2
  55. package/cjs/components/Tooltip/Tooltip.js +3 -23
  56. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  57. package/cjs/components/TooltipMenu/TooltipMenu.md +27 -0
  58. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  59. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  60. package/cjs/internal/CustomComboBox/ComboBoxView.js +0 -1
  61. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  62. package/cjs/internal/Menu/Menu.d.ts +1 -0
  63. package/cjs/internal/Menu/Menu.js +20 -8
  64. package/cjs/internal/Menu/Menu.js.map +1 -1
  65. package/cjs/internal/Menu/Menu.styles.d.ts +2 -0
  66. package/cjs/internal/Menu/Menu.styles.js +19 -6
  67. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  68. package/cjs/internal/MenuMessage/MenuMessage.d.ts +10 -0
  69. package/cjs/internal/MenuMessage/MenuMessage.js +42 -0
  70. package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -0
  71. package/cjs/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  72. package/cjs/internal/MenuMessage/MenuMessage.styles.js +33 -0
  73. package/cjs/internal/MenuMessage/MenuMessage.styles.js.map +1 -0
  74. package/cjs/internal/MenuMessage/index.d.ts +1 -0
  75. package/cjs/internal/MenuMessage/index.js +1 -0
  76. package/cjs/internal/MenuMessage/index.js.map +1 -0
  77. package/cjs/internal/MobilePopup/MobilePopup.d.ts +13 -12
  78. package/cjs/internal/MobilePopup/MobilePopup.js +6 -60
  79. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  80. package/cjs/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  81. package/cjs/internal/MobilePopup/MobilePopup.styles.js +22 -24
  82. package/cjs/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  83. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  84. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +26 -37
  85. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  86. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  87. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +8 -32
  88. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  89. package/cjs/internal/Popup/Popup.js +1 -1
  90. package/cjs/internal/Popup/Popup.js.map +1 -1
  91. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  92. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  93. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  94. package/cjs/internal/themes/DefaultTheme.d.ts +22 -3
  95. package/cjs/internal/themes/DefaultTheme.js +52 -7
  96. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  97. package/cjs/lib/locale/LOCALECONTEXT.md +1 -0
  98. package/cjs/typings/html-props.d.ts +2 -2
  99. package/components/Autocomplete/Autocomplete/Autocomplete.js +27 -6
  100. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  101. package/components/Autocomplete/Autocomplete.d.ts +2 -0
  102. package/components/Autocomplete/locale/index/index.js +8 -0
  103. package/components/Autocomplete/locale/index/index.js.map +1 -0
  104. package/components/Autocomplete/locale/index/package.json +6 -0
  105. package/components/Autocomplete/locale/index.d.ts +4 -0
  106. package/components/Autocomplete/locale/locales/en/en.js +5 -0
  107. package/components/Autocomplete/locale/locales/en/en.js.map +1 -0
  108. package/components/Autocomplete/locale/locales/en/package.json +6 -0
  109. package/components/Autocomplete/locale/locales/en.d.ts +2 -0
  110. package/components/Autocomplete/locale/locales/ru/package.json +6 -0
  111. package/components/Autocomplete/locale/locales/ru/ru.js +5 -0
  112. package/components/Autocomplete/locale/locales/ru/ru.js.map +1 -0
  113. package/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  114. package/components/Autocomplete/locale/package.json +6 -0
  115. package/components/Autocomplete/locale/types/package.json +6 -0
  116. package/components/Autocomplete/locale/types/types.js +1 -0
  117. package/components/Autocomplete/locale/types/types.js.map +1 -0
  118. package/components/Autocomplete/locale/types.d.ts +5 -0
  119. package/components/ComboBox/ComboBox.md +42 -0
  120. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +1 -1
  121. package/components/Dropdown/Dropdown/Dropdown.js +2 -1
  122. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  123. package/components/Dropdown/Dropdown.d.ts +2 -1
  124. package/components/DropdownMenu/DropdownMenu.md +27 -0
  125. package/components/Hint/Hint/Hint.js +7 -24
  126. package/components/Hint/Hint/Hint.js.map +1 -1
  127. package/components/Hint/Hint.d.ts +0 -3
  128. package/components/Hint/Hint.md +29 -0
  129. package/components/Hint/Hint.styles/Hint.styles.js +2 -5
  130. package/components/Hint/Hint.styles/Hint.styles.js.map +1 -1
  131. package/components/Hint/Hint.styles.d.ts +0 -1
  132. package/components/MenuItem/MenuItem/MenuItem.js +10 -8
  133. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  134. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +27 -8
  135. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  136. package/components/MenuItem/MenuItem.styles.d.ts +5 -1
  137. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +10 -3
  138. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  139. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js +4 -1
  140. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js.map +1 -1
  141. package/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  142. package/components/Modal/Modal/Modal.js +1 -1
  143. package/components/Modal/Modal/Modal.js.map +1 -1
  144. package/components/Select/Select/Select.js +20 -21
  145. package/components/Select/Select/Select.js.map +1 -1
  146. package/components/Select/Select.d.ts +2 -1
  147. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  148. package/components/Toast/Toast/Toast.js +15 -8
  149. package/components/Toast/Toast/Toast.js.map +1 -1
  150. package/components/Toast/Toast.d.ts +6 -3
  151. package/components/Toast/Toast.md +129 -0
  152. package/components/Toast/ToastStatic/ToastStatic.js +5 -5
  153. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  154. package/components/Toast/ToastStatic.d.ts +3 -2
  155. package/components/Tooltip/Tooltip/Tooltip.js +5 -25
  156. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  157. package/components/Tooltip/Tooltip.d.ts +0 -2
  158. package/components/TooltipMenu/TooltipMenu.md +27 -0
  159. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +9 -15
  160. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  161. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +0 -1
  162. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  163. package/internal/Menu/Menu/Menu.js +9 -7
  164. package/internal/Menu/Menu/Menu.js.map +1 -1
  165. package/internal/Menu/Menu.d.ts +1 -0
  166. package/internal/Menu/Menu.styles/Menu.styles.js +12 -6
  167. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  168. package/internal/Menu/Menu.styles.d.ts +2 -0
  169. package/internal/MenuMessage/MenuMessage/MenuMessage.js +30 -0
  170. package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -0
  171. package/internal/MenuMessage/MenuMessage/package.json +6 -0
  172. package/internal/MenuMessage/MenuMessage.d.ts +10 -0
  173. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js +23 -0
  174. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js.map +1 -0
  175. package/internal/MenuMessage/MenuMessage.styles/package.json +6 -0
  176. package/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  177. package/internal/MenuMessage/index/index.js +1 -0
  178. package/internal/MenuMessage/index/index.js.map +1 -0
  179. package/internal/MenuMessage/index/package.json +6 -0
  180. package/internal/MenuMessage/index.d.ts +1 -0
  181. package/internal/MenuMessage/package.json +6 -0
  182. package/internal/MobilePopup/MobilePopup/MobilePopup.js +23 -53
  183. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  184. package/internal/MobilePopup/MobilePopup.d.ts +13 -12
  185. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js +11 -11
  186. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js.map +1 -1
  187. package/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  188. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +11 -35
  189. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  190. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  191. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js +6 -12
  192. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js.map +1 -1
  193. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  194. package/internal/Popup/Popup/Popup.js +1 -1
  195. package/internal/Popup/Popup/Popup.js.map +1 -1
  196. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  197. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  198. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  199. package/internal/themes/DefaultTheme/DefaultTheme.js +77 -9
  200. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  201. package/internal/themes/DefaultTheme.d.ts +22 -3
  202. package/lib/locale/LOCALECONTEXT.md +1 -0
  203. package/package.json +2 -2
  204. package/typings/html-props.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","DUMMY_LOCATION","Popup","isTestEnv","CommonWrapper","cx","responsiveLayout","rootNode","createPropsGetter","styles","HINT_BORDER_COLOR","Positions","Hint","getProps","defaultProps","state","opened","manual","position","timer","popupRef","createRef","getAnchorElement","current","anchorElement","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","props","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","close","componentDidUpdate","prevProps","componentWillUnmount","render","theme","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","isMobileLayout","renderMobile","renderMain","children","undefined","renderContent","disableAnimations","useWrapper","setRootNode","hintBgColor","text","maxWidth","centerAlignPositions","className","content","contentCenter","includes","mobileContent","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DUMMY_LOCATION, Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos?: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations?: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPositionsType;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\ntype DefaultProps = Required<\n Pick<HintProps, 'pos' | 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>\n>;\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@responsiveLayout\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n private isMobileLayout!: boolean;\n\n public static defaultProps: DefaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.isMobileLayout ? this.renderMobile() : this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMobile() {\n const manual = this.getProps().manual;\n return (\n <CommonWrapper {...this.props}>\n <Popup\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={[]}\n onClick={!manual ? this.open : undefined}\n mobileOnCloseRequest={!manual ? this.close : undefined}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public renderMain() {\n const { disableAnimations, useWrapper } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n [styles.mobileContent(this.theme)]: this.isMobileLayout,\n });\n return (\n <div className={className} style={{ maxWidth: this.isMobileLayout ? '100%' : maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.getProps().pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private close = () => {\n this.setState({ opened: false });\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
1
+ {"version":3,"sources":["Hint.tsx"],"names":["React","ThemeContext","ThemeFactory","DUMMY_LOCATION","Popup","isTestEnv","CommonWrapper","cx","rootNode","createPropsGetter","styles","HINT_BORDER_COLOR","Positions","Hint","getProps","defaultProps","state","opened","manual","position","timer","popupRef","createRef","getAnchorElement","current","anchorElement","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","window","setTimeout","open","props","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","componentDidUpdate","prevProps","componentWillUnmount","render","theme","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","disableAnimations","useWrapper","setRootNode","children","hintBgColor","renderContent","text","maxWidth","centerAlignPositions","className","content","contentCenter","includes","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DUMMY_LOCATION, Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos?: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations?: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPositionsType;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\ntype DefaultProps = Required<\n Pick<HintProps, 'pos' | 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>\n>;\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps: DefaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: Nullable<number> = null;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { disableAnimations, useWrapper } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.getProps().pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = window.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
@@ -61,7 +61,6 @@ declare type DefaultProps = Required<Pick<HintProps, 'pos' | 'manual' | 'opened'
61
61
  */
62
62
  export declare class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {
63
63
  static __KONTUR_REACT_UI__: string;
64
- private isMobileLayout;
65
64
  static defaultProps: DefaultProps;
66
65
  private getProps;
67
66
  state: HintState;
@@ -72,14 +71,12 @@ export declare class Hint extends React.PureComponent<HintProps, HintState> impl
72
71
  componentDidUpdate(prevProps: HintProps): void;
73
72
  componentWillUnmount(): void;
74
73
  render(): JSX.Element;
75
- renderMobile(): JSX.Element;
76
74
  renderMain(): JSX.Element;
77
75
  getAnchorElement: () => Nullable<Element>;
78
76
  private renderContent;
79
77
  private getPositions;
80
78
  private handleMouseEnter;
81
79
  private handleMouseLeave;
82
- private close;
83
80
  private open;
84
81
  }
85
82
  export {};
@@ -54,3 +54,32 @@ const [isOpen, setIsOpen] = React.useState(false);
54
54
  ```jsx harmony
55
55
  <Hint disableAnimations text={"Нет анимации :("}>Есть анимация?</Hint>
56
56
  ```
57
+
58
+ ### Использование встроеной и кастомной обёртки
59
+
60
+ Подсказка должна отображаться даже на отключённых компонентах. Из коробки это работает только с контролами `react-ui`.
61
+
62
+ Нативные элементы, поддерживающие атрибут `disabled`, отключают необходимые события мыши.
63
+ В подобных случаях следуют использовать проп `useWrapper`:
64
+
65
+ ```jsx harmony
66
+ <Hint useWrapper text="Подсказа всё равно отображается">
67
+ <button disabled>native button</button>
68
+ </Hint>
69
+ ```
70
+
71
+ Т.к. встроённая обёртка это `<span>` без стилей, то она может работать некорректно в определённых ситуациях.
72
+ В таких случаях стоит использовать собственную обётку:
73
+
74
+ ```jsx harmony
75
+ <>
76
+ <Hint useWrapper text="Подсказа">
77
+ <button disabled style={{ height: 40 }}>useWrapper prop</button>
78
+ </Hint>
79
+ <Hint text="Подсказа">
80
+ <span style={{ display: 'inline-block' }}>
81
+ <button disabled style={{ height: 40 }}>custom wrapper</button>
82
+ </span>
83
+ </Hint>
84
+ </>
85
+ ```
@@ -1,16 +1,13 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3;
3
+ var _templateObject, _templateObject2;
4
4
 
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  export var styles = memoizeStyle({
7
7
  content: function content(t) {
8
8
  return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n box-sizing: border-box;\n color: ", ";\n font-size: ", ";\n line-height: ", ";\n max-width: ", ";\n overflow-wrap: break-word;\n padding: ", " ", ";\n word-break: break-word;\n word-wrap: break-word;\n "])), t.hintColor, t.hintFontSize, t.hintLineHeight, t.hintMaxWidth, t.hintPaddingY, t.hintPaddingX);
9
9
  },
10
- mobileContent: function mobileContent(t) {
11
- return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n color: ", ";\n max-width: 100%;\n text-align: left;\n "])), t.mobileHintColor);
12
- },
13
10
  contentCenter: function contentCenter(t) {
14
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n text-align: ", ";\n "])), t.hintTextAlign);
11
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n text-align: ", ";\n "])), t.hintTextAlign);
15
12
  }
16
13
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Hint.styles.ts"],"names":["css","memoizeStyle","styles","content","t","hintColor","hintFontSize","hintLineHeight","hintMaxWidth","hintPaddingY","hintPaddingX","mobileContent","mobileHintColor","contentCenter","hintTextAlign"],"mappings":";AACA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;AAEA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,OADiC,mBACzBC,CADyB,EACf;AAChB,WAAOJ,GAAP;;AAEWI,IAAAA,CAAC,CAACC,SAFb;AAGeD,IAAAA,CAAC,CAACE,YAHjB;AAIiBF,IAAAA,CAAC,CAACG,cAJnB;AAKeH,IAAAA,CAAC,CAACI,YALjB;;AAOaJ,IAAAA,CAAC,CAACK,YAPf,EAO+BL,CAAC,CAACM,YAPjC;;;;AAWD,GAbgC;;AAejCC,EAAAA,aAfiC,yBAenBP,CAfmB,EAeT;AACtB,WAAOJ,GAAP;AACWI,IAAAA,CAAC,CAACQ,eADb;;;;AAKD,GArBgC;;AAuBjCC,EAAAA,aAvBiC,yBAuBnBT,CAvBmB,EAuBT;AACtB,WAAOJ,GAAP;AACgBI,IAAAA,CAAC,CAACU,aADlB;;AAGD,GA3BgC,EAAD,CAA3B","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\n\nexport const styles = memoizeStyle({\n content(t: Theme) {\n return css`\n box-sizing: border-box;\n color: ${t.hintColor};\n font-size: ${t.hintFontSize};\n line-height: ${t.hintLineHeight};\n max-width: ${t.hintMaxWidth};\n overflow-wrap: break-word;\n padding: ${t.hintPaddingY} ${t.hintPaddingX};\n word-break: break-word;\n word-wrap: break-word;\n `;\n },\n\n mobileContent(t: Theme) {\n return css`\n color: ${t.mobileHintColor};\n max-width: 100%;\n text-align: left;\n `;\n },\n\n contentCenter(t: Theme) {\n return css`\n text-align: ${t.hintTextAlign};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Hint.styles.ts"],"names":["css","memoizeStyle","styles","content","t","hintColor","hintFontSize","hintLineHeight","hintMaxWidth","hintPaddingY","hintPaddingX","contentCenter","hintTextAlign"],"mappings":";AACA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;AAEA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,OADiC,mBACzBC,CADyB,EACf;AAChB,WAAOJ,GAAP;;AAEWI,IAAAA,CAAC,CAACC,SAFb;AAGeD,IAAAA,CAAC,CAACE,YAHjB;AAIiBF,IAAAA,CAAC,CAACG,cAJnB;AAKeH,IAAAA,CAAC,CAACI,YALjB;;AAOaJ,IAAAA,CAAC,CAACK,YAPf,EAO+BL,CAAC,CAACM,YAPjC;;;;AAWD,GAbgC;;AAejCC,EAAAA,aAfiC,yBAenBP,CAfmB,EAeT;AACtB,WAAOJ,GAAP;AACgBI,IAAAA,CAAC,CAACQ,aADlB;;AAGD,GAnBgC,EAAD,CAA3B","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\n\nexport const styles = memoizeStyle({\n content(t: Theme) {\n return css`\n box-sizing: border-box;\n color: ${t.hintColor};\n font-size: ${t.hintFontSize};\n line-height: ${t.hintLineHeight};\n max-width: ${t.hintMaxWidth};\n overflow-wrap: break-word;\n padding: ${t.hintPaddingY} ${t.hintPaddingX};\n word-break: break-word;\n word-wrap: break-word;\n `;\n },\n\n contentCenter(t: Theme) {\n return css`\n text-align: ${t.hintTextAlign};\n `;\n },\n});\n"]}
@@ -1,6 +1,5 @@
1
1
  import { Theme } from '../../lib/theming/Theme';
2
2
  export declare const styles: {
3
3
  content(t: Theme): string;
4
- mobileContent(t: Theme): string;
5
4
  contentCenter(t: Theme): string;
6
5
  };
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
- var _excluded = ["link", "comment", "icon", "loose", "state", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "rel"];
4
+ var _excluded = ["link", "comment", "icon", "loose", "state", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "rel"];
5
5
 
6
6
  var _class, _class2, _temp; // TODO: Enable this rule in functional components.
7
7
 
@@ -10,7 +10,7 @@ var _class, _class2, _temp; // TODO: Enable this rule in functional components.
10
10
 
11
11
  import React from 'react';
12
12
  import PropTypes from 'prop-types';
13
- import { isExternalLink, isFunction, isReactUIComponent } from "../../../lib/utils";
13
+ import { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from "../../../lib/utils";
14
14
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
15
15
  import { CommonWrapper } from "../../../internal/CommonWrapper";
16
16
  import { cx } from "../../../lib/theming/Emotion";
@@ -58,11 +58,12 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
58
58
  onMouseLeave = props.onMouseLeave,
59
59
  isMobile = props.isMobile,
60
60
  href = props.href,
61
+ disabled = props.disabled,
61
62
  _props$rel = props.rel,
62
63
  rel = _props$rel === void 0 ? _this.props.href && isExternalLink(_this.props.href) ? 'noopener noreferrer' : _this.props.rel : _props$rel,
63
64
  rest = _objectWithoutPropertiesLoose(props, _excluded);
64
65
 
65
- var hover = state === 'hover' && !_this.props.disabled;
66
+ var hover = state === 'hover' && !disabled;
66
67
  var iconElement = null;
67
68
 
68
69
  if (icon) {
@@ -90,6 +91,7 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
90
91
  ref: _this.setRootRef,
91
92
  "data-tid": MenuItemDataTids.root
92
93
  }, rest, {
94
+ disabled: disabled,
93
95
  state: state,
94
96
  onMouseOver: _this.handleMouseEnterFix,
95
97
  onMouseLeave: _this.handleMouseLeave,
@@ -98,7 +100,7 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
98
100
  rel: href ? rel : undefined,
99
101
  tabIndex: -1
100
102
  }), iconElement, /*#__PURE__*/React.createElement("span", {
101
- className: cx((_cx3 = {}, _cx3[styles.contentMobile()] = isMobile, _cx3))
103
+ className: cx((_cx3 = {}, _cx3[styles.mobileContentWithIcon()] = isMobile && isNonNullable(icon), _cx3))
102
104
  }, content), _this.props.comment && /*#__PURE__*/React.createElement("div", {
103
105
  "data-tid": MenuItemDataTids.comment,
104
106
  className: cx((_cx4 = {}, _cx4[styles.comment(_this.theme)] = true, _cx4[styles.commentHover(_this.theme)] = hover, _cx4))
@@ -131,14 +133,14 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
131
133
  component = _this$props.component,
132
134
  href = _this$props.href;
133
135
 
134
- if (disabled) {
135
- return 'button';
136
- }
137
-
138
136
  if (component) {
139
137
  return component;
140
138
  }
141
139
 
140
+ if (disabled) {
141
+ return 'button';
142
+ }
143
+
142
144
  if (href) {
143
145
  return 'a';
144
146
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isExternalLink","isFunction","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","state","iconOffsetTop","mouseEntered","rootRef","renderMain","props","link","icon","loose","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","href","rel","rest","hover","disabled","iconElement","top","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","contentMobile","commentHover","e","element","render","setRootNode","componentDidMount","setState","window","getComputedStyle","getPropertyValue","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isReactUIComponent } 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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\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.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n public state = {\n iconOffsetTop: 0,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef) {\n this.setState({ iconOffsetTop: window.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div style={{ top: this.state.iconOffsetTop }} className={cx({ [styles.icon(this.theme)]: true })}>\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\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 ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.contentMobile()]: isMobile,\n })}\n >\n {content}\n </span>\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.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 setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\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 = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","styles","MenuItemDataTids","root","comment","MenuItem","state","iconOffsetTop","mouseEntered","rootRef","renderMain","props","link","icon","loose","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","href","disabled","rel","rest","hover","iconElement","top","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","mobileContentWithIcon","commentHover","e","element","render","setRootNode","componentDidMount","setState","window","getComputedStyle","getPropertyValue","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } 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';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends Omit<CommonProps, 'children'> {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\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.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n public state = {\n iconOffsetTop: 0,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef) {\n this.setState({ iconOffsetTop: window.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div style={{ top: this.state.iconOffsetTop }} className={cx({ [styles.icon(this.theme)]: true })}>\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\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 ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n >\n {content}\n </span>\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.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 setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -4,16 +4,35 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
4
4
 
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  import { resetButton } from "../../../lib/styles/Mixins";
7
+ export var getMenuItemPaddings = function getMenuItemPaddings(_ref) {
8
+ var menuItemLegacyPaddingX = _ref.menuItemLegacyPaddingX,
9
+ menuItemPaddingX = _ref.menuItemPaddingX,
10
+ menuItemLegacyPaddingY = _ref.menuItemLegacyPaddingY,
11
+ menuItemPaddingY = _ref.menuItemPaddingY;
12
+ var legacyPaddingX = parseFloat(menuItemLegacyPaddingX);
13
+ var legacyPaddingY = parseFloat(menuItemLegacyPaddingY);
14
+ var paddingX = legacyPaddingX !== 0 ? parseFloat(menuItemPaddingX) + legacyPaddingX + "px" : menuItemPaddingX;
15
+ var paddingY = legacyPaddingY !== 0 ? parseFloat(menuItemPaddingY) + legacyPaddingY + "px" : menuItemPaddingY;
16
+ return {
17
+ paddingX: paddingX,
18
+ paddingY: paddingY
19
+ };
20
+ };
7
21
  export var styles = memoizeStyle({
8
22
  root: function root(t) {
9
- var legacyPaddingX = parseFloat(t.menuItemLegacyPaddingX);
10
- var legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);
11
- var paddingX = legacyPaddingX !== 0 ? parseFloat(t.menuItemPaddingX) + legacyPaddingX + "px" : t.menuItemPaddingX;
12
- var paddingY = legacyPaddingY !== 0 ? parseFloat(t.menuItemPaddingY) + legacyPaddingY + "px" : t.menuItemPaddingY;
13
- return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: block;\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n color: ", ";\n border-radius: ", ";\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX, t.menuItemTextColor, t.menuItemBorderRadius);
23
+ var _getMenuItemPaddings = getMenuItemPaddings({
24
+ menuItemLegacyPaddingX: t.menuItemLegacyPaddingX,
25
+ menuItemPaddingX: t.menuItemPaddingX,
26
+ menuItemLegacyPaddingY: t.menuItemLegacyPaddingY,
27
+ menuItemPaddingY: t.menuItemPaddingY
28
+ }),
29
+ paddingX = _getMenuItemPaddings.paddingX,
30
+ paddingY = _getMenuItemPaddings.paddingY;
31
+
32
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n ", ";\n\n cursor: pointer;\n display: ", ";\n line-height: ", ";\n font-size: ", ";\n padding: ", " ", " ", " ", ";\n position: relative;\n text-decoration: none;\n color: ", ";\n border-radius: ", ";\n\n button& {\n min-width: 100%;\n }\n "])), resetButton(), t.menuItemDisplay, t.menuItemLineHeight, t.menuItemFontSize, t.menuItemPaddingY, paddingX, paddingY, t.menuItemPaddingX, t.menuItemTextColor, t.menuItemBorderRadius);
14
33
  },
15
34
  rootMobile: function rootMobile(t) {
16
- return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.fontSizeMobile, t.lineHeightMobile, t.menuItemPaddingMobile);
35
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", ";\n "])), t.menuItemFontSizeMobile, t.menuItemLineHeightMobile, t.menuItemPaddingMobile);
17
36
  },
18
37
  hover: function hover(t) {
19
38
  // Color with !important in purpose to override `a:hover`
@@ -23,7 +42,7 @@ export var styles = memoizeStyle({
23
42
  return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n background: ", " !important;\n "])), t.menuItemSelectedBg);
24
43
  },
25
44
  disabled: function disabled(t) {
26
- return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n background: transparent;\n color: ", ";\n cursor: default;\n "])), t.menuItemDisabledColor);
45
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n background: ", ";\n color: ", ";\n cursor: default;\n "])), t.menuItemDisabledBg, t.menuItemDisabledColor);
27
46
  },
28
47
  link: function link(t) {
29
48
  return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n color: ", ";\n "])), t.menuItemLinkColor);
@@ -43,7 +62,7 @@ export var styles = memoizeStyle({
43
62
  icon: function icon(t) {
44
63
  return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n width: ", ";\n display: inline-block;\n position: absolute;\n left: ", "px;\n transform: translateY(", ");\n "])), t.menuItemIconWidth, parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin), t.menuItemIconLegacyShift);
45
64
  },
46
- contentMobile: function contentMobile() {
65
+ mobileContentWithIcon: function mobileContentWithIcon() {
47
66
  return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n margin-left: 8px;\n "])));
48
67
  }
49
68
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","styles","root","t","legacyPaddingX","parseFloat","menuItemLegacyPaddingX","legacyPaddingY","menuItemLegacyPaddingY","paddingX","menuItemPaddingX","paddingY","menuItemPaddingY","menuItemLineHeight","menuItemFontSize","menuItemTextColor","menuItemBorderRadius","rootMobile","fontSizeMobile","lineHeightMobile","menuItemPaddingMobile","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift","contentMobile"],"mappings":"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","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const legacyPaddingX = parseFloat(t.menuItemLegacyPaddingX);\n const legacyPaddingY = parseFloat(t.menuItemLegacyPaddingY);\n\n const paddingX = legacyPaddingX !== 0 ? `${parseFloat(t.menuItemPaddingX) + legacyPaddingX}px` : t.menuItemPaddingX;\n const paddingY = legacyPaddingY !== 0 ? `${parseFloat(t.menuItemPaddingY) + legacyPaddingY}px` : t.menuItemPaddingY;\n\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: block;\n line-height: ${t.menuItemLineHeight};\n font-size: ${t.menuItemFontSize};\n padding: ${t.menuItemPaddingY} ${paddingX} ${paddingY} ${t.menuItemPaddingX};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n border-radius: ${t.menuItemBorderRadius};\n\n button& {\n min-width: 100%;\n }\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.fontSizeMobile};\n line-height: ${t.lineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: transparent;\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n link(t: Theme) {\n return css`\n color: ${t.menuItemLinkColor};\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIcon(t: Theme) {\n return css`\n padding-left: ${t.menuItemPaddingForIcon};\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n white-space: normal;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: 0.6;\n `;\n },\n icon(t: Theme) {\n return css`\n width: ${t.menuItemIconWidth};\n display: inline-block;\n position: absolute;\n left: ${parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin)}px;\n transform: translateY(${t.menuItemIconLegacyShift});\n `;\n },\n contentMobile() {\n return css`\n margin-left: 8px;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["MenuItem.styles.ts"],"names":["css","memoizeStyle","resetButton","getMenuItemPaddings","menuItemLegacyPaddingX","menuItemPaddingX","menuItemLegacyPaddingY","menuItemPaddingY","legacyPaddingX","parseFloat","legacyPaddingY","paddingX","paddingY","styles","root","t","menuItemDisplay","menuItemLineHeight","menuItemFontSize","menuItemTextColor","menuItemBorderRadius","rootMobile","menuItemFontSizeMobile","menuItemLineHeightMobile","menuItemPaddingMobile","hover","menuItemHoverBg","menuItemHoverColor","selected","menuItemSelectedBg","disabled","menuItemDisabledBg","menuItemDisabledColor","link","menuItemLinkColor","loose","withIcon","menuItemPaddingForIcon","comment","menuItemCommentColor","commentHover","menuItemCommentColorHover","icon","menuItemIconWidth","parseInt","menuItemIconLegacyMargin","menuItemIconLegacyShift","mobileContentWithIcon"],"mappings":"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","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const getMenuItemPaddings = ({\n menuItemLegacyPaddingX,\n menuItemPaddingX,\n menuItemLegacyPaddingY,\n menuItemPaddingY,\n}: Record<'menuItemLegacyPaddingX' | 'menuItemPaddingX' | 'menuItemLegacyPaddingY' | 'menuItemPaddingY', string>) => {\n const legacyPaddingX = parseFloat(menuItemLegacyPaddingX);\n const legacyPaddingY = parseFloat(menuItemLegacyPaddingY);\n\n const paddingX = legacyPaddingX !== 0 ? `${parseFloat(menuItemPaddingX) + legacyPaddingX}px` : menuItemPaddingX;\n const paddingY = legacyPaddingY !== 0 ? `${parseFloat(menuItemPaddingY) + legacyPaddingY}px` : menuItemPaddingY;\n\n return { paddingX, paddingY };\n};\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const { paddingX, paddingY } = getMenuItemPaddings({\n menuItemLegacyPaddingX: t.menuItemLegacyPaddingX,\n menuItemPaddingX: t.menuItemPaddingX,\n menuItemLegacyPaddingY: t.menuItemLegacyPaddingY,\n menuItemPaddingY: t.menuItemPaddingY,\n });\n\n return css`\n ${resetButton()};\n\n cursor: pointer;\n display: ${t.menuItemDisplay};\n line-height: ${t.menuItemLineHeight};\n font-size: ${t.menuItemFontSize};\n padding: ${t.menuItemPaddingY} ${paddingX} ${paddingY} ${t.menuItemPaddingX};\n position: relative;\n text-decoration: none;\n color: ${t.menuItemTextColor};\n border-radius: ${t.menuItemBorderRadius};\n\n button& {\n min-width: 100%;\n }\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n font-size: ${t.menuItemFontSizeMobile};\n line-height: ${t.menuItemLineHeightMobile};\n padding: ${t.menuItemPaddingMobile};\n `;\n },\n\n hover(t: Theme) {\n // Color with !important in purpose to override `a:hover`\n return css`\n background: ${t.menuItemHoverBg} !important;\n color: ${t.menuItemHoverColor} !important;\n `;\n },\n selected(t: Theme) {\n return css`\n background: ${t.menuItemSelectedBg} !important;\n `;\n },\n disabled(t: Theme) {\n return css`\n background: ${t.menuItemDisabledBg};\n color: ${t.menuItemDisabledColor};\n cursor: default;\n `;\n },\n link(t: Theme) {\n return css`\n color: ${t.menuItemLinkColor};\n `;\n },\n loose() {\n return css`\n padding-left: 15px;\n `;\n },\n withIcon(t: Theme) {\n return css`\n padding-left: ${t.menuItemPaddingForIcon};\n `;\n },\n comment(t: Theme) {\n return css`\n color: ${t.menuItemCommentColor};\n white-space: normal;\n `;\n },\n commentHover(t: Theme) {\n return css`\n color: ${t.menuItemCommentColorHover};\n opacity: 0.6;\n `;\n },\n icon(t: Theme) {\n return css`\n width: ${t.menuItemIconWidth};\n display: inline-block;\n position: absolute;\n left: ${parseInt(t.menuItemPaddingX) + parseInt(t.menuItemIconLegacyMargin)}px;\n transform: translateY(${t.menuItemIconLegacyShift});\n `;\n },\n mobileContentWithIcon() {\n return css`\n margin-left: 8px;\n `;\n },\n});\n"]}
@@ -1,4 +1,8 @@
1
1
  import { Theme } from '../../lib/theming/Theme';
2
+ export declare const getMenuItemPaddings: ({ menuItemLegacyPaddingX, menuItemPaddingX, menuItemLegacyPaddingY, menuItemPaddingY, }: Record<'menuItemLegacyPaddingX' | 'menuItemPaddingX' | 'menuItemLegacyPaddingY' | 'menuItemPaddingY', string>) => {
3
+ paddingX: string;
4
+ paddingY: string;
5
+ };
2
6
  export declare const styles: {
3
7
  root(t: Theme): string;
4
8
  rootMobile(t: Theme): string;
@@ -11,5 +15,5 @@ export declare const styles: {
11
15
  comment(t: Theme): string;
12
16
  commentHover(t: Theme): string;
13
17
  icon(t: Theme): string;
14
- contentMobile(): string;
18
+ mobileContentWithIcon(): string;
15
19
  };
@@ -1,6 +1,8 @@
1
1
  import React, { useContext } from 'react';
2
+ import { cx } from "../../../lib/theming/Emotion";
2
3
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
3
4
  import { CommonWrapper } from "../../../internal/CommonWrapper";
5
+ import { ResponsiveLayout } from "../../ResponsiveLayout";
4
6
  import { styles } from "../MenuSeparator.styles";
5
7
  export var MenuSeparatorDataTids = {
6
8
  root: 'MenuSeparator__root'
@@ -13,9 +15,14 @@ export var MenuSeparatorDataTids = {
13
15
 
14
16
  function MenuSeparator(props) {
15
17
  var theme = useContext(ThemeContext);
16
- return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement("div", {
17
- "data-tid": MenuSeparatorDataTids.root,
18
- className: styles.root(theme)
18
+ return /*#__PURE__*/React.createElement(CommonWrapper, props, /*#__PURE__*/React.createElement(ResponsiveLayout, null, function (_ref) {
19
+ var _cx;
20
+
21
+ var isMobile = _ref.isMobile;
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ "data-tid": MenuSeparatorDataTids.root,
24
+ className: cx((_cx = {}, _cx[styles.root(theme)] = true, _cx[styles.rootMobile(theme)] = isMobile, _cx))
25
+ });
19
26
  }));
20
27
  }
21
28
 
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuSeparator.tsx"],"names":["React","useContext","ThemeContext","CommonWrapper","styles","MenuSeparatorDataTids","root","MenuSeparator","props","theme","__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;;;;AAIA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;AAGP;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGR,UAAU,CAACC,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBM,KAAnB;AACE,iCAAK,YAAUH,qBAAqB,CAACC,IAArC,EAA2C,SAAS,EAAEF,MAAM,CAACE,IAAP,CAAYG,KAAZ,CAAtD,GADF,CADF;;;AAKD;;AAEDF,aAAa,CAACG,mBAAd,GAAoC,eAApC;;AAEA,SAASH,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\nexport const MenuSeparatorDataTids = {\n root: 'MenuSeparator__root',\n} as const;\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 data-tid={MenuSeparatorDataTids.root} 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","cx","ThemeContext","CommonWrapper","ResponsiveLayout","styles","MenuSeparatorDataTids","root","MenuSeparator","props","theme","isMobile","rootMobile","__KONTUR_REACT_UI__"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;AACA,SAASC,gBAAT,QAAiC,qBAAjC;;AAEA,SAASC,MAAT,QAAuB,wBAAvB;;;;AAIA,OAAO,IAAMC,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,qBAD6B,EAA9B;;AAGP;AACA;AACA;AACA;AACA;AACA,SAASC,aAAT,CAAuBC,KAAvB,EAAkD;AAChD,MAAMC,KAAK,GAAGV,UAAU,CAACE,YAAD,CAAxB;;AAEA;AACE,wBAAC,aAAD,EAAmBO,KAAnB;AACE,wBAAC,gBAAD;AACG,oBAAkB,aAAfE,QAAe,QAAfA,QAAe;AACjB;AACE;AACE,sBAAUL,qBAAqB,CAACC,IADlC;AAEE,UAAA,SAAS,EAAEN,EAAE,gBAAII,MAAM,CAACE,IAAP,CAAYG,KAAZ,CAAJ,IAAyB,IAAzB,MAAgCL,MAAM,CAACO,UAAP,CAAkBF,KAAlB,CAAhC,IAA2DC,QAA3D,OAFf,GADF;;;AAMD,KARH,CADF,CADF;;;;AAcD;;AAEDH,aAAa,CAACK,mBAAd,GAAoC,eAApC;;AAEA,SAASL,aAAT","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './MenuSeparator.styles';\n\nexport type MenuSeparatorProps = CommonProps;\n\nexport const MenuSeparatorDataTids = {\n root: 'MenuSeparator__root',\n} as const;\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 <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n data-tid={MenuSeparatorDataTids.root}\n className={cx({ [styles.root(theme)]: true, [styles.rootMobile(theme)]: isMobile })}\n />\n );\n }}\n </ResponsiveLayout>\n </CommonWrapper>\n );\n}\n\nMenuSeparator.__KONTUR_REACT_UI__ = 'MenuSeparator';\n\nexport { MenuSeparator };\n"]}
@@ -1,10 +1,13 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
2
 
3
- var _templateObject;
3
+ var _templateObject, _templateObject2;
4
4
 
5
5
  import { css, memoizeStyle } from "../../../lib/theming/Emotion";
6
6
  export var styles = memoizeStyle({
7
7
  root: function root(t) {
8
8
  return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n margin: ", " 0;\n border-top: ", " solid ", ";\n "])), t.menuSeparatorMarginY, t.menuSeparatorBorderWidth, t.menuSeparatorBorderColor);
9
+ },
10
+ rootMobile: function rootMobile(t) {
11
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n margin: ", " ", ";\n border-radius: 1px;\n "])), t.mobileMenuSeparatorMarginY, t.mobileMenuSeparatorMarginX);
9
12
  }
10
13
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuSeparator.styles.ts"],"names":["css","memoizeStyle","styles","root","t","menuSeparatorMarginY","menuSeparatorBorderWidth","menuSeparatorBorderColor"],"mappings":"oHAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACC,oBADd;AAEgBD,IAAAA,CAAC,CAACE,wBAFlB,EAEoDF,CAAC,CAACG,wBAFtD;;AAID,GANgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n margin: ${t.menuSeparatorMarginY} 0;\n border-top: ${t.menuSeparatorBorderWidth} solid ${t.menuSeparatorBorderColor};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["MenuSeparator.styles.ts"],"names":["css","memoizeStyle","styles","root","t","menuSeparatorMarginY","menuSeparatorBorderWidth","menuSeparatorBorderColor","rootMobile","mobileMenuSeparatorMarginY","mobileMenuSeparatorMarginX"],"mappings":"sIAAA,SAASA,GAAT,EAAcC,YAAd,QAAkC,2BAAlC;;;AAGA,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;AACjCE,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACC,oBADd;AAEgBD,IAAAA,CAAC,CAACE,wBAFlB,EAEoDF,CAAC,CAACG,wBAFtD;;AAID,GANgC;;AAQjCC,EAAAA,UARiC,sBAQtBJ,CARsB,EAQZ;AACnB,WAAOJ,GAAP;AACYI,IAAAA,CAAC,CAACK,0BADd,EAC4CL,CAAC,CAACM,0BAD9C;;;AAID,GAbgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n margin: ${t.menuSeparatorMarginY} 0;\n border-top: ${t.menuSeparatorBorderWidth} solid ${t.menuSeparatorBorderColor};\n `;\n },\n\n rootMobile(t: Theme) {\n return css`\n margin: ${t.mobileMenuSeparatorMarginY} ${t.mobileMenuSeparatorMarginX};\n border-radius: 1px;\n `;\n },\n});\n"]}
@@ -1,4 +1,5 @@
1
1
  import { Theme } from '../../lib/theming/Theme';
2
2
  export declare const styles: {
3
3
  root(t: Theme): string;
4
+ rootMobile(t: Theme): string;
4
5
  };
@@ -16,8 +16,8 @@ import { ThemeContext } from "../../../lib/theming/ThemeContext";
16
16
  import { isIE11 } from "../../../lib/client";
17
17
  import { CommonWrapper } from "../../../internal/CommonWrapper";
18
18
  import { cx } from "../../../lib/theming/Emotion";
19
- import { ResponsiveLayout } from "../../ResponsiveLayout";
20
19
  import { createPropsGetter } from "../../../lib/createPropsGetter";
20
+ import { ResponsiveLayout } from "../../ResponsiveLayout";
21
21
  import { ModalContext } from "../ModalContext";
22
22
  import { ModalFooter } from "../ModalFooter";
23
23
  import { ModalHeader } from "../ModalHeader";