@skbkontur/react-ui 4.5.3 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/cjs/components/CurrencyInput/CurrencyHelper.js +1 -1
  3. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  4. package/cjs/components/CurrencyInput/constants.d.ts +3 -0
  5. package/cjs/components/CurrencyInput/constants.js +6 -2
  6. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  7. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -1
  8. package/cjs/components/CurrencyLabel/CurrencyLabel.js +6 -3
  9. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  10. package/cjs/components/CurrencyLabel/CurrencyLabel.md +6 -0
  11. package/cjs/components/DropdownMenu/DropdownMenu.md +38 -0
  12. package/cjs/components/Input/Input.js +6 -1
  13. package/cjs/components/Input/Input.js.map +1 -1
  14. package/cjs/components/MenuItem/MenuItem.d.ts +6 -0
  15. package/cjs/components/MenuItem/MenuItem.js +12 -2
  16. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  17. package/cjs/components/SidePage/SidePage.d.ts +5 -0
  18. package/cjs/components/SidePage/SidePage.js +9 -1
  19. package/cjs/components/SidePage/SidePage.js.map +1 -1
  20. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  21. package/cjs/components/SidePage/SidePageBody.js +11 -6
  22. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  23. package/cjs/internal/InternalMenu/InternalMenu.d.ts +1 -0
  24. package/cjs/internal/InternalMenu/InternalMenu.js +24 -8
  25. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  26. package/cjs/internal/InternalMenu/InternalMenu.styles.d.ts +5 -4
  27. package/cjs/internal/InternalMenu/InternalMenu.styles.js +14 -18
  28. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  29. package/cjs/lib/utils.d.ts +1 -1
  30. package/cjs/lib/utils.js +2 -3
  31. package/cjs/lib/utils.js.map +1 -1
  32. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +3 -3
  33. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  34. package/components/CurrencyInput/constants/constants.js +4 -1
  35. package/components/CurrencyInput/constants/constants.js.map +1 -1
  36. package/components/CurrencyInput/constants.d.ts +3 -0
  37. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +5 -2
  38. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  39. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -1
  40. package/components/CurrencyLabel/CurrencyLabel.md +6 -0
  41. package/components/DropdownMenu/DropdownMenu.md +38 -0
  42. package/components/Input/Input/Input.js +18 -5
  43. package/components/Input/Input/Input.js.map +1 -1
  44. package/components/MenuItem/MenuItem/MenuItem.js +7 -2
  45. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  46. package/components/MenuItem/MenuItem.d.ts +6 -0
  47. package/components/SidePage/SidePage/SidePage.js +10 -6
  48. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  49. package/components/SidePage/SidePage.d.ts +5 -0
  50. package/components/SidePage/SidePageBody/SidePageBody.js +9 -1
  51. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  52. package/components/SidePage/SidePageBody.d.ts +1 -0
  53. package/internal/InternalMenu/InternalMenu/InternalMenu.js +24 -6
  54. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  55. package/internal/InternalMenu/InternalMenu.d.ts +1 -0
  56. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +13 -10
  57. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  58. package/internal/InternalMenu/InternalMenu.styles.d.ts +5 -4
  59. package/lib/utils/utils.js +0 -1
  60. package/lib/utils/utils.js.map +1 -1
  61. package/lib/utils.d.ts +1 -1
  62. package/package.json +2 -2
