@skbkontur/react-ui 4.12.0-theme2022.5 → 4.12.0-theme2022.6

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 (90) hide show
  1. package/cjs/components/Button/Button.js +13 -1
  2. package/cjs/components/Button/Button.js.map +1 -1
  3. package/cjs/components/Button/ButtonIcon.js +14 -4
  4. package/cjs/components/Button/ButtonIcon.js.map +1 -1
  5. package/cjs/components/DatePicker/Picker.js +1 -1
  6. package/cjs/components/DatePicker/Picker.js.map +1 -1
  7. package/cjs/components/DatePicker/Picker.styles.js +3 -2
  8. package/cjs/components/DatePicker/Picker.styles.js.map +1 -1
  9. package/cjs/components/Input/InputLayout/InputLayoutAside.js +3 -2
  10. package/cjs/components/Input/InputLayout/InputLayoutAside.js.map +1 -1
  11. package/cjs/components/Kebab/Kebab.d.ts +2 -1
  12. package/cjs/components/Kebab/Kebab.js +51 -20
  13. package/cjs/components/Kebab/Kebab.js.map +1 -1
  14. package/cjs/components/Kebab/Kebab.styles.d.ts +8 -4
  15. package/cjs/components/Kebab/Kebab.styles.js +52 -21
  16. package/cjs/components/Kebab/Kebab.styles.js.map +1 -1
  17. package/cjs/components/Kebab/KebabIcon.d.ts +3 -0
  18. package/cjs/components/Kebab/KebabIcon.js +15 -0
  19. package/cjs/components/Kebab/KebabIcon.js.map +1 -0
  20. package/cjs/components/Link/Link.js +6 -1
  21. package/cjs/components/Link/Link.js.map +1 -1
  22. package/cjs/internal/DateSelect/DateSelect.js +1 -1
  23. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  24. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  25. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light.d.ts +2 -0
  26. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light.js +16 -0
  27. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light.js.map +1 -0
  28. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular.d.ts +2 -0
  29. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular.js +16 -0
  30. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular.js.map +1 -0
  31. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular.d.ts +2 -0
  32. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular.js +16 -0
  33. package/cjs/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular.js.map +1 -0
  34. package/cjs/internal/themes/DefaultTheme.d.ts +9 -0
  35. package/cjs/internal/themes/DefaultTheme.js +12 -1
  36. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  37. package/cjs/internal/themes/Theme2022.d.ts +9 -0
  38. package/cjs/internal/themes/Theme2022.js +15 -3
  39. package/cjs/internal/themes/Theme2022.js.map +1 -1
  40. package/cjs/lib/chars.d.ts +8 -0
  41. package/cjs/lib/chars.js +8 -0
  42. package/cjs/lib/chars.js.map +1 -0
  43. package/components/Button/Button/Button.js +15 -1
  44. package/components/Button/Button/Button.js.map +1 -1
  45. package/components/Button/ButtonIcon/ButtonIcon.js +20 -9
  46. package/components/Button/ButtonIcon/ButtonIcon.js.map +1 -1
  47. package/components/DatePicker/Picker/Picker.js +1 -3
  48. package/components/DatePicker/Picker/Picker.js.map +1 -1
  49. package/components/DatePicker/Picker.styles/Picker.styles.js +1 -1
  50. package/components/DatePicker/Picker.styles/Picker.styles.js.map +1 -1
  51. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js +2 -1
  52. package/components/Input/InputLayout/InputLayoutAside/InputLayoutAside.js.map +1 -1
  53. package/components/Kebab/Kebab/Kebab.js +40 -17
  54. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  55. package/components/Kebab/Kebab.d.ts +2 -1
  56. package/components/Kebab/Kebab.styles/Kebab.styles.js +26 -14
  57. package/components/Kebab/Kebab.styles/Kebab.styles.js.map +1 -1
  58. package/components/Kebab/Kebab.styles.d.ts +8 -4
  59. package/components/Kebab/KebabIcon/KebabIcon.js +17 -0
  60. package/components/Kebab/KebabIcon/KebabIcon.js.map +1 -0
  61. package/components/Kebab/KebabIcon/package.json +6 -0
  62. package/components/Kebab/KebabIcon.d.ts +3 -0
  63. package/components/Link/Link/Link.js +10 -1
  64. package/components/Link/Link/Link.js.map +1 -1
  65. package/internal/DateSelect/DateSelect/DateSelect.js +1 -1
  66. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  67. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  68. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light/UiMenuDotsThreeVIcon16Light.js +15 -0
  69. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light/UiMenuDotsThreeVIcon16Light.js.map +1 -0
  70. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light/package.json +6 -0
  71. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon16Light.d.ts +2 -0
  72. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular/UiMenuDotsThreeVIcon20Regular.js +16 -0
  73. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular/UiMenuDotsThreeVIcon20Regular.js.map +1 -0
  74. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular/package.json +6 -0
  75. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon20Regular.d.ts +2 -0
  76. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular/UiMenuDotsThreeVIcon24Regular.js +16 -0
  77. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular/UiMenuDotsThreeVIcon24Regular.js.map +1 -0
  78. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular/package.json +6 -0
  79. package/internal/icons2022/UiMenuDotsThreeVIcon/UiMenuDotsThreeVIcon24Regular.d.ts +2 -0
  80. package/internal/themes/DefaultTheme/DefaultTheme.js +13 -0
  81. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  82. package/internal/themes/DefaultTheme.d.ts +9 -0
  83. package/internal/themes/Theme2022/Theme2022.js +13 -4
  84. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  85. package/internal/themes/Theme2022.d.ts +9 -0
  86. package/lib/chars/chars.js +8 -0
  87. package/lib/chars/chars.js.map +1 -0
  88. package/lib/chars/package.json +6 -0
  89. package/lib/chars.d.ts +8 -0
  90. package/package.json +1 -1
@@ -476,6 +476,17 @@ Button = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
476
476
 
477
477
 
478
478
 
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
479
490
 
480
491
 
481
492
 
@@ -519,4 +530,5 @@ Button = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
519
530
  // on this button if somewhere on the page user presses Enter while some
520
531
  // input is focused. So we set type to 'button' by default.
521
532
  type: type, className: rootClassName, style: (0, _extends2.default)({ textAlign: align }, corners), disabled: disabled || loading, onClick: onClick, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, tabIndex: disableFocus ? -1 : 0, title: this.props.title };var wrapProps = { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_Button.styles.wrap(this.theme)] = true, _cx2[wrapClassNameWithArrow] = true, _cx2[this.getSizeWrapClassName()] = true, _cx2)), style: { width: width } };var innerShadowNode = _isTheme2022 ? null : /*#__PURE__*/_react.default.createElement("div", { className: _Button.globalClasses.innerShadow });var outlineNode = null;var isDisabled2022 = _isTheme2022 && (disabled || loading);if ((!isFocused || isLink) && !isDisabled2022) {var _cx3;outlineNode = /*#__PURE__*/_react.default.createElement("div", { style: { zIndex: _isTheme2022 && isLink ? -1 : undefined }, className: (0, _Emotion.cx)(_Button.styles.outline(), (_cx3 = {}, _cx3[_Button.styles.outlineWarning(this.theme)] = warning, _cx3[_Button.styles.outlineError(this.theme)] = error, _cx3[_Button.styles.outlineLink()] = isLink, _cx3[_Button.styles.outlineLinkWarning(this.theme)] = isLink && warning, _cx3[_Button.styles.outlineLinkError(this.theme)] = isLink && error, _cx3)) });}var iconNode = icon && /*#__PURE__*/_react.default.createElement(_ButtonIcon.ButtonIcon, { icon: icon, size: this.props.size || Button.defaultProps.size, hasChildren: Boolean(children), disabled: disabled || false, loading: loading || false, use: use });var loadingNode = null;if (loading && !icon) {loadingNode = /*#__PURE__*/_react.default.createElement("div", { className: _Button.styles.loading() }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { caption: null, dimmed: true, type: "mini" }));} // Force disable all props and features, that cannot be use with Link
