@skbkontur/react-ui 4.0.0 → 4.0.3

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 (54) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/cjs/components/Button/Button.js +1 -1
  3. package/cjs/components/Button/Button.js.map +1 -1
  4. package/cjs/components/DatePicker/DatePicker.d.ts +0 -3
  5. package/cjs/components/DatePicker/DatePicker.js +14 -9
  6. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  7. package/cjs/components/Modal/Modal.js +2 -2
  8. package/cjs/components/Modal/Modal.js.map +1 -1
  9. package/cjs/components/Modal/ModalFooter.js +1 -0
  10. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  11. package/cjs/components/Modal/ModalHeader.js +1 -0
  12. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  13. package/cjs/components/SidePage/SidePage.styles.js +2 -2
  14. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  15. package/cjs/components/Textarea/TextareaCounter.js +3 -4
  16. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  17. package/cjs/components/Toast/Toast.styles.js +2 -2
  18. package/cjs/components/Toast/Toast.styles.js.map +1 -1
  19. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  20. package/cjs/internal/DropdownContainer/DropdownContainer.js +15 -13
  21. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  22. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +29 -29
  23. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  24. package/cjs/internal/ThemeShowcase/VariablesCollector.js +14 -9
  25. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  26. package/cjs/internal/icons/SpinnerIcon.js +2 -2
  27. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  28. package/components/Button/Button/Button.js +1 -2
  29. package/components/Button/Button/Button.js.map +1 -1
  30. package/components/DatePicker/DatePicker/DatePicker.js +19 -15
  31. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  32. package/components/DatePicker/DatePicker.d.ts +0 -3
  33. package/components/Modal/Modal/Modal.js +1 -1
  34. package/components/Modal/Modal/Modal.js.map +1 -1
  35. package/components/Modal/ModalFooter/ModalFooter.js +1 -1
  36. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  37. package/components/Modal/ModalHeader/ModalHeader.js +1 -1
  38. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  39. package/components/SidePage/SidePage.styles/SidePage.styles.js +2 -2
  40. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  41. package/components/Textarea/TextareaCounter/TextareaCounter.js +4 -6
  42. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  43. package/components/Toast/Toast.styles/Toast.styles.js +2 -2
  44. package/components/Toast/Toast.styles/Toast.styles.js.map +1 -1
  45. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +18 -21
  46. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  47. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  48. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  49. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  50. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +18 -10
  51. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  52. package/internal/icons/SpinnerIcon/SpinnerIcon.js +2 -3
  53. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  54. package/package.json +3 -2