@@ -80,6 +80,11 @@ var _SidePage = require("./SidePage.styles");function _getRequireWildcardCache(n
80
80
 
81
81
 
82
82
 
83
+
84
+
85
+
86
+
87
+
83
88
 
84
89
 
85
90
 
@@ -140,6 +145,7 @@ SidePage = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
140
145
 
141
146
 
142
147
 
148
+
143
149
  updateLayout = function () {var _this$header, _this$footer;
144
150
  (_this$header = _this.header) == null ? void 0 : _this$header.update();
145
151
  (_this$footer = _this.footer) == null ? void 0 : _this$footer.update();
@@ -247,6 +253,7 @@ SidePage = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
247
253
 
248
254
 
249
255
 
256
+
250
257
 
251
258
 
252
259
  getSidePageContextProps = function () {
@@ -369,5 +376,6 @@ SidePage = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default
369
376
  _this.state.hasPanel !== hasPanel && _this.setState({ hasPanel: hasPanel });
370
377
  };return _this;}var _proto = SidePage.prototype;_proto.componentDidMount = function componentDidMount() {window.addEventListener('keydown', this.handleKeyDown);this.stackSubscription = _ModalStack.ModalStack.add(this, this.handleStackChange);};_proto.componentWillUnmount = function componentWillUnmount() {window.removeEventListener('keydown', this.handleKeyDown);if ((0, _utils.isNonNullable)(this.stackSubscription)) {this.stackSubscription.remove();}_ModalStack.ModalStack.remove(this);} /**
371
378
  * Обновляет разметку компонента.
379
+ * SidePage следит за изменениям размера SidePage.Body и вызывает этот метод автоматически.
372
380
  * @public
373
- */;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var blockBackground = this.props.blockBackground;var disableAnimations = this.getProps().disableAnimations;return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, null, /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_ResponsiveLayout.ResponsiveLayout, null, function (_ref) {var isMobile = _ref.isMobile;return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, blockBackground && _this3.renderShadow(), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, { in: true, classNames: _this3.getTransitionNames(), appear: !disableAnimations, enter: !disableAnimations, exit: false, timeout: { enter: TRANSITION_TIMEOUT, exit: TRANSITION_TIMEOUT }, nodeRef: _this3.rootRef }, _this3.renderContainer(isMobile)), isMobile && /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, null));}))));};_proto.renderContainer = function renderContainer(isMobile) {var _cx, _cx2;var _this$props = this.props,width = _this$props.width,blockBackground = _this$props.blockBackground,fromLeft = _this$props.fromLeft;var _this$getProps = this.getProps(),disableFocusLock = _this$getProps.disableFocusLock,offset = _this$getProps.offset;return /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Sidepage', "data-tid": SidePageDataTids.root, className: (0, _Emotion.cx)((_cx = {}, _cx[_SidePage.styles.root()] = true, _cx[_SidePage.styles.mobileRoot()] = isMobile, _cx)), onScroll: LayoutEvents.emit, createStackingContext: true, style: isMobile ? undefined : { width: width || (blockBackground ? 800 : 500), right: fromLeft ? 'auto' : offset, left: fromLeft ? offset : 'auto' }, wrapperRef: this.rootRef }, /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, { disabled: disableFocusLock || !blockBackground, autoFocus: false, className: _SidePage.styles.focusLock() }, /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.handleClickOutside, active: true }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": SidePageDataTids.container, className: (0, _Emotion.cx)(_SidePage.styles.wrapper(this.theme), (_cx2 = {}, _cx2[_SidePage.styles.wrapperLeft()] = fromLeft, _cx2[_SidePage.styles.wrapperMarginLeft()] = this.state.hasMargin && fromLeft, _cx2[_SidePage.styles.wrapperMarginRight()] = this.state.hasMargin && !fromLeft, _cx2[_SidePage.styles.shadow(this.theme)] = this.state.hasShadow, _cx2)), ref: this.layoutRef }, /*#__PURE__*/_react.default.createElement(_SidePageContext.SidePageContext.Provider, { value: this.getSidePageContextProps() }, this.props.children)))));};_proto.renderShadow = function renderShadow() {var _cx3;return /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Sidepage', className: _SidePage.styles.overlay(), onScroll: LayoutEvents.emit }, /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, { key: "hbvs" }), /*#__PURE__*/_react.default.createElement("div", { key: "overlay", className: (0, _Emotion.cx)((_cx3 = {}, _cx3[_SidePage.styles.background()] = true, _cx3[_SidePage.styles.backgroundGray(this.theme)] = this.state.hasBackground, _cx3)) }));};_proto.getTransitionNames = function getTransitionNames() {var transition = this.props.fromLeft ? _SidePage.styles.transitionRight : _SidePage.styles.transitionLeft;return { enter: transition(), enterActive: _SidePage.styles.transitionActive(), exit: _SidePage.styles.transitionLeave(), exitActive: _SidePage.styles.transitionLeaveActive(), appear: transition(), appearActive: _SidePage.styles.transitionActive() };};return SidePage;}(_react.default.Component);exports.SidePage = SidePage;SidePage.__KONTUR_REACT_UI__ = 'SidePage';SidePage.Header = _SidePageHeader.SidePageHeader;SidePage.Body = _SidePageBody.SidePageBody;SidePage.Footer = _SidePageFooter.SidePageFooter;SidePage.Container = _SidePageContainer.SidePageContainer;SidePage.defaultProps = { disableAnimations: _currentEnvironment.isTestEnv, disableFocusLock: true, offset: 0 };
381
+ */;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _this3 = this;var _this$props = this.props,blockBackground = _this$props.blockBackground,onOpened = _this$props.onOpened;var disableAnimations = this.getProps().disableAnimations;return /*#__PURE__*/_react.default.createElement(_RenderContainer.RenderContainer, null, /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_ResponsiveLayout.ResponsiveLayout, null, function (_ref) {var isMobile = _ref.isMobile;return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, blockBackground && _this3.renderShadow(), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, { in: true, classNames: _this3.getTransitionNames(), appear: !disableAnimations, enter: !disableAnimations, exit: false, timeout: { enter: TRANSITION_TIMEOUT, exit: TRANSITION_TIMEOUT }, nodeRef: _this3.rootRef, onEntered: onOpened }, _this3.renderContainer(isMobile)), isMobile && /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, null));}))));};_proto.renderContainer = function renderContainer(isMobile) {var _cx, _cx2;var _this$props2 = this.props,width = _this$props2.width,blockBackground = _this$props2.blockBackground,fromLeft = _this$props2.fromLeft;var _this$getProps = this.getProps(),disableFocusLock = _this$getProps.disableFocusLock,offset = _this$getProps.offset;return /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Sidepage', "data-tid": SidePageDataTids.root, className: (0, _Emotion.cx)((_cx = {}, _cx[_SidePage.styles.root()] = true, _cx[_SidePage.styles.mobileRoot()] = isMobile, _cx)), onScroll: LayoutEvents.emit, createStackingContext: true, style: isMobile ? undefined : { width: width || (blockBackground ? 800 : 500), right: fromLeft ? 'auto' : offset, left: fromLeft ? offset : 'auto' }, wrapperRef: this.rootRef }, /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, { disabled: disableFocusLock || !blockBackground, autoFocus: false, className: _SidePage.styles.focusLock() }, /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: this.handleClickOutside, active: true }, /*#__PURE__*/_react.default.createElement("div", { "data-tid": SidePageDataTids.container, className: (0, _Emotion.cx)(_SidePage.styles.wrapper(this.theme), (_cx2 = {}, _cx2[_SidePage.styles.wrapperLeft()] = fromLeft, _cx2[_SidePage.styles.wrapperMarginLeft()] = this.state.hasMargin && fromLeft, _cx2[_SidePage.styles.wrapperMarginRight()] = this.state.hasMargin && !fromLeft, _cx2[_SidePage.styles.shadow(this.theme)] = this.state.hasShadow, _cx2)), ref: this.layoutRef }, /*#__PURE__*/_react.default.createElement(_SidePageContext.SidePageContext.Provider, { value: this.getSidePageContextProps() }, this.props.children)))));};_proto.renderShadow = function renderShadow() {var _cx3;return /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Sidepage', className: _SidePage.styles.overlay(), onScroll: LayoutEvents.emit }, /*#__PURE__*/_react.default.createElement(_HideBodyVerticalScroll.HideBodyVerticalScroll, { key: "hbvs" }), /*#__PURE__*/_react.default.createElement("div", { key: "overlay", className: (0, _Emotion.cx)((_cx3 = {}, _cx3[_SidePage.styles.background()] = true, _cx3[_SidePage.styles.backgroundGray(this.theme)] = this.state.hasBackground, _cx3)) }));};_proto.getTransitionNames = function getTransitionNames() {var transition = this.props.fromLeft ? _SidePage.styles.transitionRight : _SidePage.styles.transitionLeft;return { enter: transition(), enterActive: _SidePage.styles.transitionActive(), exit: _SidePage.styles.transitionLeave(), exitActive: _SidePage.styles.transitionLeaveActive(), appear: transition(), appearActive: _SidePage.styles.transitionActive() };};return SidePage;}(_react.default.Component);exports.SidePage = SidePage;SidePage.__KONTUR_REACT_UI__ = 'SidePage';SidePage.Header = _SidePageHeader.SidePageHeader;SidePage.Body = _SidePageBody.SidePageBody;SidePage.Footer = _SidePageFooter.SidePageFooter;SidePage.Container = _SidePageContainer.SidePageContainer;SidePage.defaultProps = { disableAnimations: _currentEnvironment.isTestEnv, disableFocusLock: true, offset: 0 };
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePage.tsx"],"names":["SidePageDataTids","root","container","TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","stackSubscription","layout","header","footer","rootRef","React","createRef","updateLayout","update","getProps","defaultProps","getSidePageContextProps","requestClose","getWidth","headerRef","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","ModalStack","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","handleKeyDown","disableClose","onClose","ref","layoutRef","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","blockBackground","disableAnimations","isMobile","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","mobileRoot","LayoutEvents","emit","undefined","right","left","focusLock","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","children","overlay","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","Component","__KONTUR_REACT_UI__","Header","SidePageHeader","Body","SidePageBody","Footer","SidePageFooter","Container","SidePageContainer","isTestEnv"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Работает только при заблокированном фоне: `blockBackground = true`\n */\n disableFocusLock?: boolean;\n\n /**\n * задает отступ от края экрана\n */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const SidePageDataTids = {\n root: 'SidePage__root',\n container: 'SidePage__container',\n} as const;\n\ntype DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'disableFocusLock' | 'offset'>>;\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layout: HTMLElement | null = null;\n private header: SidePageHeader | null = null;\n private footer: SidePageFooter | null = null;\n private rootRef = React.createRef<HTMLDivElement>();\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n this.header?.update();\n this.footer?.update();\n };\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n disableFocusLock: true,\n offset: 0,\n };\n\n private getProps = createPropsGetter(SidePage.defaultProps);\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 { blockBackground } = this.props;\n const disableAnimations = this.getProps().disableAnimations;\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <div>\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n nodeRef={this.rootRef}\n >\n {this.renderContainer(isMobile)}\n </CSSTransition>\n {isMobile && <HideBodyVerticalScroll />}\n </>\n );\n }}\n </ResponsiveLayout>\n </div>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private renderContainer(isMobile: boolean): JSX.Element {\n const { width, blockBackground, fromLeft } = this.props;\n const { disableFocusLock, offset } = this.getProps();\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid={SidePageDataTids.root}\n className={cx({\n [styles.root()]: true,\n [styles.mobileRoot()]: isMobile,\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={\n isMobile\n ? undefined\n : {\n width: width || (blockBackground ? 800 : 500),\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }\n }\n wrapperRef={this.rootRef}\n >\n <FocusLock disabled={disableFocusLock || !blockBackground} autoFocus={false} className={styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid={SidePageDataTids.container}\n className={cx(styles.wrapper(this.theme), {\n [styles.wrapperLeft()]: fromLeft,\n [styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={this.layoutRef}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n headerRef: this.headerRef,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layout) {\n return 'auto';\n }\n return this.layout.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\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 requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private headerRef = (ref: SidePageHeader | null) => {\n this.header = ref;\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private layoutRef = (ref: HTMLDivElement | null) => {\n this.layout = ref;\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":["SidePage.tsx"],"names":["SidePageDataTids","root","container","TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","stackSubscription","layout","header","footer","rootRef","React","createRef","updateLayout","update","getProps","defaultProps","getSidePageContextProps","requestClose","getWidth","headerRef","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","ModalStack","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","handleKeyDown","disableClose","onClose","ref","layoutRef","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","blockBackground","onOpened","disableAnimations","isMobile","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","mobileRoot","LayoutEvents","emit","undefined","right","left","focusLock","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","children","overlay","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","Component","__KONTUR_REACT_UI__","Header","SidePageHeader","Body","SidePageBody","Footer","SidePageFooter","Container","SidePageContainer","isTestEnv"],"mappings":"6XAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEO,IAAMA,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB;AAE9BC,EAAAA,SAAS,EAAE,qBAFmB,EAAzB,C;;;;;AAOP,IAAMC,kBAAkB,GAAG,GAA3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;AACaC,Q;;;;;;;AAOJC,IAAAA,K,GAAuB;AAC5BC,MAAAA,SAAS,EAAE,KADiB;AAE5BC,MAAAA,SAAS,EAAE,KAFiB;AAG5BC,MAAAA,QAAQ,EAAE,KAHkB,E;;;AAMtBC,IAAAA,iB,GAAmD,I;AACnDC,IAAAA,M,GAA6B,I;AAC7BC,IAAAA,M,GAAgC,I;AAChCC,IAAAA,M,GAAgC,I;AAChCC,IAAAA,O,gBAAUC,eAAMC,SAAN,E;;;;;;;;;;;;;;;;;;;;AAoBXC,IAAAA,Y,GAAe,YAAY;AAChC,4BAAKL,MAAL,kCAAaM,MAAb;AACA,4BAAKL,MAAL,kCAAaK,MAAb;AACD,K;;;;;;;;AAQOC,IAAAA,Q,GAAW,0CAAkBd,QAAQ,CAACe,YAA3B,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGXC,IAAAA,uB,GAA0B,YAA2B;AAC3D,aAAO;AACLd,QAAAA,SAAS,EAAE,MAAKD,KAAL,CAAWC,SADjB;AAELC,QAAAA,SAAS,EAAE,MAAKF,KAAL,CAAWE,SAFjB;AAGLC,QAAAA,QAAQ,EAAE,MAAKH,KAAL,CAAWG,QAHhB;AAILa,QAAAA,YAAY,EAAE,MAAKA,YAJd;AAKLC,QAAAA,QAAQ,EAAE,MAAKA,QALV;AAMLN,QAAAA,YAAY,EAAE,MAAKA,YANd;AAOLO,QAAAA,SAAS,EAAE,MAAKA,SAPX;AAQLC,QAAAA,SAAS,EAAE,MAAKA,SARX;AASLC,QAAAA,YAAY,EAAE,MAAKA,YATd;AAULC,QAAAA,YAAY,EAAE,MAAKA,YAVd;AAWLC,QAAAA,WAAW,EAAE,MAAKA,WAXb,EAAP;;AAaD,K;;AAEOL,IAAAA,Q,GAAW,YAAM;AACvB,UAAI,CAAC,MAAKZ,MAAV,EAAkB;AAChB,eAAO,MAAP;AACD;AACD,aAAO,MAAKA,MAAL,CAAYkB,WAAnB;AACD,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BOC,IAAAA,iB,GAAoB,UAACC,KAAD,EAAuC;AACjE,UAAMC,SAAS,GAAGD,KAAK,CAACE,MAAN,CAAa,UAACC,CAAD,UAAOA,CAAC,YAAY7B,QAAb,IAAyB6B,CAAC,CAACC,KAAF,CAAQC,QAAR,KAAqB,MAAKD,KAAL,CAAWC,QAAhE,EAAb,CAAlB;AACA,UAAMC,uBAAuB,GAAGL,SAAS,CAACM,OAAV,6CAAhC;;AAEA,UAAMC,SAAS,GAAGP,SAAS,CAACQ,MAAV,GAAmB,CAAnB,IAAwBH,uBAAuB,KAAKL,SAAS,CAACQ,MAAV,GAAmB,CAAzF;AACA,UAAMC,SAAS,GAAGT,SAAS,CAACQ,MAAV,GAAmB,CAAnB,IAAwBH,uBAAuB,GAAGL,SAAS,CAACQ,MAAV,GAAmB,CAAvF;AACA,UAAME,aAAa,GAAGC,uBAAWC,UAAX,6CAAtB;;AAEA,YAAKC,QAAL,CAAc;AACZC,QAAAA,aAAa,EAAEf,KAAK,CAACO,OAAN,6CADH;AAEZC,QAAAA,SAAS,EAATA,SAFY;AAGZE,QAAAA,SAAS,EAATA,SAHY;AAIZC,QAAAA,aAAa,EAAbA,aAJY,EAAd;;AAMD,K;;AAEOK,IAAAA,kB,GAAqB,UAACC,CAAD,EAAc;AACzC,UAAI,MAAK1C,KAAL,CAAWwC,aAAX,KAA6B,CAA7B,IAAkC,CAAC,MAAKX,KAAL,CAAWc,qBAAlD,EAAyE;AACvE;AACA,YAAID,CAAC,YAAYE,UAAb,IAA2BF,CAAC,CAACG,OAAF,GAAYC,QAAQ,CAACC,eAAT,CAAyBxB,WAApE,EAAiF;AAC/E;AACD;AACD,cAAKP,YAAL;AACD;AACF,K;;AAEOgC,IAAAA,a,GAAgB,UAACN,CAAD,EAAsB;AAC5C,UAAI,MAAK1C,KAAL,CAAWwC,aAAX,KAA6B,CAAjC,EAAoC;AAClC;AACD;AACD,UAAI,8BAAYE,CAAZ,CAAJ,EAAoB;AAClB,8CAAgBA,CAAhB;AACA,cAAK1B,YAAL;AACD;AACF,K;;AAEOA,IAAAA,Y,GAAe,YAAM;AAC3B,UAAI,MAAKa,KAAL,CAAWoB,YAAf,EAA6B;AAC3B;AACD;AACD,UAAI,MAAKpB,KAAL,CAAWqB,OAAf,EAAwB;AACtB,cAAKrB,KAAL,CAAWqB,OAAX;AACD;AACF,K;;AAEOhC,IAAAA,S,GAAY,UAACiC,GAAD,EAAgC;AAClD,YAAK7C,MAAL,GAAc6C,GAAd;AACD,K;;AAEOhC,IAAAA,S,GAAY,UAACgC,GAAD,EAAgC;AAClD,YAAK5C,MAAL,GAAc4C,GAAd;AACD,K;;AAEOC,IAAAA,S,GAAY,UAACD,GAAD,EAAgC;AAClD,YAAK9C,MAAL,GAAc8C,GAAd;AACD,K;;AAEO/B,IAAAA,Y,GAAe,UAACnB,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKD,KAAL,CAAWC,SAAX,KAAyBA,SAAzB,IAAsC,MAAKsC,QAAL,CAAc,EAAEtC,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,K;;AAEOoB,IAAAA,Y,GAAe,UAACnB,SAAD,EAAsB,KAArBA,SAAqB,cAArBA,SAAqB,GAAT,IAAS;AAC3C,YAAKF,KAAL,CAAWE,SAAX,KAAyBA,SAAzB,IAAsC,MAAKqC,QAAL,CAAc,EAAErC,SAAS,EAATA,SAAF,EAAd,CAAtC;AACD,K;;AAEOoB,IAAAA,W,GAAc,UAACnB,QAAD,EAAsB,KAArBA,QAAqB,cAArBA,QAAqB,GAAV,KAAU;AAC1C,YAAKH,KAAL,CAAWG,QAAX,KAAwBA,QAAxB,IAAoC,MAAKoC,QAAL,CAAc,EAAEpC,QAAQ,EAARA,QAAF,EAAd,CAApC;AACD,K,sDAtPMkD,iB,GAAP,6BAA2B,CACzBC,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmC,KAAKP,aAAxC,EACA,KAAK5C,iBAAL,GAAyBiC,uBAAWmB,GAAX,CAAe,IAAf,EAAqB,KAAKhC,iBAA1B,CAAzB,CACD,C,QAEMiC,oB,GAAP,gCAA8B,CAC5BH,MAAM,CAACI,mBAAP,CAA2B,SAA3B,EAAsC,KAAKV,aAA3C,EACA,IAAI,0BAAc,KAAK5C,iBAAnB,CAAJ,EAA2C,CACzC,KAAKA,iBAAL,CAAuBuD,MAAvB,GACD,CACDtB,uBAAWsB,MAAX,CAAkB,IAAlB,EACD,C,CAED;AACF;AACA;AACA;AACA,K,QAcSC,M,GAAP,kBAA6B,mBAC3B,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACC,UAAL,EAAP,CACD,CAJH,CADF,CAQD,C,QAEOA,U,GAAR,sBAAqB,mBACnB,kBAAsC,KAAKjC,KAA3C,CAAQkC,eAAR,eAAQA,eAAR,CAAyBC,QAAzB,eAAyBA,QAAzB,CACA,IAAMC,iBAAiB,GAAG,KAAKpD,QAAL,GAAgBoD,iBAA1C,CAEA,oBACE,6BAAC,gCAAD,qBACE,6BAAC,4BAAD,EAAmB,KAAKpC,KAAxB,eACE,uDACE,6BAAC,kCAAD,QACG,gBAAkB,KAAfqC,QAAe,QAAfA,QAAe,CACjB,oBACE,4DACGH,eAAe,IAAI,MAAI,CAACI,YAAL,EADtB,eAEE,6BAAC,mCAAD,IACE,EAAE,MADJ,EAEE,UAAU,EAAE,MAAI,CAACC,kBAAL,EAFd,EAGE,MAAM,EAAE,CAACH,iBAHX,EAIE,KAAK,EAAE,CAACA,iBAJV,EAKE,IAAI,EAAE,KALR,EAME,OAAO,EAAE,EACPI,KAAK,EAAEvE,kBADA,EAEPwE,IAAI,EAAExE,kBAFC,EANX,EAUE,OAAO,EAAE,MAAI,CAACU,OAVhB,EAWE,SAAS,EAAEwD,QAXb,IAaG,MAAI,CAACO,eAAL,CAAqBL,QAArB,CAbH,CAFF,EAiBGA,QAAQ,iBAAI,6BAAC,8CAAD,OAjBf,CADF,CAqBD,CAvBH,CADF,CADF,CADF,CADF,CAiCD,C,QAEOK,e,GAAR,yBAAwBL,QAAxB,EAAwD,eACtD,mBAA6C,KAAKrC,KAAlD,CAAQ2C,KAAR,gBAAQA,KAAR,CAAeT,eAAf,gBAAeA,eAAf,CAAgCjC,QAAhC,gBAAgCA,QAAhC,CACA,qBAAqC,KAAKjB,QAAL,EAArC,CAAQ4D,gBAAR,kBAAQA,gBAAR,CAA0BC,MAA1B,kBAA0BA,MAA1B,CAEA,oBACE,6BAAC,cAAD,IACE,QAAQ,EAAE,UADZ,EAEE,YAAU/E,gBAAgB,CAACC,IAF7B,EAGE,SAAS,EAAE,gCACR+E,iBAAO/E,IAAP,EADQ,IACQ,IADR,MAER+E,iBAAOC,UAAP,EAFQ,IAEcV,QAFd,OAHb,EAOE,QAAQ,EAAEW,YAAY,CAACC,IAPzB,EAQE,qBAAqB,MARvB,EASE,KAAK,EACHZ,QAAQ,GACJa,SADI,GAEJ,EACEP,KAAK,EAAEA,KAAK,KAAKT,eAAe,GAAG,GAAH,GAAS,GAA7B,CADd,EAEEiB,KAAK,EAAElD,QAAQ,GAAG,MAAH,GAAY4C,MAF7B,EAGEO,IAAI,EAAEnD,QAAQ,GAAG4C,MAAH,GAAY,MAH5B,EAZR,EAkBE,UAAU,EAAE,KAAKlE,OAlBnB,iBAoBE,6BAAC,uBAAD,IAAW,QAAQ,EAAEiE,gBAAgB,IAAI,CAACV,eAA1C,EAA2D,SAAS,EAAE,KAAtE,EAA6E,SAAS,EAAEY,iBAAOO,SAAP,EAAxF,iBACE,6BAAC,wBAAD,IAAa,cAAc,EAAE,KAAKzC,kBAAlC,EAAsD,MAAM,MAA5D,iBACE,sCACE,YAAU9C,gBAAgB,CAACE,SAD7B,EAEE,SAAS,EAAE,iBAAG8E,iBAAOQ,OAAP,CAAe,KAAKtB,KAApB,CAAH,mBACRc,iBAAOS,WAAP,EADQ,IACetD,QADf,OAER6C,iBAAOU,iBAAP,EAFQ,IAEqB,KAAKrF,KAAL,CAAWiC,SAAX,IAAwBH,QAF7C,OAGR6C,iBAAOW,kBAAP,EAHQ,IAGsB,KAAKtF,KAAL,CAAWiC,SAAX,IAAwB,CAACH,QAH/C,OAIR6C,iBAAOY,MAAP,CAAc,KAAK1B,KAAnB,CAJQ,IAIoB,KAAK7D,KAAL,CAAWmC,SAJ/B,QAFb,EAQE,GAAG,EAAE,KAAKiB,SARZ,iBAUE,6BAAC,gCAAD,CAAiB,QAAjB,IAA0B,KAAK,EAAE,KAAKrC,uBAAL,EAAjC,IACG,KAAKc,KAAL,CAAW2D,QADd,CAVF,CADF,CADF,CApBF,CADF,CAyCD,C,QAyBOrB,Y,GAAR,wBAAoC,UAClC,oBACE,6BAAC,cAAD,IAAQ,QAAQ,EAAE,UAAlB,EAA8B,SAAS,EAAEQ,iBAAOc,OAAP,EAAzC,EAA2D,QAAQ,EAAEZ,YAAY,CAACC,IAAlF,iBACE,6BAAC,8CAAD,IAAwB,GAAG,EAAC,MAA5B,GADF,eAEE,sCACE,GAAG,EAAC,SADN,EAEE,SAAS,EAAE,kCACRH,iBAAOe,UAAP,EADQ,IACc,IADd,OAERf,iBAAOgB,cAAP,CAAsB,KAAK9B,KAA3B,CAFQ,IAE4B,KAAK7D,KAAL,CAAWoC,aAFvC,QAFb,GAFF,CADF,CAYD,C,QAEOgC,kB,GAAR,8BAAqD,CACnD,IAAMwB,UAAU,GAAG,KAAK/D,KAAL,CAAWC,QAAX,GAAsB6C,iBAAOkB,eAA7B,GAA+ClB,iBAAOmB,cAAzE,CAEA,OAAO,EACLzB,KAAK,EAAEuB,UAAU,EADZ,EAELG,WAAW,EAAEpB,iBAAOqB,gBAAP,EAFR,EAGL1B,IAAI,EAAEK,iBAAOsB,eAAP,EAHD,EAILC,UAAU,EAAEvB,iBAAOwB,qBAAP,EAJP,EAKLC,MAAM,EAAER,UAAU,EALb,EAMLS,YAAY,EAAE1B,iBAAOqB,gBAAP,EANT,EAAP,CAQD,C,mBApM2BvF,eAAM6F,S,8BAAvBvG,Q,CACGwG,mB,GAAsB,U,CADzBxG,Q,CAGGyG,M,GAASC,8B,CAHZ1G,Q,CAIG2G,I,GAAOC,0B,CAJV5G,Q,CAKG6G,M,GAASC,8B,CALZ9G,Q,CAMG+G,S,GAAYC,oC,CANfhH,Q,CA0CGe,Y,GAA6B,EACzCmD,iBAAiB,EAAE+C,6BADsB,EAEzCvC,gBAAgB,EAAE,IAFuB,EAGzCC,MAAM,EAAE,CAHiC,E","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Вызывается, когда анимация открытия сайдпейджа полностью прошла\n */\n onOpened?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Работает только при заблокированном фоне: `blockBackground = true`\n */\n disableFocusLock?: boolean;\n\n /**\n * задает отступ от края экрана\n */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const SidePageDataTids = {\n root: 'SidePage__root',\n container: 'SidePage__container',\n} as const;\n\ntype DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'disableFocusLock' | 'offset'>>;\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layout: HTMLElement | null = null;\n private header: SidePageHeader | null = null;\n private footer: SidePageFooter | null = null;\n private rootRef = React.createRef<HTMLDivElement>();\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * SidePage следит за изменениям размера SidePage.Body и вызывает этот метод автоматически.\n * @public\n */\n public updateLayout = (): void => {\n this.header?.update();\n this.footer?.update();\n };\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n disableFocusLock: true,\n offset: 0,\n };\n\n private getProps = createPropsGetter(SidePage.defaultProps);\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 { blockBackground, onOpened } = this.props;\n const disableAnimations = this.getProps().disableAnimations;\n\n return (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <div>\n <ResponsiveLayout>\n {({ isMobile }) => {\n return (\n <>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n nodeRef={this.rootRef}\n onEntered={onOpened}\n >\n {this.renderContainer(isMobile)}\n </CSSTransition>\n {isMobile && <HideBodyVerticalScroll />}\n </>\n );\n }}\n </ResponsiveLayout>\n </div>\n </CommonWrapper>\n </RenderContainer>\n );\n }\n\n private renderContainer(isMobile: boolean): JSX.Element {\n const { width, blockBackground, fromLeft } = this.props;\n const { disableFocusLock, offset } = this.getProps();\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid={SidePageDataTids.root}\n className={cx({\n [styles.root()]: true,\n [styles.mobileRoot()]: isMobile,\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={\n isMobile\n ? undefined\n : {\n width: width || (blockBackground ? 800 : 500),\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }\n }\n wrapperRef={this.rootRef}\n >\n <FocusLock disabled={disableFocusLock || !blockBackground} autoFocus={false} className={styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid={SidePageDataTids.container}\n className={cx(styles.wrapper(this.theme), {\n [styles.wrapperLeft()]: fromLeft,\n [styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={this.layoutRef}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n headerRef: this.headerRef,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layout) {\n return 'auto';\n }\n return this.layout.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\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 requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private headerRef = (ref: SidePageHeader | null) => {\n this.header = ref;\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private layoutRef = (ref: HTMLDivElement | null) => {\n this.layout = ref;\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"]}
@@ -19,5 +19,6 @@ export declare class SidePageBody extends React.Component<SidePageBodyProps> {
19
19
  private isMobileLayout;
20
20
  private setRootNode;
21
21
  componentDidUpdate(): void;
22
+ private handleResize;
22
23
  render(): JSX.Element;
23
24
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.SidePageBodyDataTids = exports.SidePageBody = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
3
  var _CommonWrapper = require("../../internal/CommonWrapper");
4
+ var _ResizeDetector = require("../../internal/ResizeDetector");
4
5
  var _ThemeContext = require("../../lib/theming/ThemeContext");
5
6
  var _decorator = require("../ResponsiveLayout/decorator");
6
7
  var _Emotion = require("../../lib/theming/Emotion");
@@ -27,13 +28,17 @@ SidePageBody = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
27
28
 
28
29
 
29
30
 
30
- context = _this.context;return _this;}var _proto = SidePageBody.prototype;_proto.
31
+ context = _this.context;_this.
31
32
 
