@skbkontur/react-ui 5.1.5 → 5.1.7
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 +30 -0
- package/cjs/components/Calendar/CalendarDay.js +18 -2
- package/cjs/components/Calendar/CalendarDay.js.map +1 -1
- package/cjs/components/Calendar/DayCellView.js +7 -15
- package/cjs/components/Calendar/DayCellView.js.map +1 -1
- package/cjs/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/cjs/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/cjs/components/DateInput/DateInput.js +12 -9
- package/cjs/components/DateInput/DateInput.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.js +19 -15
- package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
- package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
- package/cjs/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/cjs/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/cjs/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/cjs/components/Select/Select.d.ts +3 -0
- package/cjs/components/Select/Select.js +4 -1
- package/cjs/components/Select/Select.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/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/cjs/internal/DateSelect/DateSelect.js +13 -2
- package/cjs/internal/DateSelect/DateSelect.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/cjs/lib/getMenuPositions.d.ts +21 -1
- package/cjs/lib/getMenuPositions.js +45 -8
- package/cjs/lib/getMenuPositions.js.map +1 -1
- package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
- package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
- package/components/Calendar/DayCellView/DayCellView.js +6 -10
- package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
- package/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
- package/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
- package/components/DateInput/DateInput/DateInput.js +12 -9
- package/components/DateInput/DateInput/DateInput.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +10 -11
- package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.d.ts +1 -1
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
- package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
- package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
- package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
- package/components/Link/__creevey__/Link.creevey.mts +2 -2
- package/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
- package/components/Select/Select/Select.js +3 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/Select/Select.d.ts +3 -0
- 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/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
- package/internal/DateSelect/DateSelect/DateSelect.js +2 -0
- package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
- 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/lib/getMenuPositions/getMenuPositions.js +33 -4
- package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
- package/lib/getMenuPositions.d.ts +21 -1
- package/package.json +2 -2
|
@@ -15,6 +15,8 @@ var _rootNode = require("../../lib/rootNode");
|
|
|
15
15
|
var _getDOMRect3 = require("../../lib/dom/getDOMRect");
|
|
16
16
|
var _createPropsGetter = require("../../lib/createPropsGetter");
|
|
17
17
|
|
|
18
|
+
var _featureFlagsContext = require("../../lib/featureFlagsContext");
|
|
19
|
+
|
|
18
20
|
var _Sticky2 = require("./Sticky.styles");var _class, _Sticky;
|
|
19
21
|
|
|
20
22
|
var MAX_REFLOW_RETRIES = 5;
|
|
@@ -145,6 +147,18 @@ Sticky = exports.Sticky = (0, _rootNode.rootNode)(_class = (_Sticky = /*#__PURE_
|
|
|
145
147
|
|
|
146
148
|
|
|
147
149
|
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
148
162
|
|
|
149
163
|
|
|
150
164
|
|
|
@@ -210,7 +224,7 @@ Sticky = exports.Sticky = (0, _rootNode.rootNode)(_class = (_Sticky = /*#__PURE_
|
|
|
210
224
|
_this.setState({ relativeTop: relativeTop, deltaHeight: deltaHeight, stopped: stopped });
|
|
211
225
|
}
|
|
212
226
|
}
|
|
213
|
-
};return _this;}(0, _inheritsLoose2.default)(Sticky, _React$Component);var _proto = Sticky.prototype;_proto.componentDidMount = function componentDidMount() {this.reflow();this.layoutSubscription = LayoutEvents.addListener(this.reflow);};_proto.componentWillUnmount = function componentWillUnmount() {if (this.layoutSubscription.remove) {this.layoutSubscription.remove();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (!(0, _shallowequal.default)(prevProps, this.props) || !(0, _shallowequal.default)(prevState, this.state)) {if (this.reflowCounter < MAX_REFLOW_RETRIES) {LayoutEvents.emit();this.reflowCounter += 1;return;}}this.reflowCounter = 0;};_proto.render = function render() {var _cx;var children = this.props.children;var side = this.props.side;var offset = this.getProps().offset;var _this$state2 = this.state,fixed = _this$state2.fixed,stopped = _this$state2.stopped,relativeTop = _this$state2.relativeTop,deltaHeight = _this$state2.deltaHeight,width = _this$state2.width,height = _this$state2.height,left = _this$state2.left;var innerStyle = {};if (fixed) {if (stopped) {innerStyle.top = relativeTop;innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;} else {innerStyle.width = width;innerStyle[side] = offset;innerStyle.left = left;}}if ((0, _utils.isFunction)(children)) {children = children(fixed);}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": StickyDataTids.root, ref: this.refWrapper, className: _Sticky2.styles.wrapper() }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: "Sticky", applyZIndex: fixed, className: (0, _Emotion.cx)(_Sticky2.styles.inner(), (_cx = {}, _cx[_Sticky2.styles.fixed()] = fixed && !stopped, _cx[_Sticky2.styles.stopped()] = stopped, _cx)), style: innerStyle, wrapperRef: this.refInner }, /*#__PURE__*/_react.default.createElement("div", { className: _Sticky2.styles.container() }, children)), fixed && !stopped ? /*#__PURE__*/_react.default.createElement("div", { style: { width: width, height: height } }) : null));};return Sticky;}(_react.default.Component), _Sticky.__KONTUR_REACT_UI__ = 'Sticky', _Sticky.displayName = 'Sticky', _Sticky.propTypes = { children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]), /**
|
|
227
|
+
};return _this;}(0, _inheritsLoose2.default)(Sticky, _React$Component);var _proto = Sticky.prototype;_proto.componentDidMount = function componentDidMount() {this.reflow();this.layoutSubscription = LayoutEvents.addListener(this.reflow);};_proto.componentWillUnmount = function componentWillUnmount() {if (this.layoutSubscription.remove) {this.layoutSubscription.remove();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (!(0, _shallowequal.default)(prevProps, this.props) || !(0, _shallowequal.default)(prevState, this.state)) {if (this.reflowCounter < MAX_REFLOW_RETRIES) {this.featureFlags.stickyReduceLayoutEvents ? this.reflow() : LayoutEvents.emit();this.reflowCounter += 1;return;}}this.reflowCounter = 0;};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_featureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {_this2.featureFlags = (0, _featureFlagsContext.getFullReactUIFlagsContext)(flags);return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx;var children = this.props.children;var side = this.props.side;var offset = this.getProps().offset;var _this$state2 = this.state,fixed = _this$state2.fixed,stopped = _this$state2.stopped,relativeTop = _this$state2.relativeTop,deltaHeight = _this$state2.deltaHeight,width = _this$state2.width,height = _this$state2.height,left = _this$state2.left;var innerStyle = {};if (fixed) {if (stopped) {innerStyle.top = relativeTop;innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;} else {innerStyle.width = width;innerStyle[side] = offset;innerStyle.left = left;}}if ((0, _utils.isFunction)(children)) {children = children(fixed);}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { "data-tid": StickyDataTids.root, ref: this.refWrapper, className: _Sticky2.styles.wrapper() }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: "Sticky", applyZIndex: fixed, className: (0, _Emotion.cx)(_Sticky2.styles.inner(), (_cx = {}, _cx[_Sticky2.styles.fixed()] = fixed && !stopped, _cx[_Sticky2.styles.stopped()] = stopped, _cx)), style: innerStyle, wrapperRef: this.refInner }, /*#__PURE__*/_react.default.createElement("div", { className: _Sticky2.styles.container() }, children)), fixed && !stopped ? /*#__PURE__*/_react.default.createElement("div", { style: { width: width, height: height } }) : null));};return Sticky;}(_react.default.Component), _Sticky.__KONTUR_REACT_UI__ = 'Sticky', _Sticky.displayName = 'Sticky', _Sticky.propTypes = { children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]), /**
|
|
214
228
|
* Функция, которая возвращает DOM-элемент, который нельзя пересекать.
|
|
215
229
|
*/getStop: _propTypes.default.func, /**
|
|
216
230
|
* Отступ от границы в пикселях
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_shallowequal","_globalObject","LayoutEvents","_interopRequireWildcard","_utils","_ZIndex","_CommonWrapper","_Emotion","_rootNode","_getDOMRect3","_createPropsGetter","_Sticky2","_class","_Sticky","MAX_REFLOW_RETRIES","StickyDataTids","exports","root","Sticky","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_globalObject$documen","globalObject","document","documentElement","Error","windowHeight","innerHeight","clientHeight","_getDOMRect","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","_inheritsLoose2","default","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","shallowEqual","emit","render","_cx","children","_this$state2","innerStyle","isFunction","createElement","CommonWrapper","_extends2","rootNodeRef","setRootNode","className","styles","ZIndex","priority","applyZIndex","cx","style","wrapperRef","container","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","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","_interopRequireDefault","require","_propTypes","_shallowequal","_globalObject","LayoutEvents","_interopRequireWildcard","_utils","_ZIndex","_CommonWrapper","_Emotion","_rootNode","_getDOMRect3","_createPropsGetter","_featureFlagsContext","_Sticky2","_class","_Sticky","MAX_REFLOW_RETRIES","StickyDataTids","exports","root","Sticky","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_globalObject$documen","globalObject","document","documentElement","Error","windowHeight","innerHeight","clientHeight","_getDOMRect","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","_inheritsLoose2","default","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","shallowEqual","featureFlags","stickyReduceLayoutEvents","emit","render","_this2","createElement","ReactUIFeatureFlagsContext","Consumer","flags","getFullReactUIFlagsContext","renderMain","_cx","children","_this$state2","innerStyle","isFunction","CommonWrapper","_extends2","rootNodeRef","setRootNode","className","styles","ZIndex","priority","applyZIndex","cx","style","wrapperRef","container","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","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":[]}
|
|
@@ -80,9 +80,13 @@ kind('Toggle', () => {
|
|
|
80
80
|
.actions({
|
|
81
81
|
bridge: true,
|
|
82
82
|
})
|
|
83
|
-
.
|
|
83
|
+
.move({
|
|
84
|
+
origin: context.webdriver.findElement({ css: `[data-tid="${ToggleDataTids.root}"]` }),
|
|
85
|
+
})
|
|
86
|
+
.pause(2000)
|
|
87
|
+
.click()
|
|
84
88
|
.perform();
|
|
85
|
-
await delay(
|
|
89
|
+
await delay(2000);
|
|
86
90
|
await context.matchImage(await context.takeScreenshot(), 'clicked');
|
|
87
91
|
});
|
|
88
92
|
});
|
|
@@ -15,6 +15,7 @@ var _Select = require("../../components/Select");
|
|
|
15
15
|
var _MenuItem = require("../../components/MenuItem");
|
|
16
16
|
var _ArrowCollapseCVOpenIcon16Regular = require("../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular");
|
|
17
17
|
|
|
18
|
+
|
|
18
19
|
var _DateSelect2 = require("./DateSelect.styles");var _dec, _class, _DateSelect;
|
|
19
20
|
|
|
20
21
|
var defaultMinMonth = 0;
|
|
@@ -44,9 +45,18 @@ var DateSelectDataTids = exports.DateSelectDataTids = {
|
|
|
44
45
|
caption: 'DateSelect__caption',
|
|
45
46
|
menuItem: 'DateSelect__menuItem',
|
|
46
47
|
menu: 'DateSelect__menu'
|
|
47
|
-
};
|
|
48
|
+
};
|
|
49
|
+
|
|
48
50
|
|
|
49
51
|
|
|
52
|
+
var DATE_SELECT_POSITIONS = [
|
|
53
|
+
'middle left',
|
|
54
|
+
'middle right',
|
|
55
|
+
'bottom left',
|
|
56
|
+
'top left',
|
|
57
|
+
'bottom right',
|
|
58
|
+
'top right'];var
|
|
59
|
+
|
|
50
60
|
|
|
51
61
|
|
|
52
62
|
|
|
@@ -172,6 +182,7 @@ DateSelect = exports.DateSelect = (_dec = (0, _decorators.locale)('Calendar', _l
|
|
|
172
182
|
|
|
173
183
|
|
|
174
184
|
|
|
185
|
+
|
|
175
186
|
|
|
176
187
|
|
|
177
188
|
getItems = function () {
|
|
@@ -205,4 +216,4 @@ DateSelect = exports.DateSelect = (_dec = (0, _decorators.locale)('Calendar', _l
|
|
|
205
216
|
}
|
|
206
217
|
|
|
207
218
|
return (_this$locale$months = _this.locale.months) == null ? void 0 : _this$locale$months[value];
|
|
208
|
-
};return _this;}(0, _inheritsLoose2.default)(DateSelect, _React$PureComponent);var _proto = DateSelect.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.close = function close() {var _this$selectRef$curre;(_this$selectRef$curre = this.selectRef.current) == null || _this$selectRef$curre.close();};_proto.renderMain = function renderMain() {var _this$getProps2 = this.getProps(),value = _this$getProps2.value,disabled = _this$getProps2.disabled,onValueChange = _this$getProps2.onValueChange;var theme = { btnBorderRadiusSmall: this.theme.menuItemBorderRadius };return /*#__PURE__*/_react.default.createElement(_Select.Select, { use: "text", value: value, ref: this.selectRef, theme: theme, disabled: disabled, _renderButton: this.renderButton, menuPos: "middle", renderValue: this.getItem, items: this.getItems(), menuOffset: parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall), onValueChange: onValueChange, "aria-label": this.locale.selectChosenAriaLabel + " " + (this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel) + " " + this.getItem(value) });};_proto.isOptionDisabled = function isOptionDisabled(option) {var _this$getProps3 = this.getProps(),minValue = _this$getProps3.minValue,maxValue = _this$getProps3.maxValue;if ((0, _utils.isNonNullable)(maxValue) && (0, _utils.isNonNullable)(minValue)) {return option > maxValue || option < minValue;}if ((0, _utils.isNonNullable)(minValue)) {return option < minValue;}if ((0, _utils.isNonNullable)(maxValue)) {return option > maxValue;}};return (0, _createClass2.default)(DateSelect, [{ key: "isYearType", get: function get() {return this.getProps().type === 'year';} }]);}(_react.default.PureComponent), _DateSelect.__KONTUR_REACT_UI__ = 'DateSelect', _DateSelect.displayName = 'DateSelect', _DateSelect.propTypes = { disabled: _propTypes.default.bool, type: _propTypes.default.string, value: _propTypes.default.number.isRequired, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), onValueChange: _propTypes.default.func, minValue: _propTypes.default.number, maxValue: _propTypes.default.number }, _DateSelect.defaultProps = { type: 'year', width: 'auto' }, _DateSelect)) || _class) || _class);
|
|
219
|
+
};return _this;}(0, _inheritsLoose2.default)(DateSelect, _React$PureComponent);var _proto = DateSelect.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.close = function close() {var _this$selectRef$curre;(_this$selectRef$curre = this.selectRef.current) == null || _this$selectRef$curre.close();};_proto.renderMain = function renderMain() {var _this$getProps2 = this.getProps(),value = _this$getProps2.value,disabled = _this$getProps2.disabled,onValueChange = _this$getProps2.onValueChange;var theme = { btnBorderRadiusSmall: this.theme.menuItemBorderRadius };return /*#__PURE__*/_react.default.createElement(_Select.Select, { use: "text", value: value, ref: this.selectRef, theme: theme, disabled: disabled, _renderButton: this.renderButton, menuPos: "middle", positions: DATE_SELECT_POSITIONS, renderValue: this.getItem, items: this.getItems(), menuOffset: parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall), onValueChange: onValueChange, "aria-label": this.locale.selectChosenAriaLabel + " " + (this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel) + " " + this.getItem(value) });};_proto.isOptionDisabled = function isOptionDisabled(option) {var _this$getProps3 = this.getProps(),minValue = _this$getProps3.minValue,maxValue = _this$getProps3.maxValue;if ((0, _utils.isNonNullable)(maxValue) && (0, _utils.isNonNullable)(minValue)) {return option > maxValue || option < minValue;}if ((0, _utils.isNonNullable)(minValue)) {return option < minValue;}if ((0, _utils.isNonNullable)(maxValue)) {return option > maxValue;}};return (0, _createClass2.default)(DateSelect, [{ key: "isYearType", get: function get() {return this.getProps().type === 'year';} }]);}(_react.default.PureComponent), _DateSelect.__KONTUR_REACT_UI__ = 'DateSelect', _DateSelect.displayName = 'DateSelect', _DateSelect.propTypes = { disabled: _propTypes.default.bool, type: _propTypes.default.string, value: _propTypes.default.number.isRequired, width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), onValueChange: _propTypes.default.func, minValue: _propTypes.default.number, maxValue: _propTypes.default.number }, _DateSelect.defaultProps = { type: 'year', width: 'auto' }, _DateSelect)) || _class) || _class);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_decorator","_utils","_locale","_decorators","_ThemeContext","_Emotion","_createPropsGetter","_Select","_MenuItem","_ArrowCollapseCVOpenIcon16Regular","_DateSelect2","_dec","_class","_DateSelect","defaultMinMonth","defaultMaxMonth","defaultMinYear","defaultMaxYear","months","range","years","start","end","Array","fill","map","_","index","DateSelectDataTids","exports","caption","menuItem","menu","DateSelect","locale","DatePickerLocaleHelper","responsiveLayout","_React$PureComponent","_this","_len","arguments","length","args","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","selectRef","createRef","menuId","getRandomID","renderButton","params","_this$props","props","value","disabled","width","isInteractiveElement","Tag","rootProps","className","cx","styles","root","theme","style","onClick","undefined","opened","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","default","createElement","ArrowCollapseCVOpenIcon16Regular","globalClasses","arrow","color","getItems","_this$getProps","onValueChange","options","isYearType","option","isSelected","isOptionDisabled","MenuItem","scrollIntoView","state","key","_this$locale$months","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","renderMain","close","_this$selectRef$curre","current","_this$getProps2","btnBorderRadiusSmall","menuItemBorderRadius","Select","use","ref","_renderButton","menuPos","renderValue","items","menuOffset","parseInt","menuPaddingX","menuItemPaddingXSmall","_this$getProps3","minValue","maxValue","isNonNullable","_createClass2","get","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool","string","number","isRequired","oneOfType","func"],"sources":["DateSelect.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { DatePickerLocale } from '../../components/DatePicker/locale';\nimport { DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ButtonParams } from '../../components/Select';\nimport { Select } from '../../components/Select';\nimport { MenuItem } from '../../components/MenuItem';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst defaultMinMonth = 0;\nconst defaultMaxMonth = 11;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\nconst months = range(defaultMinMonth, defaultMaxMonth);\nconst years = range(defaultMinYear, defaultMaxYear);\n\nfunction range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\nexport interface DateSelectProps {\n disabled?: boolean;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@responsiveLayout\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n private get isYearType() {\n return this.getProps().type === 'year';\n }\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private readonly selectRef = createRef<Select<number, number>>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderButton = (params: ButtonParams) => {\n const { value, disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), disabled && styles.disabled()),\n style: { width },\n onClick: disabled ? undefined : params.onClick,\n 'aria-expanded': isInteractiveElement ? params.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(value)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n </Tag>\n );\n };\n\n public close() {\n this.selectRef.current?.close();\n }\n\n private renderMain() {\n const { value, disabled, onValueChange } = this.getProps();\n const theme = {\n btnBorderRadiusSmall: this.theme.menuItemBorderRadius,\n };\n\n return (\n <Select\n use=\"text\"\n value={value}\n ref={this.selectRef}\n theme={theme}\n disabled={disabled}\n _renderButton={this.renderButton}\n menuPos=\"middle\"\n renderValue={this.getItem}\n items={this.getItems()}\n menuOffset={parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall)}\n onValueChange={onValueChange}\n aria-label={`${this.locale.selectChosenAriaLabel} ${\n this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`}\n />\n );\n }\n\n private isOptionDisabled(option: number) {\n const { minValue, maxValue } = this.getProps();\n\n if (isNonNullable(maxValue) && isNonNullable(minValue)) {\n return option > maxValue || option < minValue;\n }\n\n if (isNonNullable(minValue)) {\n return option < minValue;\n }\n\n if (isNonNullable(maxValue)) {\n return option > maxValue;\n }\n }\n\n private getItems = () => {\n const { value, onValueChange } = this.getProps();\n const options = this.isYearType ? years : months;\n\n return options.map((option) => {\n const isSelected = option === value;\n const isOptionDisabled = this.isOptionDisabled(option);\n\n return (\n <MenuItem\n scrollIntoView={isSelected}\n disabled={isOptionDisabled}\n state={isSelected ? 'selected' : null}\n onClick={() => onValueChange(option)}\n aria-label={`Выбрать ${this.isYearType ? 'год' : 'месяц'} ${this.getItem(option)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={isOptionDisabled}\n key={option}\n >\n {this.getItem(option)}\n </MenuItem>\n );\n });\n };\n\n private getItem = (value: number) => {\n if (this.isYearType) {\n return value;\n }\n\n return this.locale.months?.[value];\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_decorator","_utils","_locale","_decorators","_ThemeContext","_Emotion","_createPropsGetter","_Select","_MenuItem","_ArrowCollapseCVOpenIcon16Regular","_DateSelect2","_dec","_class","_DateSelect","defaultMinMonth","defaultMaxMonth","defaultMinYear","defaultMaxYear","months","range","years","start","end","Array","fill","map","_","index","DateSelectDataTids","exports","caption","menuItem","menu","DATE_SELECT_POSITIONS","DateSelect","locale","DatePickerLocaleHelper","responsiveLayout","_React$PureComponent","_this","_len","arguments","length","args","_key","call","apply","concat","getProps","createPropsGetter","defaultProps","selectRef","createRef","menuId","getRandomID","renderButton","params","_this$props","props","value","disabled","width","isInteractiveElement","Tag","rootProps","className","cx","styles","root","theme","style","onClick","undefined","opened","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","default","createElement","ArrowCollapseCVOpenIcon16Regular","globalClasses","arrow","color","getItems","_this$getProps","onValueChange","options","isYearType","option","isSelected","isOptionDisabled","MenuItem","scrollIntoView","state","key","_this$locale$months","_inheritsLoose2","_proto","prototype","render","_this2","ThemeContext","Consumer","renderMain","close","_this$selectRef$curre","current","_this$getProps2","btnBorderRadiusSmall","menuItemBorderRadius","Select","use","ref","_renderButton","menuPos","positions","renderValue","items","menuOffset","parseInt","menuPaddingX","menuItemPaddingXSmall","_this$getProps3","minValue","maxValue","isNonNullable","_createClass2","get","React","PureComponent","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","bool","string","number","isRequired","oneOfType","func"],"sources":["DateSelect.tsx"],"sourcesContent":["import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport type { DatePickerLocale } from '../../components/DatePicker/locale';\nimport { DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ButtonParams } from '../../components/Select';\nimport { Select } from '../../components/Select';\nimport { MenuItem } from '../../components/MenuItem';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport type { PopupPositionsType } from '../../internal/Popup/types';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst defaultMinMonth = 0;\nconst defaultMaxMonth = 11;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\nconst months = range(defaultMinMonth, defaultMaxMonth);\nconst years = range(defaultMinYear, defaultMaxYear);\n\nfunction range(start: number, end: number) {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\nexport interface DateSelectProps {\n disabled?: boolean;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\nconst DATE_SELECT_POSITIONS: PopupPositionsType[] = [\n 'middle left',\n 'middle right',\n 'bottom left',\n 'top left',\n 'bottom right',\n 'top right',\n];\n\n@responsiveLayout\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n public static displayName = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n private get isYearType() {\n return this.getProps().type === 'year';\n }\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private readonly selectRef = createRef<Select<number, number>>();\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderButton = (params: ButtonParams) => {\n const { value, disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), disabled && styles.disabled()),\n style: { width },\n onClick: disabled ? undefined : params.onClick,\n 'aria-expanded': isInteractiveElement ? params.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(value)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n </Tag>\n );\n };\n\n public close() {\n this.selectRef.current?.close();\n }\n\n private renderMain() {\n const { value, disabled, onValueChange } = this.getProps();\n const theme = {\n btnBorderRadiusSmall: this.theme.menuItemBorderRadius,\n };\n\n return (\n <Select\n use=\"text\"\n value={value}\n ref={this.selectRef}\n theme={theme}\n disabled={disabled}\n _renderButton={this.renderButton}\n menuPos=\"middle\"\n positions={DATE_SELECT_POSITIONS}\n renderValue={this.getItem}\n items={this.getItems()}\n menuOffset={parseInt(this.theme.menuPaddingX) + parseInt(this.theme.menuItemPaddingXSmall)}\n onValueChange={onValueChange}\n aria-label={`${this.locale.selectChosenAriaLabel} ${\n this.isYearType ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(value)}`}\n />\n );\n }\n\n private isOptionDisabled(option: number) {\n const { minValue, maxValue } = this.getProps();\n\n if (isNonNullable(maxValue) && isNonNullable(minValue)) {\n return option > maxValue || option < minValue;\n }\n\n if (isNonNullable(minValue)) {\n return option < minValue;\n }\n\n if (isNonNullable(maxValue)) {\n return option > maxValue;\n }\n }\n\n private getItems = () => {\n const { value, onValueChange } = this.getProps();\n const options = this.isYearType ? years : months;\n\n return options.map((option) => {\n const isSelected = option === value;\n const isOptionDisabled = this.isOptionDisabled(option);\n\n return (\n <MenuItem\n scrollIntoView={isSelected}\n disabled={isOptionDisabled}\n state={isSelected ? 'selected' : null}\n onClick={() => onValueChange(option)}\n aria-label={`Выбрать ${this.isYearType ? 'год' : 'месяц'} ${this.getItem(option)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={isOptionDisabled}\n key={option}\n >\n {this.getItem(option)}\n </MenuItem>\n );\n });\n };\n\n private getItem = (value: number) => {\n if (this.isYearType) {\n return value;\n }\n\n return this.locale.months?.[value];\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -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 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>;
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
var reactUIFeatureFlagsDefault = exports.reactUIFeatureFlagsDefault = {
|
|
8
|
-
comboBoxAllowValueChangeInEditingState: false
|
|
9
|
+
comboBoxAllowValueChangeInEditingState: false,
|
|
10
|
+
stickyReduceLayoutEvents: false
|
|
9
11
|
};
|
|
10
12
|
|
|
11
13
|
var ReactUIFeatureFlagsContext = exports.ReactUIFeatureFlagsContext = /*#__PURE__*/_react.default.createContext(reactUIFeatureFlagsDefault);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","reactUIFeatureFlagsDefault","exports","comboBoxAllowValueChangeInEditingState","ReactUIFeatureFlagsContext","React","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":"qNAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","reactUIFeatureFlagsDefault","exports","comboBoxAllowValueChangeInEditingState","stickyReduceLayoutEvents","ReactUIFeatureFlagsContext","React","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":"qNAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;;;;;;;AAOO,IAAMC,0BAA+C,GAAAC,OAAA,CAAAD,0BAAA,GAAG;EAC7DE,sCAAsC,EAAE,KAAK;EAC7CC,wBAAwB,EAAE;AAC5B,CAAC;;AAEM,IAAMC,0BAA0B,GAAAH,OAAA,CAAAG,0BAAA,gBAAGC,cAAK,CAACC,aAAa,CAAsBN,0BAA0B,CAAC;;AAE9GI,0BAA0B,CAACG,WAAW,GAAG,4BAA4B;AACrEH,0BAA0B,CAACI,mBAAmB,GAAG,4BAA4B","ignoreList":[]}
|
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
import type { PopupPositionsType } from '../internal/Popup';
|
|
2
|
-
|
|
2
|
+
declare const MENU_POSITIONS: {
|
|
3
|
+
readonly TOP: "top";
|
|
4
|
+
readonly MIDDLE: "middle";
|
|
5
|
+
readonly BOTTOM: "bottom";
|
|
6
|
+
};
|
|
7
|
+
declare const MENU_ALIGNMENTS: {
|
|
8
|
+
readonly LEFT: "left";
|
|
9
|
+
readonly RIGHT: "right";
|
|
10
|
+
};
|
|
11
|
+
type MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];
|
|
12
|
+
type MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];
|
|
13
|
+
/**
|
|
14
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
15
|
+
*
|
|
16
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
17
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
18
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[];
|
|
22
|
+
export {};
|
|
@@ -1,15 +1,52 @@
|
|
|
1
1
|
"use strict";exports.__esModule = true;exports.getMenuPositions = getMenuPositions;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
var MENU_POSITIONS = {
|
|
4
|
+
TOP: 'top',
|
|
5
|
+
MIDDLE: 'middle',
|
|
6
|
+
BOTTOM: 'bottom'
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
var MENU_ALIGNMENTS = {
|
|
10
|
+
LEFT: 'left',
|
|
11
|
+
RIGHT: 'right'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
var POPUP_POSITIONS = {
|
|
15
|
+
TOP_LEFT: 'top left',
|
|
16
|
+
TOP_RIGHT: 'top right',
|
|
17
|
+
BOTTOM_LEFT: 'bottom left',
|
|
18
|
+
BOTTOM_RIGHT: 'bottom right',
|
|
19
|
+
MIDDLE_LEFT: 'middle left',
|
|
20
|
+
MIDDLE_RIGHT: 'middle right'
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Генерирует массив позиций попапа на основе позиции и выравнивания меню
|
|
28
|
+
*
|
|
29
|
+
* @param menuPos - Позиция меню ('top', 'middle', 'bottom')
|
|
30
|
+
* @param menuAlign - Выравнивание меню ('left', 'right')
|
|
31
|
+
* @returns Массив позиций попапа в порядке приоритета
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
function getMenuPositions(menuPos, menuAlign) {
|
|
35
|
+
if (menuPos === undefined && menuAlign === undefined) {
|
|
36
|
+
return [
|
|
37
|
+
POPUP_POSITIONS.BOTTOM_LEFT,
|
|
38
|
+
POPUP_POSITIONS.TOP_LEFT,
|
|
39
|
+
POPUP_POSITIONS.BOTTOM_RIGHT,
|
|
40
|
+
POPUP_POSITIONS.TOP_RIGHT];
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (menuPos !== undefined && menuAlign === undefined) {
|
|
45
|
+
return [menuPos + " " + MENU_ALIGNMENTS.LEFT, menuPos + " " + MENU_ALIGNMENTS.RIGHT];
|
|
9
46
|
}
|
|
10
47
|
|
|
11
|
-
if (menuPos === undefined) {
|
|
12
|
-
return ["
|
|
48
|
+
if (menuPos === undefined && menuAlign !== undefined) {
|
|
49
|
+
return [MENU_POSITIONS.BOTTOM + " " + menuAlign, MENU_POSITIONS.TOP + " " + menuAlign];
|
|
13
50
|
}
|
|
14
51
|
|
|
15
52
|
return [menuPos + " " + menuAlign];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\
|
|
1
|
+
{"version":3,"names":["MENU_POSITIONS","TOP","MIDDLE","BOTTOM","MENU_ALIGNMENTS","LEFT","RIGHT","POPUP_POSITIONS","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","MIDDLE_LEFT","MIDDLE_RIGHT","getMenuPositions","menuPos","menuAlign","undefined"],"sources":["getMenuPositions.ts"],"sourcesContent":["import type { PopupPositionsType } from '../internal/Popup';\n\nconst MENU_POSITIONS = {\n TOP: 'top',\n MIDDLE: 'middle',\n BOTTOM: 'bottom',\n} as const;\n\nconst MENU_ALIGNMENTS = {\n LEFT: 'left',\n RIGHT: 'right',\n} as const;\n\nconst POPUP_POSITIONS = {\n TOP_LEFT: 'top left',\n TOP_RIGHT: 'top right',\n BOTTOM_LEFT: 'bottom left',\n BOTTOM_RIGHT: 'bottom right',\n MIDDLE_LEFT: 'middle left',\n MIDDLE_RIGHT: 'middle right',\n} as const;\n\ntype MenuPosition = (typeof MENU_POSITIONS)[keyof typeof MENU_POSITIONS];\ntype MenuAlignment = (typeof MENU_ALIGNMENTS)[keyof typeof MENU_ALIGNMENTS];\n\n/**\n * Генерирует массив позиций попапа на основе позиции и выравнивания меню\n *\n * @param menuPos - Позиция меню ('top', 'middle', 'bottom')\n * @param menuAlign - Выравнивание меню ('left', 'right')\n * @returns Массив позиций попапа в порядке приоритета\n *\n */\nexport function getMenuPositions(menuPos?: MenuPosition, menuAlign?: MenuAlignment): PopupPositionsType[] {\n if (menuPos === undefined && menuAlign === undefined) {\n return [\n POPUP_POSITIONS.BOTTOM_LEFT,\n POPUP_POSITIONS.TOP_LEFT,\n POPUP_POSITIONS.BOTTOM_RIGHT,\n POPUP_POSITIONS.TOP_RIGHT,\n ];\n }\n\n if (menuPos !== undefined && menuAlign === undefined) {\n return [`${menuPos} ${MENU_ALIGNMENTS.LEFT}`, `${menuPos} ${MENU_ALIGNMENTS.RIGHT}`];\n }\n\n if (menuPos === undefined && menuAlign !== undefined) {\n return [`${MENU_POSITIONS.BOTTOM} ${menuAlign}`, `${MENU_POSITIONS.TOP} ${menuAlign}`];\n }\n\n return [`${menuPos} ${menuAlign}`];\n}\n"],"mappings":";;AAEA,IAAMA,cAAc,GAAG;EACrBC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE;AACV,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE;AACT,CAAU;;AAEV,IAAMC,eAAe,GAAG;EACtBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE,WAAW;EACtBC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE;AAChB,CAAU;;;;;AAKV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAACC,OAAsB,EAAEC,SAAyB,EAAwB;EACxG,IAAID,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO;IACLV,eAAe,CAACG,WAAW;IAC3BH,eAAe,CAACC,QAAQ;IACxBD,eAAe,CAACI,YAAY;IAC5BJ,eAAe,CAACE,SAAS,CAC1B;;EACH;;EAEA,IAAIM,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIF,OAAO,SAAIX,eAAe,CAACC,IAAI,EAAOU,OAAO,SAAIX,eAAe,CAACE,KAAK,CAAG;EACtF;;EAEA,IAAIS,OAAO,KAAKE,SAAS,IAAID,SAAS,KAAKC,SAAS,EAAE;IACpD,OAAO,CAAIjB,cAAc,CAACG,MAAM,SAAIa,SAAS,EAAOhB,cAAc,CAACC,GAAG,SAAIe,SAAS,CAAG;EACxF;;EAEA,OAAO,CAAID,OAAO,SAAIC,SAAS,CAAG;AACpC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
var _excluded = ["isToday", "isSelected", "isDisabled", "isWeekend", "date", "children", "className"];
|
|
4
|
-
import React, { useContext, memo } from 'react';
|
|
3
|
+
var _excluded = ["isToday", "isSelected", "isDisabled", "isWeekend", "date", "onDayClick", "onClick", "children", "className"];
|
|
4
|
+
import React, { useContext, memo, useCallback } from 'react';
|
|
5
5
|
import { useLocaleForControl } from "../../../lib/locale/useLocaleForControl";
|
|
6
6
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
7
7
|
import { cx } from "../../../lib/theming/Emotion";
|
|
@@ -25,6 +25,8 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
25
25
|
isDisabled = _ref.isDisabled,
|
|
26
26
|
isWeekend = _ref.isWeekend,
|
|
27
27
|
date = _ref.date,
|
|
28
|
+
onDayClick = _ref.onDayClick,
|
|
29
|
+
onClick = _ref.onClick,
|
|
28
30
|
children = _ref.children,
|
|
29
31
|
className = _ref.className,
|
|
30
32
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
@@ -37,6 +39,10 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
37
39
|
});
|
|
38
40
|
var locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);
|
|
39
41
|
var ariaLabel = locale.dayCellChooseDateAriaLabel + ": " + internalDate.toA11YFormat();
|
|
42
|
+
var handleClick = useCallback(function (e) {
|
|
43
|
+
onDayClick();
|
|
44
|
+
onClick == null || onClick(e);
|
|
45
|
+
}, [onDayClick, onClick]);
|
|
40
46
|
var _internalDate$getComp = internalDate.getComponentsLikeNumber(),
|
|
41
47
|
day = _internalDate$getComp.date;
|
|
42
48
|
var caption = children != null ? children : day;
|
|
@@ -47,6 +53,7 @@ export var CalendarDay = /*#__PURE__*/memo(forwardRefAndName('CalendarDay', func
|
|
|
47
53
|
"aria-label": ariaLabel,
|
|
48
54
|
tabIndex: -1,
|
|
49
55
|
disabled: isDisabled,
|
|
56
|
+
onClick: handleClick,
|
|
50
57
|
className: cx((_cx = {}, _cx[styles.day(theme)] = true, _cx[styles.selected(theme)] = isSelected, _cx[styles.weekend(theme)] = isWeekend, _cx), className)
|
|
51
58
|
}, getVisualStateDataAttributes({
|
|
52
59
|
selected: isSelected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","memo","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","selected","weekend","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.selected(theme)]: isSelected,\n [styles.weekend(theme)]: isWeekend,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"],"mappings":";AACA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,QAAQ,OAAO;;
|
|
1
|
+
{"version":3,"names":["React","useContext","memo","useCallback","useLocaleForControl","ThemeContext","cx","DatePickerLocaleHelper","InternalDate","LocaleContext","getVisualStateDataAttributes","forwardRefAndName","styles","CalendarDataTids","CalendarDay","_ref","ref","_cx","_cx2","isToday","isSelected","isDisabled","isWeekend","date","onDayClick","onClick","children","className","rest","_objectWithoutPropertiesLoose","_excluded","theme","_useContext","langCode","internalDate","value","locale","ariaLabel","dayCellChooseDateAriaLabel","toA11YFormat","handleClick","e","_internalDate$getComp","getComponentsLikeNumber","day","caption","createElement","_extends","dayCell","tabIndex","disabled","selected","weekend","todayCaption"],"sources":["CalendarDay.tsx"],"sourcesContent":["import type { PropsWithChildren } from 'react';\nimport React, { useContext, memo, useCallback } from 'react';\n\nimport { useLocaleForControl } from '../../lib/locale/useLocaleForControl';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { LocaleContext } from '../../lib/locale';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarDataTids } from './Calendar';\n\nexport interface CalendarDayProps extends React.HTMLAttributes<HTMLButtonElement> {\n /** Устанавливает, является ли день текущим. */\n isToday?: boolean;\n\n /** Устанавливает, является ли день выбранным. */\n isSelected?: boolean;\n\n /** Устанавливает, является ли день недоступным. */\n isDisabled?: boolean;\n\n /** Устанавливает, является ли день выходным. */\n isWeekend?: boolean;\n\n /** Задает день. */\n date: string;\n\n /** Задает функцию, которая вызывается при клике на день. Необходима для внутренней работы Calendar. Не предназначена для переопределения. Вместо этого, следует использовать стандартный `onClick`.\n * @internal @ignore\n */\n onDayClick: () => void;\n}\n\n/**\n * Компонент дня `CalendarDay` из Calendar.\n *\n * @visibleName Calendar.Day\n */\nexport const CalendarDay = memo(\n forwardRefAndName(\n 'CalendarDay',\n function CalendarDay(\n {\n isToday,\n isSelected,\n isDisabled,\n isWeekend,\n date,\n onDayClick,\n onClick,\n children,\n className,\n ...rest\n }: PropsWithChildren<CalendarDayProps>,\n ref: React.Ref<HTMLButtonElement>,\n ) {\n const theme = useContext(ThemeContext);\n\n const { langCode } = useContext(LocaleContext);\n const internalDate = new InternalDate({ langCode, value: date });\n\n const locale = useLocaleForControl('Calendar', DatePickerLocaleHelper);\n const ariaLabel = `${locale.dayCellChooseDateAriaLabel}: ${internalDate.toA11YFormat()}`;\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLButtonElement>>(\n (e) => {\n onDayClick();\n onClick?.(e);\n },\n [onDayClick, onClick],\n );\n\n const { date: day } = internalDate.getComponentsLikeNumber();\n const caption = children ?? day;\n\n return (\n <button\n ref={ref}\n data-tid={CalendarDataTids.dayCell}\n aria-label={ariaLabel}\n tabIndex={-1}\n disabled={isDisabled}\n onClick={handleClick}\n className={cx(\n {\n [styles.day(theme)]: true,\n [styles.selected(theme)]: isSelected,\n [styles.weekend(theme)]: isWeekend,\n },\n className,\n )}\n {...getVisualStateDataAttributes({ selected: isSelected })}\n {...rest}\n >\n <span className={cx({ [styles.todayCaption(theme)]: isToday })}>{caption}</span>\n </button>\n );\n },\n ),\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,23 +19,19 @@ export var DayCellView = function DayCellView(props) {
|
|
|
19
19
|
var theme = useContext(ThemeContext);
|
|
20
20
|
var isDisabled = !CDS.isBetween(date, minDate, maxDate);
|
|
21
21
|
var humanDateString = InternalDateTransformer.dateToHumanString(date);
|
|
22
|
+
var dayClickHandler = useCallback(function () {
|
|
23
|
+
onDateClick == null || onDateClick(date);
|
|
24
|
+
}, [onDateClick, date]);
|
|
22
25
|
var dayProps = {
|
|
23
26
|
isToday: Boolean(today && CDS.isEqual(date, today)),
|
|
24
27
|
isSelected: Boolean(value && CDS.isEqual(date, value)),
|
|
25
28
|
isDisabled: isDisabled,
|
|
26
29
|
isWeekend: (_isHoliday = isHoliday == null ? void 0 : isHoliday(humanDateString, date.isWeekend)) != null ? _isHoliday : date.isWeekend,
|
|
27
|
-
date: humanDateString
|
|
30
|
+
date: humanDateString,
|
|
31
|
+
onDayClick: dayClickHandler
|
|
28
32
|
};
|
|
29
33
|
var dayElement = (_renderDay = renderDay == null ? void 0 : renderDay(dayProps)) != null ? _renderDay : /*#__PURE__*/React.createElement(CalendarDay, dayProps);
|
|
30
|
-
var customDayClickHandler = dayElement.props.onClick;
|
|
31
|
-
var dayClickHandler = useCallback(function (e) {
|
|
32
|
-
customDayClickHandler == null || customDayClickHandler(e);
|
|
33
|
-
onDateClick == null || onDateClick(date);
|
|
34
|
-
}, [customDayClickHandler, onDateClick, date]);
|
|
35
|
-
var dayElementWithClickHandler = /*#__PURE__*/React.cloneElement(dayElement, {
|
|
36
|
-
onClick: dayClickHandler
|
|
37
|
-
});
|
|
38
34
|
return /*#__PURE__*/React.createElement("div", {
|
|
39
35
|
className: styles.cell(theme)
|
|
40
|
-
},
|
|
36
|
+
}, dayElement);
|
|
41
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","_isHoliday","_renderDay","date","_useContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","isDisabled","isBetween","humanDateString","dateToHumanString","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","_isHoliday","_renderDay","date","_useContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","isDisabled","isBetween","humanDateString","dateToHumanString","dayClickHandler","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","onDayClick","dayElement","createElement","className","cell"],"sources":["DayCellView.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React, { useCallback, useContext } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\n\nimport { styles } from './DayCellView.styles';\nimport { CalendarContext } from './CalendarContext';\nimport type { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport type { CalendarDayProps } from './CalendarDay';\nimport { CalendarDay } from './CalendarDay';\n\nexport interface DayCellViewProps {\n date: DayCellViewModel;\n}\n\nexport const DayCellView = (props: DayCellViewProps) => {\n const { date } = props;\n const { value, minDate, maxDate, isHoliday, renderDay, today, onDateClick } = useContext(CalendarContext);\n const theme = useContext(ThemeContext);\n\n const isDisabled = !CDS.isBetween(date, minDate, maxDate);\n\n const humanDateString = InternalDateTransformer.dateToHumanString(date);\n\n const dayClickHandler = useCallback(() => {\n onDateClick?.(date);\n }, [onDateClick, date]);\n\n const dayProps: CalendarDayProps = {\n isToday: Boolean(today && CDS.isEqual(date, today)),\n isSelected: Boolean(value && CDS.isEqual(date, value)),\n isDisabled,\n isWeekend: isHoliday?.(humanDateString, date.isWeekend) ?? date.isWeekend,\n date: humanDateString,\n onDayClick: dayClickHandler,\n };\n\n const dayElement: ReactElement<CalendarDayProps> = renderDay?.(dayProps) ?? <CalendarDay {...dayProps} />;\n\n return <div className={styles.cell(theme)}>{dayElement}</div>;\n};\n"],"mappings":";AACA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;;AAEtD,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SAASC,uBAAuB,QAAQ,wCAAwC;;AAEhF,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,eAAe,QAAQ,mBAAmB;;AAEnD,OAAO,KAAKC,GAAG,MAAM,qBAAqB;;AAE1C,SAASC,WAAW,QAAQ,eAAe;;;;;;AAM3C,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAAuB,EAAK,KAAAC,UAAA,EAAAC,UAAA;EACtD,IAAQC,IAAI,GAAKH,KAAK,CAAdG,IAAI;EACZ,IAAAC,WAAA,GAA8EZ,UAAU,CAACI,eAAe,CAAC,CAAjGS,KAAK,GAAAD,WAAA,CAALC,KAAK,CAAEC,OAAO,GAAAF,WAAA,CAAPE,OAAO,CAAEC,OAAO,GAAAH,WAAA,CAAPG,OAAO,CAAEC,SAAS,GAAAJ,WAAA,CAATI,SAAS,CAAEC,SAAS,GAAAL,WAAA,CAATK,SAAS,CAAEC,KAAK,GAAAN,WAAA,CAALM,KAAK,CAAEC,WAAW,GAAAP,WAAA,CAAXO,WAAW;EACzE,IAAMC,KAAK,GAAGpB,UAAU,CAACC,YAAY,CAAC;;EAEtC,IAAMoB,UAAU,GAAG,CAAChB,GAAG,CAACiB,SAAS,CAACX,IAAI,EAAEG,OAAO,EAAEC,OAAO,CAAC;;EAEzD,IAAMQ,eAAe,GAAGrB,uBAAuB,CAACsB,iBAAiB,CAACb,IAAI,CAAC;;EAEvE,IAAMc,eAAe,GAAG1B,WAAW,CAAC,YAAM;IACxCoB,WAAW,YAAXA,WAAW,CAAGR,IAAI,CAAC;EACrB,CAAC,EAAE,CAACQ,WAAW,EAAER,IAAI,CAAC,CAAC;;EAEvB,IAAMe,QAA0B,GAAG;IACjCC,OAAO,EAAEC,OAAO,CAACV,KAAK,IAAIb,GAAG,CAACwB,OAAO,CAAClB,IAAI,EAAEO,KAAK,CAAC,CAAC;IACnDY,UAAU,EAAEF,OAAO,CAACf,KAAK,IAAIR,GAAG,CAACwB,OAAO,CAAClB,IAAI,EAAEE,KAAK,CAAC,CAAC;IACtDQ,UAAU,EAAVA,UAAU;IACVU,SAAS,GAAAtB,UAAA,GAAEO,SAAS,oBAATA,SAAS,CAAGO,eAAe,EAAEZ,IAAI,CAACoB,SAAS,CAAC,YAAAtB,UAAA,GAAIE,IAAI,CAACoB,SAAS;IACzEpB,IAAI,EAAEY,eAAe;IACrBS,UAAU,EAAEP;EACd,CAAC;;EAED,IAAMQ,UAA0C,IAAAvB,UAAA,GAAGO,SAAS,oBAATA,SAAS,CAAGS,QAAQ,CAAC,YAAAhB,UAAA,gBAAIZ,KAAA,CAAAoC,aAAA,CAAC5B,WAAW,EAAKoB,QAAW,CAAC;;EAEzG,oBAAO5B,KAAA,CAAAoC,aAAA,UAAKC,SAAS,EAAEhC,MAAM,CAACiC,IAAI,CAAChB,KAAK,CAAE,IAAEa,UAAgB,CAAC;AAC/D,CAAC","ignoreList":[]}
|
|
@@ -71,4 +71,43 @@ kind('Calendar', () => {
|
|
|
71
71
|
},
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
|
+
|
|
75
|
+
story('CalendarWithDateSelectMiddlePosition', ({ setStoryParameters }) => {
|
|
76
|
+
setStoryParameters({
|
|
77
|
+
skip: { "themes don't affect logic": { in: /^(?!\b(chrome2022|firefox2022)\b)/ } },
|
|
78
|
+
});
|
|
79
|
+
test('DateSelect months', async (context) => {
|
|
80
|
+
await delay(1000);
|
|
81
|
+
await context.webdriver
|
|
82
|
+
.actions({
|
|
83
|
+
bridge: true,
|
|
84
|
+
})
|
|
85
|
+
.click(context.webdriver.findElement({ css: '[data-comp-name~="Calendar"]' }))
|
|
86
|
+
.pause(1000)
|
|
87
|
+
.click(
|
|
88
|
+
context.webdriver.findElement({
|
|
89
|
+
css: '[data-tid="MonthView__month"]:first-child [data-tid="MonthView__headerMonth"] [data-tid="DateSelect__caption"]',
|
|
90
|
+
}),
|
|
91
|
+
)
|
|
92
|
+
.perform();
|
|
93
|
+
await context.matchImage(await context.takeScreenshot(), 'months');
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test('DateSelect years', async (context) => {
|
|
97
|
+
await delay(1000);
|
|
98
|
+
await context.webdriver
|
|
99
|
+
.actions({
|
|
100
|
+
bridge: true,
|
|
101
|
+
})
|
|
102
|
+
.click(context.webdriver.findElement({ css: '[data-comp-name~="Calendar"]' }))
|
|
103
|
+
.pause(1000)
|
|
104
|
+
.click(
|
|
105
|
+
context.webdriver.findElement({
|
|
106
|
+
css: '[data-comp-name~="MonthView"]:first-child [data-tid="MonthView__headerYear"] [data-tid="DateSelect__caption"]',
|
|
107
|
+
}),
|
|
108
|
+
)
|
|
109
|
+
.perform();
|
|
110
|
+
await context.matchImage(await context.takeScreenshot(), 'years');
|
|
111
|
+
});
|
|
112
|
+
});
|
|
74
113
|
});
|