@skbkontur/react-ui 4.0.0-beta.5 → 4.0.2

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 (148) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/cjs/components/Button/Button.js +1 -1
  3. package/cjs/components/Button/Button.js.map +1 -1
  4. package/cjs/components/DatePicker/DatePicker.d.ts +0 -3
  5. package/cjs/components/DatePicker/DatePicker.js +14 -9
  6. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  7. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +1 -1
  8. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  9. package/cjs/components/GlobalLoader/GlobalLoader.md +13 -3
  10. package/cjs/components/GlobalLoader/GlobalLoaderView.js +6 -3
  11. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  12. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
  13. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +59 -12
  14. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  15. package/cjs/components/GlobalLoader/useParams.d.ts +1 -0
  16. package/cjs/components/GlobalLoader/useParams.js +3 -2
  17. package/cjs/components/GlobalLoader/useParams.js.map +1 -1
  18. package/cjs/components/Modal/Modal.js +2 -2
  19. package/cjs/components/Modal/Modal.js.map +1 -1
  20. package/cjs/components/Modal/ModalFooter.js +1 -0
  21. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  22. package/cjs/components/Modal/ModalHeader.js +1 -0
  23. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  24. package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
  25. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  26. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  27. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  28. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  29. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
  30. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  31. package/cjs/components/Select/Select.js +4 -1
  32. package/cjs/components/Select/Select.js.map +1 -1
  33. package/cjs/components/SidePage/SidePage.d.ts +5 -1
  34. package/cjs/components/SidePage/SidePage.js +31 -9
  35. package/cjs/components/SidePage/SidePage.js.map +1 -1
  36. package/cjs/components/SidePage/SidePage.styles.js +4 -2
  37. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  38. package/cjs/components/SidePage/SidePageContext.d.ts +2 -0
  39. package/cjs/components/SidePage/SidePageContext.js +3 -0
  40. package/cjs/components/SidePage/SidePageContext.js.map +1 -1
  41. package/cjs/components/SidePage/SidePageHeader.d.ts +3 -0
  42. package/cjs/components/SidePage/SidePageHeader.js +36 -26
  43. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  44. package/cjs/components/Sticky/Sticky.d.ts +6 -1
  45. package/cjs/components/Sticky/Sticky.js +5 -0
  46. package/cjs/components/Sticky/Sticky.js.map +1 -1
  47. package/cjs/components/Textarea/TextareaCounter.js +3 -4
  48. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  49. package/cjs/components/Toast/Toast.styles.js +2 -2
  50. package/cjs/components/Toast/Toast.styles.js.map +1 -1
  51. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +2 -1
  52. package/cjs/internal/DropdownContainer/DropdownContainer.js +23 -8
  53. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  54. package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  55. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js +9 -0
  56. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js.map +1 -0
  57. package/cjs/internal/Menu/Menu.d.ts +2 -0
  58. package/cjs/internal/Menu/Menu.js +33 -3
  59. package/cjs/internal/Menu/Menu.js.map +1 -1
  60. package/cjs/internal/Menu/Menu.styles.d.ts +3 -0
  61. package/cjs/internal/Menu/Menu.styles.js +23 -3
  62. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  63. package/cjs/internal/Popup/Popup.js +3 -1
  64. package/cjs/internal/Popup/Popup.js.map +1 -1
  65. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +29 -29
  66. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  67. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  68. package/cjs/internal/ThemeShowcase/VariablesCollector.js +14 -9
  69. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  70. package/cjs/internal/icons/SpinnerIcon.js +2 -2
  71. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  72. package/cjs/internal/themes/DefaultTheme.d.ts +3 -1
  73. package/cjs/internal/themes/DefaultTheme.js +3 -1
  74. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  75. package/components/Button/Button/Button.js +1 -2
  76. package/components/Button/Button/Button.js.map +1 -1
  77. package/components/DatePicker/DatePicker/DatePicker.js +19 -15
  78. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  79. package/components/DatePicker/DatePicker.d.ts +0 -3
  80. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  81. package/components/GlobalLoader/GlobalLoader.d.ts +1 -1
  82. package/components/GlobalLoader/GlobalLoader.md +13 -3
  83. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +8 -3
  84. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  85. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +19 -10
  86. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  87. package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
  88. package/components/GlobalLoader/useParams/useParams.js +5 -1
  89. package/components/GlobalLoader/useParams/useParams.js.map +1 -1
  90. package/components/GlobalLoader/useParams.d.ts +1 -0
  91. package/components/Modal/Modal/Modal.js +1 -1
  92. package/components/Modal/Modal/Modal.js.map +1 -1
  93. package/components/Modal/ModalFooter/ModalFooter.js +1 -1
  94. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  95. package/components/Modal/ModalHeader/ModalHeader.js +1 -1
  96. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  97. package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
  98. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  99. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +2 -1
  100. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  101. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
  102. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  103. package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  104. package/components/Select/Select/Select.js +5 -2
  105. package/components/Select/Select/Select.js.map +1 -1
  106. package/components/SidePage/SidePage/SidePage.js +37 -11
  107. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  108. package/components/SidePage/SidePage.d.ts +5 -1
  109. package/components/SidePage/SidePage.styles/SidePage.styles.js +2 -2
  110. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  111. package/components/SidePage/SidePageContext/SidePageContext.js +3 -0
  112. package/components/SidePage/SidePageContext/SidePageContext.js.map +1 -1
  113. package/components/SidePage/SidePageContext.d.ts +2 -0
  114. package/components/SidePage/SidePageHeader/SidePageHeader.js +26 -13
  115. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  116. package/components/SidePage/SidePageHeader.d.ts +3 -0
  117. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  118. package/components/Sticky/Sticky.d.ts +6 -1
  119. package/components/Textarea/TextareaCounter/TextareaCounter.js +4 -6
  120. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  121. package/components/Toast/Toast.styles/Toast.styles.js +2 -2
  122. package/components/Toast/Toast.styles/Toast.styles.js.map +1 -1
  123. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +27 -23
  124. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  125. package/internal/DropdownContainer/DropdownContainer.d.ts +2 -1
  126. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js +10 -0
  127. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js.map +1 -0
  128. package/internal/DropdownContainer/DropdownContainer.styles/package.json +6 -0
  129. package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  130. package/internal/Menu/Menu/Menu.js +30 -6
  131. package/internal/Menu/Menu/Menu.js.map +1 -1
  132. package/internal/Menu/Menu.d.ts +2 -0
  133. package/internal/Menu/Menu.styles/Menu.styles.js +12 -3
  134. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  135. package/internal/Menu/Menu.styles.d.ts +3 -0
  136. package/internal/Popup/Popup/Popup.js +2 -1
  137. package/internal/Popup/Popup/Popup.js.map +1 -1
  138. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  139. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  140. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +18 -10
  141. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  142. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  143. package/internal/icons/SpinnerIcon/SpinnerIcon.js +2 -3
  144. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  145. package/internal/themes/DefaultTheme/DefaultTheme.js +3 -1
  146. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  147. package/internal/themes/DefaultTheme.d.ts +3 -1
  148. package/package.json +8 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePage.tsx"],"names":["TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","stackSubscription","layoutRef","footer","rootRef","React","createRef","updateLayout","update","getSidePageContextProps","requestClose","getWidth","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","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","blockBackground","disableAnimations","isMobile","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","root","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","defaultProps","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 { 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';\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\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 layoutRef: HTMLElement | 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 (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n if (this.footer) {\n this.footer.update();\n }\n };\n\n public static defaultProps = {\n disableAnimations: isTestEnv,\n disableFocusLock: true,\n offset: 0,\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { blockBackground, disableAnimations } = this.props;\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, disableFocusLock, offset } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__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=\"SidePage__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 footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layoutRef) {\n return 'auto';\n }\n return this.layoutRef.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: ReadonlyArray<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 footerRef = (ref: SidePageFooter | null) => {\n this.footer = 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":["TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","stackSubscription","layout","header","footer","rootRef","React","createRef","updateLayout","update","disablePageScroll","e","reachedTop","scrollTop","deltaY","reachedBottom","scrollHeight","offsetHeight","props","blockBackground","preventDefault","getSidePageContextProps","requestClose","getWidth","headerRef","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","ModalStack","isBlocking","setState","stackPosition","handleClickOutside","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","handleKeyDown","disableClose","onClose","ref","layoutRef","componentDidMount","window","addEventListener","current","passive","add","componentWillUnmount","removeEventListener","remove","render","theme","renderMain","disableAnimations","isMobile","renderShadow","getTransitionNames","enter","exit","renderContainer","width","disableFocusLock","offset","styles","root","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","defaultProps","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 { 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';\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\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.rootRef.current?.addEventListener('wheel', this.disablePageScroll, { passive: false });\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n this.rootRef.current?.removeEventListener('wheel', this.disablePageScroll);\n if (this.stackSubscription != null) {\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 = {\n disableAnimations: isTestEnv,\n disableFocusLock: true,\n offset: 0,\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { blockBackground, disableAnimations } = this.props;\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, disableFocusLock, offset } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__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=\"SidePage__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 disablePageScroll = (e: WheelEvent) => {\n const layout = this.layout;\n if (!layout) return;\n const reachedTop = layout.scrollTop <= 0 && e.deltaY < 0;\n const reachedBottom = layout.scrollTop >= layout.scrollHeight - layout.offsetHeight && e.deltaY > 0;\n\n if (!this.props.blockBackground && (reachedTop || reachedBottom)) {\n e.preventDefault();\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: ReadonlyArray<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"]}