32
33
 
33
34
 
34
- componentDidUpdate = function componentDidUpdate() {
35
- this.context.updateLayout();
36
- };_proto.
35
+
36
+
37
+
38
+
39
+ handleResize = function () {
40
+ _this.context.updateLayout();
41
+ };return _this;}var _proto = SidePageBody.prototype;_proto.componentDidUpdate = function componentDidUpdate() {this.context.updateLayout();};_proto.
37
42
 
38
43
  render = function render() {var _this2 = this;
39
44
  return /*#__PURE__*/(
@@ -43,9 +48,9 @@ SidePageBody = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
43
48
  _react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), /*#__PURE__*/
44
49
  _react.default.createElement("div", {
45
50
  "data-tid": SidePageBodyDataTids.root,
46
- className: (0, _Emotion.cx)(_SidePage.styles.body(theme), (_cx = {}, _cx[_SidePage.styles.mobileBody()] = _this2.isMobileLayout, _cx)) },
51
+ className: (0, _Emotion.cx)(_SidePage.styles.body(theme), (_cx = {}, _cx[_SidePage.styles.mobileBody()] = _this2.isMobileLayout, _cx)) }, /*#__PURE__*/
47
52
 
48
- _this2.props.children)));
53
+ _react.default.createElement(_ResizeDetector.ResizeDetector, { onResize: _this2.handleResize }, _this2.props.children))));
49
54
 
