@skbkontur/react-ui 5.1.5 → 5.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/components/DateInput/DateInput.js +12 -9
  3. package/cjs/components/DateInput/DateInput.js.map +1 -1
  4. package/cjs/components/SidePage/SidePage.js +1 -1
  5. package/cjs/components/SidePage/SidePage.js.map +1 -1
  6. package/cjs/components/SidePage/SidePageHeader.js +4 -1
  7. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  8. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  9. package/cjs/components/Sticky/Sticky.js +15 -1
  10. package/cjs/components/Sticky/Sticky.js.map +1 -1
  11. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  12. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  13. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  14. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  15. package/components/DateInput/DateInput/DateInput.js +12 -9
  16. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  17. package/components/SidePage/SidePage/SidePage.js +1 -1
  18. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  19. package/components/SidePage/SidePageHeader/SidePageHeader.js +6 -1
  20. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  21. package/components/Sticky/Sticky/Sticky.js +9 -1
  22. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  23. package/components/Sticky/Sticky.d.ts +3 -0
  24. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  25. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  26. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  27. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  28. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","Sticky","isFunction","ThemeContext","CommonWrapper","cx","responsiveLayout","rootNode","getDOMRect","ModalSeparator","isThemeGTE","styles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isReadyToFix","wrapper","sticky","lastRegularHeight","componentDidMount","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","_this$sticky","reflow","updateReadyToFix","renderHeader","fixed","_cx","_cx2","isDisplayed","props","hasSeparator","createElement","className","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","title5_1","mobileTitle","titleFixed","children","_cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","versionGTE5_1","wrapperClose","wrapperClose5_1","wrapperCloseFixed","wrapperCloseFixed5_1","mobileWrapperClose","mobileWrapperClose5_1","isHeaderFixed","isMobile","side","offset","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","setState","_extends","wrapperRef","el","stickyRef","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","rootNodeRef","setRootNode","ref","headerWrapper","_createClass","key","get","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\n\nimport { styles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n /** Закрепляет хедер сверху сайдпейджа. */\n sticky?: boolean;\n\n /** Определяет, нужно ли показывать ModalSeparator. */\n hasSeparator?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\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 public static displayName = '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 };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: 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 public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = getDOMRect(this.wrapper).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 globalObject.addEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n globalObject.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 const header = this.renderHeader;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SidePageHeaderDataTids.root} ref={this.wrapperRef} className={styles.headerWrapper()}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\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.title5_1(this.theme)]: isThemeGTE(this.theme, '5.1'),\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 {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n const versionGTE5_1 = isThemeGTE(this.theme, '5.1');\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperClose5_1(this.theme)]: versionGTE5_1,\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.wrapperCloseFixed5_1(this.theme)]: fixed && versionGTE5_1,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n [styles.mobileWrapperClose5_1(this.theme)]: this.isMobileLayout && versionGTE5_1,\n })}\n >\n {this.isMobileLayout ? (\n <SidePageCloseButton isHeaderFixed={fixed} isMobile />\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n <SidePageCloseButton isHeaderFixed={fixed} />\n </Sticky>\n )}\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","globalObject","Sticky","isFunction","ThemeContext","CommonWrapper","cx","responsiveLayout","rootNode","getDOMRect","ModalSeparator","isThemeGTE","ReactUIFeatureFlagsContext","styles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isReadyToFix","wrapper","sticky","lastRegularHeight","componentDidMount","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","_this$sticky","reflow","updateReadyToFix","renderHeader","fixed","_cx","_cx2","isDisplayed","props","hasSeparator","createElement","className","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","title5_1","mobileTitle","titleFixed","children","_cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","versionGTE5_1","wrapperClose","wrapperClose5_1","wrapperCloseFixed","wrapperCloseFixed5_1","mobileWrapperClose","mobileWrapperClose5_1","isHeaderFixed","isMobile","side","offset","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","setState","_extends","wrapperRef","el","stickyRef","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","rootNodeRef","setRootNode","ref","headerWrapper","Provider","value","stickyReduceLayoutEvents","_createClass","key","get","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n /** Закрепляет хедер сверху сайдпейджа. */\n sticky?: boolean;\n\n /** Определяет, нужно ли показывать ModalSeparator. */\n hasSeparator?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isReadyToFix: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\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 public static displayName = '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 };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: 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 public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = getDOMRect(this.wrapper).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 globalObject.addEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n globalObject.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 const header = this.renderHeader;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SidePageHeaderDataTids.root} ref={this.wrapperRef} className={styles.headerWrapper()}>\n <ReactUIFeatureFlagsContext.Provider value={{ stickyReduceLayoutEvents: true }}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </ReactUIFeatureFlagsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\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.title5_1(this.theme)]: isThemeGTE(this.theme, '5.1'),\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 {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n const versionGTE5_1 = isThemeGTE(this.theme, '5.1');\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperClose5_1(this.theme)]: versionGTE5_1,\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.wrapperCloseFixed5_1(this.theme)]: fixed && versionGTE5_1,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n [styles.mobileWrapperClose5_1(this.theme)]: this.isMobileLayout && versionGTE5_1,\n })}\n >\n {this.isMobileLayout ? (\n <SidePageCloseButton isHeaderFixed={fixed} isMobile />\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n <SidePageCloseButton isHeaderFixed={fixed} />\n </Sticky>\n )}\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).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"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@ import { cx } from "../../../lib/theming/Emotion";
