@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/cjs/components/Calendar/CalendarDay.js +18 -2
  3. package/cjs/components/Calendar/CalendarDay.js.map +1 -1
  4. package/cjs/components/Calendar/DayCellView.js +7 -15
  5. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  6. package/cjs/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
  7. package/cjs/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
  8. package/cjs/components/DateInput/DateInput.js +12 -9
  9. package/cjs/components/DateInput/DateInput.js.map +1 -1
  10. package/cjs/components/DateRangePicker/DateRangePicker.d.ts +1 -1
  11. package/cjs/components/DateRangePicker/DateRangePicker.js +19 -15
  12. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  13. package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
  14. package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
  15. package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
  16. package/cjs/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
  17. package/cjs/components/Link/__creevey__/Link.creevey.mts +2 -2
  18. package/cjs/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
  19. package/cjs/components/Select/Select.d.ts +3 -0
  20. package/cjs/components/Select/Select.js +4 -1
  21. package/cjs/components/Select/Select.js.map +1 -1
  22. package/cjs/components/SidePage/SidePage.js +1 -1
  23. package/cjs/components/SidePage/SidePage.js.map +1 -1
  24. package/cjs/components/SidePage/SidePageHeader.js +4 -1
  25. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  26. package/cjs/components/Sticky/Sticky.d.ts +3 -0
  27. package/cjs/components/Sticky/Sticky.js +15 -1
  28. package/cjs/components/Sticky/Sticky.js.map +1 -1
  29. package/cjs/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
  30. package/cjs/internal/DateSelect/DateSelect.js +13 -2
  31. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  32. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  33. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  34. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  35. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  36. package/cjs/lib/getMenuPositions.d.ts +21 -1
  37. package/cjs/lib/getMenuPositions.js +45 -8
  38. package/cjs/lib/getMenuPositions.js.map +1 -1
  39. package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
  40. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
  41. package/components/Calendar/DayCellView/DayCellView.js +6 -10
  42. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  43. package/components/Calendar/__creevey__/Calendar.creevey.mts +39 -0
  44. package/components/ComboBox/__creevey__/ComboBox.creevey.mts +4 -0
  45. package/components/DateInput/DateInput/DateInput.js +12 -9
  46. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  47. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +10 -11
  48. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
  49. package/components/DateRangePicker/DateRangePicker.d.ts +1 -1
  50. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
  51. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
  52. package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
  53. package/components/DateRangePicker/__creevey__/DateRangePicker.creevey.mts +1 -1
  54. package/components/Link/__creevey__/Link.creevey.mts +2 -2
  55. package/components/MaskedInput/__creevey__/MaskedInput.creevey.mts +8 -3
  56. package/components/Select/Select/Select.js +3 -2
  57. package/components/Select/Select/Select.js.map +1 -1
  58. package/components/Select/Select.d.ts +3 -0
  59. package/components/SidePage/SidePage/SidePage.js +1 -1
  60. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  61. package/components/SidePage/SidePageHeader/SidePageHeader.js +6 -1
  62. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  63. package/components/Sticky/Sticky/Sticky.js +9 -1
  64. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  65. package/components/Sticky/Sticky.d.ts +3 -0
  66. package/components/Toggle/__creevey__/Toggle.creevey.mts +6 -2
  67. package/internal/DateSelect/DateSelect/DateSelect.js +2 -0
  68. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  69. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  70. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  71. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  72. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  73. package/lib/getMenuPositions/getMenuPositions.js +33 -4
  74. package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
  75. package/lib/getMenuPositions.d.ts +21 -1
  76. 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
- .click(context.webdriver.findElement({ css: `[data-tid="${ToggleDataTids.root}"]` }))
83
+ .move({
84
+ origin: context.webdriver.findElement({ css: `[data-tid="${ToggleDataTids.root}"]` }),
85
+ })
86
+ .pause(2000)
87
+ .click()
84
88
  .perform();