50
55
 
51
56
 
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePageBody.tsx"],"names":["SidePageBodyDataTids","root","SidePageBody","responsiveLayout","rootNode","context","componentDidUpdate","updateLayout","render","theme","setRootNode","props","styles","body","mobileBody","isMobileLayout","children","React","Component","__KONTUR_REACT_UI__","contextType","SidePageContext"],"mappings":"yWAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oD;;;;;;AAMO,IAAMA,oBAAoB,GAAG;AAClCC,EAAAA,IAAI,EAAE,oBAD4B,EAA7B;;AAGP;AACA;AACA;AACA;AACA,G;;;AAGaC,Y,OAFZC,2B,eACAC,kB;;;;AAKQC,IAAAA,O,GAA+B,MAAKA,O;;;;AAIpCC,EAAAA,kB,GAAP,8BAA4B;AAC1B,SAAKD,OAAL,CAAaE,YAAb;AACD,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAACC,WAAjC,IAAkD,MAAI,CAACC,KAAvD;AACE;AACE,wBAAUX,oBAAoB,CAACC,IADjC;AAEE,YAAA,SAAS,EAAE,iBAAGW,iBAAOC,IAAP,CAAYJ,KAAZ,CAAH,iBAA0BG,iBAAOE,UAAP,EAA1B,IAAgD,MAAI,CAACC,cAArD,OAFb;;AAIG,UAAA,MAAI,CAACJ,KAAL,CAAWK,QAJd,CADF,CADF;;;;AAUD,OAZH,CADF;;;AAgBD,G,uBA7B+BC,eAAMC,S,WACxBC,mB,GAAsB,c,UAEtBC,W,GAAcC,gC","sourcesContent":["import React from 'react';\n\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './SidePage.styles';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\n\nexport interface SidePageBodyProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nexport const SidePageBodyDataTids = {\n root: 'SidePageBody__root',\n} as const;\n/**\n * Тело для сайдпейджа\n *\n * @visibleName SidePage.Body\n */\n@responsiveLayout\n@rootNode\nexport class SidePageBody extends React.Component<SidePageBodyProps> {\n public static __KONTUR_REACT_UI__ = 'SidePageBody';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate() {\n this.context.updateLayout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageBodyDataTids.root}\n className={cx(styles.body(theme), { [styles.mobileBody()]: this.isMobileLayout })}\n >\n {this.props.children}\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["SidePageBody.tsx"],"names":["SidePageBodyDataTids","root","SidePageBody","responsiveLayout","rootNode","context","handleResize","updateLayout","componentDidUpdate","render","theme","setRootNode","props","styles","body","mobileBody","isMobileLayout","children","React","Component","__KONTUR_REACT_UI__","contextType","SidePageContext"],"mappings":"yWAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oD;;;;;;AAMO,IAAMA,oBAAoB,GAAG;AAClCC,EAAAA,IAAI,EAAE,oBAD4B,EAA7B;;AAGP;AACA;AACA;AACA;AACA,G;;;AAGaC,Y,OAFZC,2B,eACAC,kB;;;;AAKQC,IAAAA,O,GAA+B,MAAKA,O;;;;;;;;AAQnCC,IAAAA,Y,GAAe,YAAM;AAC3B,YAAKD,OAAL,CAAaE,YAAb;AACD,K,0DANMC,kB,GAAP,8BAA4B,CAC1B,KAAKH,OAAL,CAAaE,YAAb,GACD,C;;AAMME,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAACC,WAAjC,IAAkD,MAAI,CAACC,KAAvD;AACE;AACE,wBAAUZ,oBAAoB,CAACC,IADjC;AAEE,YAAA,SAAS,EAAE,iBAAGY,iBAAOC,IAAP,CAAYJ,KAAZ,CAAH,iBAA0BG,iBAAOE,UAAP,EAA1B,IAAgD,MAAI,CAACC,cAArD,OAFb;;AAIE,uCAAC,8BAAD,IAAgB,QAAQ,EAAE,MAAI,CAACV,YAA/B,IAA8C,MAAI,CAACM,KAAL,CAAWK,QAAzD,CAJF,CADF,CADF;;;;AAUD,OAZH,CADF;;;AAgBD,G,uBAjC+BC,eAAMC,S,WACxBC,mB,GAAsB,c,UAEtBC,W,GAAcC,gC","sourcesContent":["import React from 'react';\n\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ResizeDetector } from '../../internal/ResizeDetector';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './SidePage.styles';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\n\nexport interface SidePageBodyProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nexport const SidePageBodyDataTids = {\n root: 'SidePageBody__root',\n} as const;\n/**\n * Тело для сайдпейджа\n *\n * @visibleName SidePage.Body\n */\n@responsiveLayout\n@rootNode\nexport class SidePageBody extends React.Component<SidePageBodyProps> {\n public static __KONTUR_REACT_UI__ = 'SidePageBody';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n private isMobileLayout!: boolean;\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate() {\n this.context.updateLayout();\n }\n\n private handleResize = () => {\n this.context.updateLayout();\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageBodyDataTids.root}\n className={cx(styles.body(theme), { [styles.mobileBody()]: this.isMobileLayout })}\n >\n <ResizeDetector onResize={this.handleResize}>{this.props.children}</ResizeDetector>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n}\n"]}
@@ -45,6 +45,7 @@ export declare class InternalMenu extends React.PureComponent<MenuProps, MenuSta
45
45
  private renderMain;