13
13
  import { rootNode } from "../../../lib/rootNode";
14
14
  import { getDOMRect } from "../../../lib/dom/getDOMRect";
15
15
  import { createPropsGetter } from "../../../lib/createPropsGetter";
16
+ import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
16
17
  import { styles } from "../Sticky.styles";
17
18
  var MAX_REFLOW_RETRIES = 5;
18
19
  export var StickyDataTids = {
@@ -130,7 +131,7 @@ export var Sticky = rootNode(_class = (_Sticky = /*#__PURE__*/function (_React$C
130
131
  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
131
132
  if (!shallowEqual(prevProps, this.props) || !shallowEqual(prevState, this.state)) {
132
133
  if (this.reflowCounter < MAX_REFLOW_RETRIES) {
133
- LayoutEvents.emit();
134
+ this.featureFlags.stickyReduceLayoutEvents ? this.reflow() : LayoutEvents.emit();
134
135
  this.reflowCounter += 1;
135
136
  return;
136
137
  }
@@ -138,6 +139,13 @@ export var Sticky = rootNode(_class = (_Sticky = /*#__PURE__*/function (_React$C
138
139
  this.reflowCounter = 0;
139
140
  };
140
141
  _proto.render = function render() {
142
+ var _this2 = this;
143
+ return /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Consumer, null, function (flags) {
144
+ _this2.featureFlags = getFullReactUIFlagsContext(flags);
145
+ return _this2.renderMain();
146
+ });
147
+ };
148
+ _proto.renderMain = function renderMain() {
141
149
  var _cx;
142
150
  var children = this.props.children;
143
151
  var side = this.props.side;
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","shallowEqual","globalObject","LayoutEvents","isFunction","ZIndex","CommonWrapper","cx","rootNode","getDOMRect","createPropsGetter","styles","MAX_REFLOW_RETRIES","StickyDataTids","root","Sticky","_class","_Sticky","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_globalObject$documen","document","documentElement","Error","windowHeight","innerHeight","clientHeight","_getDOMRect","top","bottom","left","width","_getDOMRect2","height","_this$props","props","getStop","side","_this$state","prevFixed","_this$state$height","prevHeight","offset","Math","floor","setState","stop","stopRect","outerHeight","_inheritsLoose","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","emit","render","_cx","children","_this$state2","innerStyle","createElement","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName","propTypes","oneOfType","node","func","number","oneOf","isRequired"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport shallowEqual from 'shallowequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends Omit<CommonProps, 'children'> {\n /** Задает сторону залипания. */\n side: 'top' | 'bottom';\n\n /** Задает отступ от края экрана в пикселях, на который сдвигается элемент в залипшем состоянии.\n * @default 0 */\n offset?: number;\n\n /** Задает функцию, которая возвращает DOM-элемент, который нельзя пересекать. */\n getStop?: () => Nullable<HTMLElement>;\n\n /** @ignore */\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\nexport const StickyDataTids = {\n root: 'Sticky__root',\n} as const;\n\ntype DefaultProps = Required<Pick<StickyProps, 'offset'>>;\n\n/**\n * `Sticky` позволяет закреплять элемент интерфейса в определенной позиции на экране при прокрутке страницы.\n * Это полезно для создания \"прилипающих\" элементов, которые остаются видимыми при прокрутке содержимого.\n */\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n public static displayName = '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: DefaultProps = { offset: 0 };\n\n private getProps = createPropsGetter(Sticky.defaultProps);\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 } = this.props;\n const offset = this.getProps().offset;\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 data-tid={StickyDataTids.root} 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 if (!globalObject.document?.documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = globalObject.innerHeight || globalObject.document.documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left, width } = getDOMRect(this.wrapper);\n const { height } = getDOMRect(this.inner);\n const { getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const offset = this.getProps().offset;\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 this.setState({ width });\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = getDOMRect(stop);\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","PropTypes","shallowEqual","globalObject","LayoutEvents","isFunction","ZIndex","CommonWrapper","cx","rootNode","getDOMRect","createPropsGetter","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","MAX_REFLOW_RETRIES","StickyDataTids","root","Sticky","_class","_Sticky","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_globalObject$documen","document","documentElement","Error","windowHeight","innerHeight","clientHeight","_getDOMRect","top","bottom","left","width","_getDOMRect2","height","_this$props","props","getStop","side","_this$state","prevFixed","_this$state$height","prevHeight","offset","Math","floor","setState","stop","stopRect","outerHeight","_inheritsLoose","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","featureFlags","stickyReduceLayoutEvents","emit","render","_this2","createElement","Consumer","flags","renderMain","_cx","children","_this$state2","innerStyle","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName","propTypes","oneOfType","node","func","number","oneOf","isRequired"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport shallowEqual from 'shallowequal';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends Omit<CommonProps, 'children'> {\n /** Задает сторону залипания. */\n side: 'top' | 'bottom';\n\n /** Задает отступ от края экрана в пикселях, на который сдвигается элемент в залипшем состоянии.\n * @default 0 */\n offset?: number;\n\n /** Задает функцию, которая возвращает DOM-элемент, который нельзя пересекать. */\n getStop?: () => Nullable<HTMLElement>;\n\n /** @ignore */\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\nexport const StickyDataTids = {\n root: 'Sticky__root',\n} as const;\n\ntype DefaultProps = Required<Pick<StickyProps, 'offset'>>;\n\n/**\n * `Sticky` позволяет закреплять элемент интерфейса в определенной позиции на экране при прокрутке страницы.\n * Это полезно для создания \"прилипающих\" элементов, которые остаются видимыми при прокрутке содержимого.\n */\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n public static displayName = '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: DefaultProps = { offset: 0 };\n\n private getProps = createPropsGetter(Sticky.defaultProps);\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 public featureFlags!: ReactUIFeatureFlags;\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 this.featureFlags.stickyReduceLayoutEvents ? this.reflow() : LayoutEvents.emit();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return this.renderMain();\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderMain() {\n let { children } = this.props;\n const { side } = this.props;\n const offset = this.getProps().offset;\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 data-tid={StickyDataTids.root} 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 if (!globalObject.document?.documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = globalObject.innerHeight || globalObject.document.documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left, width } = getDOMRect(this.wrapper);\n const { height } = getDOMRect(this.inner);\n const { getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const offset = this.getProps().offset;\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 this.setState({ width });\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = getDOMRect(stop);\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"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import type { Nullable } from '../../typings/utility-types';
4
4
  import type { CommonProps } from '../../internal/CommonWrapper';
5
+ import type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
5
6
  export interface StickyProps extends Omit<CommonProps, 'children'> {
6
7
  /** Задает сторону залипания. */
7
8
  side: 'top' | 'bottom';
@@ -53,10 +54,12 @@ export declare class Sticky extends React.Component<StickyProps, StickyState> {
53
54
  private layoutSubscription;
54
55
  private reflowCounter;
55
56
  private setRootNode;
57
+ featureFlags: ReactUIFeatureFlags;
56
58
  componentDidMount(): void;
57
59
  componentWillUnmount(): void;
58
60
  componentDidUpdate(prevProps: StickyProps, prevState: StickyState): void;
59
61
  render(): React.JSX.Element;
62
+ private renderMain;
60
63
  private refWrapper;
61
64
  private refInner;
62
65
  /**
@@ -1,4 +1,5 @@
1
1
  import type { ReactUIFeatureFlags } from './ReactUIFeatureFlagsContext';
2
2
  export declare const getFullReactUIFlagsContext: (flags: ReactUIFeatureFlags) => {
3
3
  comboBoxAllowValueChangeInEditingState?: boolean | undefined;
4
+ stickyReduceLayoutEvents?: boolean | undefined;
4
5
  };
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export var reactUIFeatureFlagsDefault = {
3
- comboBoxAllowValueChangeInEditingState: false
3
+ comboBoxAllowValueChangeInEditingState: false,
4
+ stickyReduceLayoutEvents: false
4
5
  };
5
6
  export var ReactUIFeatureFlagsContext = /*#__PURE__*/React.createContext(reactUIFeatureFlagsDefault);
6
7
  ReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';
@@ -1 +1 @@
1
- {"version":3,"names":["React","reactUIFeatureFlagsDefault","comboBoxAllowValueChangeInEditingState","ReactUIFeatureFlagsContext","createContext","displayName","__KONTUR_REACT_UI__"],"sources":["ReactUIFeatureFlagsContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n comboBoxAllowValueChangeInEditingState?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n comboBoxAllowValueChangeInEditingState: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;;;;;;AAMzB,OAAO,IAAMC,0BAA+C,GAAG;EAC7DC,sCAAsC,EAAE;AAC1C,CAAC;;AAED,OAAO,IAAMC,0BAA0B,gBAAGH,KAAK,CAACI,aAAa,CAAsBH,0BAA0B,CAAC;;AAE9GE,0BAA0B,CAACE,WAAW,GAAG,4BAA4B;AACrEF,0BAA0B,CAACG,mBAAmB,GAAG,4BAA4B","ignoreList":[]}
1
+ {"version":3,"names":["React","reactUIFeatureFlagsDefault","comboBoxAllowValueChangeInEditingState","stickyReduceLayoutEvents","ReactUIFeatureFlagsContext","createContext","displayName","__KONTUR_REACT_UI__"],"sources":["ReactUIFeatureFlagsContext.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface ReactUIFeatureFlags {\n comboBoxAllowValueChangeInEditingState?: boolean;\n stickyReduceLayoutEvents?: boolean;\n}\n\nexport const reactUIFeatureFlagsDefault: ReactUIFeatureFlags = {\n comboBoxAllowValueChangeInEditingState: false,\n stickyReduceLayoutEvents: false,\n};\n\nexport const ReactUIFeatureFlagsContext = React.createContext<ReactUIFeatureFlags>(reactUIFeatureFlagsDefault);\n\nReactUIFeatureFlagsContext.displayName = 'ReactUIFeatureFlagsContext';\nReactUIFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ReactUIFeatureFlagsContext';\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;;;;;;;AAOzB,OAAO,IAAMC,0BAA+C,GAAG;EAC7DC,sCAAsC,EAAE,KAAK;EAC7CC,wBAAwB,EAAE;AAC5B,CAAC;;AAED,OAAO,IAAMC,0BAA0B,gBAAGJ,KAAK,CAACK,aAAa,CAAsBJ,0BAA0B,CAAC;;AAE9GG,0BAA0B,CAACE,WAAW,GAAG,4BAA4B;AACrEF,0BAA0B,CAACG,mBAAmB,GAAG,4BAA4B","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  export interface ReactUIFeatureFlags {
3
3
  comboBoxAllowValueChangeInEditingState?: boolean;
4
+ stickyReduceLayoutEvents?: boolean;
4
5
  }
5
6
  export declare const reactUIFeatureFlagsDefault: ReactUIFeatureFlags;
6
7
  export declare const ReactUIFeatureFlagsContext: React.Context<ReactUIFeatureFlags>;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "5.1.5",
3
+ "version": "5.1.6",
4
4
  "description": "UI Components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "index.js",
7
7
  "sideEffects": false,
8
- "homepage": "https://tech.skbkontur.ru/react-ui/5.1.5/",
8
+ "homepage": "https://tech.skbkontur.ru/react-ui/5.1.6/",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git@github.com:skbkontur/retail-ui.git"