522
- if (isLink) {var _cx4;rootProps.className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_Button.styles.root(this.theme)] = true, _cx4[sizeClass] = true, _cx4[_Button.styles.link(this.theme)] = true, _cx4[_Button.styles.linkLineHeight()] = !_client.isSafari || _client.isSafari && !_isTheme2022, _cx4[_Button.styles.linkLineHeightSafariFallback()] = _client.isSafari && _isTheme2022, _cx4[_Button.styles.linkFocus(this.theme)] = isFocused, _cx4[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx4));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(this.theme), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;}var captionNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx5 = {}, _cx5[_Button.styles.captionTranslated()] = (active || checked) && !loading && !_isTheme2022, _cx5[_Button.styles.captionLink()] = isLink, _cx5[_Button.styles.captionDisabled()] = !checked && disabled, _cx5)) }, loadingNode, iconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.globalClasses.text, (_cx6 = {}, _cx6[_Button.styles.visibilityHidden()] = !!loadingNode, _cx6)) }, children));if (_isTheme2022 && isLink && !loading) {captionNode = /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getInnerLinkTheme.getInnerLinkTheme)(this.theme) }, /*#__PURE__*/_react.default.createElement(_Link.Link, { focused: isFocused, disabled: disabled, icon: icon, component: "span", tabIndex: -1 }, children));}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("span", wrapProps, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ "data-tid": ButtonDataTids.root, ref: this._ref }, rootProps), innerShadowNode, outlineNode, arrowNode, captionNode)));};_proto.getSizeClassName = function getSizeClassName() {var _cx7, _cx8, _cx9;var _isTheme2022 = (0, _ThemeHelpers.isTheme2022)(this.theme);switch (this.getProps().size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx7 = {}, _cx7[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx7[_Button.styles.sizeLargeWithIcon(this.theme)] = !!this.props.icon, _cx7[_Button.styles.sizeLargeWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx7));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx8 = {}, _cx8[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx8[_Button.styles.sizeMediumWithIcon(this.theme)] = !!this.props.icon, _cx8[_Button.styles.sizeMediumWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx8));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9[_Button.styles.sizeSmallWithIcon(this.theme)] = !!this.props.icon, _cx9[_Button.styles.sizeSmallWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx9));}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button.styles.wrapLarge(this.theme);case 'medium':return _Button.styles.wrapMedium(this.theme);case 'small':default:return _Button.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Button', _class2.__BUTTON__ = true, _class2.defaultProps = { use: 'default', size: 'small', type: 'button' }, _temp)) || _class;exports.Button = Button;var isButton = (0, _utils.isReactUIComponent)('Button');exports.isButton = isButton;
533
+ if (isLink) {var _cx4;rootProps.className = (0, _Emotion.cx)((_cx4 = {}, _cx4[_Button.styles.root(this.theme)] = true, _cx4[sizeClass] = true, _cx4[_Button.styles.link(this.theme)] = true, _cx4[_Button.styles.linkLineHeight()] = !_client.isSafari || _client.isSafari && !_isTheme2022, _cx4[_Button.styles.linkLineHeightSafariFallback()] = _client.isSafari && _isTheme2022, _cx4[_Button.styles.linkFocus(this.theme)] = isFocused, _cx4[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx4));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(this.theme), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;}var captionNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx5 = {}, _cx5[_Button.styles.captionTranslated()] = (active || checked) && !loading && !_isTheme2022, _cx5[_Button.styles.captionLink()] = isLink, _cx5[_Button.styles.captionDisabled()] = !checked && disabled, _cx5)) }, loadingNode, iconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.globalClasses.text, (_cx6 = {}, _cx6[_Button.styles.visibilityHidden()] = !!loadingNode, _cx6)) }, children));if (_isTheme2022 && isLink && !loading) {var _icon = icon;if (icon) {var sizes = { small: parseInt(this.theme.btnIconSizeSmall), medium: parseInt(this.theme.btnIconSizeMedium), large: parseInt(this.theme.btnIconSizeLarge) }; // Expect icon to have a `size` prop
534
+ _icon = /*#__PURE__*/_react.default.cloneElement(icon, { size: sizes[this.props.size || 'small'] });}captionNode = /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: (0, _getInnerLinkTheme.getInnerLinkTheme)(this.theme) }, /*#__PURE__*/_react.default.createElement(_Link.Link, { focused: isFocused, disabled: disabled, icon: _icon, component: "span", tabIndex: -1 }, children));}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("span", wrapProps, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ "data-tid": ButtonDataTids.root, ref: this._ref }, rootProps), innerShadowNode, outlineNode, arrowNode, captionNode)));};_proto.getSizeClassName = function getSizeClassName() {var _cx7, _cx8, _cx9;var _isTheme2022 = (0, _ThemeHelpers.isTheme2022)(this.theme);switch (this.getProps().size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx7 = {}, _cx7[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx7[_Button.styles.sizeLargeWithIcon(this.theme)] = !!this.props.icon, _cx7[_Button.styles.sizeLargeWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx7));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx8 = {}, _cx8[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx8[_Button.styles.sizeMediumWithIcon(this.theme)] = !!this.props.icon, _cx8[_Button.styles.sizeMediumWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx8));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9[_Button.styles.sizeSmallWithIcon(this.theme)] = !!this.props.icon, _cx9[_Button.styles.sizeSmallWithIconWithoutText(this.theme)] = _isTheme2022 && !!this.props.icon && !this.props.children, _cx9));}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button.styles.wrapLarge(this.theme);case 'medium':return _Button.styles.wrapMedium(this.theme);case 'small':default:return _Button.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Button', _class2.__BUTTON__ = true, _class2.defaultProps = { use: 'default', size: 'small', type: 'button' }, _temp)) || _class;exports.Button = Button;var isButton = (0, _utils.isReactUIComponent)('Button');exports.isButton = isButton;
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","root","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","corners","active","borderless","checked","error","warning","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","use","type","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","checkedDisabled","checkedDisabled2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","globalClasses","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconNode","size","loadingNode","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","setRootNode","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link } from '../Link';\nimport { Spinner } from '../Spinner';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const { use, type } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconNode = icon && (\n <ButtonIcon\n icon={icon}\n size={this.props.size || Button.defaultProps.size}\n hasChildren={Boolean(children)}\n disabled={disabled || false}\n loading={loading || false}\n use={use}\n />\n );\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = (\n <div className={styles.loading()}>\n <Spinner caption={null} dimmed type=\"mini\" />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {iconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: !!loadingNode,\n })}\n >\n {children}\n </span>\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link focused={isFocused} disabled={disabled} icon={icon} component=\"span\" tabIndex={-1}>\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
1
+ {"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","root","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","corners","active","borderless","checked","error","warning","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","use","type","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","checkedDisabled","checkedDisabled2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","globalClasses","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconNode","size","loadingNode","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","_icon","sizes","small","parseInt","btnIconSizeSmall","medium","btnIconSizeMedium","large","btnIconSizeLarge","React","cloneElement","setRootNode","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link } from '../Link';\nimport { Spinner } from '../Spinner';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const { use, type } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n });\n }\n\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n const iconNode = icon && (\n <ButtonIcon\n icon={icon}\n size={this.props.size || Button.defaultProps.size}\n hasChildren={Boolean(children)}\n disabled={disabled || false}\n loading={loading || false}\n use={use}\n />\n );\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = (\n <div className={styles.loading()}>\n <Spinner caption={null} dimmed type=\"mini\" />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {iconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: !!loadingNode,\n })}\n >\n {children}\n </span>\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n let _icon = icon;\n if (icon) {\n const sizes: Record<ButtonSize, number> = {\n small: parseInt(this.theme.btnIconSizeSmall),\n medium: parseInt(this.theme.btnIconSizeMedium),\n large: parseInt(this.theme.btnIconSizeLarge),\n };\n // Expect icon to have a `size` prop\n _icon = React.cloneElement(icon, { size: sizes[this.props.size || 'small'] });\n }\n\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link focused={isFocused} disabled={disabled} icon={_icon} component=\"span\" tabIndex={-1}>\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}
@@ -4,6 +4,7 @@ var _Emotion = require("../../lib/theming/Emotion");
4
4
  var _ThemeContext = require("../../lib/theming/ThemeContext");
5
5
  var _Spinner = require("../Spinner");
6
6
  var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
7
+ var _chars = require("../../lib/chars");
7
8
 
8
9
 
9
10
  var _Button = require("./Button.styles");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
@@ -33,9 +34,14 @@ var ButtonIcon = function ButtonIcon(_ref)
33
34
  return _Button.styles.iconSmall(theme);}
34
35
 
35
36
  };
37
+ var sizes = {
38
+ small: parseInt(theme.btnIconSizeSmall),
39
+ medium: parseInt(theme.btnIconSizeMedium),
40
+ large: parseInt(theme.btnIconSizeLarge) };
36
41
 
37
- var type = (0, _ThemeHelpers.isTheme2022)(theme) ? size : 'mini';
38
- var space = (0, _ThemeHelpers.isTheme2022)(theme) ? String.fromCharCode(8203) : '';
42
+
43
+ var spinnerType = (0, _ThemeHelpers.isTheme2022)(theme) ? size : 'mini';
44
+ var space = (0, _ThemeHelpers.isTheme2022)(theme) ? _chars.ZERO_WIDTH_SPACE : '';
39
45
  var style = (0, _ThemeHelpers.isTheme2022)(theme) ?