46
46
  private renderHeader;
47
47
  private renderFooter;
48
+ private renderMenuSeparatorWithNoMargin;
48
49
  private focusOnRootElement;
49
50
  private shouldRecalculateMaxHeight;
50
51
  private calculateMaxHeight;
@@ -12,6 +12,8 @@ var _ThemeContext = require("../../lib/theming/ThemeContext");
12
12
  var _Emotion = require("../../lib/theming/Emotion");
13
13
  var _rootNode2 = require("../../lib/rootNode");
14
14
  var _getDOMRect = require("../../lib/dom/getDOMRect");
15
+ var _MenuSeparator = require("../../components/MenuSeparator");
16
+ var _ThemeFactory = require("../../lib/theming/ThemeFactory");
15
17
 
16
18
  var _InternalMenu = require("./InternalMenu.styles");
17
19
  var _isActiveElement = require("./isActiveElement");
@@ -197,13 +199,16 @@ InternalMenu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*
197
199
  renderHeader = function () {var _cx;
198
200
  return /*#__PURE__*/(
199
201
  _react.default.createElement("div", {
200
- ref: function ref(el) {return _this.header = el;},
201
202
  className: (0, _Emotion.cx)((_cx = {}, _cx[
202
- _InternalMenu.styles.header()] = true, _cx[
203
- _InternalMenu.styles.fixedHeader()] = _this.state.scrollState !== 'top', _cx)) },
203
+ _InternalMenu.styles.wrapper()] = true, _cx[
204
+ _InternalMenu.styles.headerWrapper()] = true, _cx)),
204
205
 