@@ -358,7 +358,7 @@ var styles = (0, _Emotion.memoizeStyle)({
358
358
  },
359
359
 
360
360
  transitionActive: function transitionActive() {
361
- return (0, _Emotion.css)(_templateObject43 || (_templateObject43 = (0, _taggedTemplateLiteralLoose2.default)(["\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1;\n transform: translate(0, 0);\n "])));
361
+ return (0, _Emotion.css)(_templateObject43 || (_templateObject43 = (0, _taggedTemplateLiteralLoose2.default)(["\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1 !important;\n transform: translate(0, 0) !important;\n "])));
362
362
 
363
363
 
364
364
 
@@ -372,7 +372,9 @@ var styles = (0, _Emotion.memoizeStyle)({
372
372
  },
373
373
 
374
374
  transitionLeaveActive: function transitionLeaveActive() {
375
- return (0, _Emotion.css)(_templateObject45 || (_templateObject45 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 0.01;\n transition: opacity 0.15s ease-out;\n "])));
375
+ return (0, _Emotion.css)(_templateObject45 || (_templateObject45 = (0, _taggedTemplateLiteralLoose2.default)(["\n opacity: 0.01 !important;\n transform: translateX(-100px) !important;\n\n transition: opacity 0.15s ease-out;\n "])));
376
+
377
+
376
378
 
377
379
 
378
380
 
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePage.styles.ts"],"names":["styles","root","css","mobileRoot","overlay","body","t","modalBodyTextColor","mobileBody","container","sidePagePaddingLeft","sidePagePaddingRight","mobileContainer","mobileSidePagePaddingLeft","mobileSidePagePaddingRight","mobileSidePagePaddingBottom","containerWithoutHeader","sidePagePaddingTop","mobileContainerWithoutHeader","mobileSidePagePaddingTop","containerWithoutFooter","sidePagePaddingBottom","containerWithPanel","focusLock","wrapper","sidePageBgDefault","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","headerWrapper","header","sidePageHeaderFontSize","sidePageHeaderLineHeight","sidePageHeaderPaddingTop","sidePageHeaderPaddingBottom","sidePageHeaderTextColor","mobileHeader","mobileSidePageHeaderFontSize","mobileSidePageHeaderLineHeight","mobileSidePageHeaderPaddingTop","mobileSidePageHeaderPaddingBottom","headerFixed","sidePageHeaderFixedFontSize","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","sidePageFixedHeaderShadow","title","paddingRight","parseInt","sidePageCloseButtonPadding","sidePageCloseButtonLegacyPaddingLeft","sidePageCloseIconSize","mobileTitle","mobileSidePageCloseButtonPadding","titleFixed","background","backgroundGray","sidePageBackingBg","sidePageBackingBgOpacity","shadow","sidePageContainerShadow","close","sidePageCloseButtonColor","sidePageCloseButtonClickArea","sidePageCloseButtonHoverColor","mobileClose","mobileSidePageCloseButtonClickArea","closeFocus","borderColorFocus","wrapperClose","mobileWrapperClose","panel","sidePageFooterPanelBg","sidePageFooterPanelPaddingTop","sidePageFooterPanelPaddingBottom","wrapperCloseFixed","footerWrapper","footer","sidePageFooterTextColor","positionStatic","footerContent","sidePageFooterPaddingTop","sidePageFooterPaddingBottom","mobileFooterContent","mobileSidePageFooterPadding","footerFixed","sidePageFixedFooterShadow","panelFixed","sidePageFixedPanelShadow","transitionLeft","transitionRight","transitionActive","transitionLeave","transitionLeaveActive"],"mappings":"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","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n position: fixed;\n top: 0;\n `;\n },\n\n mobileRoot() {\n return css`\n width: 100%;\n `;\n },\n\n overlay() {\n return css`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n `;\n },\n\n body(t: Theme) {\n return css`\n flex: 1 0 auto;\n z-index: 0;\n color: ${t.modalBodyTextColor};\n `;\n },\n\n mobileBody() {\n return css`\n font-size: 16px;\n line-height: 22px;\n `;\n },\n\n container(t: Theme) {\n return css`\n padding-left: ${t.sidePagePaddingLeft};\n padding-right: ${t.sidePagePaddingRight};\n `;\n },\n\n mobileContainer(t: Theme) {\n return css`\n padding-left: ${t.mobileSidePagePaddingLeft};\n padding-right: ${t.mobileSidePagePaddingRight};\n padding-bottom: ${t.mobileSidePagePaddingBottom};\n `;\n },\n\n containerWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.sidePagePaddingTop};\n `;\n },\n\n mobileContainerWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.mobileSidePagePaddingTop};\n `;\n },\n\n containerWithoutFooter(t: Theme) {\n return css`\n padding-bottom: ${t.sidePagePaddingBottom};\n `;\n },\n\n containerWithPanel(t: Theme) {\n return css`\n padding-bottom: ${t.sidePagePaddingBottom};\n `;\n },\n\n focusLock() {\n return css`\n height: 100%;\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n float: right;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n position: relative;\n white-space: normal;\n align-items: stretch;\n display: flex;\n flex-direction: column;\n `;\n },\n\n wrapperLeft() {\n return css`\n float: left;\n `;\n },\n\n wrapperMarginLeft() {\n return css`\n margin-left: 20px;\n `;\n },\n\n wrapperMarginRight() {\n return css`\n margin-right: 20px;\n `;\n },\n\n headerWrapper() {\n return css`\n flex: 0 0 auto;\n `;\n },\n\n header(t: Theme) {\n return css`\n font-size: ${t.sidePageHeaderFontSize};\n line-height: ${t.sidePageHeaderLineHeight};\n padding: ${t.sidePageHeaderPaddingTop} 0 ${t.sidePageHeaderPaddingBottom};\n width: 100%;\n position: relative;\n color: ${t.sidePageHeaderTextColor};\n `;\n },\n\n mobileHeader(t: Theme) {\n return css`\n font-size: ${t.mobileSidePageHeaderFontSize};\n line-height: ${t.mobileSidePageHeaderLineHeight};\n padding: ${t.mobileSidePageHeaderPaddingTop} 0 ${t.mobileSidePageHeaderPaddingBottom};\n `;\n },\n\n headerFixed(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n font-size: ${t.sidePageHeaderFixedFontSize};\n line-height: ${t.sidePageHeaderFixedLineHeight};\n padding: ${t.sidePageHeaderFixedPaddingY} 0;\n\n &:after {\n bottom: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.sidePageFixedHeaderShadow};\n }\n `;\n },\n\n title(t: Theme) {\n const paddingRight =\n parseInt(t.sidePageCloseButtonPadding) +\n parseInt(t.sidePageCloseButtonLegacyPaddingLeft) +\n parseInt(t.sidePageCloseIconSize);\n return css`\n padding-left: ${t.sidePagePaddingLeft};\n padding-right: ${paddingRight}px;\n `;\n },\n\n mobileTitle(t: Theme) {\n const paddingRight = parseInt(t.mobileSidePageCloseButtonPadding) * 2 + parseInt(t.sidePageCloseIconSize);\n return css`\n padding-left: ${t.mobileSidePagePaddingLeft};\n padding-right: ${paddingRight}px;\n `;\n },\n\n titleFixed() {\n return css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n },\n\n background() {\n return css`\n height: 100%;\n position: absolute;\n width: 100%;\n `;\n },\n\n backgroundGray(t: Theme) {\n return css`\n background: ${t.sidePageBackingBg};\n opacity: ${t.sidePageBackingBgOpacity};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n box-shadow: ${t.sidePageContainerShadow};\n `;\n },\n\n close(t: Theme) {\n return css`\n ${resetButton()};\n cursor: pointer;\n color: ${t.sidePageCloseButtonColor};\n padding: ${t.sidePageCloseButtonClickArea};\n margin: -${t.sidePageCloseButtonClickArea};\n font-size: 0;\n\n &:focus,\n &:hover {\n color: ${t.sidePageCloseButtonHoverColor};\n }\n\n & > svg {\n width: ${t.sidePageCloseIconSize};\n height: ${t.sidePageCloseIconSize};\n box-sizing: content-box;\n }\n `;\n },\n\n mobileClose(t: Theme) {\n return css`\n padding: ${t.mobileSidePageCloseButtonClickArea};\n margin: -${t.mobileSidePageCloseButtonClickArea};\n font-size: 0;\n `;\n },\n\n closeFocus(t: Theme) {\n return css`\n outline: 2px solid ${t.borderColorFocus};\n `;\n },\n\n wrapperClose(t: Theme) {\n return css`\n box-sizing: border-box;\n height: 100%;\n line-height: ${t.sidePageHeaderLineHeight};\n padding: ${t.sidePageHeaderPaddingTop} 0 ${t.sidePageHeaderPaddingBottom};\n position: absolute;\n right: ${t.sidePageCloseButtonPadding};\n top: 0;\n `;\n },\n\n mobileWrapperClose(t: Theme) {\n return css`\n line-height: ${t.mobileSidePageHeaderLineHeight};\n padding: ${t.mobileSidePageHeaderPaddingTop} 0 ${t.mobileSidePageHeaderPaddingBottom};\n right: ${t.mobileSidePageCloseButtonPadding};\n `;\n },\n\n panel(t: Theme) {\n return css`\n background: ${t.sidePageFooterPanelBg};\n padding: ${t.sidePageFooterPanelPaddingTop} ${t.sidePagePaddingRight} ${t.sidePageFooterPanelPaddingBottom}\n ${t.sidePagePaddingLeft};\n `;\n },\n\n wrapperCloseFixed(t: Theme) {\n return css`\n line-height: ${t.sidePageHeaderFixedLineHeight};\n padding: ${t.sidePageHeaderFixedPaddingY} 0;\n `;\n },\n\n footerWrapper() {\n return css`\n flex: 0 0 auto;\n `;\n },\n\n footer(t: Theme) {\n return css`\n bottom: 0;\n position: fixed;\n z-index: 10;\n color: ${t.sidePageFooterTextColor};\n `;\n },\n\n positionStatic() {\n return css`\n position: static;\n `;\n },\n\n footerContent(t: Theme) {\n return css`\n padding: ${t.sidePageFooterPaddingTop} ${t.sidePagePaddingRight} ${t.sidePageFooterPaddingBottom}\n ${t.sidePagePaddingLeft};\n `;\n },\n\n mobileFooterContent(t: Theme) {\n return css`\n display: flex;\n flex-flow: column nowrap;\n padding: ${t.mobileSidePageFooterPadding};\n `;\n },\n\n footerFixed(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n\n &:before {\n top: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.sidePageFixedFooterShadow};\n }\n `;\n },\n\n panelFixed(t: Theme) {\n return css`\n &:before {\n box-shadow: ${t.sidePageFixedPanelShadow};\n }\n `;\n },\n\n transitionLeft() {\n return css`\n transform: translateX(100px);\n `;\n },\n\n transitionRight() {\n return css`\n transform: translateX(-100px);\n `;\n },\n\n transitionActive() {\n return css`\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1;\n transform: translate(0, 0);\n `;\n },\n\n transitionLeave() {\n return css`\n opacity: 1;\n `;\n },\n\n transitionLeaveActive() {\n return css`\n opacity: 0.01;\n transition: opacity 0.15s ease-out;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["SidePage.styles.ts"],"names":["styles","root","css","mobileRoot","overlay","body","t","modalBodyTextColor","mobileBody","container","sidePagePaddingLeft","sidePagePaddingRight","mobileContainer","mobileSidePagePaddingLeft","mobileSidePagePaddingRight","mobileSidePagePaddingBottom","containerWithoutHeader","sidePagePaddingTop","mobileContainerWithoutHeader","mobileSidePagePaddingTop","containerWithoutFooter","sidePagePaddingBottom","containerWithPanel","focusLock","wrapper","sidePageBgDefault","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","headerWrapper","header","sidePageHeaderFontSize","sidePageHeaderLineHeight","sidePageHeaderPaddingTop","sidePageHeaderPaddingBottom","sidePageHeaderTextColor","mobileHeader","mobileSidePageHeaderFontSize","mobileSidePageHeaderLineHeight","mobileSidePageHeaderPaddingTop","mobileSidePageHeaderPaddingBottom","headerFixed","sidePageHeaderFixedFontSize","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","sidePageFixedHeaderShadow","title","paddingRight","parseInt","sidePageCloseButtonPadding","sidePageCloseButtonLegacyPaddingLeft","sidePageCloseIconSize","mobileTitle","mobileSidePageCloseButtonPadding","titleFixed","background","backgroundGray","sidePageBackingBg","sidePageBackingBgOpacity","shadow","sidePageContainerShadow","close","sidePageCloseButtonColor","sidePageCloseButtonClickArea","sidePageCloseButtonHoverColor","mobileClose","mobileSidePageCloseButtonClickArea","closeFocus","borderColorFocus","wrapperClose","mobileWrapperClose","panel","sidePageFooterPanelBg","sidePageFooterPanelPaddingTop","sidePageFooterPanelPaddingBottom","wrapperCloseFixed","footerWrapper","footer","sidePageFooterTextColor","positionStatic","footerContent","sidePageFooterPaddingTop","sidePageFooterPaddingBottom","mobileFooterContent","mobileSidePageFooterPadding","footerFixed","sidePageFixedFooterShadow","panelFixed","sidePageFixedPanelShadow","transitionLeft","transitionRight","transitionActive","transitionLeave","transitionLeaveActive"],"mappings":"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","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n position: fixed;\n top: 0;\n `;\n },\n\n mobileRoot() {\n return css`\n width: 100%;\n `;\n },\n\n overlay() {\n return css`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n `;\n },\n\n body(t: Theme) {\n return css`\n flex: 1 0 auto;\n z-index: 0;\n color: ${t.modalBodyTextColor};\n `;\n },\n\n mobileBody() {\n return css`\n font-size: 16px;\n line-height: 22px;\n `;\n },\n\n container(t: Theme) {\n return css`\n padding-left: ${t.sidePagePaddingLeft};\n padding-right: ${t.sidePagePaddingRight};\n `;\n },\n\n mobileContainer(t: Theme) {\n return css`\n padding-left: ${t.mobileSidePagePaddingLeft};\n padding-right: ${t.mobileSidePagePaddingRight};\n padding-bottom: ${t.mobileSidePagePaddingBottom};\n `;\n },\n\n containerWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.sidePagePaddingTop};\n `;\n },\n\n mobileContainerWithoutHeader(t: Theme) {\n return css`\n padding-top: ${t.mobileSidePagePaddingTop};\n `;\n },\n\n containerWithoutFooter(t: Theme) {\n return css`\n padding-bottom: ${t.sidePagePaddingBottom};\n `;\n },\n\n containerWithPanel(t: Theme) {\n return css`\n padding-bottom: ${t.sidePagePaddingBottom};\n `;\n },\n\n focusLock() {\n return css`\n height: 100%;\n `;\n },\n\n wrapper(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n float: right;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n position: relative;\n white-space: normal;\n align-items: stretch;\n display: flex;\n flex-direction: column;\n `;\n },\n\n wrapperLeft() {\n return css`\n float: left;\n `;\n },\n\n wrapperMarginLeft() {\n return css`\n margin-left: 20px;\n `;\n },\n\n wrapperMarginRight() {\n return css`\n margin-right: 20px;\n `;\n },\n\n headerWrapper() {\n return css`\n flex: 0 0 auto;\n `;\n },\n\n header(t: Theme) {\n return css`\n font-size: ${t.sidePageHeaderFontSize};\n line-height: ${t.sidePageHeaderLineHeight};\n padding: ${t.sidePageHeaderPaddingTop} 0 ${t.sidePageHeaderPaddingBottom};\n width: 100%;\n position: relative;\n color: ${t.sidePageHeaderTextColor};\n `;\n },\n\n mobileHeader(t: Theme) {\n return css`\n font-size: ${t.mobileSidePageHeaderFontSize};\n line-height: ${t.mobileSidePageHeaderLineHeight};\n padding: ${t.mobileSidePageHeaderPaddingTop} 0 ${t.mobileSidePageHeaderPaddingBottom};\n `;\n },\n\n headerFixed(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n font-size: ${t.sidePageHeaderFixedFontSize};\n line-height: ${t.sidePageHeaderFixedLineHeight};\n padding: ${t.sidePageHeaderFixedPaddingY} 0;\n\n &:after {\n bottom: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.sidePageFixedHeaderShadow};\n }\n `;\n },\n\n title(t: Theme) {\n const paddingRight =\n parseInt(t.sidePageCloseButtonPadding) +\n parseInt(t.sidePageCloseButtonLegacyPaddingLeft) +\n parseInt(t.sidePageCloseIconSize);\n return css`\n padding-left: ${t.sidePagePaddingLeft};\n padding-right: ${paddingRight}px;\n `;\n },\n\n mobileTitle(t: Theme) {\n const paddingRight = parseInt(t.mobileSidePageCloseButtonPadding) * 2 + parseInt(t.sidePageCloseIconSize);\n return css`\n padding-left: ${t.mobileSidePagePaddingLeft};\n padding-right: ${paddingRight}px;\n `;\n },\n\n titleFixed() {\n return css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `;\n },\n\n background() {\n return css`\n height: 100%;\n position: absolute;\n width: 100%;\n `;\n },\n\n backgroundGray(t: Theme) {\n return css`\n background: ${t.sidePageBackingBg};\n opacity: ${t.sidePageBackingBgOpacity};\n `;\n },\n\n shadow(t: Theme) {\n return css`\n box-shadow: ${t.sidePageContainerShadow};\n `;\n },\n\n close(t: Theme) {\n return css`\n ${resetButton()};\n cursor: pointer;\n color: ${t.sidePageCloseButtonColor};\n padding: ${t.sidePageCloseButtonClickArea};\n margin: -${t.sidePageCloseButtonClickArea};\n font-size: 0;\n\n &:focus,\n &:hover {\n color: ${t.sidePageCloseButtonHoverColor};\n }\n\n & > svg {\n width: ${t.sidePageCloseIconSize};\n height: ${t.sidePageCloseIconSize};\n box-sizing: content-box;\n }\n `;\n },\n\n mobileClose(t: Theme) {\n return css`\n padding: ${t.mobileSidePageCloseButtonClickArea};\n margin: -${t.mobileSidePageCloseButtonClickArea};\n font-size: 0;\n `;\n },\n\n closeFocus(t: Theme) {\n return css`\n outline: 2px solid ${t.borderColorFocus};\n `;\n },\n\n wrapperClose(t: Theme) {\n return css`\n box-sizing: border-box;\n height: 100%;\n line-height: ${t.sidePageHeaderLineHeight};\n padding: ${t.sidePageHeaderPaddingTop} 0 ${t.sidePageHeaderPaddingBottom};\n position: absolute;\n right: ${t.sidePageCloseButtonPadding};\n top: 0;\n `;\n },\n\n mobileWrapperClose(t: Theme) {\n return css`\n line-height: ${t.mobileSidePageHeaderLineHeight};\n padding: ${t.mobileSidePageHeaderPaddingTop} 0 ${t.mobileSidePageHeaderPaddingBottom};\n right: ${t.mobileSidePageCloseButtonPadding};\n `;\n },\n\n panel(t: Theme) {\n return css`\n background: ${t.sidePageFooterPanelBg};\n padding: ${t.sidePageFooterPanelPaddingTop} ${t.sidePagePaddingRight} ${t.sidePageFooterPanelPaddingBottom}\n ${t.sidePagePaddingLeft};\n `;\n },\n\n wrapperCloseFixed(t: Theme) {\n return css`\n line-height: ${t.sidePageHeaderFixedLineHeight};\n padding: ${t.sidePageHeaderFixedPaddingY} 0;\n `;\n },\n\n footerWrapper() {\n return css`\n flex: 0 0 auto;\n `;\n },\n\n footer(t: Theme) {\n return css`\n bottom: 0;\n position: fixed;\n z-index: 10;\n color: ${t.sidePageFooterTextColor};\n `;\n },\n\n positionStatic() {\n return css`\n position: static;\n `;\n },\n\n footerContent(t: Theme) {\n return css`\n padding: ${t.sidePageFooterPaddingTop} ${t.sidePagePaddingRight} ${t.sidePageFooterPaddingBottom}\n ${t.sidePagePaddingLeft};\n `;\n },\n\n mobileFooterContent(t: Theme) {\n return css`\n display: flex;\n flex-flow: column nowrap;\n padding: ${t.mobileSidePageFooterPadding};\n `;\n },\n\n footerFixed(t: Theme) {\n return css`\n background: ${t.sidePageBgDefault};\n\n &:before {\n top: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ${t.sidePageFixedFooterShadow};\n }\n `;\n },\n\n panelFixed(t: Theme) {\n return css`\n &:before {\n box-shadow: ${t.sidePageFixedPanelShadow};\n }\n `;\n },\n\n transitionLeft() {\n return css`\n transform: translateX(100px);\n `;\n },\n\n transitionRight() {\n return css`\n transform: translateX(-100px);\n `;\n },\n\n transitionActive() {\n return css`\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1 !important;\n transform: translate(0, 0) !important;\n `;\n },\n\n transitionLeave() {\n return css`\n opacity: 1;\n `;\n },\n\n transitionLeaveActive() {\n return css`\n opacity: 0.01 !important;\n transform: translateX(-100px) !important;\n\n transition: opacity 0.15s ease-out;\n `;\n },\n});\n"]}
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  import { SidePageFooter } from './SidePageFooter';
3
+ import { SidePageHeader } from './SidePageHeader';
3
4
  export interface SidePageContextType {
4
5
  requestClose: () => void;
5
6
  getWidth: () => number | string;
6
7
  updateLayout: () => void;
8
+ headerRef: (ref: SidePageHeader | null) => void;
7
9
  footerRef: (ref: SidePageFooter | null) => void;
8
10
  hasHeader?: boolean;
9
11
  hasFooter?: boolean;
@@ -15,10 +15,13 @@
15
15
 
16
16
 
17
17
 
18
+
19
+
18
20
  var SidePageContext = /*#__PURE__*/_react.default.createContext({
19
21
  requestClose: function requestClose() {return undefined;},
20
22
  getWidth: function getWidth() {return 'auto';},
21
23
  updateLayout: function updateLayout() {return undefined;},
24
+ headerRef: function headerRef() {return undefined;},
22
25
  footerRef: function footerRef() {return undefined;} });exports.SidePageContext = SidePageContext;
23
26
 
24
27
 
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePageContext.ts"],"names":["SidePageContext","React","createContext","requestClose","undefined","getWidth","updateLayout","footerRef","displayName"],"mappings":"6JAAA;;;;;;;;;;;;;;;;;AAiBO,IAAMA,eAAe,gBAAGC,eAAMC,aAAN,CAAyC;AACtEC,EAAAA,YAAY,EAAE,gCAAMC,SAAN,EADwD;AAEtEC,EAAAA,QAAQ,EAAE,4BAAM,MAAN,EAF4D;AAGtEC,EAAAA,YAAY,EAAE,gCAAMF,SAAN,EAHwD;AAItEG,EAAAA,SAAS,EAAE,6BAAMH,SAAN,EAJ2D,EAAzC,CAAxB,C;;;AAOPJ,eAAe,CAACQ,WAAhB,GAA8B,iBAA9B","sourcesContent":["import React from 'react';\n\nimport { SidePageFooter } from './SidePageFooter';\n\nexport interface SidePageContextType {\n requestClose: () => void;\n getWidth: () => number | string;\n updateLayout: () => void;\n footerRef: (ref: SidePageFooter | null) => void;\n hasHeader?: boolean;\n hasFooter?: boolean;\n hasPanel?: boolean;\n setHasHeader?: (value?: boolean) => void;\n setHasFooter?: (value?: boolean) => void;\n setHasPanel?: (value?: boolean) => void;\n}\n\nexport const SidePageContext = React.createContext<SidePageContextType>({\n requestClose: () => undefined,\n getWidth: () => 'auto',\n updateLayout: () => undefined,\n footerRef: () => undefined,\n});\n\nSidePageContext.displayName = 'SidePageContext';\n"]}
1
+ {"version":3,"sources":["SidePageContext.ts"],"names":["SidePageContext","React","createContext","requestClose","undefined","getWidth","updateLayout","headerRef","footerRef","displayName"],"mappings":"6JAAA;;;;;;;;;;;;;;;;;;;AAmBO,IAAMA,eAAe,gBAAGC,eAAMC,aAAN,CAAyC;AACtEC,EAAAA,YAAY,EAAE,gCAAMC,SAAN,EADwD;AAEtEC,EAAAA,QAAQ,EAAE,4BAAM,MAAN,EAF4D;AAGtEC,EAAAA,YAAY,EAAE,gCAAMF,SAAN,EAHwD;AAItEG,EAAAA,SAAS,EAAE,6BAAMH,SAAN,EAJ2D;AAKtEI,EAAAA,SAAS,EAAE,6BAAMJ,SAAN,EAL2D,EAAzC,CAAxB,C;;;AAQPJ,eAAe,CAACS,WAAhB,GAA8B,iBAA9B","sourcesContent":["import React from 'react';\n\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\n\nexport interface SidePageContextType {\n requestClose: () => void;\n getWidth: () => number | string;\n updateLayout: () => void;\n headerRef: (ref: SidePageHeader | null) => void;\n footerRef: (ref: SidePageFooter | null) => void;\n hasHeader?: boolean;\n hasFooter?: boolean;\n hasPanel?: boolean;\n setHasHeader?: (value?: boolean) => void;\n setHasFooter?: (value?: boolean) => void;\n setHasPanel?: (value?: boolean) => void;\n}\n\nexport const SidePageContext = React.createContext<SidePageContextType>({\n requestClose: () => undefined,\n getWidth: () => 'auto',\n updateLayout: () => undefined,\n headerRef: () => undefined,\n footerRef: () => undefined,\n});\n\nSidePageContext.displayName = 'SidePageContext';\n"]}
@@ -22,6 +22,7 @@ export declare class SidePageHeader extends React.Component<SidePageHeaderProps,
22
22
  state: SidePageHeaderState;
23
23
  private theme;
24
24
  private wrapper;
25
+ private sticky;
25
26
  private lastRegularHeight;
26
27
  private setRootNode;
27
28
  get regularHeight(): number;
@@ -34,8 +35,10 @@ export declare class SidePageHeader extends React.Component<SidePageHeaderProps,
34
35
  private renderMain;
35
36
  private renderHeader;
36
37
  private renderClose;
38
+ private closeIcon;
37
39
  private updateReadyToFix;
38
40
  private wrapperRef;
41
+ private stickyRef;
39
42
  private handleFocus;
40
43
  private handleBlur;
41
44
  }
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.SidePageHeader = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.SidePageHeader = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
3
  var _Sticky = require("../Sticky");
4
4
  var _CrossIcon = require("../../internal/icons/CrossIcon");
@@ -46,6 +46,7 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
46
46
 
47
47
 
48
48
  wrapper = null;_this.
49
+ sticky = null;_this.
49
50
  lastRegularHeight = 0;_this.
50
51
 
51
52
 
@@ -68,14 +69,17 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
68
69
  componentDidMount = function () {
69
70
  window.addEventListener('scroll', _this.update, true);
70
71
  _this.context.setHasHeader == null ? void 0 : _this.context.setHasHeader();
72
+ _this.context.headerRef((0, _assertThisInitialized2.default)(_this));
71
73
  };_this.
72
74
 
73
75
  componentWillUnmount = function () {
74
76
  window.removeEventListener('scroll', _this.update, true);
75
77
  _this.context.setHasHeader == null ? void 0 : _this.context.setHasHeader(false);
78
+ _this.context.headerRef(null);
76
79
  };_this.
77
80
 
78
- update = function () {
81
+ update = function () {var _this$sticky;
82
+ (_this$sticky = _this.sticky) == null ? void 0 : _this$sticky.reflow();
79
83
  _this.updateReadyToFix();
80
84
  };_this.
81
85
 
@@ -110,6 +114,12 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
110
114
 
111
115
 
112
116
 
117
+
118
+
119
+
120
+
121
+
122
+
113
123
 
114
124
 
115
125
 
@@ -140,46 +150,42 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
140
150
 
141
151
  renderClose = function (fixed) {var _cx3;
142
152
  var stickyOffset = parseInt(_this.theme.sidePageHeaderStickyOffset);
143
-
144
153
  return /*#__PURE__*/(
145
154
  _react.default.createElement("div", {
146
155
  className: (0, _Emotion.cx)(_SidePage.styles.wrapperClose(_this.theme), (_cx3 = {}, _cx3[
147
156
  _SidePage.styles.wrapperCloseFixed(_this.theme)] = fixed, _cx3[
148
- _SidePage.styles.mobileWrapperClose(_this.theme)] = _this.isMobileLayout, _cx3)) }, /*#__PURE__*/
157
+ _SidePage.styles.mobileWrapperClose(_this.theme)] = _this.isMobileLayout, _cx3)) },
149
158
 
150
159
 
151
- _react.default.createElement(_SidePageContext.SidePageContext.Consumer, null,
152
- function (_ref) {var _cx4;var requestClose = _ref.requestClose;
153
- var button = /*#__PURE__*/
154
- _react.default.createElement("button", {
155
- className: (0, _Emotion.cx)(_SidePage.styles.close(_this.theme), (_cx4 = {}, _cx4[
156
- _SidePage.styles.closeFocus(_this.theme)] = _this.state.focusedByTab, _cx4[
157
- _SidePage.styles.mobileClose(_this.theme)] = _this.isMobileLayout, _cx4)),
160
+ _this.isMobileLayout ?
161
+ _this.closeIcon : /*#__PURE__*/
158
162
 
159
- onFocus: _this.handleFocus,
160
- onBlur: _this.handleBlur,
161
- onClick: requestClose,
162
- "data-tid": "SidePage__close",
163
- tabIndex: 0 }, /*#__PURE__*/
163
+ _react.default.createElement(_Sticky.Sticky, { side: "top", offset: stickyOffset },
164
+ _this.closeIcon)));
164
165
 
165
- _react.default.createElement(_CrossIcon.CrossIcon, null));
166
166
 
167
167
 
168
168
 
169
- if (_this.isMobileLayout) {
170
- return button;
171
- }
169
+ };_this.
172
170
 