40
46
  {
41
47
  display: 'inline-flex',
@@ -43,7 +49,11 @@ var ButtonIcon = function ButtonIcon(_ref)
43
49
 
44
50
  {};
45
51
 
46
- var spinnerNode = function spinnerNode() {return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { caption: null, dimmed: true, type: type });};
52
+ var _icon = icon;
53
+ if (icon && (0, _ThemeHelpers.isTheme2022)(theme)) {
54
+ // Expect icon to have a `size` and `disableCompensation` props
55
+ _icon = /*#__PURE__*/_react.default.cloneElement(icon, { size: sizes[size], disableCompensation: true });
56
+ }
47
57
 
48
58
  return /*#__PURE__*/(
49
59
  _react.default.createElement("span", {
@@ -54,7 +64,7 @@ var ButtonIcon = function ButtonIcon(_ref)
54
64
 
55
65
 
56
66
  space,
57
- loading ? spinnerNode() : icon));
67
+ loading ? /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { caption: null, dimmed: true, type: spinnerType }) : _icon));
58
68
 
59
69
 
60
70
  };exports.ButtonIcon = ButtonIcon;
@@ -1 +1 @@
1
- {"version":3,"sources":["ButtonIcon.tsx"],"names":["ButtonIcon","icon","hasChildren","use","loading","size","theme","ThemeContext","isLink","getSizeIconClassName","styles","iconLarge","iconMedium","iconSmall","type","space","String","fromCharCode","style","display","alignItems","spinnerNode","iconNoRightMargin","iconLink"],"mappings":"mEAAA;;AAEA;AACA;AACA;AACA;;;AAGA,yC;;;;;;AAMO,IAAMA,UAAoD,GAAG,SAAvDA,UAAuD;;;;;;AAM9D,aALJC,IAKI,QALJA,IAKI,CAJJC,WAII,QAJJA,WAII,CAHJC,GAGI,QAHJA,GAGI,qBAFJC,OAEI,CAFJA,OAEI,6BAFM,KAEN,iCADJC,IACI,CADJA,IACI,0BADG,OACH;AACJ,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,MAAMC,MAAM,GAAGL,GAAG,KAAK,MAAvB;;AAEA,MAAMM,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,YAAQJ,IAAR;AACE,WAAK,OAAL;AACE,eAAOK,eAAOC,SAAP,CAAiBL,KAAjB,CAAP;AACF,WAAK,QAAL;AACE,eAAOI,eAAOE,UAAP,CAAkBN,KAAlB,CAAP;AACF,WAAK,OAAL;AACA;AACE,eAAOI,eAAOG,SAAP,CAAiBP,KAAjB,CAAP,CAPJ;;AASD,GAVD;;AAYA,MAAMQ,IAAI,GAAG,+BAAYR,KAAZ,IAAqBD,IAArB,GAA4B,MAAzC;AACA,MAAMU,KAAK,GAAG,+BAAYT,KAAZ,IAAqBU,MAAM,CAACC,YAAP,CAAoB,IAApB,CAArB,GAAiD,EAA/D;AACA,MAAMC,KAA0B,GAAG,+BAAYZ,KAAZ;AAC/B;AACEa,IAAAA,OAAO,EAAE,aADX;AAEEC,IAAAA,UAAU,EAAE,QAFd,EAD+B;;AAK/B,IALJ;;AAOA,MAAMC,WAAW,GAAG,SAAdA,WAAc,wBAAM,6BAAC,gBAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,IAAI,EAAEP,IAArC,GAAN,EAApB;;AAEA;AACE;AACE,MAAA,KAAK,EAAEI,KADT;AAEE,MAAA,SAAS,EAAE,iBAAGR,eAAOT,IAAP,EAAH,EAAkBQ,oBAAoB,EAAtC;AACRC,qBAAOY,iBAAP,EADQ,IACqB,CAACpB,WADtB;AAERQ,qBAAOa,QAAP,CAAgBjB,KAAhB,CAFQ,IAEiBE,MAFjB,OAFb;;;AAOGO,IAAAA,KAPH;AAQGX,IAAAA,OAAO,GAAGiB,WAAW,EAAd,GAAmBpB,IAR7B,CADF;;;AAYD,CA7CM,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\n\nimport { ButtonProps } from './Button';\nimport { styles } from './Button.styles';\n\ntype ButtonIconProps = Pick<ButtonProps, 'size' | 'icon' | 'loading' | 'disabled' | 'use'> & {\n hasChildren: boolean;\n};\n\nexport const ButtonIcon: React.FunctionComponent<ButtonIconProps> = ({\n icon,\n hasChildren,\n use,\n loading = false,\n size = 'small',\n}) => {\n const theme = useContext(ThemeContext);\n const isLink = use === 'link';\n\n const getSizeIconClassName = () => {\n switch (size) {\n case 'large':\n return styles.iconLarge(theme);\n case 'medium':\n return styles.iconMedium(theme);\n case 'small':\n default:\n return styles.iconSmall(theme);\n }\n };\n\n const type = isTheme2022(theme) ? size : 'mini';\n const space = isTheme2022(theme) ? String.fromCharCode(8203) : '';\n const style: React.CSSProperties = isTheme2022(theme)\n ? {\n display: 'inline-flex',\n alignItems: 'center',\n }\n : {};\n\n const spinnerNode = () => <Spinner caption={null} dimmed type={type} />;\n\n return (\n <span\n style={style}\n className={cx(styles.icon(), getSizeIconClassName(), {\n [styles.iconNoRightMargin()]: !hasChildren,\n [styles.iconLink(theme)]: isLink,\n })}\n >\n {space}\n {loading ? spinnerNode() : icon}\n </span>\n );\n};\n"]}
1
+ {"version":3,"sources":["ButtonIcon.tsx"],"names":["ButtonIcon","icon","hasChildren","use","loading","size","theme","ThemeContext","isLink","getSizeIconClassName","styles","iconLarge","iconMedium","iconSmall","sizes","small","parseInt","btnIconSizeSmall","medium","btnIconSizeMedium","large","btnIconSizeLarge","spinnerType","space","ZERO_WIDTH_SPACE","style","display","alignItems","_icon","React","cloneElement","disableCompensation","iconNoRightMargin","iconLink"],"mappings":"mEAAA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,yC;;;;;;AAMO,IAAMA,UAAoD,GAAG,SAAvDA,UAAuD;;;;;;AAM9D,aALJC,IAKI,QALJA,IAKI,CAJJC,WAII,QAJJA,WAII,CAHJC,GAGI,QAHJA,GAGI,qBAFJC,OAEI,CAFJA,OAEI,6BAFM,KAEN,iCADJC,IACI,CADJA,IACI,0BADG,OACH;AACJ,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,MAAMC,MAAM,GAAGL,GAAG,KAAK,MAAvB;;AAEA,MAAMM,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,YAAQJ,IAAR;AACE,WAAK,OAAL;AACE,eAAOK,eAAOC,SAAP,CAAiBL,KAAjB,CAAP;AACF,WAAK,QAAL;AACE,eAAOI,eAAOE,UAAP,CAAkBN,KAAlB,CAAP;AACF,WAAK,OAAL;AACA;AACE,eAAOI,eAAOG,SAAP,CAAiBP,KAAjB,CAAP,CAPJ;;AASD,GAVD;AAWA,MAAMQ,KAAiC,GAAG;AACxCC,IAAAA,KAAK,EAAEC,QAAQ,CAACV,KAAK,CAACW,gBAAP,CADyB;AAExCC,IAAAA,MAAM,EAAEF,QAAQ,CAACV,KAAK,CAACa,iBAAP,CAFwB;AAGxCC,IAAAA,KAAK,EAAEJ,QAAQ,CAACV,KAAK,CAACe,gBAAP,CAHyB,EAA1C;;;AAMA,MAAMC,WAAW,GAAG,+BAAYhB,KAAZ,IAAqBD,IAArB,GAA4B,MAAhD;AACA,MAAMkB,KAAK,GAAG,+BAAYjB,KAAZ,IAAqBkB,uBAArB,GAAwC,EAAtD;AACA,MAAMC,KAA0B,GAAG,+BAAYnB,KAAZ;AAC/B;AACEoB,IAAAA,OAAO,EAAE,aADX;AAEEC,IAAAA,UAAU,EAAE,QAFd,EAD+B;;AAK/B,IALJ;;AAOA,MAAIC,KAAK,GAAG3B,IAAZ;AACA,MAAIA,IAAI,IAAI,+BAAYK,KAAZ,CAAZ,EAAgC;AAC9B;AACAsB,IAAAA,KAAK,gBAAGC,eAAMC,YAAN,CAAmB7B,IAAnB,EAAyB,EAAEI,IAAI,EAAES,KAAK,CAACT,IAAD,CAAb,EAAqB0B,mBAAmB,EAAE,IAA1C,EAAzB,CAAR;AACD;;AAED;AACE;AACE,MAAA,KAAK,EAAEN,KADT;AAEE,MAAA,SAAS,EAAE,iBAAGf,eAAOT,IAAP,EAAH,EAAkBQ,oBAAoB,EAAtC;AACRC,qBAAOsB,iBAAP,EADQ,IACqB,CAAC9B,WADtB;AAERQ,qBAAOuB,QAAP,CAAgB3B,KAAhB,CAFQ,IAEiBE,MAFjB,OAFb;;;AAOGe,IAAAA,KAPH;AAQGnB,IAAAA,OAAO,gBAAG,6BAAC,gBAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,IAAI,EAAEkB,WAArC,GAAH,GAA0DM,KARpE,CADF;;;AAYD,CAtDM,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ZERO_WIDTH_SPACE } from '../../lib/chars';\n\nimport { ButtonProps, ButtonSize } from './Button';\nimport { styles } from './Button.styles';\n\ntype ButtonIconProps = Pick<ButtonProps, 'size' | 'icon' | 'loading' | 'disabled' | 'use'> & {\n hasChildren: boolean;\n};\n\nexport const ButtonIcon: React.FunctionComponent<ButtonIconProps> = ({\n icon,\n hasChildren,\n use,\n loading = false,\n size = 'small',\n}) => {\n const theme = useContext(ThemeContext);\n const isLink = use === 'link';\n\n const getSizeIconClassName = () => {\n switch (size) {\n case 'large':\n return styles.iconLarge(theme);\n case 'medium':\n return styles.iconMedium(theme);\n case 'small':\n default:\n return styles.iconSmall(theme);\n }\n };\n const sizes: Record<ButtonSize, number> = {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n\n const spinnerType = isTheme2022(theme) ? size : 'mini';\n const space = isTheme2022(theme) ? ZERO_WIDTH_SPACE : '';\n const style: React.CSSProperties = isTheme2022(theme)\n ? {\n display: 'inline-flex',\n alignItems: 'center',\n }\n : {};\n\n let _icon = icon;\n if (icon && isTheme2022(theme)) {\n // Expect icon to have a `size` and `disableCompensation` props\n _icon = React.cloneElement(icon, { size: sizes[size], disableCompensation: true });\n }\n\n return (\n <span\n style={style}\n className={cx(styles.icon(), getSizeIconClassName(), {\n [styles.iconNoRightMargin()]: !hasChildren,\n [styles.iconLink(theme)]: isLink,\n })}\n >\n {space}\n {loading ? <Spinner caption={null} dimmed type={spinnerType} /> : _icon}\n </span>\n );\n};\n"]}
@@ -164,4 +164,4 @@ Picker = (_dec = (0, _decorators.locale)('DatePicker', _locale.DatePickerLocaleH
164
164
  }
165
165
 
166
166
  return today;
167
- };var _today = getTodayCalendarDate();_this.state = { date: _this.getInitialDate(_today), today: _today };return _this;}var _proto = Picker.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var value = this.props.value;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {this.scrollToMonth(value.month, value.year);}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var date = this.state.date;return /*#__PURE__*/_react.default.createElement("div", { "data-tid": _DatePicker.DatePickerDataTids.pickerRoot, className: _Picker.styles.root(this.theme), onMouseDown: function onMouseDown(e) {return e.preventDefault();} }, /*#__PURE__*/_react.default.createElement(_Calendar.Calendar, { ref: function ref(c) {return _this3.calendar = c;}, value: this.props.value, initialMonth: date.month, initialYear: date.year, onSelect: this.props.onPick, minDate: this.props.minDate, maxDate: this.props.maxDate, isHoliday: this.props.isHoliday }), this.props.enableTodayLink && this.renderTodayLink(), ' ');};_proto.renderTodayLink = function renderTodayLink() {var _this$locale = this.locale,order = _this$locale.order,separator = _this$locale.separator;var today = new _InternalDate.InternalDate({ order: order, separator: separator }).setComponents(_InternalDateGetter.InternalDateGetter.getTodayComponents());if ((0, _ThemeHelpers.isTheme2022)(this.theme)) {return /*#__PURE__*/_react.default.createElement("div", { style: { margin: 8 } }, /*#__PURE__*/_react.default.createElement(_Button.Button, { "data-tid": _DatePicker.DatePickerDataTids.pickerTodayWrapper, width: "100%", onClick: this.handleSelectToday(today), icon: /*#__PURE__*/_react.default.createElement(_ArrowAUp16Light.ArrowAUpIcon16Light, { disableCompensation: false }) }, this.locale.today));}return /*#__PURE__*/_react.default.createElement("button", { "data-tid": _DatePicker.DatePickerDataTids.pickerTodayWrapper, className: _Picker.styles.todayWrapper(this.theme), onClick: this.handleSelectToday(today), tabIndex: -1 }, this.locale.today + " " + today.toString({ withPad: true, withSeparator: true }));};return Picker;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Picker', _temp)) || _class);exports.Picker = Picker;
167
+ };var _today = getTodayCalendarDate();_this.state = { date: _this.getInitialDate(_today), today: _today };return _this;}var _proto = Picker.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var value = this.props.value;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {this.scrollToMonth(value.month, value.year);}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var date = this.state.date;return /*#__PURE__*/_react.default.createElement("div", { "data-tid": _DatePicker.DatePickerDataTids.pickerRoot, className: _Picker.styles.root(this.theme), onMouseDown: function onMouseDown(e) {return e.preventDefault();} }, /*#__PURE__*/_react.default.createElement(_Calendar.Calendar, { ref: function ref(c) {return _this3.calendar = c;}, value: this.props.value, initialMonth: date.month, initialYear: date.year, onSelect: this.props.onPick, minDate: this.props.minDate, maxDate: this.props.maxDate, isHoliday: this.props.isHoliday }), this.props.enableTodayLink && this.renderTodayLink(), ' ');};_proto.renderTodayLink = function renderTodayLink() {var _this$locale = this.locale,order = _this$locale.order,separator = _this$locale.separator;var today = new _InternalDate.InternalDate({ order: order, separator: separator }).setComponents(_InternalDateGetter.InternalDateGetter.getTodayComponents());if ((0, _ThemeHelpers.isTheme2022)(this.theme)) {return /*#__PURE__*/_react.default.createElement("div", { style: { margin: 8 } }, /*#__PURE__*/_react.default.createElement(_Button.Button, { "data-tid": _DatePicker.DatePickerDataTids.pickerTodayWrapper, width: "100%", onClick: this.handleSelectToday(today), icon: /*#__PURE__*/_react.default.createElement(_ArrowAUp16Light.ArrowAUpIcon16Light, null) }, this.locale.today));}return /*#__PURE__*/_react.default.createElement("button", { "data-tid": _DatePicker.DatePickerDataTids.pickerTodayWrapper, className: _Picker.styles.todayWrapper(this.theme), onClick: this.handleSelectToday(today), tabIndex: -1 }, this.locale.today + " " + today.toString({ withPad: true, withSeparator: true }));};return Picker;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Picker', _temp)) || _class);exports.Picker = Picker;
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.tsx"],"names":["getTodayCalendarDate","d","Date","date","getDate","month","getMonth","year","getFullYear","Picker","DatePickerLocaleHelper","props","calendar","scrollToMonth","handleSelectToday","today","onSelect","todayInNativeFormat","toNativeFormat","state","getInitialDate","value","minDate","maxDate","componentDidUpdate","prevProps","render","theme","renderMain","DatePickerDataTids","pickerRoot","styles","root","e","preventDefault","c","onPick","isHoliday","enableTodayLink","renderTodayLink","locale","order","separator","InternalDate","setComponents","InternalDateGetter","getTodayComponents","margin","pickerTodayWrapper","todayWrapper","toString","withPad","withSeparator","React","Component","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { Calendar, CalendarDateShape, isGreater, isLess } from '../../internal/Calendar';\nimport { locale } from '../../lib/locale/decorators';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Button } from '../Button';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\n\nimport { styles } from './Picker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { DatePickerDataTids } from './DatePicker';\n\ninterface Props {\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n value: Nullable<CalendarDateShape>;\n onPick: (date: CalendarDateShape) => void;\n onSelect?: (date: CalendarDateShape) => void;\n enableTodayLink?: boolean;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\ninterface State {\n date: CalendarDateShape;\n today: CalendarDateShape;\n}\n\nconst getTodayCalendarDate = () => {\n const d = new Date();\n return {\n date: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n };\n};\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class Picker extends React.Component<Props, State> {\n public static __KONTUR_REACT_UI__ = 'Picker';\n\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n constructor(props: Props) {\n super(props);\n const today = getTodayCalendarDate();\n this.state = {\n date: this.getInitialDate(today),\n today,\n };\n }\n\n public componentDidUpdate(prevProps: Props) {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n this.scrollToMonth(value.month, value.year);\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 private renderMain() {\n const { date } = this.state;\n\n return (\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.root(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n value={this.props.value}\n initialMonth={date.month}\n initialYear={date.year}\n onSelect={this.props.onPick}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n isHoliday={this.props.isHoliday}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n );\n }\n\n private scrollToMonth = (month: number, year: number) => {\n if (this.calendar) {\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator }).setComponents(InternalDateGetter.getTodayComponents());\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light disableCompensation={false} />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={styles.todayWrapper(this.theme)}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today.toString({ withPad: true, withSeparator: true })}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: InternalDate) => () => {\n if (this.props.onSelect) {\n const todayInNativeFormat = today.toNativeFormat();\n if (todayInNativeFormat) {\n this.props.onSelect(todayInNativeFormat);\n }\n }\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private getInitialDate = (today: CalendarDateShape) => {\n if (this.props.value) {\n return this.props.value;\n }\n\n if (this.props.minDate && isLess(today, this.props.minDate)) {\n return this.props.minDate;\n }\n\n if (this.props.maxDate && isGreater(today, this.props.maxDate)) {\n return this.props.maxDate;\n }\n\n return today;\n };\n}\n"]}
1
+ {"version":3,"sources":["Picker.tsx"],"names":["getTodayCalendarDate","d","Date","date","getDate","month","getMonth","year","getFullYear","Picker","DatePickerLocaleHelper","props","calendar","scrollToMonth","handleSelectToday","today","onSelect","todayInNativeFormat","toNativeFormat","state","getInitialDate","value","minDate","maxDate","componentDidUpdate","prevProps","render","theme","renderMain","DatePickerDataTids","pickerRoot","styles","root","e","preventDefault","c","onPick","isHoliday","enableTodayLink","renderTodayLink","locale","order","separator","InternalDate","setComponents","InternalDateGetter","getTodayComponents","margin","pickerTodayWrapper","todayWrapper","toString","withPad","withSeparator","React","Component","__KONTUR_REACT_UI__"],"mappings":"kPAAA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,0C;;;;;;;;;;;;;;;;;AAiBA,IAAMA,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,MAAMC,CAAC,GAAG,IAAIC,IAAJ,EAAV;AACA,SAAO;AACLC,IAAAA,IAAI,EAAEF,CAAC,CAACG,OAAF,EADD;AAELC,IAAAA,KAAK,EAAEJ,CAAC,CAACK,QAAF,EAFF;AAGLC,IAAAA,IAAI,EAAEN,CAAC,CAACO,WAAF,EAHD,EAAP;;AAKD,CAPD,C;;;AAUaC,M,WADZ,wBAAO,YAAP,EAAqBC,8BAArB,C;;;;;;;AAQC,kBAAYC,KAAZ,EAA0B;AACxB,wCAAMA,KAAN,UADwB,MAHlBC,QAGkB,GAHU,IAGV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDlBC,IAAAA,aAnDkB,GAmDF,UAACR,KAAD,EAAgBE,IAAhB,EAAiC;AACvD,UAAI,MAAKK,QAAT,EAAmB;AACjB,cAAKA,QAAL,CAAcC,aAAd,CAA4BR,KAA5B,EAAmCE,IAAnC;AACD;AACF,KAvDyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFlBO,IAAAA,iBAxFkB,GAwFE,UAACC,KAAD,UAAyB,YAAM;AACzD,YAAI,MAAKJ,KAAL,CAAWK,QAAf,EAAyB;AACvB,cAAMC,mBAAmB,GAAGF,KAAK,CAACG,cAAN,EAA5B;AACA,cAAID,mBAAJ,EAAyB;AACvB,kBAAKN,KAAL,CAAWK,QAAX,CAAoBC,mBAApB;AACD;AACF;;AAED,YAAI,MAAKL,QAAT,EAAmB;AACjB,kCAAwB,MAAKO,KAAL,CAAWJ,KAAnC,CAAQV,KAAR,qBAAQA,KAAR,CAAeE,IAAf,qBAAeA,IAAf;AACA,gBAAKK,QAAL,CAAcC,aAAd,CAA4BR,KAA5B,EAAmCE,IAAnC;AACD;AACF,OAZ2B,EAxFF;;AAsGlBa,IAAAA,cAtGkB,GAsGD,UAACL,KAAD,EAA8B;AACrD,UAAI,MAAKJ,KAAL,CAAWU,KAAf,EAAsB;AACpB,eAAO,MAAKV,KAAL,CAAWU,KAAlB;AACD;;AAED,UAAI,MAAKV,KAAL,CAAWW,OAAX,IAAsB,sBAAOP,KAAP,EAAc,MAAKJ,KAAL,CAAWW,OAAzB,CAA1B,EAA6D;AAC3D,eAAO,MAAKX,KAAL,CAAWW,OAAlB;AACD;;AAED,UAAI,MAAKX,KAAL,CAAWY,OAAX,IAAsB,yBAAUR,KAAV,EAAiB,MAAKJ,KAAL,CAAWY,OAA5B,CAA1B,EAAgE;AAC9D,eAAO,MAAKZ,KAAL,CAAWY,OAAlB;AACD;;AAED,aAAOR,KAAP;AACD,KApHyB,CAExB,IAAMA,MAAK,GAAGf,oBAAoB,EAAlC,CACA,MAAKmB,KAAL,GAAa,EACXhB,IAAI,EAAE,MAAKiB,cAAL,CAAoBL,MAApB,CADK,EAEXA,KAAK,EAALA,MAFW,EAAb,CAHwB,aAOzB,C,qCAEMS,kB,GAAP,4BAA0BC,SAA1B,EAA4C,CAC1C,IAAQJ,KAAR,GAAkB,KAAKV,KAAvB,CAAQU,KAAR,CACA,IAAIA,KAAK,IAAI,CAAC,2BAAaA,KAAb,EAAoBI,SAAS,CAACJ,KAA9B,CAAd,EAAoD,CAClD,KAAKR,aAAL,CAAmBQ,KAAK,CAAChB,KAAzB,EAAgCgB,KAAK,CAACd,IAAtC,EACD,CACF,C,QAEMmB,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,mBACnB,IAAQzB,IAAR,GAAiB,KAAKgB,KAAtB,CAAQhB,IAAR,CAEA,oBACE,sCACE,YAAU0B,+BAAmBC,UAD/B,EAEE,SAAS,EAAEC,eAAOC,IAAP,CAAY,KAAKL,KAAjB,CAFb,EAGE,WAAW,EAAE,qBAACM,CAAD,UAAOA,CAAC,CAACC,cAAF,EAAP,EAHf,iBAKE,6BAAC,kBAAD,IACE,GAAG,EAAE,aAACC,CAAD,UAAQ,MAAI,CAACvB,QAAL,GAAgBuB,CAAxB,EADP,EAEE,KAAK,EAAE,KAAKxB,KAAL,CAAWU,KAFpB,EAGE,YAAY,EAAElB,IAAI,CAACE,KAHrB,EAIE,WAAW,EAAEF,IAAI,CAACI,IAJpB,EAKE,QAAQ,EAAE,KAAKI,KAAL,CAAWyB,MALvB,EAME,OAAO,EAAE,KAAKzB,KAAL,CAAWW,OANtB,EAOE,OAAO,EAAE,KAAKX,KAAL,CAAWY,OAPtB,EAQE,SAAS,EAAE,KAAKZ,KAAL,CAAW0B,SARxB,GALF,EAeG,KAAK1B,KAAL,CAAW2B,eAAX,IAA8B,KAAKC,eAAL,EAfjC,EAeyD,GAfzD,CADF,CAmBD,C,QAQOA,e,GAAR,2BAA0B,CACxB,mBAA6B,KAAKC,MAAlC,CAAQC,KAAR,gBAAQA,KAAR,CAAeC,SAAf,gBAAeA,SAAf,CACA,IAAM3B,KAAK,GAAG,IAAI4B,0BAAJ,CAAiB,EAAEF,KAAK,EAALA,KAAF,EAASC,SAAS,EAATA,SAAT,EAAjB,EAAuCE,aAAvC,CAAqDC,uCAAmBC,kBAAnB,EAArD,CAAd,CAEA,IAAI,+BAAY,KAAKnB,KAAjB,CAAJ,EAA6B,CAC3B,oBACE,sCAAK,KAAK,EAAE,EAAEoB,MAAM,EAAE,CAAV,EAAZ,iBACE,6BAAC,cAAD,IACE,YAAUlB,+BAAmBmB,kBAD/B,EAEE,KAAK,EAAC,MAFR,EAGE,OAAO,EAAE,KAAKlC,iBAAL,CAAuBC,KAAvB,CAHX,EAIE,IAAI,eAAE,6BAAC,oCAAD,OAJR,IAMG,KAAKyB,MAAL,CAAYzB,KANf,CADF,CADF,CAYD,CAED,oBACE,yCACE,YAAUc,+BAAmBmB,kBAD/B,EAEE,SAAS,EAAEjB,eAAOkB,YAAP,CAAoB,KAAKtB,KAAzB,CAFb,EAGE,OAAO,EAAE,KAAKb,iBAAL,CAAuBC,KAAvB,CAHX,EAIE,QAAQ,EAAE,CAAC,CAJb,IAMM,KAAKyB,MAAL,CAAYzB,KANlB,SAM2BA,KAAK,CAACmC,QAAN,CAAe,EAAEC,OAAO,EAAE,IAAX,EAAiBC,aAAa,EAAE,IAAhC,EAAf,CAN3B,CADF,CAUD,C,iBA7FyBC,eAAMC,S,WAClBC,mB,GAAsB,Q","sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateGetter } from '../../lib/date/InternalDateGetter';\nimport { Calendar, CalendarDateShape, isGreater, isLess } from '../../internal/Calendar';\nimport { locale } from '../../lib/locale/decorators';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Button } from '../Button';\nimport { ArrowAUpIcon16Light } from '../../internal/icons2022/ArrowAUpIcon/ArrowAUp16Light';\n\nimport { styles } from './Picker.styles';\nimport { DatePickerLocale, DatePickerLocaleHelper } from './locale';\nimport { DatePickerDataTids } from './DatePicker';\n\ninterface Props {\n maxDate?: CalendarDateShape;\n minDate?: CalendarDateShape;\n value: Nullable<CalendarDateShape>;\n onPick: (date: CalendarDateShape) => void;\n onSelect?: (date: CalendarDateShape) => void;\n enableTodayLink?: boolean;\n isHoliday?: (day: CalendarDateShape & { isWeekend: boolean }) => boolean;\n}\n\ninterface State {\n date: CalendarDateShape;\n today: CalendarDateShape;\n}\n\nconst getTodayCalendarDate = () => {\n const d = new Date();\n return {\n date: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n };\n};\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class Picker extends React.Component<Props, State> {\n public static __KONTUR_REACT_UI__ = 'Picker';\n\n private theme!: Theme;\n private calendar: Calendar | null = null;\n private readonly locale!: DatePickerLocale;\n\n constructor(props: Props) {\n super(props);\n const today = getTodayCalendarDate();\n this.state = {\n date: this.getInitialDate(today),\n today,\n };\n }\n\n public componentDidUpdate(prevProps: Props) {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n this.scrollToMonth(value.month, value.year);\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 private renderMain() {\n const { date } = this.state;\n\n return (\n <div\n data-tid={DatePickerDataTids.pickerRoot}\n className={styles.root(this.theme)}\n onMouseDown={(e) => e.preventDefault()}\n >\n <Calendar\n ref={(c) => (this.calendar = c)}\n value={this.props.value}\n initialMonth={date.month}\n initialYear={date.year}\n onSelect={this.props.onPick}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n isHoliday={this.props.isHoliday}\n />\n {this.props.enableTodayLink && this.renderTodayLink()}{' '}\n </div>\n );\n }\n\n private scrollToMonth = (month: number, year: number) => {\n if (this.calendar) {\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private renderTodayLink() {\n const { order, separator } = this.locale;\n const today = new InternalDate({ order, separator }).setComponents(InternalDateGetter.getTodayComponents());\n\n if (isTheme2022(this.theme)) {\n return (\n <div style={{ margin: 8 }}>\n <Button\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n width=\"100%\"\n onClick={this.handleSelectToday(today)}\n icon={<ArrowAUpIcon16Light />}\n >\n {this.locale.today}\n </Button>\n </div>\n );\n }\n\n return (\n <button\n data-tid={DatePickerDataTids.pickerTodayWrapper}\n className={styles.todayWrapper(this.theme)}\n onClick={this.handleSelectToday(today)}\n tabIndex={-1}\n >\n {`${this.locale.today} ${today.toString({ withPad: true, withSeparator: true })}`}\n </button>\n );\n }\n\n private handleSelectToday = (today: InternalDate) => () => {\n if (this.props.onSelect) {\n const todayInNativeFormat = today.toNativeFormat();\n if (todayInNativeFormat) {\n this.props.onSelect(todayInNativeFormat);\n }\n }\n\n if (this.calendar) {\n const { month, year } = this.state.today;\n this.calendar.scrollToMonth(month, year);\n }\n };\n\n private getInitialDate = (today: CalendarDateShape) => {\n if (this.props.value) {\n return this.props.value;\n }\n\n if (this.props.minDate && isLess(today, this.props.minDate)) {\n return this.props.minDate;\n }\n\n if (this.props.maxDate && isGreater(today, this.props.maxDate)) {\n return this.props.maxDate;\n }\n\n return today;\n };\n}\n"]}
@@ -3,13 +3,14 @@
3
3
 