206
+ ref: function ref(el) {return _this.header = el;} }, /*#__PURE__*/
207
+
208
+ _react.default.createElement("div", { className: _InternalMenu.styles.contentWrapper() }, _this.props.header), /*#__PURE__*/
209
+ _react.default.createElement("div", { className: _InternalMenu.styles.menuSeparatorWrapper(_this.theme) },
210
+ _this.state.scrollState !== 'top' && _this.renderMenuSeparatorWithNoMargin())));
205
211
 
206
- _this.props.header));
207
212
 
208
213
 
209
214
  };_this.
@@ -211,13 +216,24 @@ InternalMenu = (0, _rootNode2.rootNode)(_class = (_temp = _class2 = /*#__PURE__*
211
216
  renderFooter = function () {var _cx2;
212
217
  return /*#__PURE__*/(
213
218
  _react.default.createElement("div", {
214
- ref: function ref(el) {return _this.footer = el;},
215
219
  className: (0, _Emotion.cx)((_cx2 = {}, _cx2[
216
- _InternalMenu.styles.footer()] = true, _cx2[
217
- _InternalMenu.styles.fixedFooter()] = _this.state.scrollState !== 'bottom', _cx2)) },
220
+ _InternalMenu.styles.wrapper()] = true, _cx2[
221
+ _InternalMenu.styles.footerWrapper()] = true, _cx2)),
222
+
223
+ ref: function ref(el) {return _this.footer = el;} }, /*#__PURE__*/
224
+
225
+ _react.default.createElement("div", { className: _InternalMenu.styles.menuSeparatorWrapper(_this.theme) },
226
+ _this.state.scrollState !== 'bottom' && _this.renderMenuSeparatorWithNoMargin()), /*#__PURE__*/
227
+
228
+ _react.default.createElement("div", { className: _InternalMenu.styles.contentWrapper() }, _this.props.footer)));
218
229
 
219
230
 
220
- _this.props.footer));
231
+ };_this.
232
+
233
+ renderMenuSeparatorWithNoMargin = function () {
234
+ return /*#__PURE__*/(
235
+ _react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _ThemeFactory.ThemeFactory.create({ menuSeparatorMarginY: '0' }, _this.theme) }, /*#__PURE__*/
236
+ _react.default.createElement(_MenuSeparator.MenuSeparator, null)));
221
237
 
222
238
 