85
- await delay(1000);
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
- };var
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;;;;;;AAMO,IAAMC,0BAA+C,GAAAC,OAAA,CAAAD,0BAAA,GAAG;EAC7DE,sCAAsC,EAAE;AAC1C,CAAC;;AAEM,IAAMC,0BAA0B,GAAAF,OAAA,CAAAE,0BAAA,gBAAGC,cAAK,CAACC,aAAa,CAAsBL,0BAA0B,CAAC;;AAE9GG,0BAA0B,CAACG,WAAW,GAAG,4BAA4B;AACrEH,0BAA0B,CAACI,mBAAmB,GAAG,4BAA4B","ignoreList":[]}
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
- export declare function getMenuPositions(menuPos?: 'top' | 'middle' | 'bottom', menuAlign?: 'left' | 'right'): PopupPositionsType[];
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
- function getMenuPositions(
4
- menuPos,
5
- menuAlign)
6
- {
7
- if (menuAlign === undefined) {
8
- return menuPos === undefined ? ['bottom left', 'top left'] : [menuPos + " left"];
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 ["bottom " + menuAlign, "top " + menuAlign];
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\nexport function getMenuPositions(\n menuPos?: 'top' | 'middle' | 'bottom',\n menuAlign?: 'left' | 'right',\n): PopupPositionsType[] {\n if (menuAlign === undefined) {\n return menuPos === undefined ? ['bottom left', 'top left'] : [`${menuPos} left`];\n }\n\n if (menuPos === undefined) {\n return [`bottom ${menuAlign}`, `top ${menuAlign}`];\n }\n\n return [`${menuPos} ${menuAlign}`];\n}\n"],"mappings":";;AAEO,SAASA,gBAAgBA;AAC9BC,OAAqC;AACrCC,SAA4B;AACN;EACtB,IAAIA,SAAS,KAAKC,SAAS,EAAE;IAC3B,OAAOF,OAAO,KAAKE,SAAS,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAIF,OAAO,WAAQ;EAClF;;EAEA,IAAIA,OAAO,KAAKE,SAAS,EAAE;IACzB,OAAO,aAAWD,SAAS,WAAWA,SAAS,CAAG;EACpD;;EAEA,OAAO,CAAID,OAAO,SAAIC,SAAS,CAAG;AACpC","ignoreList":[]}
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;;AAE/C,SAASC,mBAAmB,QAAQ,sCAAsC;AAC1E,SAASC,YAAY,QAAQ,gCAAgC;AAC7D,SAASC,EAAE,QAAQ,2BAA2B;AAC9C,SAASC,sBAAsB,QAAQ,sBAAsB;AAC7D,SAASC,YAAY,QAAQ,6BAA6B;AAC1D,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,4BAA4B,QAAQ,iEAAiE;AAC9G,SAASC,iBAAiB,QAAQ,6BAA6B;;AAE/D,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,gBAAgB,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;AAmB7C;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,gBAAGX,IAAI;EAC7BQ,iBAAiB;IACf,aAAa;IACb,SAASG,WAAWA,CAAAC,IAAA;;;;;;;;;;;IAWlBC,GAAiC;IACjC,KAAAC,GAAA,EAAAC,IAAA,KAVEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO,CACPC,UAAU,GAAAL,IAAA,CAAVK,UAAU,CACVC,UAAU,GAAAN,IAAA,CAAVM,UAAU,CACVC,SAAS,GAAAP,IAAA,CAATO,SAAS,CACTC,IAAI,GAAAR,IAAA,CAAJQ,IAAI,CACJC,QAAQ,GAAAT,IAAA,CAARS,QAAQ,CACRC,SAAS,GAAAV,IAAA,CAATU,SAAS,CACNC,IAAI,GAAAC,6BAAA,CAAAZ,IAAA,EAAAa,SAAA;MAIT,IAAMC,KAAK,GAAG3B,UAAU,CAACG,YAAY,CAAC;;MAEtC,IAAAyB,WAAA,GAAqB5B,UAAU,CAACO,aAAa,CAAC,CAAtCsB,QAAQ,GAAAD,WAAA,CAARC,QAAQ;MAChB,IAAMC,YAAY,GAAG,IAAIxB,YAAY,CAAC,EAAEuB,QAAQ,EAARA,QAAQ,EAAEE,KAAK,EAAEV,IAAI,CAAC,CAAC,CAAC;;MAEhE,IAAMW,MAAM,GAAG9B,mBAAmB,CAAC,UAAU,EAAEG,sBAAsB,CAAC;MACtE,IAAM4B,SAAS,GAAMD,MAAM,CAACE,0BAA0B,UAAKJ,YAAY,CAACK,YAAY,CAAC,CAAG;;MAExF,IAAAC,qBAAA,GAAsBN,YAAY,CAACO,uBAAuB,CAAC,CAAC,CAA9CC,GAAG,GAAAF,qBAAA,CAATf,IAAI;MACZ,IAAMkB,OAAO,GAAGjB,QAAQ,WAARA,QAAQ,GAAIgB,GAAG;;MAE/B;QACEvC,KAAA,CAAAyC,aAAA,WAAAC,QAAA;UACE3B,GAAG,EAAEA,GAAI;UACT,YAAUH,gBAAgB,CAAC+B,OAAQ;UACnC,cAAYT,SAAU;UACtBU,QAAQ,EAAE,CAAC,CAAE;UACbC,QAAQ,EAAEzB,UAAW;UACrBI,SAAS,EAAEnB,EAAE,EAAAW,GAAA,OAAAA,GAAA;;UAERL,MAAM,CAAC4B,GAAG,CAACX,KAAK,CAAC,IAAG,IAAI,EAAAZ,GAAA;UACxBL,MAAM,CAACmC,QAAQ,CAAClB,KAAK,CAAC,IAAGT,UAAU,EAAAH,GAAA;UACnCL,MAAM,CAACoC,OAAO,CAACnB,KAAK,CAAC,IAAGP,SAAS,EAAAL,GAAA;;UAEpCQ;UACF,CAAE;QACEf,4BAA4B,CAAC,EAAEqC,QAAQ,EAAE3B,UAAU,CAAC,CAAC,CAAC;QACtDM,IAAI;;QAERzB,KAAA,CAAAyC,aAAA,WAAMjB,SAAS,EAAEnB,EAAE,EAAAY,IAAA,OAAAA,IAAA,CAAIN,MAAM,CAACqC,YAAY,CAACpB,KAAK,CAAC,IAAGV,OAAO,EAAAD,IAAA,CAAE,CAAE,IAAEuB,OAAc;QACzE,CAAC;;IAEb;EACF;AACF,CAAC","ignoreList":[]}
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
- }, dayElementWithClickHandler);
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","dayElement","createElement","customDayClickHandler","onClick","dayClickHandler","e","dayElementWithClickHandler","cloneElement","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 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 };\n\n const dayElement: ReactElement<CalendarDayProps> = renderDay?.(dayProps) ?? <CalendarDay {...dayProps} />;\n const customDayClickHandler = dayElement.props.onClick;\n\n const dayClickHandler = useCallback<NonNullable<typeof customDayClickHandler>>(\n (e) => {\n customDayClickHandler?.(e);\n onDateClick?.(date);\n },\n [customDayClickHandler, onDateClick, date],\n );\n\n const dayElementWithClickHandler = React.cloneElement<CalendarDayProps>(dayElement, {\n onClick: dayClickHandler,\n });\n\n return <div className={styles.cell(theme)}>{dayElementWithClickHandler}</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,QAA0B,GAAG;IACjCC,OAAO,EAAEC,OAAO,CAACT,KAAK,IAAIb,GAAG,CAACuB,OAAO,CAACjB,IAAI,EAAEO,KAAK,CAAC,CAAC;IACnDW,UAAU,EAAEF,OAAO,CAACd,KAAK,IAAIR,GAAG,CAACuB,OAAO,CAACjB,IAAI,EAAEE,KAAK,CAAC,CAAC;IACtDQ,UAAU,EAAVA,UAAU;IACVS,SAAS,GAAArB,UAAA,GAAEO,SAAS,oBAATA,SAAS,CAAGO,eAAe,EAAEZ,IAAI,CAACmB,SAAS,CAAC,YAAArB,UAAA,GAAIE,IAAI,CAACmB,SAAS;IACzEnB,IAAI,EAAEY;EACR,CAAC;;EAED,IAAMQ,UAA0C,IAAArB,UAAA,GAAGO,SAAS,oBAATA,SAAS,CAAGQ,QAAQ,CAAC,YAAAf,UAAA,gBAAIZ,KAAA,CAAAkC,aAAA,CAAC1B,WAAW,EAAKmB,QAAW,CAAC;EACzG,IAAMQ,qBAAqB,GAAGF,UAAU,CAACvB,KAAK,CAAC0B,OAAO;;EAEtD,IAAMC,eAAe,GAAGpC,WAAW;IACjC,UAACqC,CAAC,EAAK;MACLH,qBAAqB,YAArBA,qBAAqB,CAAGG,CAAC,CAAC;MAC1BjB,WAAW,YAAXA,WAAW,CAAGR,IAAI,CAAC;IACrB,CAAC;IACD,CAACsB,qBAAqB,EAAEd,WAAW,EAAER,IAAI;EAC3C,CAAC;;EAED,IAAM0B,0BAA0B,gBAAGvC,KAAK,CAACwC,YAAY,CAAmBP,UAAU,EAAE;IAClFG,OAAO,EAAEC;EACX,CAAC,CAAC;;EAEF,oBAAOrC,KAAA,CAAAkC,aAAA,UAAKO,SAAS,EAAEpC,MAAM,CAACqC,IAAI,CAACpB,KAAK,CAAE,IAAEiB,0BAAgC,CAAC;AAC/E,CAAC","ignoreList":[]}
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
  });
@@ -12,6 +12,10 @@ kind('ComboBox', () => {
12
12
  in: ['chrome2022', 'chrome2022Dark'],
13
13
  tests: ['hovered'],
14
14
  },
15
+ flacky: {
16
+ in: ['chrome2022Dark'],
17
+ tests: ['select'],
18
+ },
15
19
  },
16
20
  });
17
21