@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.
- package/CHANGELOG.md +13 -0
- package/cjs/components/DateInput/DateInput.js +12 -9
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/SidePage/SidePage.js +1 -1
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.js +4 -1
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +3 -0
- package/cjs/components/Sticky/Sticky.js +15 -1
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
- package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/components/DateInput/DateInput/DateInput.js +12 -9
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +1 -1
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +6 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/Sticky/Sticky/Sticky.js +9 -1
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +3 -0
- package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
- package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
- 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';
|
package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map
CHANGED
|
@@ -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
|
|
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.
|
|
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.
|
|
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"
|