223
239
  };_this.
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenuDataTids","root","InternalMenu","rootNode","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","el","header","styles","fixedHeader","props","renderFooter","footer","fixedFooter","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","theme","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","hasShadow","width","preventWindowScroll","shadow","setRootNode","map","child","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","isActiveElement","cyclicSelection","length","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isHTMLElement } from '../../lib/SSRSafe';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n ref={(el) => (this.header = el)}\n className={cx({\n [styles.header()]: true,\n [styles.fixedHeader()]: this.state.scrollState !== 'top',\n })}\n >\n {this.props.header}\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n ref={(el) => (this.footer = el)}\n className={cx({\n [styles.footer()]: true,\n [styles.fixedFooter()]: this.state.scrollState !== 'bottom',\n })}\n >\n {this.props.footer}\n </div>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
1
+ {"version":3,"sources":["InternalMenu.tsx"],"names":["InternalMenuDataTids","root","InternalMenu","rootNode","getProps","defaultProps","state","highlightedIndex","maxHeight","scrollState","renderHeader","styles","wrapper","headerWrapper","el","header","contentWrapper","props","menuSeparatorWrapper","theme","renderMenuSeparatorWithNoMargin","renderFooter","footerWrapper","footer","ThemeFactory","create","menuSeparatorMarginY","focusOnRootElement","focus","shouldRecalculateMaxHeight","prevProps","children","prevMaxHeight","prevHeader","prevFooter","prevChildrenCount","React","Children","count","calculateMaxHeight","parsedMaxHeight","window","rootElementMaxHeight","getComputedStyle","parseFloat","calculatedMaxHeight","height","setState","setInitialSelection","i","initialSelectedItemIndex","moveDown","refScrollContainer","scrollContainer","scrollToSelected","highlighted","HTMLElement","scrollTo","highlightItem","index","unhighlight","moveUp","move","handleKeyDown","e","onKeyDown","defaultPrevented","preventDefault","onClick","handleScrollStateChange","componentDidMount","componentDidUpdate","render","renderMain","enableIconPadding","toArray","some","x","isValidElement","icon","isEmpty","hasShadow","width","preventWindowScroll","shadow","setRootNode","map","child","type","modifiedChild","highlight","ref","originalRef","menuItem","refHighlighted","cloneElement","select","bind","onMouseEnter","event","onMouseLeave","current","shouldHandleHref","item","childrenToArray","href","target","open","location","onItemClick","step","isActiveElement","cyclicSelection","length","filter","isNonNullable","PureComponent","__KONTUR_REACT_UI__","ret","forEach","push"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isHTMLElement } from '../../lib/SSRSafe';\nimport { isNonNullable, isNullable } from '../../lib/utils';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter } from '../../lib/events/keyboard/identifiers';\nimport { ScrollContainer, ScrollContainerScrollState } from '../../components/ScrollContainer';\nimport { isMenuItem, MenuItem, MenuItemProps } from '../../components/MenuItem';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\n\nimport { styles } from './InternalMenu.styles';\nimport { isActiveElement } from './isActiveElement';\nimport { addIconPaddingIfPartOfMenu } from './addIconPaddingIfPartOfMenu';\n\ninterface MenuProps {\n children?: React.ReactNode;\n hasShadow?: boolean;\n /**\n * Максимальная высота применяется только для скролл контейнера\n *\n * Высота `header` и `footer` в нее не включены\n */\n maxHeight?: number | string;\n onItemClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n width?: number | string;\n preventWindowScroll?: boolean;\n onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Циклический перебор айтемов меню (по-дефолтну включен)\n cyclicSelection?: boolean;\n initialSelectedItemIndex?: number;\n}\n\ninterface MenuState {\n highlightedIndex: number;\n maxHeight: number | string;\n scrollState: ScrollContainerScrollState;\n}\n\nexport const InternalMenuDataTids = {\n root: 'InternalMenu__root',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n MenuProps,\n 'width' | 'maxHeight' | 'hasShadow' | 'preventWindowScroll' | 'cyclicSelection' | 'initialSelectedItemIndex'\n >\n>;\n\n@rootNode\nexport class InternalMenu extends React.PureComponent<MenuProps, MenuState> {\n public static __KONTUR_REACT_UI__ = 'InternalMenu';\n\n public static defaultProps: DefaultProps = {\n width: 'auto',\n maxHeight: 300,\n hasShadow: true,\n preventWindowScroll: true,\n cyclicSelection: true,\n initialSelectedItemIndex: -1,\n };\n\n private getProps = createPropsGetter(InternalMenu.defaultProps);\n\n public state: MenuState = {\n highlightedIndex: -1,\n maxHeight: this.getProps().maxHeight || 'none',\n scrollState: 'top',\n };\n\n private theme!: Theme;\n private scrollContainer: Nullable<ScrollContainer>;\n private highlighted: Nullable<MenuItem>;\n private setRootNode!: TSetRootNode;\n private header: Nullable<HTMLDivElement>;\n private footer: Nullable<HTMLDivElement>;\n\n public componentDidMount() {\n this.setInitialSelection();\n this.calculateMaxHeight();\n }\n\n public componentDidUpdate(prevProps: MenuProps) {\n if (this.shouldRecalculateMaxHeight(prevProps)) {\n this.calculateMaxHeight();\n }\n\n if (prevProps.maxHeight !== this.getProps().maxHeight) {\n this.setState({\n maxHeight: this.props.maxHeight || 'none',\n });\n }\n }\n\n public focus() {\n this.focusOnRootElement();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const enableIconPadding = React.Children.toArray(this.props.children).some(\n (x) => React.isValidElement(x) && x.props.icon,\n );\n\n if (this.isEmpty()) {\n return null;\n }\n const { hasShadow, width, maxHeight, preventWindowScroll } = this.getProps();\n\n return (\n <div\n data-tid={InternalMenuDataTids.root}\n className={cx({\n [styles.root(this.theme)]: true,\n [styles.shadow(this.theme)]: hasShadow,\n })}\n style={{\n width,\n maxHeight: this.state.maxHeight,\n }}\n onKeyDown={this.handleKeyDown}\n ref={this.setRootNode}\n tabIndex={0}\n >\n {this.props.header ? this.renderHeader() : null}\n <ScrollContainer\n ref={this.refScrollContainer}\n maxHeight={maxHeight}\n preventWindowScroll={preventWindowScroll}\n onScrollStateChange={this.handleScrollStateChange}\n >\n {React.Children.map(this.props.children, (child, index) => {\n if (typeof child === 'string' || typeof child === 'number' || isNullable(child)) {\n return child;\n }\n if (React.isValidElement(child) && typeof child.type === 'string') {\n return child;\n }\n\n const modifiedChild = addIconPaddingIfPartOfMenu(child, enableIconPadding);\n\n if (isActiveElement(modifiedChild)) {\n const highlight = this.state.highlightedIndex === index;\n\n let ref = modifiedChild.ref;\n const originalRef = ref;\n if (highlight) {\n ref = (menuItem) => this.refHighlighted(originalRef, menuItem);\n }\n\n return React.cloneElement<MenuItemProps, MenuItem>(modifiedChild, {\n ref,\n state: highlight ? 'hover' : modifiedChild.props.state,\n onClick: this.select.bind(this, index, false),\n onMouseEnter: (event) => {\n this.highlightItem(index);\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseEnter) {\n modifiedChild.props.onMouseEnter(event);\n }\n },\n onMouseLeave: (event) => {\n this.unhighlight();\n if (isMenuItem(modifiedChild) && modifiedChild.props.onMouseLeave) {\n modifiedChild.props.onMouseLeave(event);\n }\n },\n });\n }\n\n return modifiedChild;\n })}\n </ScrollContainer>\n {this.props.footer ? this.renderFooter() : null}\n </div>\n );\n }\n\n private renderHeader = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.headerWrapper()]: true,\n })}\n ref={(el) => (this.header = el)}\n >\n <div className={styles.contentWrapper()}>{this.props.header}</div>\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'top' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n </div>\n );\n };\n\n private renderFooter = () => {\n return (\n <div\n className={cx({\n [styles.wrapper()]: true,\n [styles.footerWrapper()]: true,\n })}\n ref={(el) => (this.footer = el)}\n >\n <div className={styles.menuSeparatorWrapper(this.theme)}>\n {this.state.scrollState !== 'bottom' && this.renderMenuSeparatorWithNoMargin()}\n </div>\n <div className={styles.contentWrapper()}>{this.props.footer}</div>\n </div>\n );\n };\n\n private renderMenuSeparatorWithNoMargin = () => {\n return (\n <ThemeContext.Provider value={ThemeFactory.create({ menuSeparatorMarginY: '0' }, this.theme)}>\n <MenuSeparator />\n </ThemeContext.Provider>\n );\n };\n\n private focusOnRootElement = (): void => {\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private shouldRecalculateMaxHeight = (prevProps: MenuProps): boolean => {\n const { header, footer, children } = this.props;\n const maxHeight = this.getProps().maxHeight;\n const prevMaxHeight = prevProps.maxHeight;\n const prevHeader = prevProps.header;\n const prevFooter = prevProps.footer;\n const prevChildrenCount = React.Children.count(prevProps.children);\n\n return (\n maxHeight !== prevMaxHeight ||\n footer !== prevFooter ||\n header !== prevHeader ||\n React.Children.count(children) !== prevChildrenCount\n );\n };\n\n private calculateMaxHeight = () => {\n const maxHeight = this.getProps().maxHeight;\n let parsedMaxHeight = maxHeight;\n const rootNode = getRootNode(this);\n\n if (typeof maxHeight === 'string' && typeof window !== 'undefined' && rootNode) {\n const rootElementMaxHeight = window.getComputedStyle(rootNode).maxHeight;\n\n if (rootElementMaxHeight) {\n parsedMaxHeight = parseFloat(rootElementMaxHeight);\n }\n }\n\n const calculatedMaxHeight =\n typeof parsedMaxHeight === 'number'\n ? parsedMaxHeight +\n ((this.header && getDOMRect(this.header).height) || 0) +\n ((this.footer && getDOMRect(this.footer).height) || 0)\n : maxHeight;\n\n this.setState({\n maxHeight: calculatedMaxHeight || 'none',\n });\n };\n\n private setInitialSelection = () => {\n for (let i = this.getProps().initialSelectedItemIndex; i > -1; i--) {\n this.moveDown();\n }\n };\n\n private refScrollContainer = (scrollContainer: Nullable<ScrollContainer>) => {\n this.scrollContainer = scrollContainer;\n };\n\n private refHighlighted(\n originalRef: string | ((instance: MenuItem | null) => void) | React.RefObject<MenuItem> | null | undefined,\n menuItem: MenuItem | null,\n ) {\n this.highlighted = menuItem;\n\n if (!originalRef || typeof originalRef === 'string') {\n return;\n }\n\n if (typeof originalRef === 'function') {\n originalRef(menuItem);\n } else if (typeof originalRef === 'object') {\n // @ts-expect-error: See: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065.\n originalRef.current = menuItem;\n }\n }\n\n private scrollToSelected = () => {\n if (this.scrollContainer && this.highlighted) {\n const rootNode = getRootNode(this.highlighted);\n // TODO: Remove this check once IF-647 is resolved\n if (rootNode instanceof HTMLElement) {\n this.scrollContainer.scrollTo(rootNode);\n }\n }\n };\n\n private select(index: number, shouldHandleHref: boolean, event: React.SyntheticEvent<HTMLElement>): boolean {\n const item = childrenToArray(this.props.children)[index];\n\n if (isActiveElement(item)) {\n if (shouldHandleHref && item.props.href) {\n if (item.props.target) {\n window.open(item.props.href, item.props.target);\n } else {\n location.href = item.props.href;\n }\n }\n if (item.props.onClick) {\n item.props.onClick(event as React.MouseEvent<HTMLElement>);\n }\n if (this.props.onItemClick) {\n this.props.onItemClick(event);\n }\n return true;\n }\n return false;\n }\n\n private highlightItem = (index: number): void => {\n this.setState({ highlightedIndex: index });\n\n const rootNode = getRootNode(this);\n if (isHTMLElement(rootNode)) {\n rootNode?.focus();\n }\n };\n\n private unhighlight = () => {\n this.setState({ highlightedIndex: -1 });\n };\n\n private move(step: number) {\n this.setState((state, props) => {\n const children = childrenToArray(props.children);\n if (!children.some(isActiveElement)) {\n return null;\n }\n let index = state.highlightedIndex;\n do {\n index += step;\n if (!this.getProps().cyclicSelection && (index < 0 || index > children.length)) {\n return null;\n }\n\n if (index < 0) {\n index = children.length - 1;\n } else if (index > children.length) {\n index = 0;\n }\n\n const child = children[index];\n if (isActiveElement(child)) {\n return { highlightedIndex: index };\n }\n } while (index !== state.highlightedIndex);\n return null;\n }, this.scrollToSelected);\n }\n\n private moveUp = () => {\n this.move(-1);\n };\n\n private moveDown = () => {\n this.move(1);\n };\n\n private isEmpty() {\n const { children } = this.props;\n return !children || !childrenToArray(children).filter(isNonNullable).length;\n }\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>): void => {\n if (typeof this.props.onKeyDown === 'function') {\n this.props.onKeyDown(e);\n }\n\n if (e.defaultPrevented) {\n return;\n }\n\n if (isKeyArrowUp(e)) {\n e.preventDefault();\n this.moveUp();\n } else if (isKeyArrowDown(e)) {\n e.preventDefault();\n this.moveDown();\n } else if (isKeyEnter(e)) {\n if (this.highlighted && this.highlighted.props.onClick) {\n this.highlighted.props.onClick(e);\n }\n }\n };\n\n private handleScrollStateChange = (scrollState: ScrollContainerScrollState) => {\n if (this.state.scrollState !== scrollState) {\n this.setState({ scrollState });\n }\n };\n}\n\nfunction childrenToArray(children: React.ReactNode): React.ReactNode[] {\n const ret: React.ReactNode[] = [];\n // Use forEach instead of map to avoid cloning for key unifying.\n React.Children.forEach(children, (child) => {\n ret.push(child);\n });\n return ret;\n}\n"]}
@@ -2,8 +2,9 @@ import { Theme } from '../../lib/theming/Theme';
2
2
  export declare const styles: {
3
3
  root(t: Theme): string;
4
4
  shadow(t: Theme): string;
5
- header(): string;
6
- footer(): string;
7
- fixedHeader(): string;
8
- fixedFooter(): string;
5
+ wrapper(): string;
6
+ headerWrapper(): string;
7
+ footerWrapper(): string;
8
+ contentWrapper(): string;
9
+ menuSeparatorWrapper(t: Theme): string;
9
10
  };
@@ -1,10 +1,9 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
2
2
 
3
3
 
4
4
  var styles = (0, _Emotion.memoizeStyle)({
5
5
  root: function root(t) {
6
- return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n overflow: auto;\n padding: 5px ", ";\n outline: none;\n box-sizing: content-box;\n background: ", ";\n "])),
7
-
6
+ return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n padding: 5px ", ";\n outline: none;\n box-sizing: content-box;\n background: ", ";\n "])),
8
7
  t.menuPaddingX,
9
8
 
10
9
 
@@ -19,10 +18,8 @@ var styles = (0, _Emotion.memoizeStyle)({
19
18
 
20
19
  },
21
20
 
22
- header: function header() {
23
- return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n top: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n "])));
24
-
25
-
21
+ wrapper: function wrapper() {
22
+ return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n "])));
26
23
 
27
24
 
28
25
 
@@ -32,27 +29,26 @@ var styles = (0, _Emotion.memoizeStyle)({
32
29
 
33
30
  },
34
31
 
35
- footer: function footer() {
36
- return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n bottom: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n "])));
37
-
38
-
39
-
40
-
32
+ headerWrapper: function headerWrapper() {
33
+ return (0, _Emotion.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n top: -5px;\n "])));
41
34
 
42
35
 
36
+ },
43
37
 
38
+ footerWrapper: function footerWrapper() {
39
+ return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n bottom: -5px;\n "])));
44
40
 
45
41
 
46
42
  },
47
43
 
48
- fixedHeader: function fixedHeader() {
49
- return (0, _Emotion.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n "])));
44
+ contentWrapper: function contentWrapper() {
45
+ return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n padding: 6px 18px 7px 8px;\n "])));
50
46
 
51
47
 
52
48
  },
53
49
 
54
- fixedFooter: function fixedFooter() {
55
- return (0, _Emotion.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["\n box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n "])));
56
-
50
+ menuSeparatorWrapper: function menuSeparatorWrapper(t) {
51
+ return (0, _Emotion.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["\n height: ", ";\n "])),
52
+ t.menuSeparatorBorderWidth);
57
53
 
58
54
  } });exports.styles = styles;
@@ -1 +1 @@
1
- {"version":3,"sources":["InternalMenu.styles.ts"],"names":["styles","root","t","css","menuPaddingX","bgSecondary","shadow","menuBorder","menuShadow","header","footer","fixedHeader","fixedFooter"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;;AAEiBD,IAAAA,CAAC,CAACE,YAFnB;;;AAKgBF,IAAAA,CAAC,CAACG,WALlB;;AAOD,GATgC;;AAWjCC,EAAAA,MAXiC,kBAW1BJ,CAX0B,EAWhB;AACf,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACK,UADd;AAEgBL,IAAAA,CAAC,CAACM,UAFlB;;AAID,GAhBgC;;AAkBjCC,EAAAA,MAlBiC,oBAkBxB;AACP,eAAON,YAAP;;;;;;;;;;AAUD,GA7BgC;;AA+BjCO,EAAAA,MA/BiC,oBA+BxB;AACP,eAAOP,YAAP;;;;;;;;;;AAUD,GA1CgC;;AA4CjCQ,EAAAA,WA5CiC,yBA4CnB;AACZ,eAAOR,YAAP;;;AAGD,GAhDgC;;AAkDjCS,EAAAA,WAlDiC,yBAkDnB;AACZ,eAAOT,YAAP;;;AAGD,GAtDgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n overflow: auto;\n padding: 5px ${t.menuPaddingX};\n outline: none;\n box-sizing: content-box;\n background: ${t.bgSecondary};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n\n header() {\n return css`\n top: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n footer() {\n return css`\n bottom: -5px;\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n padding: 6px 18px 7px 8px;\n `;\n },\n\n fixedHeader() {\n return css`\n box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n\n fixedFooter() {\n return css`\n box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["InternalMenu.styles.ts"],"names":["styles","root","t","css","menuPaddingX","bgSecondary","shadow","menuBorder","menuShadow","wrapper","headerWrapper","footerWrapper","contentWrapper","menuSeparatorWrapper","menuSeparatorBorderWidth"],"mappings":"4QAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACiBD,IAAAA,CAAC,CAACE,YADnB;;;AAIgBF,IAAAA,CAAC,CAACG,WAJlB;;AAMD,GARgC;;AAUjCC,EAAAA,MAViC,kBAU1BJ,CAV0B,EAUhB;AACf,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACK,UADd;AAEgBL,IAAAA,CAAC,CAACM,UAFlB;;AAID,GAfgC;;AAiBjCC,EAAAA,OAjBiC,qBAiBvB;AACR,eAAON,YAAP;;;;;;;;AAQD,GA1BgC;;AA4BjCO,EAAAA,aA5BiC,2BA4BjB;AACd,eAAOP,YAAP;;;AAGD,GAhCgC;;AAkCjCQ,EAAAA,aAlCiC,2BAkCjB;AACd,eAAOR,YAAP;;;AAGD,GAtCgC;;AAwCjCS,EAAAA,cAxCiC,4BAwChB;AACf,eAAOT,YAAP;;;AAGD,GA5CgC;;AA8CjCU,EAAAA,oBA9CiC,gCA8CZX,CA9CY,EA8CF;AAC7B,eAAOC,YAAP;AACYD,IAAAA,CAAC,CAACY,wBADd;;AAGD,GAlDgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n padding: 5px ${t.menuPaddingX};\n outline: none;\n box-sizing: content-box;\n background: ${t.bgSecondary};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n border: ${t.menuBorder};\n box-shadow: ${t.menuShadow};\n `;\n },\n\n wrapper() {\n return css`\n position: relative;\n z-index: 1;\n width: 100%;\n overflow: hidden;\n line-height: 18px;\n box-sizing: border-box;\n `;\n },\n\n headerWrapper() {\n return css`\n top: -5px;\n `;\n },\n\n footerWrapper() {\n return css`\n bottom: -5px;\n `;\n },\n\n contentWrapper() {\n return css`\n padding: 6px 18px 7px 8px;\n `;\n },\n\n menuSeparatorWrapper(t: Theme) {\n return css`\n height: ${t.menuSeparatorBorderWidth};\n `;\n },\n});\n"]}
@@ -38,7 +38,7 @@ export declare const isNonNullable: <T>(value: T) => value is NonNullable<T>;
38
38
  * @param value Value to check for `null` and `undefined`.
39
39
  * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.
40
40
  */
41
- export declare const isNullable: <T>(value: T) => value is null | undefined;
41
+ export declare const isNullable: (value: unknown) => value is null | undefined;
42
42
  /**
43
43
  * Creates a function that checks if the given `child`
44
44
  * is an instance of some component specified by `name`.
package/cjs/lib/utils.js CHANGED
@@ -129,9 +129,8 @@ var isNonNullable = function isNonNullable(value) {
129
129
  *
130
130
  * @param value Value to check for `null` and `undefined`.
131
131
  * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.
132
- */
133
- // @ts-expect-error: TypeScript doesn't consider the check inside of the function.
134
- exports.isNonNullable = isNonNullable;var isNullable = function isNullable(value) {
132
+ */exports.isNonNullable = isNonNullable;
133
+ var isNullable = function isNullable(value) {
135
134
  return value === null || value === undefined;
136
135
  };
137
136