@@ -56,8 +56,9 @@ var SpinnerIcon = function SpinnerIcon(_ref) {var _cx, _cx2;var size = _ref.size
56
56
  var _React$useContext = _react.default.useContext(_ThemeContext.ThemeContext),red = _React$useContext.red,yellow = _React$useContext.yellow,green = _React$useContext.green,brand = _React$useContext.brand;
57
57
  // eslint-disable-next-line react-hooks/rules-of-hooks
58
58
  _react.default.useEffect(function () {
59
+ var svg = svgRef.current;
60
+
59
61
  var setStyleProperty = function setStyleProperty() {
60
- var svg = svgRef.current;
61
62
  if (svg) {var _svg$style;
62
63
  (_svg$style = svg.style).setProperty.apply(_svg$style, arguments);
63
64
  }
@@ -75,7 +76,6 @@ var SpinnerIcon = function SpinnerIcon(_ref) {var _cx, _cx2;var size = _ref.size
75
76
 
76
77
  return function () {
77
78
  var fallbackAnimation = fallbackAnimationRef.current;
78
- var svg = svgRef.current;
79
79
  if (fallbackAnimation) {
80
80
  fallbackAnimation.stop();
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["SpinnerIcon.tsx"],"names":["sizes","big","size","width","radius","normal","mini","SpinnerIcon","className","dimmed","inline","color","currentSize","svgRef","React","useRef","isIE11","isTestEnv","fallbackAnimationRef","useContext","ThemeContext","red","yellow","green","brand","useEffect","setStyleProperty","svg","current","style","setProperty","SpinnerFallbackAnimationRunner","fallbackAnimation","stop","removeAttribute","styles","root","rootInline","icon","iconInline"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11 } from '../../lib/client';\nimport {\n SpinnerFallbackAnimationRunner,\n createOffsetAnimation,\n createLengthAnimation,\n createColorAnimation,\n createRotationAnimation,\n} from '../../components/Spinner/SpinnerFallbackAnimation';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './SpinnerIcon.styles';\n\nexport interface SpinnerIconProps {\n className: string;\n size: 'mini' | 'normal' | 'big';\n dimmed?: boolean;\n inline?: boolean;\n width?: number;\n color?: React.CSSProperties['color'];\n}\n\nexport const sizes = {\n big: {\n size: 96,\n width: 4,\n radius: 32,\n },\n normal: {\n size: 48,\n width: 2,\n radius: 16,\n },\n mini: {\n size: 16,\n width: 1.5,\n radius: 6,\n },\n};\n\nexport const SpinnerIcon = ({ size, className, dimmed, inline, width, color }: SpinnerIconProps) => {\n const currentSize = inline ? sizes.mini : sizes[size];\n const svgRef = React.useRef<SVGSVGElement>(null);\n\n if (isIE11 && !isTestEnv) {\n // This condition will not change during app's life time\n // So its OK to use hooks here\n // https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const fallbackAnimationRef = React.useRef<SpinnerFallbackAnimationRunner | null>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { red, yellow, green, brand } = React.useContext(ThemeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n const setStyleProperty: CSSStyleDeclaration['setProperty'] = (...args) => {\n const svg = svgRef.current;\n if (svg) {\n svg.style.setProperty(...args);\n }\n };\n\n fallbackAnimationRef.current = new SpinnerFallbackAnimationRunner(\n [\n createOffsetAnimation(0, -230, 1000, setStyleProperty, '%'),\n createLengthAnimation([62, 168], [187, 43], 2000, setStyleProperty, '%'),\n createRotationAnimation(0, 360, 2000, setStyleProperty),\n ...(dimmed ? [] : [createColorAnimation([red, yellow, green, brand], 1500, setStyleProperty)]),\n ],\n 1000 / 60,\n );\n\n return () => {\n const fallbackAnimation = fallbackAnimationRef.current;\n const svg = svgRef.current;\n if (fallbackAnimation) {\n fallbackAnimation.stop();\n }\n if (svg) {\n svg.removeAttribute('style');\n }\n };\n }, [dimmed, red, yellow, green, brand]);\n }\n\n return (\n <span className={cx(styles.root(), { [styles.rootInline()]: inline })}>\n <svg\n viewBox={`0 0 ${currentSize.size} ${currentSize.size}`}\n className={cx(styles.icon(), className, {\n [styles.iconInline()]: inline,\n })}\n width={currentSize.size}\n height={currentSize.size}\n fill=\"none\"\n stroke={color}\n strokeDasharray={`${(10 * currentSize.radius) / 6}, ${(27 * currentSize.radius) / 6}`}\n strokeDashoffset=\"0\"\n strokeWidth={width || currentSize.width}\n ref={svgRef}\n >\n <circle cx={currentSize.size / 2} cy={currentSize.size / 2} r={currentSize.radius} />\n </svg>\n </span>\n );\n};\n"]}
1
+ {"version":3,"sources":["SpinnerIcon.tsx"],"names":["sizes","big","size","width","radius","normal","mini","SpinnerIcon","className","dimmed","inline","color","currentSize","svgRef","React","useRef","isIE11","isTestEnv","fallbackAnimationRef","useContext","ThemeContext","red","yellow","green","brand","useEffect","svg","current","setStyleProperty","style","setProperty","SpinnerFallbackAnimationRunner","fallbackAnimation","stop","removeAttribute","styles","root","rootInline","icon","iconInline"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11 } from '../../lib/client';\nimport {\n SpinnerFallbackAnimationRunner,\n createOffsetAnimation,\n createLengthAnimation,\n createColorAnimation,\n createRotationAnimation,\n} from '../../components/Spinner/SpinnerFallbackAnimation';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './SpinnerIcon.styles';\n\nexport interface SpinnerIconProps {\n className: string;\n size: 'mini' | 'normal' | 'big';\n dimmed?: boolean;\n inline?: boolean;\n width?: number;\n color?: React.CSSProperties['color'];\n}\n\nexport const sizes = {\n big: {\n size: 96,\n width: 4,\n radius: 32,\n },\n normal: {\n size: 48,\n width: 2,\n radius: 16,\n },\n mini: {\n size: 16,\n width: 1.5,\n radius: 6,\n },\n};\n\nexport const SpinnerIcon = ({ size, className, dimmed, inline, width, color }: SpinnerIconProps) => {\n const currentSize = inline ? sizes.mini : sizes[size];\n const svgRef = React.useRef<SVGSVGElement>(null);\n\n if (isIE11 && !isTestEnv) {\n // This condition will not change during app's life time\n // So its OK to use hooks here\n // https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const fallbackAnimationRef = React.useRef<SpinnerFallbackAnimationRunner | null>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { red, yellow, green, brand } = React.useContext(ThemeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n const svg = svgRef.current;\n\n const setStyleProperty: CSSStyleDeclaration['setProperty'] = (...args) => {\n if (svg) {\n svg.style.setProperty(...args);\n }\n };\n\n fallbackAnimationRef.current = new SpinnerFallbackAnimationRunner(\n [\n createOffsetAnimation(0, -230, 1000, setStyleProperty, '%'),\n createLengthAnimation([62, 168], [187, 43], 2000, setStyleProperty, '%'),\n createRotationAnimation(0, 360, 2000, setStyleProperty),\n ...(dimmed ? [] : [createColorAnimation([red, yellow, green, brand], 1500, setStyleProperty)]),\n ],\n 1000 / 60,\n );\n\n return () => {\n const fallbackAnimation = fallbackAnimationRef.current;\n if (fallbackAnimation) {\n fallbackAnimation.stop();\n }\n if (svg) {\n svg.removeAttribute('style');\n }\n };\n }, [dimmed, red, yellow, green, brand]);\n }\n\n return (\n <span className={cx(styles.root(), { [styles.rootInline()]: inline })}>\n <svg\n viewBox={`0 0 ${currentSize.size} ${currentSize.size}`}\n className={cx(styles.icon(), className, {\n [styles.iconInline()]: inline,\n })}\n width={currentSize.size}\n height={currentSize.size}\n fill=\"none\"\n stroke={color}\n strokeDasharray={`${(10 * currentSize.radius) / 6}, ${(27 * currentSize.radius) / 6}`}\n strokeDashoffset=\"0\"\n strokeWidth={width || currentSize.width}\n ref={svgRef}\n >\n <circle cx={currentSize.size / 2} cy={currentSize.size / 2} r={currentSize.radius} />\n </svg>\n </span>\n );\n};\n"]}
@@ -128,8 +128,6 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
128
128
  icon = _this$props.icon,
129
129
  _noPadding = _this$props._noPadding,
130
130
  _noRightPadding = _this$props._noRightPadding,
131
- _this$props$use = _this$props.use,
132
- use = _this$props$use === void 0 ? Button.defaultProps.use : _this$props$use,
133
131
  visuallyFocused = _this$props.visuallyFocused,
134
132
  align = _this$props.align,
135
133
  disableFocus = _this$props.disableFocus,
@@ -140,6 +138,7 @@ export var Button = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (
140
138
  onClick = _this$props.onClick,
141
139
  width = _this$props.width,
142
140
  children = _this$props.children;
141
+ var use = this.props.use || Button.defaultProps.use;
143
142
  var sizeClass = this.getSizeClassName();
144
143
  var isFocused = this.state.focusedByTab || visuallyFocused;
145
144
  var isLink = use === 'link';
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["React","isReactUIComponent","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","rootNode","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedFocused","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","setRootNode","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","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 } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\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?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\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\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\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 = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\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 sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\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: this.props.type,\n className: cx({\n [styles.root(this.theme)]: 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 style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: 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 [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width: width,\n },\n };\n\n const innerShadowNode = <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\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 let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\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.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 arrowNode = null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.props.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":["React","isReactUIComponent","isIE11","isEdge","keyListener","ThemeContext","Spinner","CommonWrapper","cx","rootNode","styles","activeStyles","globalClasses","Corners","Button","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","use","defaultProps","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","root","checkedFocused","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","getSizeWrapClassName","innerShadowNode","innerShadow","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","setRootNode","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","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 } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\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?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\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\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\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 = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\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 = this.props.use || Button.defaultProps.use;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\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: this.props.type,\n className: cx({\n [styles.root(this.theme)]: 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 style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: 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 [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width: width,\n },\n };\n\n const innerShadowNode = <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\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 let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\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.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 arrowNode = null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.props.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"]}
@@ -46,13 +46,25 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
46
46
  };
47
47
  _this.input = null;
48
48
  _this.focused = false;
49
- _this.internalDate = _this.parseValueToDate(_this.props.value);
50
- _this.minDate = _this.parseValueToDate(_this.props.minDate);
51
- _this.maxDate = _this.parseValueToDate(_this.props.maxDate);
52
49
 
53
50
  _this.renderMain = function (props) {
54
51
  var picker = null;
55
- var date = _this.internalDate ? _this.internalDate.toNativeFormat() : null;
52
+ var _this$props = _this.props,
53
+ value = _this$props.value,
54
+ minDate = _this$props.minDate,
55
+ maxDate = _this$props.maxDate;
56
+
57
+ var internalDate = _this.parseValueToDate(value);
58
+
59
+ var date = internalDate ? internalDate.toNativeFormat() : null;
60
+
61
+ var parsedMinDate = _this.parseValueToDate(minDate);
62
+
63
+ var formattedMinDate = parsedMinDate && parsedMinDate.toNativeFormat() || undefined;
64
+
65
+ var parsedMaxDate = _this.parseValueToDate(maxDate);
66
+
67
+ var formattedMaxDate = parsedMaxDate && parsedMaxDate.toNativeFormat() || undefined;
56
68
 
57
69
  if (_this.state.opened) {
58
70
  picker = /*#__PURE__*/React.createElement(DropdownContainer, {
@@ -61,8 +73,8 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
61
73
  align: _this.props.menuAlign
62
74
  }, /*#__PURE__*/React.createElement(Picker, {
63
75
  value: date,
64
- minDate: _this.minDate && _this.minDate.toNativeFormat() || undefined,
65
- maxDate: _this.maxDate && _this.maxDate.toNativeFormat() || undefined,
76
+ minDate: formattedMinDate,
77
+ maxDate: formattedMaxDate,
66
78
  onPick: _this.handlePick,
67
79
  onSelect: _this.handleSelect,
68
80
  enableTodayLink: _this.props.enableTodayLink,
@@ -194,20 +206,12 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
194
206
  };
195
207
 
196
208
  _proto.componentDidUpdate = function componentDidUpdate() {
197
- var _this$props = this.props,
198
- disabled = _this$props.disabled,
199
- value = _this$props.value,
200
- minDate = _this$props.minDate,
201
- maxDate = _this$props.maxDate;
209
+ var disabled = this.props.disabled;
202
210
  var opened = this.state.opened;
203
211
 
204
212
  if (disabled && opened) {
205
213
  this.close();
206
214
  }
207
-
208
- this.internalDate = this.parseValueToDate(value);
209
- this.minDate = this.parseValueToDate(minDate);
210
- this.maxDate = this.parseValueToDate(maxDate);
211
215
  }
212
216
  /**
213
217
  * @public
@@ -1 +1 @@
1
- {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","internalDate","parseValueToDate","props","value","minDate","maxDate","renderMain","picker","date","toNativeFormat","getParent","menuAlign","undefined","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"iPAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,uBAAT,QAAwC,wCAAxC;AACA,SAASC,YAAT,EAAuBC,YAAvB,QAA2C,0BAA3C;AACA,SAASC,iBAAT,EAA4BC,qBAA5B,EAAmDC,yBAAnD,QAAoF,sBAApF;;;AAGA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,iBAAT,QAAkC,kCAAlC;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,aAAT,QAAmE,8BAAnE;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,WAAT,EAAsBC,QAAtB,QAAoD,oBAApD;AACA,SAASC,aAAT,QAA8B,iBAA9B;;AAEA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,MAAT,QAAuB,qBAAvB;;AAEA,IAAMC,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,IADY;AAEvBC,EAAAA,QAAQ,EAAE,IAFa;AAGvBC,EAAAA,OAAO,EAAE,IAHc;AAIvBC,EAAAA,KAAK,EAAE,IAJgB;AAKvBC,EAAAA,IAAI,EAAE,IALiB;AAMvBC,EAAAA,SAAS,EAAE,IANY,EAAzB;;;AASA,OAAO,IAAMC,SAAS,GAAG,GAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DP,WAAaC,UAAb,GADCZ,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFSa,IAAAA,KApFT,GAoFkC,EAAEC,MAAM,EAAE,KAAV,EAAiBC,4BAA4B,EAAE,KAA/C,EApFlC;;AAsFUC,IAAAA,KAtFV,GAsFoC,IAtFpC;AAuFUC,IAAAA,OAvFV,GAuFoB,KAvFpB;AAwFUC,IAAAA,YAxFV,GAwFwC,MAAKC,gBAAL,CAAsB,MAAKC,KAAL,CAAWC,KAAjC,CAxFxC;AAyFUC,IAAAA,OAzFV,GAyFmC,MAAKH,gBAAL,CAAsB,MAAKC,KAAL,CAAWE,OAAjC,CAzFnC;AA0FUC,IAAAA,OA1FV,GA0FmC,MAAKJ,gBAAL,CAAsB,MAAKC,KAAL,CAAWG,OAAjC,CA1FnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0JSC,IAAAA,UA1JT,GA0JsB,UAACJ,KAAD,EAAqE;AACvF,UAAIK,MAAM,GAAG,IAAb;AACA,UAAMC,IAAI,GAAG,MAAKR,YAAL,GAAoB,MAAKA,YAAL,CAAkBS,cAAlB,EAApB,GAAyD,IAAtE;AACA,UAAI,MAAKd,KAAL,CAAWC,MAAf,EAAuB;AACrBW,QAAAA,MAAM;AACJ,4BAAC,iBAAD,IAAmB,SAAS,EAAE,MAAKG,SAAnC,EAA8C,OAAO,EAAE,CAAvD,EAA0D,KAAK,EAAE,MAAKR,KAAL,CAAWS,SAA5E;AACE,4BAAC,MAAD;AACE,UAAA,KAAK,EAAEH,IADT;AAEE,UAAA,OAAO,EAAG,MAAKJ,OAAL,IAAgB,MAAKA,OAAL,CAAaK,cAAb,EAAjB,IAAmDG,SAF9D;AAGE,UAAA,OAAO,EAAG,MAAKP,OAAL,IAAgB,MAAKA,OAAL,CAAaI,cAAb,EAAjB,IAAmDG,SAH9D;AAIE,UAAA,MAAM,EAAE,MAAKC,UAJf;AAKE,UAAA,QAAQ,EAAE,MAAKC,YALjB;AAME,UAAA,eAAe,EAAE,MAAKZ,KAAL,CAAWa,eAN9B;AAOE,UAAA,SAAS,EAAE,MAAKC,SAPlB,GADF,CADF;;;;AAaD;;AAED;AACE;AACE,UAAA,SAAS,EAAE/B,MAAM,CAACgC,IAAP,EADb;AAEE,UAAA,KAAK,EAAE,MAAKC,YAAL,EAFT;AAGE,UAAA,YAAY,EAAE,MAAKhB,KAAL,CAAWiB,YAH3B;AAIE,UAAA,YAAY,EAAE,MAAKjB,KAAL,CAAWkB,YAJ3B;AAKE,UAAA,WAAW,EAAE,MAAKlB,KAAL,CAAWmB,WAL1B;;AAOE,4BAAC,SAAD;AACM5C,QAAAA,WAAW,CAACyB,KAAD,EAAQhB,gBAAR,CADjB;AAEE,UAAA,GAAG,EAAE,MAAKoC,WAFZ;AAGE,UAAA,KAAK,EAAE,MAAKpB,KAAL,CAAWC,KAAX,IAAoB,EAH7B;AAIE,UAAA,KAAK,EAAC,MAJR;AAKE,UAAA,QAAQ,MALV;AAME,UAAA,OAAO,EAAE,MAAKD,KAAL,CAAWE,OANtB;AAOE,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OAPtB;AAQE,UAAA,MAAM,EAAE,MAAKkB,UARf;AASE,UAAA,OAAO,EAAE,MAAKC,WAThB;AAUE,UAAA,aAAa,EAAE,MAAKtB,KAAL,CAAWuB,aAV5B,IAPF;;AAmBG,cAAK9B,KAAL,CAAWE,4BAAX;AACC,4BAAC,eAAD;AACE,UAAA,aAAa,EAAE,MAAKK,KAAL,CAAWuB,aAD5B;AAEE,UAAA,KAAK,EAAE,MAAKvB,KAAL,CAAWC,KAAX,IAAoB,EAF7B;AAGE,UAAA,OAAO,EAAE,MAAKD,KAAL,CAAWE,OAHtB;AAIE,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OAJtB;AAKE,UAAA,QAAQ,EAAE,MAAKH,KAAL,CAAWd,QALvB,GApBJ;;;AA4BG,SAAC,MAAKO,KAAL,CAAWE,4BAAZ,IAA4CU,MA5B/C,CADF;;;AAgCD,KA7MH;;AA+MSG,IAAAA,SA/MT,GA+MqB,YAAM;AACvB,aAAO7B,WAAW,+BAAlB;AACD,KAjNH;;AAmNUqC,IAAAA,YAnNV,GAmNyB,YAAM;AAC3B,UAAQQ,KAAR,GAAkB,MAAKxB,KAAvB,CAAQwB,KAAR;AACA,aAAO3C,aAAa,CAAC2C,KAAD,CAAb,GAAuB,EAAEA,KAAK,EAALA,KAAF,EAAvB,GAAmC,EAAEC,QAAQ,EAAElC,SAAZ,EAA1C;AACD,KAtNH;;AAwNU6B,IAAAA,WAxNV,GAwNwB,UAACM,GAAD,EAA2B;AAC/C,YAAK9B,KAAL,GAAa8B,GAAb;AACD,KA1NH;;;;;;;;;;;;;AAuOUJ,IAAAA,WAvOV,GAuOwB,YAAM;AAC1B,UAAI,MAAKzB,OAAT,EAAkB;AAChB;AACD;;AAED,YAAKA,OAAL,GAAe,IAAf;;AAEA,YAAK8B,QAAL,CAAc,EAAEjC,MAAM,EAAE,IAAV,EAAd;;AAEA,UAAI,MAAKM,KAAL,CAAW4B,OAAf,EAAwB;AACtB,cAAK5B,KAAL,CAAW4B,OAAX;AACD;AACF,KAnPH;;AAqPUP,IAAAA,UArPV,GAqPuB,YAAM;AACzB,UAAI,CAAC,MAAKxB,OAAV,EAAmB;AACjB;AACD;;AAED,YAAKA,OAAL,GAAe,KAAf;AACA,YAAKgC,KAAL;;AAEA,UAAI,MAAK7B,KAAL,CAAW8B,MAAf,EAAuB;AACrB,cAAK9B,KAAL,CAAW8B,MAAX;AACD;AACF,KAhQH;;AAkQUnB,IAAAA,UAlQV,GAkQuB,UAACoB,SAAD,EAAkC;AACrD,YAAKnB,YAAL,CAAkBmB,SAAlB;AACA,YAAKC,IAAL;AACD,KArQH;;AAuQUpB,IAAAA,YAvQV,GAuQyB,gBAA8C,KAA3CN,IAA2C,QAA3CA,IAA2C,CAArC2B,KAAqC,QAArCA,KAAqC,CAA9BC,IAA8B,QAA9BA,IAA8B;AACnE,UAAMjC,KAAK,GAAGlC,uBAAuB,CAACoE,oBAAxB,CAA6C,EAAE7B,IAAI,EAAJA,IAAF,EAAQ2B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAd;AACA,UAAI,MAAKlC,KAAL,CAAWuB,aAAf,EAA8B;AAC5B,cAAKvB,KAAL,CAAWuB,aAAX,CAAyBtB,KAAzB;AACD;AACF,KA5QH;;AA8QUa,IAAAA,SA9QV,GA8QsB,iBAAkF,KAA/ER,IAA+E,SAA/EA,IAA+E,CAAzE2B,KAAyE,SAAzEA,KAAyE,CAAlEC,IAAkE,SAAlEA,IAAkE,CAA5DE,SAA4D,SAA5DA,SAA4D;AACpG,UAAMC,UAAU,GAAGtE,uBAAuB,CAACoE,oBAAxB,CAA6C,EAAE7B,IAAI,EAAJA,IAAF,EAAQ2B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAnB;AACA,aAAO,MAAKlC,KAAL,CAAWc,SAAX,CAAqBuB,UAArB,EAAiCD,SAAjC,CAAP;AACD,KAjRH,wDA6FSE,iBA7FT,GA6FE,6BAA2B,CACzB,IAAI,KAAKtC,KAAL,CAAWuC,yBAAX,IAAwC9D,QAA5C,EAAsD,CACpD,KAAKkD,QAAL,CAAc,EACZhC,4BAA4B,EAAE,IADlB,EAAd,EAGD,CACD,IAAI,KAAKK,KAAL,CAAWf,SAAf,EAA0B,CACxB,KAAKuD,KAAL,GACD,CACF,CAtGH,QAwGSC,kBAxGT,GAwGE,8BAA4B,CAC1B,kBAA8C,KAAKzC,KAAnD,CAAQd,QAAR,eAAQA,QAAR,CAAkBe,KAAlB,eAAkBA,KAAlB,CAAyBC,OAAzB,eAAyBA,OAAzB,CAAkCC,OAAlC,eAAkCA,OAAlC,CACA,IAAQT,MAAR,GAAmB,KAAKD,KAAxB,CAAQC,MAAR,CACA,IAAIR,QAAQ,IAAIQ,MAAhB,EAAwB,CACtB,KAAKmC,KAAL,GACD,CACD,KAAK/B,YAAL,GAAoB,KAAKC,gBAAL,CAAsBE,KAAtB,CAApB,CACA,KAAKC,OAAL,GAAe,KAAKH,gBAAL,CAAsBG,OAAtB,CAAf,CACA,KAAKC,OAAL,GAAe,KAAKJ,gBAAL,CAAsBI,OAAtB,CAAf,CACD,CAjHH,CAmHE;AACF;AACA,KArHA,QAsHS6B,IAtHT,GAsHE,gBAAc,CACZ,IAAI,KAAKpC,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAWoC,IAAX,GACD,CACD,KAAKX,UAAL,GACD,CA3HH,CA6HE;AACF;AACA,KA/HA,QAgISmB,KAhIT,GAgIE,iBAAe,CACb,IAAI,KAAKxC,KAAL,CAAWd,QAAf,EAAyB,CACvB,OACD,CACD,IAAI,KAAKU,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAW4C,KAAX,GACD,CACD,KAAKlB,WAAL,GACD,CAxIH,CA0IE;AACF;AACA;AACA,KA7IA,QA8ISO,KA9IT,GA8IE,iBAAe,CACb,KAAKF,QAAL,CAAc,EAAEjC,MAAM,EAAE,KAAV,EAAd,EACD,CAhJH,QAkJSgD,MAlJT,GAkJE,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAK3C,KAAvD,GACG,KAAKI,UADR,CADF,CAKD,CAxJH,QA4NUL,gBA5NV,GA4NE,0BAAyBE,KAAzB,EAA6E,CAC3E,IAAIA,KAAK,KAAKS,SAAV,IAAuBT,KAAK,KAAK,IAArC,EAA2C,CACzC,OAAOS,SAAP,CACD,CACD,IAAMJ,IAAI,GAAG,IAAIxC,YAAJ,CAAiB,EAAEmC,KAAK,EAALA,KAAF,EAAjB,CAAb,CACA,IAAIK,IAAI,CAACsC,QAAL,CAAc,EAAEC,MAAM,EAAE,CAACzE,yBAAyB,CAAC0E,OAA3B,EAAoC1E,yBAAyB,CAAC2E,MAA9D,CAAV,EAAd,CAAJ,EAAsG,CACpG,OAAOzC,IAAP,CACD,CACD,OAAOI,SAAP,CACD,CArOH,qBAAgC7C,KAAK,CAACmF,aAAtC,WACgBC,mBADhB,GACsC,YADtC,UAGgBC,SAHhB,GAG4B,EACxBjE,SAAS,EAAErB,SAAS,CAACuF,IADG,EAGxBjE,QAAQ,EAAEtB,SAAS,CAACuF,IAHI,EAKxB;AACJ;AACA,KACItC,eAAe,EAAEjD,SAAS,CAACuF,IARH,EAUxB/D,KAAK,EAAExB,SAAS,CAACuF,IAVO,EAYxB;AACJ;AACA,KACIhD,OAAO,EAAEvC,SAAS,CAACwF,MAAV,CAAiBC,UAfF,EAiBxB5C,SAAS,EAAE7C,SAAS,CAAC0F,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAjBa,EAmBxB;AACJ;AACA,KACIpD,OAAO,EAAEtC,SAAS,CAACwF,MAAV,CAAiBC,UAtBF,EAwBxB;AACJ;AACA,KACIpD,KAAK,EAAErC,SAAS,CAACwF,MA3BO,EA6BxBjE,OAAO,EAAEvB,SAAS,CAACuF,IA7BK,EA+BxB3B,KAAK,EAAE5D,SAAS,CAAC2F,SAAV,CAAoB,CAAC3F,SAAS,CAAC4F,MAAX,EAAmB5F,SAAS,CAACwF,MAA7B,CAApB,EAA0DC,UA/BzC,EAiCxBvB,MAAM,EAAElE,SAAS,CAAC6F,IAjCM,EAmCxBlC,aAAa,EAAE3D,SAAS,CAAC6F,IAAV,CAAeJ,UAnCN,EAqCxBzB,OAAO,EAAEhE,SAAS,CAAC6F,IArCK,EAuCxBnE,SAAS,EAAE1B,SAAS,CAAC6F,IAvCG,EAyCxBxC,YAAY,EAAErD,SAAS,CAAC6F,IAzCA,EA2CxBvC,YAAY,EAAEtD,SAAS,CAAC6F,IA3CA,EA6CxBtC,WAAW,EAAEvD,SAAS,CAAC6F,IA7CC,EA+CxB3C,SAAS,EAAElD,SAAS,CAAC6F,IAAV,CAAeJ,UA/CF,EAH5B,UAqDgBK,YArDhB,GAqD+B,EAC3BxD,OAAO,EAAEjC,YADkB,EAE3BkC,OAAO,EAAEnC,YAFkB,EAG3B8C,SAAS,EAAE,mBAAC6C,IAAD,EAAwBvB,SAAxB,UAA+CA,SAA/C,EAHgB,EArD/B,UA2DgBQ,QA3DhB,GA2D2B,UAAC3C,KAAD,EAA0B2D,KAA1B,EAAiF,KAAvDA,KAAuD,cAAvDA,KAAuD,GAAP,EAAO,EACxG,IAAI,CAAC3D,KAAL,EAAY,CACV,OAAO,KAAP,CACD,CAED,aAA2D2D,KAA3D,yBAAQ1D,OAAR,CAAQA,OAAR,+BAAkBjC,YAAlB,0CAAgCkC,OAAhC,CAAgCA,OAAhC,+BAA0CnC,YAA1C,kBACA,IAAM8B,YAAY,GAAG,IAAIhC,YAAJ,CAAiB,EACpC+F,KAAK,EAAE3F,iBAAiB,CAAC4F,GADW,EAEpCC,SAAS,EAAE5F,qBAAqB,CAAC6F,GAFG,EAAjB,EAIlBC,aAJkB,CAIJ,IAAInG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEC,OAAT,EAAjB,CAJI,EAKlBgE,WALkB,CAKN,IAAIpG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEE,OAAT,EAAjB,CALM,EAMlBgE,UANkB,CAMPlE,KANO,CAArB,CAQA,OAAOH,YAAY,CAAC8C,QAAb,CAAsB,EAC3BC,MAAM,EAAE,CACNzE,yBAAyB,CAAC0E,OADpB,EAEN1E,yBAAyB,CAACgG,MAFpB,EAGNhG,yBAAyB,CAAC2E,MAHpB,EAIN3E,yBAAyB,CAACiG,MAJpB,EAKNjG,yBAAyB,CAACkG,KALpB,CADmB,EAAtB,CAAP,CASD,CAlFH","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private internalDate?: InternalDate = this.parseValueToDate(this.props.value);\n private minDate?: InternalDate = this.parseValueToDate(this.props.minDate);\n private maxDate?: InternalDate = this.parseValueToDate(this.props.maxDate);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled, value, minDate, maxDate } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n this.internalDate = this.parseValueToDate(value);\n this.minDate = this.parseValueToDate(minDate);\n this.maxDate = this.parseValueToDate(maxDate);\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n const date = this.internalDate ? this.internalDate.toNativeFormat() : null;\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={(this.minDate && this.minDate.toNativeFormat()) || undefined}\n maxDate={(this.maxDate && this.maxDate.toNativeFormat()) || undefined}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
1
+ {"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
@@ -100,9 +100,6 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps<Date
100
100
  state: DatePickerState;
101
101
  private input;
102
102
  private focused;
103
- private internalDate?;
104
- private minDate?;
105
- private maxDate?;
106
103
  private setRootNode;
107
104
  componentDidMount(): void;
108
105
  componentDidUpdate(): void;
@@ -2,7 +2,7 @@ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitial
2
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  import React from 'react';
4
4
  import FocusLock from 'react-focus-lock';
5
- import { throttle } from 'lodash';
5
+ import throttle from 'lodash.throttle';
6
6
  import { isKeyEscape } from "../../../lib/events/keyboard/identifiers";
7
7
  import * as LayoutEvents from "../../../lib/LayoutEvents";
8
8
  import { RenderContainer } from "../../../internal/RenderContainer";
@@ -1 +1 @@
1
- {"version":3,"sources":["Modal.tsx"],"names":["React","FocusLock","throttle","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","ResponsiveLayout","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","mountedModalsCount","Modal","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","componentDidMount","add","window","addEventListener","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","modalContextProps","noClose","close","additionalPadding","style","containerStyle","width","root","bg","container","isMobile","centerContainer","mobileCenterContainer","alignTop","Boolean","undefined","mobileWindow","disableFocusLock","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWithoutHeader","children","Component","__KONTUR_REACT_UI__","Header","Body","Footer","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport { throttle } from 'lodash';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { ModalContext, ModalContextProps } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\n\nlet mountedModalsCount = 0;\n\nexport interface ModalProps extends CommonProps {\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия модалки\n */\n disableClose?: boolean;\n\n /**\n * Выравнивание окна по верху страницы.\n */\n alignTop?: boolean;\n\n /**\n * Не закрывать окно при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Не показывать крестик для закрытия окна.\n */\n noClose?: boolean;\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие окна (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Не использовать фокус-лок внутри модалки.\n * По умолчанию true для IE11.\n */\n disableFocusLock?: boolean;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\n/**\n * Модальное окно\n *\n * Содержит в себе три компоненты: **Modal.Header**,\n * **Modal.Body** и **Modal.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n *\n * Для отключения прилипания шапки и футера\n * в соответствующий компонет нужно передать\n * проп **sticky** со значением **false**\n * (по-умолчанию прилипание включено)\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n };\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n window.addEventListener('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n window.addEventListener('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n window.removeEventListener('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\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 { hasHeader, hasFooter, hasPanel } = this.state;\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n if (!this.props.noClose) {\n modalContextProps.close = {\n disableClose: this.props.disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter) {\n modalContextProps.additionalPadding = true;\n }\n if (hasFooter && hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (this.props.width) {\n style.width = this.props.width;\n } else {\n containerStyle.width = 'auto';\n }\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && <div className={styles.bg(this.theme)} />}\n <div\n ref={this.refContainer}\n className={styles.container()}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid=\"modal-container\"\n >\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n className={cx({\n [styles.centerContainer(this.theme)]: true,\n [styles.mobileCenterContainer()]: isMobile,\n [styles.alignTop()]: Boolean(this.props.alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid=\"modal-content\"\n >\n <div\n className={cx({ [styles.window(this.theme)]: true, [styles.mobileWindow()]: isMobile })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={this.props.disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !this.props.noClose && (\n <ZIndex\n priority={'ModalCross'}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={this.props.disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>\n {this.props.children}\n </ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n );\n }}\n </ResponsiveLayout>\n </div>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = (event: UIEvent) => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
1
+ {"version":3,"sources":["Modal.tsx"],"names":["React","FocusLock","throttle","isKeyEscape","LayoutEvents","RenderContainer","ZIndex","stopPropagation","HideBodyVerticalScroll","ModalStack","ResizeDetector","ThemeContext","isIE11","CommonWrapper","cx","ResponsiveLayout","ModalContext","ModalFooter","ModalHeader","ModalBody","ModalClose","styles","mountedModalsCount","Modal","state","stackPosition","hasBackground","horizontalScroll","hasHeader","hasFooter","hasPanel","stackSubscription","containerNode","mouseDownTarget","mouseUpTarget","requestClose","props","disableClose","onClose","refContainer","center","handleStackChange","stack","setState","indexOf","isBlocking","handleContainerMouseDown","event","target","handleContainerMouseUp","handleContainerClick","ignoreBackgroundClick","currentTarget","handleKeyDown","e","checkHorizontalScrollAppearance","hasScroll","containerClientWidth","clientWidth","containerScrollWidth","scrollWidth","throttledCheckHorizontalScroll","handleResize","emit","setHasHeader","setHasFooter","setHasPanel","componentDidMount","add","window","addEventListener","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","modalContextProps","noClose","close","additionalPadding","style","containerStyle","width","root","bg","container","isMobile","centerContainer","mobileCenterContainer","alignTop","Boolean","undefined","mobileWindow","disableFocusLock","columnFlexContainer","closeWrapper","mobileCloseWrapper","mobileCloseWithoutHeader","children","Component","__KONTUR_REACT_UI__","Header","Body","Footer","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport FocusLock from 'react-focus-lock';\nimport throttle from 'lodash.throttle';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isIE11 } from '../../lib/client';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\n\nimport { ModalContext, ModalContextProps } from './ModalContext';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalClose } from './ModalClose';\nimport { styles } from './Modal.styles';\n\nlet mountedModalsCount = 0;\n\nexport interface ModalProps extends CommonProps {\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия модалки\n */\n disableClose?: boolean;\n\n /**\n * Выравнивание окна по верху страницы.\n */\n alignTop?: boolean;\n\n /**\n * Не закрывать окно при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Не показывать крестик для закрытия окна.\n */\n noClose?: boolean;\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие окна (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Не использовать фокус-лок внутри модалки.\n * По умолчанию true для IE11.\n */\n disableFocusLock?: boolean;\n}\n\nexport interface ModalState {\n stackPosition: number;\n hasBackground: boolean;\n horizontalScroll: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\n/**\n * Модальное окно\n *\n * Содержит в себе три компоненты: **Modal.Header**,\n * **Modal.Body** и **Modal.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n *\n * Для отключения прилипания шапки и футера\n * в соответствующий компонет нужно передать\n * проп **sticky** со значением **false**\n * (по-умолчанию прилипание включено)\n */\nexport class Modal extends React.Component<ModalProps, ModalState> {\n public static __KONTUR_REACT_UI__ = 'Modal';\n\n public static Header = ModalHeader;\n public static Body = ModalBody;\n public static Footer = ModalFooter;\n\n public static defaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n };\n\n public state: ModalState = {\n stackPosition: 0,\n hasBackground: true,\n horizontalScroll: false,\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private containerNode: HTMLDivElement | null = null;\n private mouseDownTarget: EventTarget | null = null;\n private mouseUpTarget: EventTarget | null = null;\n\n public componentDidMount() {\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n\n if (mountedModalsCount === 0) {\n window.addEventListener('resize', this.throttledCheckHorizontalScroll);\n }\n\n mountedModalsCount++;\n window.addEventListener('keydown', this.handleKeyDown);\n this.checkHorizontalScrollAppearance();\n\n if (this.containerNode) {\n this.containerNode.addEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public componentWillUnmount() {\n if (--mountedModalsCount === 0) {\n window.removeEventListener('resize', this.throttledCheckHorizontalScroll);\n LayoutEvents.emit();\n }\n\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n\n if (this.containerNode) {\n this.containerNode.removeEventListener('scroll', LayoutEvents.emit);\n }\n }\n\n public render(): JSX.Element {\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 { hasHeader, hasFooter, hasPanel } = this.state;\n\n const modalContextProps: ModalContextProps = {\n hasHeader,\n horizontalScroll: this.state.horizontalScroll,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n if (!this.props.noClose) {\n modalContextProps.close = {\n disableClose: this.props.disableClose,\n requestClose: this.requestClose,\n };\n }\n if (!hasFooter) {\n modalContextProps.additionalPadding = true;\n }\n if (hasFooter && hasPanel) {\n modalContextProps.additionalPadding = true;\n }\n\n const style: { width?: number | string } = {};\n const containerStyle: { width?: number | string } = {};\n\n if (this.props.width) {\n style.width = this.props.width;\n } else {\n containerStyle.width = 'auto';\n }\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex priority={'Modal'} className={styles.root()}>\n <HideBodyVerticalScroll />\n {this.state.hasBackground && <div className={styles.bg(this.theme)} />}\n <div\n ref={this.refContainer}\n className={styles.container()}\n onMouseDown={this.handleContainerMouseDown}\n onMouseUp={this.handleContainerMouseUp}\n onClick={this.handleContainerClick}\n data-tid=\"modal-container\"\n >\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <div\n className={cx({\n [styles.centerContainer(this.theme)]: true,\n [styles.mobileCenterContainer()]: isMobile,\n [styles.alignTop()]: Boolean(this.props.alignTop),\n })}\n style={isMobile ? undefined : containerStyle}\n data-tid=\"modal-content\"\n >\n <div\n className={cx({ [styles.window(this.theme)]: true, [styles.mobileWindow()]: isMobile })}\n style={isMobile ? undefined : style}\n >\n <ResizeDetector onResize={this.handleResize} fullHeight={isMobile}>\n <FocusLock\n disabled={this.props.disableFocusLock}\n autoFocus={false}\n className={cx({ [styles.columnFlexContainer()]: isMobile }, 'focus-lock-container')}\n >\n {!hasHeader && !this.props.noClose && (\n <ZIndex\n priority={'ModalCross'}\n className={cx({\n [styles.closeWrapper(this.theme)]: true,\n [styles.mobileCloseWrapper(this.theme)]: isMobile,\n })}\n >\n <ModalClose\n className={cx({\n [styles.mobileCloseWithoutHeader()]: isMobile && !this.state.hasHeader,\n })}\n requestClose={this.requestClose}\n disableClose={this.props.disableClose}\n />\n </ZIndex>\n )}\n <ModalContext.Provider value={modalContextProps}>\n {this.props.children}\n </ModalContext.Provider>\n </FocusLock>\n </ResizeDetector>\n </div>\n </div>\n );\n }}\n </ResponsiveLayout>\n </div>\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private refContainer = (center: HTMLDivElement | null) => {\n this.containerNode = center;\n };\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n this.setState({ stackPosition: stack.indexOf(this), hasBackground: ModalStack.isBlocking(this) });\n };\n\n private handleContainerMouseDown = (event: React.MouseEvent) => {\n this.mouseDownTarget = event.target;\n };\n\n private handleContainerMouseUp = (event: React.MouseEvent) => {\n this.mouseUpTarget = event.target;\n };\n\n private handleContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.props.ignoreBackgroundClick) {\n const { target, currentTarget } = event;\n if (target === currentTarget && this.mouseDownTarget === currentTarget && this.mouseUpTarget === currentTarget) {\n this.requestClose();\n }\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private checkHorizontalScrollAppearance = () => {\n let hasScroll = false;\n\n if (this.containerNode) {\n const containerClientWidth = this.containerNode.clientWidth;\n const containerScrollWidth = this.containerNode.scrollWidth;\n hasScroll = containerClientWidth < containerScrollWidth;\n }\n if (hasScroll && !this.state.horizontalScroll) {\n this.setState({ horizontalScroll: true });\n } else if (this.state.horizontalScroll) {\n this.setState({ horizontalScroll: false });\n }\n };\n\n private throttledCheckHorizontalScroll = throttle(this.checkHorizontalScrollAppearance, 100);\n\n private handleResize = (event: UIEvent) => {\n LayoutEvents.emit();\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
@@ -28,7 +28,7 @@ function ModalFooter(props) {
28
28
  return function () {
29
29
  modal.setHasFooter == null ? void 0 : modal.setHasFooter(false);
30
30
  modal.setHasPanel == null ? void 0 : modal.setHasPanel(false);
31
- };
31
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
32
32
  }, [panel]);
33
33
 
34
34
  var renderContent = function renderContent(fixed) {
@@ -1 +1 @@
1
- {"version":3,"sources":["ModalFooter.tsx"],"names":["React","useContext","useEffect","getScrollWidth","Sticky","ThemeContext","ZIndex","CommonWrapper","cx","useResponsiveLayout","styles","ModalContext","ModalFooter","props","theme","modal","layout","sticky","isMobile","panel","children","setHasFooter","setHasPanel","renderContent","fixed","footer","fixedFooter","Boolean","fixedPanel","mobileFooter","footerWrapper","horizontalScroll","__KONTUR_REACT_UI__","__MODAL_FOOTER__"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,UAA3B,EAAuCC,SAAvC,QAAwD,OAAxD;;AAEA,SAASC,cAAT,QAA+B,8BAA/B;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,mBAAT,QAAoC,qBAApC;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;;;;;;AAWA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAT,CAAqBC,KAArB,EAA8C;AAC5C,MAAMC,KAAK,GAAGb,UAAU,CAACI,YAAD,CAAxB;AACA,MAAMU,KAAK,GAAGd,UAAU,CAACU,YAAD,CAAxB;AACA,MAAMK,MAAM,GAAGP,mBAAmB,EAAlC;;AAEA,sBAAqEI,KAArE,CAAQI,MAAR,CAAQA,MAAR,8BAAiBD,MAAM,CAACE,QAAP,GAAkB,KAAlB,GAA0B,IAA3C,iBAAiDC,KAAjD,GAAqEN,KAArE,CAAiDM,KAAjD,CAAwDC,QAAxD,GAAqEP,KAArE,CAAwDO,QAAxD;;AAEAlB,EAAAA,SAAS,CAAC,YAAM;AACda,IAAAA,KAAK,CAACM,YAAN,oBAAAN,KAAK,CAACM,YAAN;AACAN,IAAAA,KAAK,CAACO,WAAN,oBAAAP,KAAK,CAACO,WAAN,CAAoBH,KAApB;;AAEA,WAAO,YAAM;AACXJ,MAAAA,KAAK,CAACM,YAAN,oBAAAN,KAAK,CAACM,YAAN,CAAqB,KAArB;AACAN,MAAAA,KAAK,CAACO,WAAN,oBAAAP,KAAK,CAACO,WAAN,CAAoB,KAApB;AACD,KAHD;AAID,GARQ,EAQN,CAACH,KAAD,CARM,CAAT;;AAUA,MAAMI,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAmB,aAAlBA,KAAkB,cAAlBA,KAAkB,GAAV,KAAU;AACvC;AACE;AACE,QAAA,SAAS,EAAEhB,EAAE;AACVE,QAAAA,MAAM,CAACe,MAAP,CAAcX,KAAd,CADU,IACa,IADb;AAEVJ,QAAAA,MAAM,CAACgB,WAAP,CAAmBZ,KAAnB,CAFU,IAEkBU,KAFlB;AAGVd,QAAAA,MAAM,CAACS,KAAP,CAAaL,KAAb,CAHU,IAGYa,OAAO,CAACR,KAAD,CAHnB;AAIVT,QAAAA,MAAM,CAACkB,UAAP,CAAkBd,KAAlB,CAJU,IAIiBU,KAAK,IAAIG,OAAO,CAACR,KAAD,CAJjC;AAKVT,QAAAA,MAAM,CAACmB,YAAP,CAAoBf,KAApB,CALU,IAKmBE,MAAM,CAACE,QAL1B,OADf;;;AASGE,MAAAA,QATH,CADF;;;AAaD,GAdD;;AAgBA;AACE,wBAAC,aAAD,EAAmBP,KAAnB;AACE,wBAAC,MAAD,IAAQ,QAAQ,EAAE,aAAlB,EAAiC,SAAS,EAAEH,MAAM,CAACoB,aAAP,EAA5C;AACGb,IAAAA,MAAM;AACL,wBAAC,MAAD,IAAQ,IAAI,EAAC,QAAb,EAAsB,MAAM,EAAEF,KAAK,CAACgB,gBAAN,GAAyB5B,cAAc,EAAvC,GAA4C,CAA1E;AACGoB,IAAAA,aADH,CADK;;;AAKLA,IAAAA,aAAa,EANjB,CADF,CADF;;;;;AAaD;;AAEDX,WAAW,CAACoB,mBAAZ,GAAkC,aAAlC;AACApB,WAAW,CAACqB,gBAAZ,GAA+B,IAA/B;;AAEA,SAASrB,WAAT","sourcesContent":["import React, { ReactNode, useContext, useEffect } from 'react';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './Modal.styles';\nimport { ModalContext } from './ModalContext';\n\nexport interface ModalFooterProps extends CommonProps {\n /**\n * Включает серый цвет в футере\n */\n panel?: boolean;\n sticky?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Футер модального окна.\n *\n * @visibleName Modal.Footer\n */\nfunction ModalFooter(props: ModalFooterProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = layout.isMobile ? false : true, panel, children } = props;\n\n useEffect(() => {\n modal.setHasFooter?.();\n modal.setHasPanel?.(panel);\n\n return () => {\n modal.setHasFooter?.(false);\n modal.setHasPanel?.(false);\n };\n }, [panel]);\n\n const renderContent = (fixed = false) => {\n return (\n <div\n className={cx({\n [styles.footer(theme)]: true,\n [styles.fixedFooter(theme)]: fixed,\n [styles.panel(theme)]: Boolean(panel),\n [styles.fixedPanel(theme)]: fixed && Boolean(panel),\n [styles.mobileFooter(theme)]: layout.isMobile,\n })}\n >\n {children}\n </div>\n );\n };\n\n return (\n <CommonWrapper {...props}>\n <ZIndex priority={'ModalFooter'} className={styles.footerWrapper()}>\n {sticky ? (\n <Sticky side=\"bottom\" offset={modal.horizontalScroll ? getScrollWidth() : 0}>\n {renderContent}\n </Sticky>\n ) : (\n renderContent()\n )}\n </ZIndex>\n </CommonWrapper>\n );\n}\n\nModalFooter.__KONTUR_REACT_UI__ = 'ModalFooter';\nModalFooter.__MODAL_FOOTER__ = true;\n\nexport { ModalFooter };\n"]}
1
+ {"version":3,"sources":["ModalFooter.tsx"],"names":["React","useContext","useEffect","getScrollWidth","Sticky","ThemeContext","ZIndex","CommonWrapper","cx","useResponsiveLayout","styles","ModalContext","ModalFooter","props","theme","modal","layout","sticky","isMobile","panel","children","setHasFooter","setHasPanel","renderContent","fixed","footer","fixedFooter","Boolean","fixedPanel","mobileFooter","footerWrapper","horizontalScroll","__KONTUR_REACT_UI__","__MODAL_FOOTER__"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,UAA3B,EAAuCC,SAAvC,QAAwD,OAAxD;;AAEA,SAASC,cAAT,QAA+B,8BAA/B;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,mBAAT,QAAoC,qBAApC;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;;;;;;AAWA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAT,CAAqBC,KAArB,EAA8C;AAC5C,MAAMC,KAAK,GAAGb,UAAU,CAACI,YAAD,CAAxB;AACA,MAAMU,KAAK,GAAGd,UAAU,CAACU,YAAD,CAAxB;AACA,MAAMK,MAAM,GAAGP,mBAAmB,EAAlC;;AAEA,sBAAqEI,KAArE,CAAQI,MAAR,CAAQA,MAAR,8BAAiBD,MAAM,CAACE,QAAP,GAAkB,KAAlB,GAA0B,IAA3C,iBAAiDC,KAAjD,GAAqEN,KAArE,CAAiDM,KAAjD,CAAwDC,QAAxD,GAAqEP,KAArE,CAAwDO,QAAxD;;AAEAlB,EAAAA,SAAS,CAAC,YAAM;AACda,IAAAA,KAAK,CAACM,YAAN,oBAAAN,KAAK,CAACM,YAAN;AACAN,IAAAA,KAAK,CAACO,WAAN,oBAAAP,KAAK,CAACO,WAAN,CAAoBH,KAApB;;AAEA,WAAO,YAAM;AACXJ,MAAAA,KAAK,CAACM,YAAN,oBAAAN,KAAK,CAACM,YAAN,CAAqB,KAArB;AACAN,MAAAA,KAAK,CAACO,WAAN,oBAAAP,KAAK,CAACO,WAAN,CAAoB,KAApB;AACD,KAHD;AAIA;AACD,GATQ,EASN,CAACH,KAAD,CATM,CAAT;;AAWA,MAAMI,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAmB,aAAlBA,KAAkB,cAAlBA,KAAkB,GAAV,KAAU;AACvC;AACE;AACE,QAAA,SAAS,EAAEhB,EAAE;AACVE,QAAAA,MAAM,CAACe,MAAP,CAAcX,KAAd,CADU,IACa,IADb;AAEVJ,QAAAA,MAAM,CAACgB,WAAP,CAAmBZ,KAAnB,CAFU,IAEkBU,KAFlB;AAGVd,QAAAA,MAAM,CAACS,KAAP,CAAaL,KAAb,CAHU,IAGYa,OAAO,CAACR,KAAD,CAHnB;AAIVT,QAAAA,MAAM,CAACkB,UAAP,CAAkBd,KAAlB,CAJU,IAIiBU,KAAK,IAAIG,OAAO,CAACR,KAAD,CAJjC;AAKVT,QAAAA,MAAM,CAACmB,YAAP,CAAoBf,KAApB,CALU,IAKmBE,MAAM,CAACE,QAL1B,OADf;;;AASGE,MAAAA,QATH,CADF;;;AAaD,GAdD;;AAgBA;AACE,wBAAC,aAAD,EAAmBP,KAAnB;AACE,wBAAC,MAAD,IAAQ,QAAQ,EAAE,aAAlB,EAAiC,SAAS,EAAEH,MAAM,CAACoB,aAAP,EAA5C;AACGb,IAAAA,MAAM;AACL,wBAAC,MAAD,IAAQ,IAAI,EAAC,QAAb,EAAsB,MAAM,EAAEF,KAAK,CAACgB,gBAAN,GAAyB5B,cAAc,EAAvC,GAA4C,CAA1E;AACGoB,IAAAA,aADH,CADK;;;AAKLA,IAAAA,aAAa,EANjB,CADF,CADF;;;;;AAaD;;AAEDX,WAAW,CAACoB,mBAAZ,GAAkC,aAAlC;AACApB,WAAW,CAACqB,gBAAZ,GAA+B,IAA/B;;AAEA,SAASrB,WAAT","sourcesContent":["import React, { ReactNode, useContext, useEffect } from 'react';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './Modal.styles';\nimport { ModalContext } from './ModalContext';\n\nexport interface ModalFooterProps extends CommonProps {\n /**\n * Включает серый цвет в футере\n */\n panel?: boolean;\n sticky?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Футер модального окна.\n *\n * @visibleName Modal.Footer\n */\nfunction ModalFooter(props: ModalFooterProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = layout.isMobile ? false : true, panel, children } = props;\n\n useEffect(() => {\n modal.setHasFooter?.();\n modal.setHasPanel?.(panel);\n\n return () => {\n modal.setHasFooter?.(false);\n modal.setHasPanel?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panel]);\n\n const renderContent = (fixed = false) => {\n return (\n <div\n className={cx({\n [styles.footer(theme)]: true,\n [styles.fixedFooter(theme)]: fixed,\n [styles.panel(theme)]: Boolean(panel),\n [styles.fixedPanel(theme)]: fixed && Boolean(panel),\n [styles.mobileFooter(theme)]: layout.isMobile,\n })}\n >\n {children}\n </div>\n );\n };\n\n return (\n <CommonWrapper {...props}>\n <ZIndex priority={'ModalFooter'} className={styles.footerWrapper()}>\n {sticky ? (\n <Sticky side=\"bottom\" offset={modal.horizontalScroll ? getScrollWidth() : 0}>\n {renderContent}\n </Sticky>\n ) : (\n renderContent()\n )}\n </ZIndex>\n </CommonWrapper>\n );\n}\n\nModalFooter.__KONTUR_REACT_UI__ = 'ModalFooter';\nModalFooter.__MODAL_FOOTER__ = true;\n\nexport { ModalFooter };\n"]}
@@ -25,7 +25,7 @@ function ModalHeader(props) {
25
25
  modal.setHasHeader == null ? void 0 : modal.setHasHeader();
26
26
  return function () {
27
27
  return modal.setHasHeader == null ? void 0 : modal.setHasHeader(false);
28
- };
28
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
29
29
  }, []);
30
30
 
31
31
  var renderContent = function renderContent(fixed) {
@@ -1 +1 @@
1
- {"version":3,"sources":["ModalHeader.tsx"],"names":["React","useContext","useEffect","Sticky","ThemeContext","ZIndex","CommonWrapper","cx","useResponsiveLayout","styles","ModalClose","ModalContext","ModalHeader","props","theme","modal","layout","sticky","isMobile","children","setHasHeader","renderContent","fixed","header","mobileHeader","headerAddPadding","Boolean","additionalPadding","fixedHeader","mobileFixedHeader","headerWithClose","close","mobileHeaderWithClose","requestClose","disableClose","headerWrapper","__KONTUR_REACT_UI__","__MODAL_HEADER__"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,UAA3B,EAAuCC,SAAvC,QAAwD,OAAxD;;AAEA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,mBAAT,QAAoC,qBAApC;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAT,CAAqBC,KAArB,EAA8C;AAC5C,MAAMC,KAAK,GAAGb,UAAU,CAACG,YAAD,CAAxB;AACA,MAAMW,KAAK,GAAGd,UAAU,CAACU,YAAD,CAAxB;AACA,MAAMK,MAAM,GAAGR,mBAAmB,EAAlC;;AAEA,sBAA8DK,KAA9D,CAAQI,MAAR,CAAQA,MAAR,8BAAiBD,MAAM,CAACE,QAAP,GAAkB,KAAlB,GAA0B,IAA3C,iBAAiDC,QAAjD,GAA8DN,KAA9D,CAAiDM,QAAjD;;AAEAjB,EAAAA,SAAS,CAAC,YAAM;AACda,IAAAA,KAAK,CAACK,YAAN,oBAAAL,KAAK,CAACK,YAAN;;AAEA,WAAO,oBAAML,KAAK,CAACK,YAAZ,oBAAML,KAAK,CAACK,YAAN,CAAqB,KAArB,CAAN,EAAP;AACD,GAJQ,EAIN,EAJM,CAAT;;AAMA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAmB,aAAlBA,KAAkB,cAAlBA,KAAkB,GAAV,KAAU;AACvC;AACE;AACE,QAAA,SAAS,EAAEf,EAAE;AACVE,QAAAA,MAAM,CAACc,MAAP,CAAcT,KAAd,CADU,IACa,IADb;AAEVL,QAAAA,MAAM,CAACe,YAAP,CAAoBV,KAApB,CAFU,IAEmBE,MAAM,CAACE,QAF1B;AAGVT,QAAAA,MAAM,CAACgB,gBAAP,EAHU,IAGkBC,OAAO,CAACX,KAAK,CAACY,iBAAP,CAHzB;AAIVlB,QAAAA,MAAM,CAACmB,WAAP,CAAmBd,KAAnB,CAJU,IAIkBQ,KAJlB;AAKVb,QAAAA,MAAM,CAACoB,iBAAP,CAAyBf,KAAzB,CALU,IAKwBQ,KAAK,IAAIN,MAAM,CAACE,QALxC;AAMVT,QAAAA,MAAM,CAACqB,eAAP,CAAuBhB,KAAvB,CANU,IAMsBY,OAAO,CAACX,KAAK,CAACgB,KAAP,CAN7B;AAOVtB,QAAAA,MAAM,CAACuB,qBAAP,CAA6BlB,KAA7B,CAPU,IAO4BE,MAAM,CAACE,QAPnC,OADf;;;AAWGH,MAAAA,KAAK,CAACgB,KAAN,iBAAe,oBAAC,UAAD,IAAY,YAAY,EAAEhB,KAAK,CAACgB,KAAN,CAAYE,YAAtC,EAAoD,YAAY,EAAElB,KAAK,CAACgB,KAAN,CAAYG,YAA9E,GAXlB;AAYGf,MAAAA,QAZH,CADF;;;AAgBD,GAjBD;;AAmBA;AACE,wBAAC,aAAD,EAAmBN,KAAnB;AACE,wBAAC,MAAD,IAAQ,QAAQ,EAAE,aAAlB,EAAiC,SAAS,EAAEJ,MAAM,CAAC0B,aAAP,EAA5C;AACGlB,IAAAA,MAAM,gBAAG,oBAAC,MAAD,IAAQ,IAAI,EAAC,KAAb,IAAoBI,aAApB,CAAH,GAAiDA,aAAa,EADvE,CADF,CADF;;;;AAOD;;AAEDT,WAAW,CAACwB,mBAAZ,GAAkC,aAAlC;AACAxB,WAAW,CAACyB,gBAAZ,GAA+B,IAA/B;;AAEA,SAASzB,WAAT","sourcesContent":["import React, { ReactNode, useContext, useEffect } from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './Modal.styles';\nimport { ModalClose } from './ModalClose';\nimport { ModalContext } from './ModalContext';\n\nexport interface ModalHeaderProps extends CommonProps {\n sticky?: boolean;\n children?: ReactNode;\n}\n/**\n * Шапка модального окна\n *\n * @visibleName Modal.Header\n */\nfunction ModalHeader(props: ModalHeaderProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = layout.isMobile ? false : true, children } = props;\n\n useEffect(() => {\n modal.setHasHeader?.();\n\n return () => modal.setHasHeader?.(false);\n }, []);\n\n const renderContent = (fixed = false) => {\n return (\n <div\n className={cx({\n [styles.header(theme)]: true,\n [styles.mobileHeader(theme)]: layout.isMobile,\n [styles.headerAddPadding()]: Boolean(modal.additionalPadding),\n [styles.fixedHeader(theme)]: fixed,\n [styles.mobileFixedHeader(theme)]: fixed && layout.isMobile,\n [styles.headerWithClose(theme)]: Boolean(modal.close),\n [styles.mobileHeaderWithClose(theme)]: layout.isMobile,\n })}\n >\n {modal.close && <ModalClose requestClose={modal.close.requestClose} disableClose={modal.close.disableClose} />}\n {children}\n </div>\n );\n };\n\n return (\n <CommonWrapper {...props}>\n <ZIndex priority={'ModalHeader'} className={styles.headerWrapper()}>\n {sticky ? <Sticky side=\"top\">{renderContent}</Sticky> : renderContent()}\n </ZIndex>\n </CommonWrapper>\n );\n}\n\nModalHeader.__KONTUR_REACT_UI__ = 'ModalHeader';\nModalHeader.__MODAL_HEADER__ = true;\n\nexport { ModalHeader };\n"]}
1
+ {"version":3,"sources":["ModalHeader.tsx"],"names":["React","useContext","useEffect","Sticky","ThemeContext","ZIndex","CommonWrapper","cx","useResponsiveLayout","styles","ModalClose","ModalContext","ModalHeader","props","theme","modal","layout","sticky","isMobile","children","setHasHeader","renderContent","fixed","header","mobileHeader","headerAddPadding","Boolean","additionalPadding","fixedHeader","mobileFixedHeader","headerWithClose","close","mobileHeaderWithClose","requestClose","disableClose","headerWrapper","__KONTUR_REACT_UI__","__MODAL_HEADER__"],"mappings":"AAAA,OAAOA,KAAP,IAA2BC,UAA3B,EAAuCC,SAAvC,QAAwD,OAAxD;;AAEA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,MAAT,QAAuB,uBAAvB;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,mBAAT,QAAoC,qBAApC;;AAEA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,YAAT,QAA6B,gBAA7B;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAT,CAAqBC,KAArB,EAA8C;AAC5C,MAAMC,KAAK,GAAGb,UAAU,CAACG,YAAD,CAAxB;AACA,MAAMW,KAAK,GAAGd,UAAU,CAACU,YAAD,CAAxB;AACA,MAAMK,MAAM,GAAGR,mBAAmB,EAAlC;;AAEA,sBAA8DK,KAA9D,CAAQI,MAAR,CAAQA,MAAR,8BAAiBD,MAAM,CAACE,QAAP,GAAkB,KAAlB,GAA0B,IAA3C,iBAAiDC,QAAjD,GAA8DN,KAA9D,CAAiDM,QAAjD;;AAEAjB,EAAAA,SAAS,CAAC,YAAM;AACda,IAAAA,KAAK,CAACK,YAAN,oBAAAL,KAAK,CAACK,YAAN;;AAEA,WAAO,oBAAML,KAAK,CAACK,YAAZ,oBAAML,KAAK,CAACK,YAAN,CAAqB,KAArB,CAAN,EAAP;AACA;AACD,GALQ,EAKN,EALM,CAAT;;AAOA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAmB,aAAlBA,KAAkB,cAAlBA,KAAkB,GAAV,KAAU;AACvC;AACE;AACE,QAAA,SAAS,EAAEf,EAAE;AACVE,QAAAA,MAAM,CAACc,MAAP,CAAcT,KAAd,CADU,IACa,IADb;AAEVL,QAAAA,MAAM,CAACe,YAAP,CAAoBV,KAApB,CAFU,IAEmBE,MAAM,CAACE,QAF1B;AAGVT,QAAAA,MAAM,CAACgB,gBAAP,EAHU,IAGkBC,OAAO,CAACX,KAAK,CAACY,iBAAP,CAHzB;AAIVlB,QAAAA,MAAM,CAACmB,WAAP,CAAmBd,KAAnB,CAJU,IAIkBQ,KAJlB;AAKVb,QAAAA,MAAM,CAACoB,iBAAP,CAAyBf,KAAzB,CALU,IAKwBQ,KAAK,IAAIN,MAAM,CAACE,QALxC;AAMVT,QAAAA,MAAM,CAACqB,eAAP,CAAuBhB,KAAvB,CANU,IAMsBY,OAAO,CAACX,KAAK,CAACgB,KAAP,CAN7B;AAOVtB,QAAAA,MAAM,CAACuB,qBAAP,CAA6BlB,KAA7B,CAPU,IAO4BE,MAAM,CAACE,QAPnC,OADf;;;AAWGH,MAAAA,KAAK,CAACgB,KAAN,iBAAe,oBAAC,UAAD,IAAY,YAAY,EAAEhB,KAAK,CAACgB,KAAN,CAAYE,YAAtC,EAAoD,YAAY,EAAElB,KAAK,CAACgB,KAAN,CAAYG,YAA9E,GAXlB;AAYGf,MAAAA,QAZH,CADF;;;AAgBD,GAjBD;;AAmBA;AACE,wBAAC,aAAD,EAAmBN,KAAnB;AACE,wBAAC,MAAD,IAAQ,QAAQ,EAAE,aAAlB,EAAiC,SAAS,EAAEJ,MAAM,CAAC0B,aAAP,EAA5C;AACGlB,IAAAA,MAAM,gBAAG,oBAAC,MAAD,IAAQ,IAAI,EAAC,KAAb,IAAoBI,aAApB,CAAH,GAAiDA,aAAa,EADvE,CADF,CADF;;;;AAOD;;AAEDT,WAAW,CAACwB,mBAAZ,GAAkC,aAAlC;AACAxB,WAAW,CAACyB,gBAAZ,GAA+B,IAA/B;;AAEA,SAASzB,WAAT","sourcesContent":["import React, { ReactNode, useContext, useEffect } from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { useResponsiveLayout } from '../ResponsiveLayout';\n\nimport { styles } from './Modal.styles';\nimport { ModalClose } from './ModalClose';\nimport { ModalContext } from './ModalContext';\n\nexport interface ModalHeaderProps extends CommonProps {\n sticky?: boolean;\n children?: ReactNode;\n}\n/**\n * Шапка модального окна\n *\n * @visibleName Modal.Header\n */\nfunction ModalHeader(props: ModalHeaderProps) {\n const theme = useContext(ThemeContext);\n const modal = useContext(ModalContext);\n const layout = useResponsiveLayout();\n\n const { sticky = layout.isMobile ? false : true, children } = props;\n\n useEffect(() => {\n modal.setHasHeader?.();\n\n return () => modal.setHasHeader?.(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const renderContent = (fixed = false) => {\n return (\n <div\n className={cx({\n [styles.header(theme)]: true,\n [styles.mobileHeader(theme)]: layout.isMobile,\n [styles.headerAddPadding()]: Boolean(modal.additionalPadding),\n [styles.fixedHeader(theme)]: fixed,\n [styles.mobileFixedHeader(theme)]: fixed && layout.isMobile,\n [styles.headerWithClose(theme)]: Boolean(modal.close),\n [styles.mobileHeaderWithClose(theme)]: layout.isMobile,\n })}\n >\n {modal.close && <ModalClose requestClose={modal.close.requestClose} disableClose={modal.close.disableClose} />}\n {children}\n </div>\n );\n };\n\n return (\n <CommonWrapper {...props}>\n <ZIndex priority={'ModalHeader'} className={styles.headerWrapper()}>\n {sticky ? <Sticky side=\"top\">{renderContent}</Sticky> : renderContent()}\n </ZIndex>\n </CommonWrapper>\n );\n}\n\nModalHeader.__KONTUR_REACT_UI__ = 'ModalHeader';\nModalHeader.__MODAL_HEADER__ = true;\n\nexport { ModalHeader };\n"]}
@@ -134,12 +134,12 @@ export var styles = memoizeStyle({
134
134
  return css(_templateObject42 || (_templateObject42 = _taggedTemplateLiteralLoose(["\n transform: translateX(-100px);\n "])));
135
135
  },
136
136
  transitionActive: function transitionActive() {
137
- return css(_templateObject43 || (_templateObject43 = _taggedTemplateLiteralLoose(["\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1;\n transform: translate(0, 0);\n "])));
137
+ return css(_templateObject43 || (_templateObject43 = _taggedTemplateLiteralLoose(["\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1 !important;\n transform: translate(0, 0) !important;\n "])));
138
138
  },
139
139
  transitionLeave: function transitionLeave() {
140
140
  return css(_templateObject44 || (_templateObject44 = _taggedTemplateLiteralLoose(["\n opacity: 1;\n "])));
141
141
  },
142
142
  transitionLeaveActive: function transitionLeaveActive() {
143
- return css(_templateObject45 || (_templateObject45 = _taggedTemplateLiteralLoose(["\n opacity: 0.01;\n transition: opacity 0.15s ease-out;\n "])));
143
+ return css(_templateObject45 || (_templateObject45 = _taggedTemplateLiteralLoose(["\n opacity: 0.01 !important;\n transition: opacity 0.15s ease-out;\n "])));
144
144
  }
145
145
  });