173
- return /*#__PURE__*/(
174
- _react.default.createElement(_Sticky.Sticky, { side: "top", offset: stickyOffset },
175
- button));
171
+ closeIcon = function () {return /*#__PURE__*/(
172
+ _react.default.createElement(_SidePageContext.SidePageContext.Consumer, null,
173
+ function (_ref) {var _cx4;var requestClose = _ref.requestClose;return /*#__PURE__*/(
174
+ _react.default.createElement("button", {
175
+ className: (0, _Emotion.cx)(_SidePage.styles.close(_this.theme), (_cx4 = {}, _cx4[
176
+ _SidePage.styles.closeFocus(_this.theme)] = _this.state.focusedByTab, _cx4)),
176
177
 
178
+ onFocus: _this.handleFocus,
179
+ onBlur: _this.handleBlur,
180
+ onClick: requestClose,
181
+ "data-tid": "SidePage__close",
182
+ tabIndex: 0 }, /*#__PURE__*/
183
+
184
+ _react.default.createElement(_CrossIcon.CrossIcon, null)));}));};_this.
177
185
 
178
- })));
179
186
 
180
187
 
181
188
 
182
- };_this.
183
189
 
184
190
  updateReadyToFix = function () {
185
191
  if (_this.wrapper) {
@@ -193,6 +199,10 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
193
199
  _this.wrapper = el;
194
200
  };_this.
195
201
 
202
+ stickyRef = function (el) {
203
+ _this.sticky = el;
204
+ };_this.
205
+
196
206
  handleFocus = function () {
197
207
  requestAnimationFrame(function () {
198
208
  if (_keyListener.keyListener.isTabPressed) {
@@ -203,4 +213,4 @@ SidePageHeader = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
203
213
 
204
214
  handleBlur = function () {
205
215
  _this.setState({ focusedByTab: false });
206
- };return _this;}var _proto = SidePageHeader.prototype;_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.getStickyProp = function getStickyProp() {if (typeof this.props.sticky !== 'undefined') {return this.props.sticky;}if (this.isMobileLayout) {return false;}return true;};_proto.renderMain = function renderMain() {var isReadyToFix = this.state.isReadyToFix;var isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;var isStickyMobile = this.isMobileLayout && this.getStickyProp();return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { ref: this.wrapperRef, className: _SidePage.styles.headerWrapper() }, isStickyDesktop || isStickyMobile ? /*#__PURE__*/_react.default.createElement(_Sticky.Sticky, { side: "top" }, this.renderHeader) : this.renderHeader()));};(0, _createClass2.default)(SidePageHeader, [{ key: "regularHeight", get: function get() {var isReadyToFix = this.state.isReadyToFix;if (!this.wrapper) {return 0;}if (!isReadyToFix) {this.lastRegularHeight = this.wrapper.getBoundingClientRect().height;}return this.lastRegularHeight;} }, { key: "fixedHeaderHeight", get: function get() {var theme = this.theme;return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;} }]);return SidePageHeader;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'SidePageHeader', _class2.contextType = _SidePageContext.SidePageContext, _temp)) || _class) || _class;exports.SidePageHeader = SidePageHeader;
216
+ };return _this;}var _proto = SidePageHeader.prototype;_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.getStickyProp = function getStickyProp() {if (typeof this.props.sticky !== 'undefined') {return this.props.sticky;}if (this.isMobileLayout) {return false;}return true;};_proto.renderMain = function renderMain() {var isReadyToFix = this.state.isReadyToFix;var isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;var isStickyMobile = this.isMobileLayout && this.getStickyProp();return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { ref: this.wrapperRef, className: _SidePage.styles.headerWrapper() }, isStickyDesktop || isStickyMobile ? /*#__PURE__*/_react.default.createElement(_Sticky.Sticky, { ref: this.stickyRef, side: "top" }, this.renderHeader) : this.renderHeader()));};(0, _createClass2.default)(SidePageHeader, [{ key: "regularHeight", get: function get() {var isReadyToFix = this.state.isReadyToFix;if (!this.wrapper) {return 0;}if (!isReadyToFix) {this.lastRegularHeight = this.wrapper.getBoundingClientRect().height;}return this.lastRegularHeight;} }, { key: "fixedHeaderHeight", get: function get() {var theme = this.theme;return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;} }]);return SidePageHeader;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'SidePageHeader', _class2.contextType = _SidePageContext.SidePageContext, _temp)) || _class) || _class;exports.SidePageHeader = SidePageHeader;
@@ -1 +1 @@
1
- {"version":3,"sources":["SidePageHeader.tsx"],"names":["SidePageHeader","responsiveLayout","rootNode","context","state","isReadyToFix","focusedByTab","wrapper","lastRegularHeight","componentDidMount","window","addEventListener","update","setHasHeader","componentWillUnmount","removeEventListener","updateReadyToFix","renderHeader","fixed","styles","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleFixed","props","children","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","requestClose","button","close","closeFocus","mobileClose","handleFocus","handleBlur","wrapperScrolledUp","getBoundingClientRect","top","regularHeight","fixedHeaderHeight","setState","wrapperRef","el","requestAnimationFrame","keyListener","isTabPressed","render","renderMain","getStickyProp","sticky","isStickyDesktop","isStickyMobile","setRootNode","headerWrapper","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","React","Component","__KONTUR_REACT_UI__","contextType","SidePageContext"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { isFunction } from '../../lib/utils';\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 { keyListener } from '../../lib/events/keyListener';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './SidePage.styles';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\n\nexport interface SidePageHeaderProps extends CommonProps {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n sticky?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n focusedByTab: boolean;\n}\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isReadyToFix: false,\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private wrapper: HTMLElement | null = null;\n private lastRegularHeight = 0;\n private setRootNode!: TSetRootNode;\n\n public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = this.wrapper.getBoundingClientRect().height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\n\n public componentDidMount = () => {\n window.addEventListener('scroll', this.update, true);\n this.context.setHasHeader?.();\n };\n\n public componentWillUnmount = () => {\n window.removeEventListener('scroll', this.update, true);\n this.context.setHasHeader?.(false);\n };\n\n public update = () => {\n this.updateReadyToFix();\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const { isReadyToFix } = this.state;\n\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div ref={this.wrapperRef} className={styles.headerWrapper()}>\n {isStickyDesktop || isStickyMobile ? <Sticky side=\"top\">{this.renderHeader}</Sticky> : this.renderHeader()}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n return (\n <div\n className={cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={cx(styles.title(this.theme), {\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleFixed()]: fixed,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n <SidePageContext.Consumer>\n {({ requestClose }) => {\n const button = (\n <button\n className={cx(styles.close(this.theme), {\n [styles.closeFocus(this.theme)]: this.state.focusedByTab,\n [styles.mobileClose(this.theme)]: this.isMobileLayout,\n })}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={requestClose}\n data-tid=\"SidePage__close\"\n tabIndex={0}\n >\n <CrossIcon />\n </button>\n );\n\n if (this.isMobileLayout) {\n return button;\n }\n\n return (\n <Sticky side=\"top\" offset={stickyOffset}>\n {button}\n </Sticky>\n );\n }}\n </SidePageContext.Consumer>\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = this.wrapper.getBoundingClientRect().top;\n const isReadyToFix = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToFix !== isReadyToFix ? { ...state, isReadyToFix } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\n };\n\n private handleFocus = () => {\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n}\n"]}
1
+ {"version":3,"sources":["SidePageHeader.tsx"],"names":["SidePageHeader","responsiveLayout","rootNode","context","state","isReadyToFix","focusedByTab","wrapper","sticky","lastRegularHeight","componentDidMount","window","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","reflow","updateReadyToFix","renderHeader","fixed","styles","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleFixed","props","children","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","closeIcon","requestClose","close","closeFocus","handleFocus","handleBlur","wrapperScrolledUp","getBoundingClientRect","top","regularHeight","fixedHeaderHeight","setState","wrapperRef","el","stickyRef","requestAnimationFrame","keyListener","isTabPressed","render","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","setRootNode","headerWrapper","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","React","Component","__KONTUR_REACT_UI__","contextType","SidePageContext"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Sticky } from '../Sticky';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { isFunction } from '../../lib/utils';\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 { keyListener } from '../../lib/events/keyListener';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './SidePage.styles';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\n\nexport interface SidePageHeaderProps extends CommonProps {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n sticky?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n focusedByTab: boolean;\n}\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isReadyToFix: false,\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private wrapper: HTMLElement | null = null;\n private sticky: Sticky | null = null;\n private lastRegularHeight = 0;\n private setRootNode!: TSetRootNode;\n\n public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = this.wrapper.getBoundingClientRect().height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\n\n public componentDidMount = () => {\n window.addEventListener('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n window.removeEventListener('scroll', this.update, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n public update = () => {\n this.sticky?.reflow();\n this.updateReadyToFix();\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const { isReadyToFix } = this.state;\n\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div ref={this.wrapperRef} className={styles.headerWrapper()}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {this.renderHeader}\n </Sticky>\n ) : (\n this.renderHeader()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n return (\n <div\n className={cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={cx(styles.title(this.theme), {\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleFixed()]: fixed,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.isMobileLayout ? (\n this.closeIcon\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n {this.closeIcon}\n </Sticky>\n )}\n </div>\n );\n };\n\n private closeIcon = () => (\n <SidePageContext.Consumer>\n {({ requestClose }) => (\n <button\n className={cx(styles.close(this.theme), {\n [styles.closeFocus(this.theme)]: this.state.focusedByTab,\n })}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={requestClose}\n data-tid=\"SidePage__close\"\n tabIndex={0}\n >\n <CrossIcon />\n </button>\n )}\n </SidePageContext.Consumer>\n );\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = this.wrapper.getBoundingClientRect().top;\n const isReadyToFix = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToFix !== isReadyToFix ? { ...state, isReadyToFix } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n\n private handleFocus = () => {\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n };\n\n private handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n}\n"]}
@@ -50,5 +50,10 @@ export declare class Sticky extends React.Component<StickyProps, StickyState> {
50
50
  render(): JSX.Element;
51
51
  private refWrapper;
52
52
  private refInner;
53
- private reflow;
53
+ /**
54
+ * Пересчитать габариты и позицию залипшего элемента
55
+ *
56
+ * @public
57
+ */
58
+ reflow: () => void;
54
59
  }
@@ -139,6 +139,11 @@ Sticky = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
139
139
 
140
140
  refInner = function (ref) {return _this.inner = ref;};_this.
141
141
 
142
+
143
+
144
+
145
+
146
+
142
147
  reflow = function () {
143
148
  var _document = document,documentElement = _document.documentElement;
144
149
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Sticky.tsx"],"names":["MAX_REFLOW_RETRIES","Sticky","rootNode","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","document","documentElement","Error","windowHeight","window","innerHeight","clientHeight","getBoundingClientRect","top","bottom","left","width","height","props","offset","getStop","side","prevFixed","prevHeight","Math","floor","setState","stop","stopRect","outerHeight","componentDidMount","LayoutEvents","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","emit","render","children","innerStyle","setRootNode","styles","container","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","oneOfType","node","func","number","oneOf","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport shallowEqual from 'shallowequal';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends CommonProps {\n side: 'top' | 'bottom';\n /**\n * Отступ в пикселях от края экрана, на сколько сдвигается элемент в залипшем состоянии\n * @default 0\n */\n offset: number;\n getStop?: () => Nullable<HTMLElement>;\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n}\n\nexport interface StickyState {\n fixed: boolean;\n deltaHeight: number;\n height?: number;\n width?: number;\n left?: number;\n stopped: boolean;\n relativeTop: number;\n}\n\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n\n public static propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Функция, которая возвращает DOM-элемент, который нельзя пересекать.\n */\n getStop: PropTypes.func,\n\n /**\n * Отступ от границы в пикселях\n */\n offset: PropTypes.number,\n\n side: PropTypes.oneOf(['top', 'bottom']).isRequired,\n };\n\n public static defaultProps = { offset: 0 };\n\n public state: StickyState = {\n fixed: false,\n deltaHeight: 0,\n stopped: false,\n relativeTop: 0,\n };\n\n private wrapper: Nullable<HTMLElement>;\n private inner: Nullable<HTMLElement>;\n private layoutSubscription: { remove: Nullable<() => void> } = { remove: null };\n private reflowCounter = 0;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow);\n }\n\n public componentWillUnmount() {\n if (this.layoutSubscription.remove) {\n this.layoutSubscription.remove();\n }\n }\n\n public componentDidUpdate(prevProps: StickyProps, prevState: StickyState) {\n if (!shallowEqual(prevProps, this.props) || !shallowEqual(prevState, this.state)) {\n if (this.reflowCounter < MAX_REFLOW_RETRIES) {\n LayoutEvents.emit();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n let { children } = this.props;\n const { side, offset } = this.props;\n const { fixed, stopped, relativeTop, deltaHeight, width, height, left } = this.state;\n const innerStyle: React.CSSProperties = {};\n\n if (fixed) {\n if (stopped) {\n innerStyle.top = relativeTop;\n innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;\n } else {\n innerStyle.width = width;\n innerStyle[side] = offset;\n innerStyle.left = left;\n }\n }\n\n if (isFunction(children)) {\n children = children(fixed);\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div ref={this.refWrapper} className={styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={cx(styles.inner(), {\n [styles.fixed()]: fixed && !stopped,\n [styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={styles.container()}>{children}</div>\n </ZIndex>\n {fixed && !stopped ? <div style={{ width, height }} /> : null}\n </div>\n </CommonWrapper>\n );\n }\n\n private refWrapper = (ref: Nullable<HTMLElement>) => (this.wrapper = ref);\n\n private refInner = (ref: Nullable<HTMLElement>) => (this.inner = ref);\n\n private reflow = () => {\n const { documentElement } = document;\n\n if (!documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = window.innerHeight || documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left } = this.wrapper.getBoundingClientRect();\n const { width, height } = this.inner.getBoundingClientRect();\n const { offset, getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const fixed = side === 'top' ? top < offset : Math.floor(bottom) > windowHeight - offset;\n\n this.setState({ fixed, left });\n\n if (fixed && !prevFixed) {\n this.setState({ width, height });\n }\n\n if (fixed) {\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = stop.getBoundingClientRect();\n const outerHeight = height + offset;\n let stopped = false;\n let relativeTop = 0;\n\n if (side === 'top') {\n stopped = stopRect.top - outerHeight < 0;\n relativeTop = stopRect.top - prevHeight - top;\n } else {\n stopped = stopRect.bottom + outerHeight > windowHeight;\n relativeTop = stopRect.bottom - top;\n }\n\n this.setState({ relativeTop, deltaHeight, stopped });\n }\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Sticky.tsx"],"names":["MAX_REFLOW_RETRIES","Sticky","rootNode","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","document","documentElement","Error","windowHeight","window","innerHeight","clientHeight","getBoundingClientRect","top","bottom","left","width","height","props","offset","getStop","side","prevFixed","prevHeight","Math","floor","setState","stop","stopRect","outerHeight","componentDidMount","LayoutEvents","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","emit","render","children","innerStyle","setRootNode","styles","container","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","oneOfType","node","func","number","oneOf","isRequired","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport shallowEqual from 'shallowequal';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends CommonProps {\n side: 'top' | 'bottom';\n /**\n * Отступ в пикселях от края экрана, на сколько сдвигается элемент в залипшем состоянии\n * @default 0\n */\n offset: number;\n getStop?: () => Nullable<HTMLElement>;\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n}\n\nexport interface StickyState {\n fixed: boolean;\n deltaHeight: number;\n height?: number;\n width?: number;\n left?: number;\n stopped: boolean;\n relativeTop: number;\n}\n\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n\n public static propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Функция, которая возвращает DOM-элемент, который нельзя пересекать.\n */\n getStop: PropTypes.func,\n\n /**\n * Отступ от границы в пикселях\n */\n offset: PropTypes.number,\n\n side: PropTypes.oneOf(['top', 'bottom']).isRequired,\n };\n\n public static defaultProps = { offset: 0 };\n\n public state: StickyState = {\n fixed: false,\n deltaHeight: 0,\n stopped: false,\n relativeTop: 0,\n };\n\n private wrapper: Nullable<HTMLElement>;\n private inner: Nullable<HTMLElement>;\n private layoutSubscription: { remove: Nullable<() => void> } = { remove: null };\n private reflowCounter = 0;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow);\n }\n\n public componentWillUnmount() {\n if (this.layoutSubscription.remove) {\n this.layoutSubscription.remove();\n }\n }\n\n public componentDidUpdate(prevProps: StickyProps, prevState: StickyState) {\n if (!shallowEqual(prevProps, this.props) || !shallowEqual(prevState, this.state)) {\n if (this.reflowCounter < MAX_REFLOW_RETRIES) {\n LayoutEvents.emit();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n let { children } = this.props;\n const { side, offset } = this.props;\n const { fixed, stopped, relativeTop, deltaHeight, width, height, left } = this.state;\n const innerStyle: React.CSSProperties = {};\n\n if (fixed) {\n if (stopped) {\n innerStyle.top = relativeTop;\n innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;\n } else {\n innerStyle.width = width;\n innerStyle[side] = offset;\n innerStyle.left = left;\n }\n }\n\n if (isFunction(children)) {\n children = children(fixed);\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div ref={this.refWrapper} className={styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={cx(styles.inner(), {\n [styles.fixed()]: fixed && !stopped,\n [styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={styles.container()}>{children}</div>\n </ZIndex>\n {fixed && !stopped ? <div style={{ width, height }} /> : null}\n </div>\n </CommonWrapper>\n );\n }\n\n private refWrapper = (ref: Nullable<HTMLElement>) => (this.wrapper = ref);\n\n private refInner = (ref: Nullable<HTMLElement>) => (this.inner = ref);\n\n /**\n * Пересчитать габариты и позицию залипшего элемента\n *\n * @public\n */\n public reflow = () => {\n const { documentElement } = document;\n\n if (!documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = window.innerHeight || documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left } = this.wrapper.getBoundingClientRect();\n const { width, height } = this.inner.getBoundingClientRect();\n const { offset, getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const fixed = side === 'top' ? top < offset : Math.floor(bottom) > windowHeight - offset;\n\n this.setState({ fixed, left });\n\n if (fixed && !prevFixed) {\n this.setState({ width, height });\n }\n\n if (fixed) {\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = stop.getBoundingClientRect();\n const outerHeight = height + offset;\n let stopped = false;\n let relativeTop = 0;\n\n if (side === 'top') {\n stopped = stopRect.top - outerHeight < 0;\n relativeTop = stopRect.top - prevHeight - top;\n } else {\n stopped = stopRect.bottom + outerHeight > windowHeight;\n relativeTop = stopRect.bottom - top;\n }\n\n this.setState({ relativeTop, deltaHeight, stopped });\n }\n }\n };\n}\n"]}
@@ -30,13 +30,12 @@ ref)
30
30
  var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
31
31
  var _useState = (0, _react.useState)(textarea.clientWidth),width = _useState[0],setWidth = _useState[1];
32
32
  var _useState2 = (0, _react.useState)(textarea.clientHeight),height = _useState2[0],setHeight = _useState2[1];
33
- var reflow = function reflow() {
33
+ var reflow = (0, _react.useCallback)(function () {
34
34
  var clientWidth = textarea.clientWidth,clientHeight = textarea.clientHeight;
35
35
  setWidth(clientWidth);
36
36
  setHeight(clientHeight);
37
- };
38
- (0, _react.useEffect)(reflow, [textarea]);
39
- (0, _react.useImperativeHandle)(ref, function () {return { reflow: reflow };}, [ref]);
37
+ }, [textarea]);
38
+ (0, _react.useImperativeHandle)(ref, function () {return { reflow: reflow };}, [reflow]);
40
39
  var renderTooltipContent = (0, _react.useCallback)(function () {return help;}, [help]);
41
40
  var textareaValue = value ? value.toString().length : 0;
42
41
  var counterValue = length - textareaValue;
@@ -1 +1 @@
1
- {"version":3,"sources":["TextareaCounter.tsx"],"names":["handleHelpMouseDown","e","preventDefault","TextareaCounter","React","forwardRef","ref","length","value","help","onCloseHelp","textarea","theme","ThemeContext","clientWidth","width","setWidth","clientHeight","height","setHeight","reflow","renderTooltipContent","textareaValue","toString","counterValue","counterHelp","textareaCounterHelpIconColor","styles","counterContainer","counter","counterError"],"mappings":"wEAAA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,6C;;;;;;;;;;;;;;AAcA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,CAAD,UAAuBA,CAAC,CAACC,cAAF,EAAvB,EAA5B;;AAEO,IAAMC,eAAe,gBAAGC,eAAMC,UAAN,CAA2D,SAASF,eAAT;;AAExFG,GAFwF;AAGxF,aAFEC,MAEF,QAFEA,MAEF,CAFUC,KAEV,QAFUA,KAEV,CAFiBC,IAEjB,QAFiBA,IAEjB,CAFuBC,WAEvB,QAFuBA,WAEvB,CAFoCC,QAEpC,QAFoCA,QAEpC;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,kBAA0B,qBAASF,QAAQ,CAACG,WAAlB,CAA1B,CAAOC,KAAP,gBAAcC,QAAd;AACA,mBAA4B,qBAASL,QAAQ,CAACM,YAAlB,CAA5B,CAAOC,MAAP,iBAAeC,SAAf;AACA,MAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACnB,QAAQN,WAAR,GAAsCH,QAAtC,CAAQG,WAAR,CAAqBG,YAArB,GAAsCN,QAAtC,CAAqBM,YAArB;AACAD,IAAAA,QAAQ,CAACF,WAAD,CAAR;AACAK,IAAAA,SAAS,CAACF,YAAD,CAAT;AACD,GAJD;AAKA,wBAAUG,MAAV,EAAkB,CAACT,QAAD,CAAlB;AACA,kCAAoBL,GAApB,EAAyB,oBAAO,EAAEc,MAAM,EAANA,MAAF,EAAP,EAAzB,EAA6C,CAACd,GAAD,CAA7C;AACA,MAAMe,oBAAoB,GAAG,wBAAY,oBAAMZ,IAAN,EAAZ,EAAwB,CAACA,IAAD,CAAxB,CAA7B;AACA,MAAMa,aAAa,GAAGd,KAAK,GAAGA,KAAK,CAACe,QAAN,GAAiBhB,MAApB,GAA6B,CAAxD;AACA,MAAMiB,YAAY,GAAGjB,MAAM,GAAGe,aAA9B;AACA,MAAMG,WAAW,GAAG,uBAAWhB,IAAX;AAClBA,EAAAA,IAAI,EADc;;AAGlB,+BAAC,gBAAD,IAAS,GAAG,EAAE,cAAd,EAA8B,OAAO,EAAE,OAAvC,EAAgD,MAAM,EAAEY,oBAAxD,EAA8E,YAAY,EAAEX,WAA5F;AACE,+BAAC,eAAD,IAAa,WAAW,EAAEV,mBAA1B,EAA+C,KAAK,EAAEY,KAAK,CAACc,4BAA5D,GADF,CAHF;;;;AAQA;AACE,0CAAK,SAAS,EAAEC,iBAAOC,gBAAP,CAAwBhB,KAAxB,CAAhB,EAAgD,KAAK,EAAE,EAAEG,KAAK,EAALA,KAAF,EAASG,MAAM,EAANA,MAAT,EAAvD;AACE;AACE,MAAA,SAAS,EAAE,iBAAGS,iBAAOE,OAAP,CAAejB,KAAf,CAAH;AACRe,uBAAOG,YAAP,CAAoBlB,KAApB,CADQ,IACqBY,YAAY,GAAG,CADpC,OADb;;;AAKGA,IAAAA,YALH;AAMGf,IAAAA,IAAI,iBAAI,uCAAM,SAAS,EAAEkB,iBAAOF,WAAP,EAAjB,IAAwCA,WAAxC,CANX,CADF,CADF;;;;AAYD,CArC8B,CAAxB,C","sourcesContent":["import React, { SyntheticEvent, useEffect, useContext, useCallback, useImperativeHandle, useState } from 'react';\n\nimport { HelpDotIcon } from '../../internal/icons/16px';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isFunction } from '../../lib/utils';\nimport { Tooltip } from '../Tooltip';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { TextareaProps } from './Textarea';\nimport { styles } from './Textarea.styles';\n\nexport type TextareaCounterProps = {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n};\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const TextareaCounter = React.forwardRef<TextareaCounterRef, TextareaCounterProps>(function TextareaCounter(\n { length, value, help, onCloseHelp, textarea },\n ref,\n) {\n const theme = useContext(ThemeContext);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = () => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n };\n useEffect(reflow, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [ref]);\n const renderTooltipContent = useCallback(() => help, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n <HelpDotIcon onMouseDown={handleHelpMouseDown} color={theme.textareaCounterHelpIconColor} />\n </Tooltip>\n );\n\n return (\n <div className={styles.counterContainer(theme)} style={{ width, height }}>\n <span\n className={cx(styles.counter(theme), {\n [styles.counterError(theme)]: counterValue < 0,\n })}\n >\n {counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n});\n"]}
1
+ {"version":3,"sources":["TextareaCounter.tsx"],"names":["handleHelpMouseDown","e","preventDefault","TextareaCounter","React","forwardRef","ref","length","value","help","onCloseHelp","textarea","theme","ThemeContext","clientWidth","width","setWidth","clientHeight","height","setHeight","reflow","renderTooltipContent","textareaValue","toString","counterValue","counterHelp","textareaCounterHelpIconColor","styles","counterContainer","counter","counterError"],"mappings":"wEAAA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,6C;;;;;;;;;;;;;;AAcA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,CAAD,UAAuBA,CAAC,CAACC,cAAF,EAAvB,EAA5B;;AAEO,IAAMC,eAAe,gBAAGC,eAAMC,UAAN,CAA2D,SAASF,eAAT;;AAExFG,GAFwF;AAGxF,aAFEC,MAEF,QAFEA,MAEF,CAFUC,KAEV,QAFUA,KAEV,CAFiBC,IAEjB,QAFiBA,IAEjB,CAFuBC,WAEvB,QAFuBA,WAEvB,CAFoCC,QAEpC,QAFoCA,QAEpC;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,kBAA0B,qBAASF,QAAQ,CAACG,WAAlB,CAA1B,CAAOC,KAAP,gBAAcC,QAAd;AACA,mBAA4B,qBAASL,QAAQ,CAACM,YAAlB,CAA5B,CAAOC,MAAP,iBAAeC,SAAf;AACA,MAAMC,MAAM,GAAG,wBAAY,YAAM;AAC/B,QAAQN,WAAR,GAAsCH,QAAtC,CAAQG,WAAR,CAAqBG,YAArB,GAAsCN,QAAtC,CAAqBM,YAArB;AACAD,IAAAA,QAAQ,CAACF,WAAD,CAAR;AACAK,IAAAA,SAAS,CAACF,YAAD,CAAT;AACD,GAJc,EAIZ,CAACN,QAAD,CAJY,CAAf;AAKA,kCAAoBL,GAApB,EAAyB,oBAAO,EAAEc,MAAM,EAANA,MAAF,EAAP,EAAzB,EAA6C,CAACA,MAAD,CAA7C;AACA,MAAMC,oBAAoB,GAAG,wBAAY,oBAAMZ,IAAN,EAAZ,EAAwB,CAACA,IAAD,CAAxB,CAA7B;AACA,MAAMa,aAAa,GAAGd,KAAK,GAAGA,KAAK,CAACe,QAAN,GAAiBhB,MAApB,GAA6B,CAAxD;AACA,MAAMiB,YAAY,GAAGjB,MAAM,GAAGe,aAA9B;AACA,MAAMG,WAAW,GAAG,uBAAWhB,IAAX;AAClBA,EAAAA,IAAI,EADc;;AAGlB,+BAAC,gBAAD,IAAS,GAAG,EAAE,cAAd,EAA8B,OAAO,EAAE,OAAvC,EAAgD,MAAM,EAAEY,oBAAxD,EAA8E,YAAY,EAAEX,WAA5F;AACE,+BAAC,eAAD,IAAa,WAAW,EAAEV,mBAA1B,EAA+C,KAAK,EAAEY,KAAK,CAACc,4BAA5D,GADF,CAHF;;;;AAQA;AACE,0CAAK,SAAS,EAAEC,iBAAOC,gBAAP,CAAwBhB,KAAxB,CAAhB,EAAgD,KAAK,EAAE,EAAEG,KAAK,EAALA,KAAF,EAASG,MAAM,EAANA,MAAT,EAAvD;AACE;AACE,MAAA,SAAS,EAAE,iBAAGS,iBAAOE,OAAP,CAAejB,KAAf,CAAH;AACRe,uBAAOG,YAAP,CAAoBlB,KAApB,CADQ,IACqBY,YAAY,GAAG,CADpC,OADb;;;AAKGA,IAAAA,YALH;AAMGf,IAAAA,IAAI,iBAAI,uCAAM,SAAS,EAAEkB,iBAAOF,WAAP,EAAjB,IAAwCA,WAAxC,CANX,CADF,CADF;;;;AAYD,CApC8B,CAAxB,C","sourcesContent":["import React, { SyntheticEvent, useContext, useCallback, useImperativeHandle, useState } from 'react';\n\nimport { HelpDotIcon } from '../../internal/icons/16px';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isFunction } from '../../lib/utils';\nimport { Tooltip } from '../Tooltip';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { TextareaProps } from './Textarea';\nimport { styles } from './Textarea.styles';\n\nexport type TextareaCounterProps = {\n value: TextareaProps['value'];\n length: number;\n help: TextareaProps['counterHelp'];\n onCloseHelp: () => void;\n textarea: HTMLTextAreaElement;\n};\n\nexport interface TextareaCounterRef {\n reflow: () => void;\n}\n\nconst handleHelpMouseDown = (e: SyntheticEvent) => e.preventDefault();\n\nexport const TextareaCounter = React.forwardRef<TextareaCounterRef, TextareaCounterProps>(function TextareaCounter(\n { length, value, help, onCloseHelp, textarea },\n ref,\n) {\n const theme = useContext(ThemeContext);\n const [width, setWidth] = useState(textarea.clientWidth);\n const [height, setHeight] = useState(textarea.clientHeight);\n const reflow = useCallback(() => {\n const { clientWidth, clientHeight } = textarea;\n setWidth(clientWidth);\n setHeight(clientHeight);\n }, [textarea]);\n useImperativeHandle(ref, () => ({ reflow }), [reflow]);\n const renderTooltipContent = useCallback(() => help, [help]);\n const textareaValue = value ? value.toString().length : 0;\n const counterValue = length - textareaValue;\n const counterHelp = isFunction(help) ? (\n help()\n ) : (\n <Tooltip pos={'right bottom'} trigger={'click'} render={renderTooltipContent} onCloseClick={onCloseHelp}>\n <HelpDotIcon onMouseDown={handleHelpMouseDown} color={theme.textareaCounterHelpIconColor} />\n </Tooltip>\n );\n\n return (\n <div className={styles.counterContainer(theme)} style={{ width, height }}>\n <span\n className={cx(styles.counter(theme), {\n [styles.counterError(theme)]: counterValue < 0,\n })}\n >\n {counterValue}\n {help && <span className={styles.counterHelp()}>{counterHelp}</span>}\n </span>\n </div>\n );\n});\n"]}