4
4
  var styles = (0, _Emotion.memoizeStyle)({
5
5
  root: function root(t) {
6
- return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background: ", ";\n box-shadow: ", ";\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n "])),
6
+ return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background: ", ";\n box-shadow: ", ";\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n border-radius: ", ";\n "])),
7
7
  t.pickerBg,
8
- t.pickerShadow);
8
+ t.pickerShadow,
9
9
 
10
10
 
11
11
 
12
12
 
13
+ t.pickerBorderRadius);
13
14
 
14
15
  },
15
16
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Picker.styles.ts"],"names":["styles","root","t","css","pickerBg","pickerShadow","todayWrapper","pickerTodayWrapperBgColor","pickerTodayWrapperBorderTop","linkColor","pickerTodayWrapperFontSize","pickerTodayWrapperPaddingBottom","pickerTodayWrapperPaddingTop","pickerTodayWrapperLineHeight","pickerTodayWrapperHoverBgColor","linkActiveColor"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACE,QADlB;AAEgBF,IAAAA,CAAC,CAACG,YAFlB;;;;;;AAQD,GAVgC;;AAYjCC,EAAAA,YAZiC,wBAYpBJ,CAZoB,EAYV;AACrB,eAAOC,YAAP;AACsBD,IAAAA,CAAC,CAACK,yBADxB;;AAGgBL,IAAAA,CAAC,CAACM,2BAHlB;AAIWN,IAAAA,CAAC,CAACO,SAJb;;AAMeP,IAAAA,CAAC,CAACQ,0BANjB;AAOoBR,IAAAA,CAAC,CAACS,+BAPtB;AAQiBT,IAAAA,CAAC,CAACU,4BARnB;AASiBV,IAAAA,CAAC,CAACW,4BATnB;;;;AAawBX,IAAAA,CAAC,CAACY,8BAb1B;;;;;AAkBaZ,IAAAA,CAAC,CAACa,eAlBf;;;AAqBD,GAlCgC,EAAb,CAAf,C","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 background: ${t.pickerBg};\n box-shadow: ${t.pickerShadow};\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n `;\n },\n\n todayWrapper(t: Theme) {\n return css`\n background-color: ${t.pickerTodayWrapperBgColor};\n border: none;\n border-top: ${t.pickerTodayWrapperBorderTop};\n color: ${t.linkColor};\n display: block;\n font-size: ${t.pickerTodayWrapperFontSize};\n padding-bottom: ${t.pickerTodayWrapperPaddingBottom};\n padding-top: ${t.pickerTodayWrapperPaddingTop};\n line-height: ${t.pickerTodayWrapperLineHeight};\n width: 100%;\n\n &:hover {\n background-color: ${t.pickerTodayWrapperHoverBgColor};\n cursor: pointer;\n }\n\n &:active {\n color: ${t.linkActiveColor};\n }\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Picker.styles.ts"],"names":["styles","root","t","css","pickerBg","pickerShadow","pickerBorderRadius","todayWrapper","pickerTodayWrapperBgColor","pickerTodayWrapperBorderTop","linkColor","pickerTodayWrapperFontSize","pickerTodayWrapperPaddingBottom","pickerTodayWrapperPaddingTop","pickerTodayWrapperLineHeight","pickerTodayWrapperHoverBgColor","linkActiveColor"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACE,QADlB;AAEgBF,IAAAA,CAAC,CAACG,YAFlB;;;;;AAOmBH,IAAAA,CAAC,CAACI,kBAPrB;;AASD,GAXgC;;AAajCC,EAAAA,YAbiC,wBAapBL,CAboB,EAaV;AACrB,eAAOC,YAAP;AACsBD,IAAAA,CAAC,CAACM,yBADxB;;AAGgBN,IAAAA,CAAC,CAACO,2BAHlB;AAIWP,IAAAA,CAAC,CAACQ,SAJb;;AAMeR,IAAAA,CAAC,CAACS,0BANjB;AAOoBT,IAAAA,CAAC,CAACU,+BAPtB;AAQiBV,IAAAA,CAAC,CAACW,4BARnB;AASiBX,IAAAA,CAAC,CAACY,4BATnB;;;;AAawBZ,IAAAA,CAAC,CAACa,8BAb1B;;;;;AAkBab,IAAAA,CAAC,CAACc,eAlBf;;;AAqBD,GAnCgC,EAAb,CAAf,C","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 background: ${t.pickerBg};\n box-shadow: ${t.pickerShadow};\n display: inline-block;\n font-size: 0;\n z-index: 1000;\n touch-action: none;\n border-radius: ${t.pickerBorderRadius};\n `;\n },\n\n todayWrapper(t: Theme) {\n return css`\n background-color: ${t.pickerTodayWrapperBgColor};\n border: none;\n border-top: ${t.pickerTodayWrapperBorderTop};\n color: ${t.linkColor};\n display: block;\n font-size: ${t.pickerTodayWrapperFontSize};\n padding-bottom: ${t.pickerTodayWrapperPaddingBottom};\n padding-top: ${t.pickerTodayWrapperPaddingTop};\n line-height: ${t.pickerTodayWrapperLineHeight};\n width: 100%;\n\n &:hover {\n background-color: ${t.pickerTodayWrapperHoverBgColor};\n cursor: pointer;\n }\n\n &:active {\n color: ${t.linkActiveColor};\n }\n `;\n },\n});\n"]}
@@ -1,6 +1,7 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.InputLayoutAside = void 0;var _react = _interopRequireDefault(require("react"));
2
2
 
3
3
 
4
+ var _chars = require("../../../lib/chars");
4
5
 
5
6
  var _InputLayout = require("./InputLayout.styles");
6
7
  var _InputLayoutAsideIcon = require("./InputLayoutAsideIcon");
@@ -21,8 +22,8 @@ var InputLayoutAside = function InputLayoutAside(_ref) {var _ref$icon = _ref.ico
21
22
  var child = side === 'left' ? [_icon, _text] : [_text, _icon];
22
23
 
23
24
  return /*#__PURE__*/(
24
- _react.default.createElement("span", { className: asideClassName }, "\u200B",
25
-
25
+ _react.default.createElement("span", { className: asideClassName },
26
+ _chars.ZERO_WIDTH_SPACE,
26
27
  child));
27
28
 
28
29
 
@@ -1 +1 @@
1
- {"version":3,"sources":["InputLayoutAside.tsx"],"names":["InputLayoutAside","icon","text","side","asideClassName","stylesLayout","aside","_icon","_text","child"],"mappings":"8JAAA;;;;AAIA;AACA;AACA;;;;;;;;AAQO,IAAMA,gBAAgE,GAAG,SAAnEA,gBAAmE,OAAiC,sBAA9BC,IAA8B,CAA9BA,IAA8B,0BAAvB,IAAuB,aAAjBC,IAAiB,QAAjBA,IAAiB,CAAXC,IAAW,QAAXA,IAAW;AAC/G,MAAMC,cAAc,GAAGC,0BAAaC,KAAb,EAAvB;;AAEA,MAAMC,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,EAA6C,IAAI,EAAEE,IAAnD,GAAd;AACA,MAAMK,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,GAAd;;AAEA,MAAMO,KAAK,GAAGN,IAAI,KAAK,MAAT,GAAkB,CAACI,KAAD,EAAQC,KAAR,CAAlB,GAAmC,CAACA,KAAD,EAAQD,KAAR,CAAjD;;AAEA;AACE,2CAAM,SAAS,EAAEH,cAAjB;;AAEGK,IAAAA,KAFH,CADF;;;AAMD,CAdM,C","sourcesContent":["import React from 'react';\n\nimport { InputProps } from '../Input';\n\nimport { stylesLayout } from './InputLayout.styles';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon';\nimport { InputLayoutAsideText } from './InputLayoutAsideText';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon = null, text, side }) => {\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return (\n <span className={asideClassName}>\n &#8203;{/* Symbol to align to baseline */}\n {child}\n </span>\n );\n};\n"]}
1
+ {"version":3,"sources":["InputLayoutAside.tsx"],"names":["InputLayoutAside","icon","text","side","asideClassName","stylesLayout","aside","_icon","_text","child","ZERO_WIDTH_SPACE"],"mappings":"8JAAA;;;AAGA;;AAEA;AACA;AACA;;;;;;;;AAQO,IAAMA,gBAAgE,GAAG,SAAnEA,gBAAmE,OAAiC,sBAA9BC,IAA8B,CAA9BA,IAA8B,0BAAvB,IAAuB,aAAjBC,IAAiB,QAAjBA,IAAiB,CAAXC,IAAW,QAAXA,IAAW;AAC/G,MAAMC,cAAc,GAAGC,0BAAaC,KAAb,EAAvB;;AAEA,MAAMC,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,EAA6C,IAAI,EAAEE,IAAnD,GAAd;AACA,MAAMK,KAAK,gBAAG,6BAAC,0CAAD,IAAsB,GAAG,EAAC,MAA1B,EAAiC,IAAI,EAAEN,IAAvC,GAAd;;AAEA,MAAMO,KAAK,GAAGN,IAAI,KAAK,MAAT,GAAkB,CAACI,KAAD,EAAQC,KAAR,CAAlB,GAAmC,CAACA,KAAD,EAAQD,KAAR,CAAjD;;AAEA;AACE,2CAAM,SAAS,EAAEH,cAAjB;AACGM,2BADH;AAEGD,IAAAA,KAFH,CADF;;;AAMD,CAdM,C","sourcesContent":["import React from 'react';\n\nimport { InputProps } from '../Input';\nimport { ZERO_WIDTH_SPACE } from '../../../lib/chars';\n\nimport { stylesLayout } from './InputLayout.styles';\nimport { InputLayoutAsideIcon } from './InputLayoutAsideIcon';\nimport { InputLayoutAsideText } from './InputLayoutAsideText';\n\nexport interface InputLayoutAsideProps {\n icon: InputProps['leftIcon'] | InputProps['rightIcon'];\n text: InputProps['prefix'] | InputProps['suffix'];\n side: 'left' | 'right';\n}\n\nexport const InputLayoutAside: React.FunctionComponent<InputLayoutAsideProps> = ({ icon = null, text, side }) => {\n const asideClassName = stylesLayout.aside();\n\n const _icon = <InputLayoutAsideIcon key=\"icon\" icon={icon} side={side} />;\n const _text = <InputLayoutAsideText key=\"text\" text={text} />;\n\n const child = side === 'left' ? [_icon, _text] : [_text, _icon];\n\n return (\n <span className={asideClassName}>\n {ZERO_WIDTH_SPACE}\n {child}\n </span>\n );\n};\n"]}
@@ -29,7 +29,7 @@ export interface KebabState {
29
29
  anchor: Nullable<HTMLElement>;
30
30
  focusedByTab: boolean;
31
31
  }
32
- declare type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations' | 'icon'>>;
32
+ declare type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;
33
33
  export declare class Kebab extends React.Component<KebabProps, KebabState> {
34
34
  static __KONTUR_REACT_UI__: string;
35
35
  static propTypes: {};
@@ -49,5 +49,6 @@ export declare class Kebab extends React.Component<KebabProps, KebabState> {
49
49
  private handleFocus;
50
50
  private handleBlur;
51
51
  private renderIcon;
52
+ private renderIcon2022;
52
53
  }
53
54
  export {};
@@ -1,5 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.Kebab = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
+ var _reactIs = require("react-is");
3
4
 
4
5
  var _identifiers = require("../../lib/events/keyboard/identifiers");
5
6
  var LayoutEvents = _interopRequireWildcard(require("../../lib/LayoutEvents"));
@@ -16,10 +17,12 @@ var _CommonWrapper = require("../../internal/CommonWrapper");
16
17
  var _Emotion = require("../../lib/theming/Emotion");
17
18
  var _rootNode = require("../../lib/rootNode");
18
19
  var _createPropsGetter = require("../../lib/createPropsGetter");
20
+ var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
19
21
 
20
- var _Kebab = require("./Kebab.styles");var _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var
21
-
22
+ var _chars = require("../../lib/chars");
22
23
 
24
+ var _Kebab = require("./Kebab.styles");
25
+ var _KebabIcon = require("./KebabIcon");var _class, _class2, _temp;function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}var
23
26
 
24
27
 
25
28
 
@@ -65,7 +68,6 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
65
68
 
66
69
 
67
70
 
68
-
69
71
  getProps = (0, _createPropsGetter.createPropsGetter)(Kebab.defaultProps);_this.
70
72
 
71
73
  state = {
@@ -136,8 +138,8 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
136
138
 
137
139
 
138
140
 
139
- renderCaption = function (captionProps) {var _cx;
140
- var disabled = _this.props.disabled;
141
+ renderCaption = function (captionProps) {
142
+ var _this$getProps = _this.getProps(),disabled = _this$getProps.disabled,size = _this$getProps.size;
141
143
  var handleCaptionKeyDown = function handleCaptionKeyDown(event) {
142
144
  if (!disabled) {
143
145
  _this.handleCaptionKeyDown(event, captionProps.openMenu);
@@ -157,14 +159,18 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
157
159
  onKeyDown: handleCaptionKeyDown,
158
160
  onFocus: _this.handleFocus,
159
161
  onBlur: _this.handleBlur,
160
- className: (0, _Emotion.cx)((_cx = {}, _cx[
161
- _Kebab.styles.kebab(_this.theme)] = true, _cx[
162
- _Kebab.styles.opened(_this.theme)] = captionProps.opened, _cx[
163
- _Kebab.styles.disabled()] = disabled, _cx[
164
- _Kebab.styles.focused(_this.theme)] = _this.state.focusedByTab, _cx)) },
162
+ className: (0, _Emotion.cx)(
163
+ _Kebab.styles.kebab(_this.theme),
164
+ size === 'small' && _Kebab.styles.kebabSmall(_this.theme),
165
+ size === 'medium' && _Kebab.styles.kebabMedium(_this.theme),
166
+ size === 'large' && _Kebab.styles.kebabLarge(_this.theme),
167
+ (0, _ThemeHelpers.isTheme2022)(_this.theme) && _Kebab.styles.kebab2022(),
168
+ captionProps.opened && _Kebab.styles.opened(_this.theme),
169
+ disabled && _Kebab.styles.disabled(),
170
+ _this.state.focusedByTab && _Kebab.styles.focused(_this.theme)) },
165
171
 
166
172
 
167
- _this.renderIcon()));
173
+ (0, _ThemeHelpers.isTheme2022)(_this.theme) ? _this.renderIcon2022() : _this.renderIcon()));
168
174
 
169
175
 
170
176
  };_this.
@@ -201,23 +207,48 @@ Kebab = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functio
201
207
  _this.setState({
202
208
  focusedByTab: false });
203
209
 
204
- };return _this;}var _proto = Kebab.prototype;_proto.componentDidMount = function componentDidMount() {/** addListener'у нужен колбэк в аргумент */this.listener = LayoutEvents.addListener(function () {return undefined;});};_proto.componentWillUnmount = function componentWillUnmount() {this.listener.remove();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.kebabPinOffset, popupMargin: theme.kebabMargin, popupPinSize: theme.kebabPinSize }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var disabled = this.props.disabled;var _this$getProps = this.getProps(),positions = _this$getProps.positions,disableAnimations = _this$getProps.disableAnimations,onOpen = _this$getProps.onOpen,onClose = _this$getProps.onClose;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { popupHasPin: true, positions: positions, onChangeMenuState: this.handleChangeMenuState, caption: this.renderCaption, disableAnimations: disableAnimations, menuMaxHeight: this.props.menuMaxHeight, onOpen: onOpen, onClose: onClose }, !disabled && this.props.children));};_proto.
210
+ };return _this;}var _proto = Kebab.prototype;_proto.componentDidMount = function componentDidMount() {/** addListener'у нужен колбэк в аргумент */this.listener = LayoutEvents.addListener(function () {return undefined;});};_proto.componentWillUnmount = function componentWillUnmount() {this.listener.remove();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ popupPinOffset: theme.kebabPinOffset, popupMargin: theme.kebabMargin, popupPinSize: theme.kebabPinSize }, theme) }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var disabled = this.props.disabled;var _this$getProps2 = this.getProps(),positions = _this$getProps2.positions,disableAnimations = _this$getProps2.disableAnimations,onOpen = _this$getProps2.onOpen,onClose = _this$getProps2.onClose;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement(_PopupMenu.PopupMenu, { popupHasPin: true, positions: positions, onChangeMenuState: this.handleChangeMenuState, caption: this.renderCaption, disableAnimations: disableAnimations, menuMaxHeight: this.props.menuMaxHeight, onOpen: onOpen, onClose: onClose }, !disabled && this.props.children));};_proto.
205
211
 
206
- renderIcon = function renderIcon() {var _cx2;
207
- var _this$getProps2 = this.getProps(),size = _this$getProps2.size,icon = _this$getProps2.icon;
212
+ renderIcon = function renderIcon() {var _cx;
213
+ var _this$getProps3 = this.getProps(),size = _this$getProps3.size,_this$getProps3$icon = _this$getProps3.icon,icon = _this$getProps3$icon === void 0 ? /*#__PURE__*/_react.default.createElement(_px.MenuKebabIcon, null) : _this$getProps3$icon;
208
214
  return /*#__PURE__*/(
209
215
  _react.default.createElement("div", {
210
- className: (0, _Emotion.cx)((_cx2 = {}, _cx2[
211
- _Kebab.styles.icon()] = true, _cx2[
212
- _Kebab.styles.iconsmall()] = size === 'small', _cx2[
213
- _Kebab.styles.iconmedium()] = size === 'medium', _cx2[
214
- _Kebab.styles.iconlarge()] = size === 'large', _cx2)) },
216
+ className: (0, _Emotion.cx)((_cx = {}, _cx[
217
+ _Kebab.styles.icon(this.theme)] = true, _cx[
218
+ _Kebab.styles.iconsmall(this.theme)] = size === 'small', _cx[
219
+ _Kebab.styles.iconmedium(this.theme)] = size === 'medium', _cx[
220
+ _Kebab.styles.iconlarge(this.theme)] = size === 'large', _cx)) },
215
221
 
216
222
 
217
223
  icon));
218
224
 
219
225
 
220
- };return Kebab;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = { onOpen: function onOpen() {return undefined;}, onClose: function onClose() {return undefined;}, positions: ['bottom left', 'bottom right', 'top left', 'top right'], size: 'small', disableAnimations: _currentEnvironment.isTestEnv, icon: /*#__PURE__*/_react.default.createElement(_px.MenuKebabIcon, null) }, _temp)) || _class;exports.Kebab = Kebab;
226
+ };_proto.
227
+
228
+ renderIcon2022 = function renderIcon2022() {
229
+ var _this$getProps4 = this.getProps(),size = _this$getProps4.size,_this$getProps4$icon = _this$getProps4.icon,icon = _this$getProps4$icon === void 0 ? /*#__PURE__*/_react.default.createElement(_KebabIcon.KebabIcon, null) : _this$getProps4$icon;
230
+
231
+ var sizes = {
232
+ small: parseInt(this.theme.kebabIconSizeSmall),
233
+ medium: parseInt(this.theme.kebabIconSizeMedium),
234
+ large: parseInt(this.theme.kebabIconSizeLarge) };
235
+
236
+
237
+ var cloneIcon = (0, _reactIs.isElement)(icon) ? /*#__PURE__*/
238
+ _react.default.cloneElement(icon, {
239
+ size: sizes[size],
240
+ color: this.theme.kebabIconColor,
241
+ disableCompensation: true }) :
242
+
243
+ icon;
244
+
245
+ return /*#__PURE__*/(
246
+ _react.default.createElement(_react.default.Fragment, null,
247
+ _chars.ZERO_WIDTH_SPACE,
248
+ cloneIcon));
249
+
250
+
251
+ };return Kebab;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = { onOpen: function onOpen() {return undefined;}, onClose: function onClose() {return undefined;}, positions: ['bottom left', 'bottom right', 'top left', 'top right'], size: 'small', disableAnimations: _currentEnvironment.isTestEnv }, _temp)) || _class;exports.Kebab = Kebab;
221
252
 
222
253
 
223
254
  Kebab.propTypes = {