@skbkontur/react-ui 4.27.0 → 4.27.1

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 CHANGED
@@ -3,6 +3,19 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [4.27.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.27.0...@skbkontur/react-ui@4.27.1) (2024-12-24)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **Calendar, DatePicker:** fix click on disabled dates ([#3574](https://github.com/skbkontur/retail-ui/issues/3574)) ([5b6095a](https://github.com/skbkontur/retail-ui/commit/5b6095a984a8a6dad8f24bebd118699fda8076b2))
12
+ * **HideBodyVerticalScroll:** fix disorderly unmount and resize ([#3575](https://github.com/skbkontur/retail-ui/issues/3575)) ([eff2651](https://github.com/skbkontur/retail-ui/commit/eff2651915e3f8a2ed5d3adeede3385f075017b0))
13
+ * **Loader:** prevent unwanted activation ([#3576](https://github.com/skbkontur/retail-ui/issues/3576)) ([bcf7a22](https://github.com/skbkontur/retail-ui/commit/bcf7a22c58caa8f1dc00d4dc68f74e52a4dfddd0))
14
+
15
+
16
+
17
+
18
+
6
19
  # [4.27.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.26.0...@skbkontur/react-ui@4.27.0) (2024-09-30)
7
20
 
8
21
 
@@ -18,25 +18,32 @@ var DayCellView = function DayCellView(props) {var _isHoliday, _renderDay;
18
18
  var _useContext = (0, _react.useContext)(_CalendarContext.CalendarContext),value = _useContext.value,minDate = _useContext.minDate,maxDate = _useContext.maxDate,isHoliday = _useContext.isHoliday,renderDay = _useContext.renderDay,today = _useContext.today,onDateClick = _useContext.onDateClick;
19
19
  var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
20
20
 
21
- var handleClick = function handleClick() {
22
- onDateClick == null ? void 0 : onDateClick(date);
23
- };
21
+ var isDisabled = !CDS.isBetween(date, minDate, maxDate);
24
22
 
25
23
  var humanDateString = _InternalDateTransformer.InternalDateTransformer.dateToHumanString(date);
26
24
 
27
25
  var dayProps = {
28
26
  isToday: Boolean(today && CDS.isEqual(date, today)),
29
27
  isSelected: Boolean(value && CDS.isEqual(date, value)),
30
- isDisabled: !CDS.isBetween(date, minDate, maxDate),
28
+ isDisabled: isDisabled,
31
29
  isWeekend: (_isHoliday = isHoliday == null ? void 0 : isHoliday(humanDateString, date.isWeekend)) != null ? _isHoliday : date.isWeekend,
32
30
  date: humanDateString };
33
31
 
34
32
 
35
33
  var dayElement = (_renderDay = renderDay == null ? void 0 : renderDay(dayProps)) != null ? _renderDay : /*#__PURE__*/_react.default.createElement(_CalendarDay.CalendarDay, dayProps);
34
+ var customDayClickHandler = dayElement.props.onClick;
35
+
36
+ var dayClickHandler = (0, _react.useCallback)(
37
+ function (e) {
38
+ customDayClickHandler == null ? void 0 : customDayClickHandler(e);
39
+ onDateClick == null ? void 0 : onDateClick(date);
40
+ },
41
+ [customDayClickHandler, onDateClick, date]);
42
+
36
43
 
37
- return /*#__PURE__*/(
38
- _react.default.createElement("div", { onClick: handleClick, className: _DayCellView.styles.cell(theme) },
39
- dayElement));
44
+ var dayElementWithClickHandler = /*#__PURE__*/_react.default.cloneElement(dayElement, {
45
+ onClick: dayClickHandler });
40
46
 
41
47
 
48
+ return /*#__PURE__*/_react.default.createElement("div", { className: _DayCellView.styles.cell(theme) }, dayElementWithClickHandler);
42
49
  };exports.DayCellView = DayCellView;
@@ -1 +1 @@
1
- {"version":3,"sources":["DayCellView.tsx"],"names":["DayCellView","props","date","CalendarContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","ThemeContext","handleClick","humanDateString","InternalDateTransformer","dateToHumanString","dayProps","isToday","Boolean","CDS","isEqual","isSelected","isDisabled","isBetween","isWeekend","dayElement","styles","cell"],"mappings":"mKAAA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;AAMO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA6B;AACtD,MAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;AACA,oBAA8E,uBAAWC,gCAAX,CAA9E,CAAQC,KAAR,eAAQA,KAAR,CAAeC,OAAf,eAAeA,OAAf,CAAwBC,OAAxB,eAAwBA,OAAxB,CAAiCC,SAAjC,eAAiCA,SAAjC,CAA4CC,SAA5C,eAA4CA,SAA5C,CAAuDC,KAAvD,eAAuDA,KAAvD,CAA8DC,WAA9D,eAA8DA,WAA9D;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA,MAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBH,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAGR,IAAH,CAAX;AACD,GAFD;;AAIA,MAAMY,eAAe,GAAGC,iDAAwBC,iBAAxB,CAA0Cd,IAA1C,CAAxB;;AAEA,MAAMe,QAA0B,GAAG;AACjCC,IAAAA,OAAO,EAAEC,OAAO,CAACV,KAAK,IAAIW,GAAG,CAACC,OAAJ,CAAYnB,IAAZ,EAAkBO,KAAlB,CAAV,CADiB;AAEjCa,IAAAA,UAAU,EAAEH,OAAO,CAACf,KAAK,IAAIgB,GAAG,CAACC,OAAJ,CAAYnB,IAAZ,EAAkBE,KAAlB,CAAV,CAFc;AAGjCmB,IAAAA,UAAU,EAAE,CAACH,GAAG,CAACI,SAAJ,CAActB,IAAd,EAAoBG,OAApB,EAA6BC,OAA7B,CAHoB;AAIjCmB,IAAAA,SAAS,gBAAElB,SAAF,oBAAEA,SAAS,CAAGO,eAAH,EAAoBZ,IAAI,CAACuB,SAAzB,CAAX,yBAAkDvB,IAAI,CAACuB,SAJ/B;AAKjCvB,IAAAA,IAAI,EAAEY,eAL2B,EAAnC;;;AAQA,MAAMY,UAAU,iBAAGlB,SAAH,oBAAGA,SAAS,CAAGS,QAAH,CAAZ,sCAA4B,6BAAC,wBAAD,EAAiBA,QAAjB,CAA5C;;AAEA;AACE,0CAAK,OAAO,EAAEJ,WAAd,EAA2B,SAAS,EAAEc,oBAAOC,IAAP,CAAYjB,KAAZ,CAAtC;AACGe,IAAAA,UADH,CADF;;;AAKD,CA1BM,C","sourcesContent":["import React, { 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 { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDay, CalendarDayProps } 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 handleClick = () => {\n onDateClick?.(date);\n };\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: !CDS.isBetween(date, minDate, maxDate),\n isWeekend: isHoliday?.(humanDateString, date.isWeekend) ?? date.isWeekend,\n date: humanDateString,\n };\n\n const dayElement = renderDay?.(dayProps) ?? <CalendarDay {...dayProps} />;\n\n return (\n <div onClick={handleClick} className={styles.cell(theme)}>\n {dayElement}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["DayCellView.tsx"],"names":["DayCellView","props","date","CalendarContext","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","ThemeContext","isDisabled","CDS","isBetween","humanDateString","InternalDateTransformer","dateToHumanString","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","dayElement","customDayClickHandler","onClick","dayClickHandler","e","dayElementWithClickHandler","React","cloneElement","styles","cell"],"mappings":"mKAAA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;AAMO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA6B;AACtD,MAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;AACA,oBAA8E,uBAAWC,gCAAX,CAA9E,CAAQC,KAAR,eAAQA,KAAR,CAAeC,OAAf,eAAeA,OAAf,CAAwBC,OAAxB,eAAwBA,OAAxB,CAAiCC,SAAjC,eAAiCA,SAAjC,CAA4CC,SAA5C,eAA4CA,SAA5C,CAAuDC,KAAvD,eAAuDA,KAAvD,CAA8DC,WAA9D,eAA8DA,WAA9D;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;;AAEA,MAAMC,UAAU,GAAG,CAACC,GAAG,CAACC,SAAJ,CAAcb,IAAd,EAAoBG,OAApB,EAA6BC,OAA7B,CAApB;;AAEA,MAAMU,eAAe,GAAGC,iDAAwBC,iBAAxB,CAA0ChB,IAA1C,CAAxB;;AAEA,MAAMiB,QAA0B,GAAG;AACjCC,IAAAA,OAAO,EAAEC,OAAO,CAACZ,KAAK,IAAIK,GAAG,CAACQ,OAAJ,CAAYpB,IAAZ,EAAkBO,KAAlB,CAAV,CADiB;AAEjCc,IAAAA,UAAU,EAAEF,OAAO,CAACjB,KAAK,IAAIU,GAAG,CAACQ,OAAJ,CAAYpB,IAAZ,EAAkBE,KAAlB,CAAV,CAFc;AAGjCS,IAAAA,UAAU,EAAVA,UAHiC;AAIjCW,IAAAA,SAAS,gBAAEjB,SAAF,oBAAEA,SAAS,CAAGS,eAAH,EAAoBd,IAAI,CAACsB,SAAzB,CAAX,yBAAkDtB,IAAI,CAACsB,SAJ/B;AAKjCtB,IAAAA,IAAI,EAAEc,eAL2B,EAAnC;;;AAQA,MAAMS,UAA0C,iBAAGjB,SAAH,oBAAGA,SAAS,CAAGW,QAAH,CAAZ,sCAA4B,6BAAC,wBAAD,EAAiBA,QAAjB,CAA5E;AACA,MAAMO,qBAAqB,GAAGD,UAAU,CAACxB,KAAX,CAAiB0B,OAA/C;;AAEA,MAAMC,eAAe,GAAG;AACtB,YAACC,CAAD,EAAO;AACLH,IAAAA,qBAAqB,QAArB,YAAAA,qBAAqB,CAAGG,CAAH,CAArB;AACAnB,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAGR,IAAH,CAAX;AACD,GAJqB;AAKtB,GAACwB,qBAAD,EAAwBhB,WAAxB,EAAqCR,IAArC,CALsB,CAAxB;;;AAQA,MAAM4B,0BAA0B,gBAAGC,eAAMC,YAAN,CAAqCP,UAArC,EAAiD;AAClFE,IAAAA,OAAO,EAAEC,eADyE,EAAjD,CAAnC;;;AAIA,sBAAO,sCAAK,SAAS,EAAEK,oBAAOC,IAAP,CAAYvB,KAAZ,CAAhB,IAAqCmB,0BAArC,CAAP;AACD,CAjCM,C","sourcesContent":["import React, { ReactElement, 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 { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDay, CalendarDayProps } 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"]}
@@ -8,8 +8,8 @@ export declare class HideBodyVerticalScroll extends React.Component {
8
8
  componentDidUpdate(): void;
9
9
  componentWillUnmount(): void;
10
10
  render(): null;
11
- private updateScrollVisibility;
12
- private hideScroll;
13
- private attachStyle;
11
+ static updateScrollVisibility: () => void;
12
+ static hideScroll: () => void;
13
+ static attachStyle: (element: HTMLElement, className: string) => () => void;
14
14
  private restoreStyles;
15
15
  }
@@ -41,34 +41,34 @@ HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {(0, _inherits
41
41
 
42
42
 
43
43
 
44
- updateScrollVisibility = function () {
45
- var shouldHide = !disposeDocumentStyle;
46
- if (shouldHide) {
47
- _this.hideScroll();
48
- }
49
- };_this.
50
44
 
51
- hideScroll = function () {
52
- if (!(0, _globalObject.isBrowser)(_globalObject.globalObject)) {
53
- return;
54
- }
55
- var documentElement = _globalObject.globalObject.document.documentElement;
56
- var clientHeight = documentElement.clientHeight,scrollHeight = documentElement.scrollHeight;
57
- var documentComputedStyle = _globalObject.globalObject.getComputedStyle(documentElement);
58
- var scrollbarConst = _globalObject.globalObject.getComputedStyle(documentElement).overflowY === 'scroll';
59
- var scrollWidth = clientHeight < scrollHeight || scrollbarConst ? (0, _getScrollWidth.getScrollWidth)() : 0;
60
- var documentMargin = parseFloat(documentComputedStyle.marginRight || '');
61
- var className = generateDocumentStyle(documentMargin + scrollWidth);
62
-
63
- disposeDocumentStyle = _this.attachStyle(documentElement, className);
64
- };_this.
65
-
66
- attachStyle = function (element, className) {
67
- element.classList.add(className);
68
- return function () {
69
- element.classList.remove(className);
70
- };
71
- };_this.
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
72
 
73
73
  restoreStyles = function () {
74
74
  if (disposeDocumentStyle) {
@@ -79,7 +79,7 @@ HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {(0, _inherits
79
79
  _globalObject.globalObject.document.documentElement.scrollTop = _this.initialScroll;
80
80
  }
81
81
  }
82
- };return _this;}var _proto = HideBodyVerticalScroll.prototype;_proto.componentDidMount = function componentDidMount() {var counter = VerticalScrollCounter.increment();if (counter === 1) {var _globalObject$documen;this.master = true;this.initialScroll = (_globalObject$documen = _globalObject.globalObject.document) != null && _globalObject$documen.documentElement ? _globalObject.globalObject.document.documentElement.scrollTop : 0;this.updateScrollVisibility();_globalObject.globalObject.addEventListener == null ? void 0 : _globalObject.globalObject.addEventListener('resize', this.updateScrollVisibility);}};_proto.componentDidUpdate = function componentDidUpdate() {if (this.master) {this.updateScrollVisibility();}};_proto.componentWillUnmount = function componentWillUnmount() {var counter = VerticalScrollCounter.decrement();if (counter === 0) {this.restoreStyles();_globalObject.globalObject.removeEventListener == null ? void 0 : _globalObject.globalObject.removeEventListener('resize', this.updateScrollVisibility);}};_proto.render = function render() {return null;};return HideBodyVerticalScroll;}(_react.default.Component);exports.HideBodyVerticalScroll = HideBodyVerticalScroll;HideBodyVerticalScroll.__KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';HideBodyVerticalScroll.displayName = 'HideBodyVerticalScroll';var
82
+ };return _this;}var _proto = HideBodyVerticalScroll.prototype;_proto.componentDidMount = function componentDidMount() {var counter = VerticalScrollCounter.increment();if (counter === 1) {var _globalObject$documen;this.master = true;this.initialScroll = (_globalObject$documen = _globalObject.globalObject.document) != null && _globalObject$documen.documentElement ? _globalObject.globalObject.document.documentElement.scrollTop : 0;HideBodyVerticalScroll.updateScrollVisibility();_globalObject.globalObject.addEventListener == null ? void 0 : _globalObject.globalObject.addEventListener('resize', HideBodyVerticalScroll.updateScrollVisibility);}};_proto.componentDidUpdate = function componentDidUpdate() {if (this.master) {HideBodyVerticalScroll.updateScrollVisibility();}};_proto.componentWillUnmount = function componentWillUnmount() {var counter = VerticalScrollCounter.decrement();if (counter === 0) {this.restoreStyles();_globalObject.globalObject.removeEventListener == null ? void 0 : _globalObject.globalObject.removeEventListener('resize', HideBodyVerticalScroll.updateScrollVisibility);}};_proto.render = function render() {return null;};return HideBodyVerticalScroll;}(_react.default.Component);exports.HideBodyVerticalScroll = HideBodyVerticalScroll;HideBodyVerticalScroll.__KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';HideBodyVerticalScroll.displayName = 'HideBodyVerticalScroll';HideBodyVerticalScroll.updateScrollVisibility = function () {var shouldHide = !disposeDocumentStyle;if (shouldHide) {HideBodyVerticalScroll.hideScroll();}};HideBodyVerticalScroll.hideScroll = function () {if (!(0, _globalObject.isBrowser)(_globalObject.globalObject)) {return;}var documentElement = _globalObject.globalObject.document.documentElement;var clientHeight = documentElement.clientHeight,scrollHeight = documentElement.scrollHeight;var documentComputedStyle = _globalObject.globalObject.getComputedStyle(documentElement);var scrollbarConst = _globalObject.globalObject.getComputedStyle(documentElement).overflowY === 'scroll';var scrollWidth = clientHeight < scrollHeight || scrollbarConst ? (0, _getScrollWidth.getScrollWidth)() : 0;var documentMargin = parseFloat(documentComputedStyle.marginRight || '');var className = generateDocumentStyle(documentMargin + scrollWidth);disposeDocumentStyle = HideBodyVerticalScroll.attachStyle(documentElement, className);};HideBodyVerticalScroll.attachStyle = function (element, className) {element.classList.add(className);return function () {element.classList.remove(className);};};var
83
83
 
84
84
 
85
85
  VerticalScrollCounter = function VerticalScrollCounter() {};VerticalScrollCounter.
@@ -1 +1 @@
1
- {"version":3,"sources":["HideBodyVerticalScroll.tsx"],"names":["disposeDocumentStyle","HideBodyVerticalScroll","initialScroll","master","updateScrollVisibility","shouldHide","hideScroll","globalObject","documentElement","document","clientHeight","scrollHeight","documentComputedStyle","getComputedStyle","scrollbarConst","overflowY","scrollWidth","documentMargin","parseFloat","marginRight","className","generateDocumentStyle","attachStyle","element","classList","add","remove","restoreStyles","scrollTop","componentDidMount","counter","VerticalScrollCounter","increment","addEventListener","componentDidUpdate","componentWillUnmount","decrement","removeEventListener","render","React","Component","__KONTUR_REACT_UI__","displayName","RetailUIVerticalScrollCounter","get","css"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { css } from '../../lib/theming/Emotion';\n\nlet disposeDocumentStyle: (() => void) | null = null;\n\nexport class HideBodyVerticalScroll extends React.Component {\n public static __KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';\n public static displayName = 'HideBodyVerticalScroll';\n\n private initialScroll = 0;\n private master = false;\n\n public componentDidMount() {\n const counter = VerticalScrollCounter.increment();\n if (counter === 1) {\n this.master = true;\n this.initialScroll = globalObject.document?.documentElement ? globalObject.document.documentElement.scrollTop : 0;\n this.updateScrollVisibility();\n globalObject.addEventListener?.('resize', this.updateScrollVisibility);\n }\n }\n\n public componentDidUpdate() {\n if (this.master) {\n this.updateScrollVisibility();\n }\n }\n\n public componentWillUnmount() {\n const counter = VerticalScrollCounter.decrement();\n if (counter === 0) {\n this.restoreStyles();\n globalObject.removeEventListener?.('resize', this.updateScrollVisibility);\n }\n }\n\n public render() {\n return null;\n }\n\n private updateScrollVisibility = () => {\n const shouldHide = !disposeDocumentStyle;\n if (shouldHide) {\n this.hideScroll();\n }\n };\n\n private hideScroll = () => {\n if (!isBrowser(globalObject)) {\n return;\n }\n const { documentElement } = globalObject.document;\n const { clientHeight, scrollHeight } = documentElement;\n const documentComputedStyle = globalObject.getComputedStyle(documentElement);\n const scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';\n const scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;\n const documentMargin = parseFloat(documentComputedStyle.marginRight || '');\n const className = generateDocumentStyle(documentMargin + scrollWidth);\n\n disposeDocumentStyle = this.attachStyle(documentElement, className);\n };\n\n private attachStyle = (element: HTMLElement, className: string) => {\n element.classList.add(className);\n return () => {\n element.classList.remove(className);\n };\n };\n\n private restoreStyles = () => {\n if (disposeDocumentStyle) {\n disposeDocumentStyle();\n disposeDocumentStyle = null;\n\n if (globalObject.document) {\n globalObject.document.documentElement.scrollTop = this.initialScroll;\n }\n }\n };\n}\n\nclass VerticalScrollCounter {\n public static increment = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter + 1);\n };\n\n public static decrement = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter - 1);\n };\n\n public static get = (): number => {\n return globalObject.RetailUIVerticalScrollCounter || 0;\n };\n}\n\nfunction generateDocumentStyle(documentMargin: number) {\n return css`\n overflow: hidden !important;\n margin-right: ${documentMargin}px !important;\n height: 100%;\n `;\n}\n"]}
1
+ {"version":3,"sources":["HideBodyVerticalScroll.tsx"],"names":["disposeDocumentStyle","HideBodyVerticalScroll","initialScroll","master","restoreStyles","globalObject","document","documentElement","scrollTop","componentDidMount","counter","VerticalScrollCounter","increment","updateScrollVisibility","addEventListener","componentDidUpdate","componentWillUnmount","decrement","removeEventListener","render","React","Component","__KONTUR_REACT_UI__","displayName","shouldHide","hideScroll","clientHeight","scrollHeight","documentComputedStyle","getComputedStyle","scrollbarConst","overflowY","scrollWidth","documentMargin","parseFloat","marginRight","className","generateDocumentStyle","attachStyle","element","classList","add","remove","RetailUIVerticalScrollCounter","get","css"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { css } from '../../lib/theming/Emotion';\n\nlet disposeDocumentStyle: (() => void) | null = null;\n\nexport class HideBodyVerticalScroll extends React.Component {\n public static __KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';\n public static displayName = 'HideBodyVerticalScroll';\n\n private initialScroll = 0;\n private master = false;\n\n public componentDidMount() {\n const counter = VerticalScrollCounter.increment();\n if (counter === 1) {\n this.master = true;\n this.initialScroll = globalObject.document?.documentElement ? globalObject.document.documentElement.scrollTop : 0;\n HideBodyVerticalScroll.updateScrollVisibility();\n globalObject.addEventListener?.('resize', HideBodyVerticalScroll.updateScrollVisibility);\n }\n }\n\n public componentDidUpdate() {\n if (this.master) {\n HideBodyVerticalScroll.updateScrollVisibility();\n }\n }\n\n public componentWillUnmount() {\n const counter = VerticalScrollCounter.decrement();\n if (counter === 0) {\n this.restoreStyles();\n globalObject.removeEventListener?.('resize', HideBodyVerticalScroll.updateScrollVisibility);\n }\n }\n\n public render() {\n return null;\n }\n\n public static updateScrollVisibility = () => {\n const shouldHide = !disposeDocumentStyle;\n if (shouldHide) {\n HideBodyVerticalScroll.hideScroll();\n }\n };\n\n public static hideScroll = () => {\n if (!isBrowser(globalObject)) {\n return;\n }\n const { documentElement } = globalObject.document;\n const { clientHeight, scrollHeight } = documentElement;\n const documentComputedStyle = globalObject.getComputedStyle(documentElement);\n const scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';\n const scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;\n const documentMargin = parseFloat(documentComputedStyle.marginRight || '');\n const className = generateDocumentStyle(documentMargin + scrollWidth);\n\n disposeDocumentStyle = HideBodyVerticalScroll.attachStyle(documentElement, className);\n };\n\n public static attachStyle = (element: HTMLElement, className: string) => {\n element.classList.add(className);\n return () => {\n element.classList.remove(className);\n };\n };\n\n private restoreStyles = () => {\n if (disposeDocumentStyle) {\n disposeDocumentStyle();\n disposeDocumentStyle = null;\n\n if (globalObject.document) {\n globalObject.document.documentElement.scrollTop = this.initialScroll;\n }\n }\n };\n}\n\nclass VerticalScrollCounter {\n public static increment = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter + 1);\n };\n\n public static decrement = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter - 1);\n };\n\n public static get = (): number => {\n return globalObject.RetailUIVerticalScrollCounter || 0;\n };\n}\n\nfunction generateDocumentStyle(documentMargin: number) {\n return css`\n overflow: hidden !important;\n margin-right: ${documentMargin}px !important;\n height: 100%;\n `;\n}\n"]}
@@ -49,6 +49,10 @@ function TaskWithDelayAndMinimalDuration(initialValues) {var _this = this;this.i
49
49
 
50
50
  _this.isTaskActive = true;
51
51
 
52
+ if (_this.timeoutBeforeTaskStop) {
53
+ return;
54
+ }
55
+
52
56
  if (_this.timeoutBeforeTaskStart) {
53
57
  _this.clearTimeoutBeforeTaskStart();
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["taskWithDelayAndMinimalDuration.ts"],"names":["TaskWithDelayAndMinimalDuration","initialValues","isTaskActive","setTimeoutBeforeTaskStart","timeoutBeforeTaskStart","globalObject","setTimeout","taskParams","taskStartCallback","clearTimeoutBeforeTaskStart","setTimeoutBeforeTaskStop","delayBeforeTaskStart","timeoutBeforeTaskStop","taskStopCallback","clearTimeoutBeforeTaskStop","durationOfTask","clearTimeout","start","update","updateData","stop","clearTask"],"mappings":"uQAAA,wD;;;;;;;;;AASaA,+B;;;;;;AAMX,yCAAYC,aAAZ,EAAiE,uBAFzDC,YAEyD,GAF1C,KAE0C;;;;AAIzDC,EAAAA,yBAJyD,GAI7B,YAAM;AACxC,IAAA,KAAI,CAACC,sBAAL,GAA8BC,2BAAaC,UAAb,CAAwB,YAAM;AAC1D,MAAA,KAAI,CAACJ,YAAL,IAAqB,KAAI,CAACK,UAAL,CAAgBC,iBAAhB,EAArB;AACA,MAAA,KAAI,CAACC,2BAAL;AACA,MAAA,KAAI,CAACC,wBAAL;AACD,KAJ6B,EAI3B,KAAI,CAACH,UAAL,CAAgBI,oBAJW,CAA9B;AAKD,GAVgE;;AAYzDD,EAAAA,wBAZyD,GAY9B,YAAM;AACvC,IAAA,KAAI,CAACE,qBAAL,GAA6BP,2BAAaC,UAAb,CAAwB,YAAM;AACzD,OAAC,KAAI,CAACJ,YAAN,IAAsB,KAAI,CAACK,UAAL,CAAgBM,gBAAhB,EAAtB;AACA,MAAA,KAAI,CAACC,0BAAL;AACD,KAH4B,EAG1B,KAAI,CAACP,UAAL,CAAgBQ,cAHU,CAA7B;AAID,GAjBgE;;AAmBzDN,EAAAA,2BAnByD,GAmB3B,YAAM;AAC1C,IAAA,KAAI,CAACL,sBAAL,IAA+BC,2BAAaW,YAAb,CAA0B,KAAI,CAACZ,sBAA/B,CAA/B;AACA,IAAA,KAAI,CAACA,sBAAL,GAA8B,IAA9B;AACD,GAtBgE;;AAwBzDU,EAAAA,0BAxByD,GAwB5B,YAAM;AACzC,IAAA,KAAI,CAACF,qBAAL,IAA8BP,2BAAaW,YAAb,CAA0B,KAAI,CAACJ,qBAA/B,CAA9B;AACA,IAAA,KAAI,CAACA,qBAAL,GAA6B,IAA7B;AACD,GA3BgE;;AA6B1DK,EAAAA,KA7B0D,GA6BlD,YAAM;AACnB,QAAI,KAAI,CAACf,YAAT,EAAuB;AACrB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,IAApB;;AAEA,QAAI,KAAI,CAACE,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACK,2BAAL;AACD;;AAED,IAAA,KAAI,CAACN,yBAAL;AACD,GAzCgE;;AA2C1De,EAAAA,MA3C0D,GA2CjD,UAACC,UAAD,EAA+D;AAC7E,IAAA,KAAI,CAACZ,UAAL,8BAAuB,KAAI,CAACA,UAA5B,EAA2CY,UAA3C;AACD,GA7CgE;;AA+C1DC,EAAAA,IA/C0D,GA+CnD,YAAM;AAClB,QAAI,CAAC,KAAI,CAAClB,YAAV,EAAwB;AACtB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,KAApB;;AAEA,QAAI,CAAC,KAAI,CAACE,sBAAN,IAAgC,CAAC,KAAI,CAACQ,qBAA1C,EAAiE;AAC/D,MAAA,KAAI,CAACL,UAAL,CAAgBM,gBAAhB;AACD;;AAED,QAAI,KAAI,CAACT,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACK,2BAAL;AACD;AACF,GA7DgE;;AA+D1DY,EAAAA,SA/D0D,GA+D9C,YAAM;AACvB,IAAA,KAAI,CAACnB,YAAL,GAAoB,KAApB;AACA,IAAA,KAAI,CAACO,2BAAL;AACA,IAAA,KAAI,CAACK,0BAAL;AACD,GAnEgE,CAC/D,KAAKP,UAAL,GAAkBN,aAAlB,CACD,C","sourcesContent":["import { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nexport interface TaskWithDelayAndMinimalDurationProps {\n delayBeforeTaskStart: number;\n durationOfTask: number;\n taskStartCallback: () => void;\n taskStopCallback: () => void;\n}\n\nexport class TaskWithDelayAndMinimalDuration {\n private timeoutBeforeTaskStart: SafeTimer;\n private timeoutBeforeTaskStop: SafeTimer;\n private taskParams: TaskWithDelayAndMinimalDurationProps;\n private isTaskActive = false;\n\n constructor(initialValues: TaskWithDelayAndMinimalDurationProps) {\n this.taskParams = initialValues;\n }\n\n private setTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart = globalObject.setTimeout(() => {\n this.isTaskActive && this.taskParams.taskStartCallback();\n this.clearTimeoutBeforeTaskStart();\n this.setTimeoutBeforeTaskStop();\n }, this.taskParams.delayBeforeTaskStart);\n };\n\n private setTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop = globalObject.setTimeout(() => {\n !this.isTaskActive && this.taskParams.taskStopCallback();\n this.clearTimeoutBeforeTaskStop();\n }, this.taskParams.durationOfTask);\n };\n\n private clearTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart && globalObject.clearTimeout(this.timeoutBeforeTaskStart);\n this.timeoutBeforeTaskStart = null;\n };\n\n private clearTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop && globalObject.clearTimeout(this.timeoutBeforeTaskStop);\n this.timeoutBeforeTaskStop = null;\n };\n\n public start = () => {\n if (this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = true;\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n\n this.setTimeoutBeforeTaskStart();\n };\n\n public update = (updateData: Partial<TaskWithDelayAndMinimalDurationProps>) => {\n this.taskParams = { ...this.taskParams, ...updateData };\n };\n\n public stop = () => {\n if (!this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = false;\n\n if (!this.timeoutBeforeTaskStart && !this.timeoutBeforeTaskStop) {\n this.taskParams.taskStopCallback();\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n };\n\n public clearTask = () => {\n this.isTaskActive = false;\n this.clearTimeoutBeforeTaskStart();\n this.clearTimeoutBeforeTaskStop();\n };\n}\n"]}
1
+ {"version":3,"sources":["taskWithDelayAndMinimalDuration.ts"],"names":["TaskWithDelayAndMinimalDuration","initialValues","isTaskActive","setTimeoutBeforeTaskStart","timeoutBeforeTaskStart","globalObject","setTimeout","taskParams","taskStartCallback","clearTimeoutBeforeTaskStart","setTimeoutBeforeTaskStop","delayBeforeTaskStart","timeoutBeforeTaskStop","taskStopCallback","clearTimeoutBeforeTaskStop","durationOfTask","clearTimeout","start","update","updateData","stop","clearTask"],"mappings":"uQAAA,wD;;;;;;;;;AASaA,+B;;;;;;AAMX,yCAAYC,aAAZ,EAAiE,uBAFzDC,YAEyD,GAF1C,KAE0C;;;;AAIzDC,EAAAA,yBAJyD,GAI7B,YAAM;AACxC,IAAA,KAAI,CAACC,sBAAL,GAA8BC,2BAAaC,UAAb,CAAwB,YAAM;AAC1D,MAAA,KAAI,CAACJ,YAAL,IAAqB,KAAI,CAACK,UAAL,CAAgBC,iBAAhB,EAArB;AACA,MAAA,KAAI,CAACC,2BAAL;AACA,MAAA,KAAI,CAACC,wBAAL;AACD,KAJ6B,EAI3B,KAAI,CAACH,UAAL,CAAgBI,oBAJW,CAA9B;AAKD,GAVgE;;AAYzDD,EAAAA,wBAZyD,GAY9B,YAAM;AACvC,IAAA,KAAI,CAACE,qBAAL,GAA6BP,2BAAaC,UAAb,CAAwB,YAAM;AACzD,OAAC,KAAI,CAACJ,YAAN,IAAsB,KAAI,CAACK,UAAL,CAAgBM,gBAAhB,EAAtB;AACA,MAAA,KAAI,CAACC,0BAAL;AACD,KAH4B,EAG1B,KAAI,CAACP,UAAL,CAAgBQ,cAHU,CAA7B;AAID,GAjBgE;;AAmBzDN,EAAAA,2BAnByD,GAmB3B,YAAM;AAC1C,IAAA,KAAI,CAACL,sBAAL,IAA+BC,2BAAaW,YAAb,CAA0B,KAAI,CAACZ,sBAA/B,CAA/B;AACA,IAAA,KAAI,CAACA,sBAAL,GAA8B,IAA9B;AACD,GAtBgE;;AAwBzDU,EAAAA,0BAxByD,GAwB5B,YAAM;AACzC,IAAA,KAAI,CAACF,qBAAL,IAA8BP,2BAAaW,YAAb,CAA0B,KAAI,CAACJ,qBAA/B,CAA9B;AACA,IAAA,KAAI,CAACA,qBAAL,GAA6B,IAA7B;AACD,GA3BgE;;AA6B1DK,EAAAA,KA7B0D,GA6BlD,YAAM;AACnB,QAAI,KAAI,CAACf,YAAT,EAAuB;AACrB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,IAApB;;AAEA,QAAI,KAAI,CAACU,qBAAT,EAAgC;AAC9B;AACD;;AAED,QAAI,KAAI,CAACR,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACK,2BAAL;AACD;;AAED,IAAA,KAAI,CAACN,yBAAL;AACD,GA7CgE;;AA+C1De,EAAAA,MA/C0D,GA+CjD,UAACC,UAAD,EAA+D;AAC7E,IAAA,KAAI,CAACZ,UAAL,8BAAuB,KAAI,CAACA,UAA5B,EAA2CY,UAA3C;AACD,GAjDgE;;AAmD1DC,EAAAA,IAnD0D,GAmDnD,YAAM;AAClB,QAAI,CAAC,KAAI,CAAClB,YAAV,EAAwB;AACtB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,KAApB;;AAEA,QAAI,CAAC,KAAI,CAACE,sBAAN,IAAgC,CAAC,KAAI,CAACQ,qBAA1C,EAAiE;AAC/D,MAAA,KAAI,CAACL,UAAL,CAAgBM,gBAAhB;AACD;;AAED,QAAI,KAAI,CAACT,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACK,2BAAL;AACD;AACF,GAjEgE;;AAmE1DY,EAAAA,SAnE0D,GAmE9C,YAAM;AACvB,IAAA,KAAI,CAACnB,YAAL,GAAoB,KAApB;AACA,IAAA,KAAI,CAACO,2BAAL;AACA,IAAA,KAAI,CAACK,0BAAL;AACD,GAvEgE,CAC/D,KAAKP,UAAL,GAAkBN,aAAlB,CACD,C","sourcesContent":["import { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nexport interface TaskWithDelayAndMinimalDurationProps {\n delayBeforeTaskStart: number;\n durationOfTask: number;\n taskStartCallback: () => void;\n taskStopCallback: () => void;\n}\n\nexport class TaskWithDelayAndMinimalDuration {\n private timeoutBeforeTaskStart: SafeTimer;\n private timeoutBeforeTaskStop: SafeTimer;\n private taskParams: TaskWithDelayAndMinimalDurationProps;\n private isTaskActive = false;\n\n constructor(initialValues: TaskWithDelayAndMinimalDurationProps) {\n this.taskParams = initialValues;\n }\n\n private setTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart = globalObject.setTimeout(() => {\n this.isTaskActive && this.taskParams.taskStartCallback();\n this.clearTimeoutBeforeTaskStart();\n this.setTimeoutBeforeTaskStop();\n }, this.taskParams.delayBeforeTaskStart);\n };\n\n private setTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop = globalObject.setTimeout(() => {\n !this.isTaskActive && this.taskParams.taskStopCallback();\n this.clearTimeoutBeforeTaskStop();\n }, this.taskParams.durationOfTask);\n };\n\n private clearTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart && globalObject.clearTimeout(this.timeoutBeforeTaskStart);\n this.timeoutBeforeTaskStart = null;\n };\n\n private clearTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop && globalObject.clearTimeout(this.timeoutBeforeTaskStop);\n this.timeoutBeforeTaskStop = null;\n };\n\n public start = () => {\n if (this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = true;\n\n if (this.timeoutBeforeTaskStop) {\n return;\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n\n this.setTimeoutBeforeTaskStart();\n };\n\n public update = (updateData: Partial<TaskWithDelayAndMinimalDurationProps>) => {\n this.taskParams = { ...this.taskParams, ...updateData };\n };\n\n public stop = () => {\n if (!this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = false;\n\n if (!this.timeoutBeforeTaskStart && !this.timeoutBeforeTaskStop) {\n this.taskParams.taskStopCallback();\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n };\n\n public clearTask = () => {\n this.isTaskActive = false;\n this.clearTimeoutBeforeTaskStart();\n this.clearTimeoutBeforeTaskStop();\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import React, { useContext } from 'react';
1
+ import React, { useCallback, useContext } from 'react';
2
2
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
3
3
  import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
4
4
  import { styles } from "../DayCellView.styles";
@@ -20,22 +20,25 @@ export var DayCellView = function DayCellView(props) {
20
20
  onDateClick = _useContext.onDateClick;
21
21
 
22
22
  var theme = useContext(ThemeContext);
23
-
24
- var handleClick = function handleClick() {
25
- onDateClick == null ? void 0 : onDateClick(date);
26
- };
27
-
23
+ var isDisabled = !CDS.isBetween(date, minDate, maxDate);
28
24
  var humanDateString = InternalDateTransformer.dateToHumanString(date);
29
25
  var dayProps = {
30
26
  isToday: Boolean(today && CDS.isEqual(date, today)),
31
27
  isSelected: Boolean(value && CDS.isEqual(date, value)),
32
- isDisabled: !CDS.isBetween(date, minDate, maxDate),
28
+ isDisabled: isDisabled,
33
29
  isWeekend: (_isHoliday = isHoliday == null ? void 0 : isHoliday(humanDateString, date.isWeekend)) != null ? _isHoliday : date.isWeekend,
34
30
  date: humanDateString
35
31
  };
36
32
  var dayElement = (_renderDay = renderDay == null ? void 0 : renderDay(dayProps)) != null ? _renderDay : /*#__PURE__*/React.createElement(CalendarDay, dayProps);
33
+ var customDayClickHandler = dayElement.props.onClick;
34
+ var dayClickHandler = useCallback(function (e) {
35
+ customDayClickHandler == null ? void 0 : customDayClickHandler(e);
36
+ onDateClick == null ? void 0 : onDateClick(date);
37
+ }, [customDayClickHandler, onDateClick, date]);
38
+ var dayElementWithClickHandler = /*#__PURE__*/React.cloneElement(dayElement, {
39
+ onClick: dayClickHandler
40
+ });
37
41
  return /*#__PURE__*/React.createElement("div", {
38
- onClick: handleClick,
39
42
  className: styles.cell(theme)
40
- }, dayElement);
43
+ }, dayElementWithClickHandler);
41
44
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["DayCellView.tsx"],"names":["React","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","date","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","handleClick","humanDateString","dateToHumanString","dayProps","isToday","Boolean","isEqual","isSelected","isDisabled","isBetween","isWeekend","dayElement","cell"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,uBAAT,QAAwC,wCAAxC;;AAEA,SAASC,MAAT,QAAuB,sBAAvB;AACA,SAASC,eAAT,QAAgC,mBAAhC;;AAEA,OAAO,KAAKC,GAAZ,MAAqB,qBAArB;AACA,SAASC,WAAT,QAA8C,eAA9C;;;;;;AAMA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA6B;AACtD,MAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;AACA,oBAA8ET,UAAU,CAACI,eAAD,CAAxF,CAAQM,KAAR,eAAQA,KAAR,CAAeC,OAAf,eAAeA,OAAf,CAAwBC,OAAxB,eAAwBA,OAAxB,CAAiCC,SAAjC,eAAiCA,SAAjC,CAA4CC,SAA5C,eAA4CA,SAA5C,CAAuDC,KAAvD,eAAuDA,KAAvD,CAA8DC,WAA9D,eAA8DA,WAA9D;AACA,MAAMC,KAAK,GAAGjB,UAAU,CAACC,YAAD,CAAxB;;AAEA,MAAMiB,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBF,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAGP,IAAH,CAAX;AACD,GAFD;;AAIA,MAAMU,eAAe,GAAGjB,uBAAuB,CAACkB,iBAAxB,CAA0CX,IAA1C,CAAxB;;AAEA,MAAMY,QAA0B,GAAG;AACjCC,IAAAA,OAAO,EAAEC,OAAO,CAACR,KAAK,IAAIV,GAAG,CAACmB,OAAJ,CAAYf,IAAZ,EAAkBM,KAAlB,CAAV,CADiB;AAEjCU,IAAAA,UAAU,EAAEF,OAAO,CAACb,KAAK,IAAIL,GAAG,CAACmB,OAAJ,CAAYf,IAAZ,EAAkBC,KAAlB,CAAV,CAFc;AAGjCgB,IAAAA,UAAU,EAAE,CAACrB,GAAG,CAACsB,SAAJ,CAAclB,IAAd,EAAoBE,OAApB,EAA6BC,OAA7B,CAHoB;AAIjCgB,IAAAA,SAAS,gBAAEf,SAAF,oBAAEA,SAAS,CAAGM,eAAH,EAAoBV,IAAI,CAACmB,SAAzB,CAAX,yBAAkDnB,IAAI,CAACmB,SAJ/B;AAKjCnB,IAAAA,IAAI,EAAEU,eAL2B,EAAnC;;;AAQA,MAAMU,UAAU,iBAAGf,SAAH,oBAAGA,SAAS,CAAGO,QAAH,CAAZ,sCAA4B,oBAAC,WAAD,EAAiBA,QAAjB,CAA5C;;AAEA;AACE,iCAAK,OAAO,EAAEH,WAAd,EAA2B,SAAS,EAAEf,MAAM,CAAC2B,IAAP,CAAYb,KAAZ,CAAtC;AACGY,IAAAA,UADH,CADF;;;AAKD,CA1BM","sourcesContent":["import React, { 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 { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDay, CalendarDayProps } 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 handleClick = () => {\n onDateClick?.(date);\n };\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: !CDS.isBetween(date, minDate, maxDate),\n isWeekend: isHoliday?.(humanDateString, date.isWeekend) ?? date.isWeekend,\n date: humanDateString,\n };\n\n const dayElement = renderDay?.(dayProps) ?? <CalendarDay {...dayProps} />;\n\n return (\n <div onClick={handleClick} className={styles.cell(theme)}>\n {dayElement}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["DayCellView.tsx"],"names":["React","useCallback","useContext","ThemeContext","InternalDateTransformer","styles","CalendarContext","CDS","CalendarDay","DayCellView","props","date","value","minDate","maxDate","isHoliday","renderDay","today","onDateClick","theme","isDisabled","isBetween","humanDateString","dateToHumanString","dayProps","isToday","Boolean","isEqual","isSelected","isWeekend","dayElement","customDayClickHandler","onClick","dayClickHandler","e","dayElementWithClickHandler","cloneElement","cell"],"mappings":"AAAA,OAAOA,KAAP,IAA8BC,WAA9B,EAA2CC,UAA3C,QAA6D,OAA7D;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,uBAAT,QAAwC,wCAAxC;;AAEA,SAASC,MAAT,QAAuB,sBAAvB;AACA,SAASC,eAAT,QAAgC,mBAAhC;;AAEA,OAAO,KAAKC,GAAZ,MAAqB,qBAArB;AACA,SAASC,WAAT,QAA8C,eAA9C;;;;;;AAMA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA6B;AACtD,MAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;AACA,oBAA8ET,UAAU,CAACI,eAAD,CAAxF,CAAQM,KAAR,eAAQA,KAAR,CAAeC,OAAf,eAAeA,OAAf,CAAwBC,OAAxB,eAAwBA,OAAxB,CAAiCC,SAAjC,eAAiCA,SAAjC,CAA4CC,SAA5C,eAA4CA,SAA5C,CAAuDC,KAAvD,eAAuDA,KAAvD,CAA8DC,WAA9D,eAA8DA,WAA9D;AACA,MAAMC,KAAK,GAAGjB,UAAU,CAACC,YAAD,CAAxB;;AAEA,MAAMiB,UAAU,GAAG,CAACb,GAAG,CAACc,SAAJ,CAAcV,IAAd,EAAoBE,OAApB,EAA6BC,OAA7B,CAApB;;AAEA,MAAMQ,eAAe,GAAGlB,uBAAuB,CAACmB,iBAAxB,CAA0CZ,IAA1C,CAAxB;;AAEA,MAAMa,QAA0B,GAAG;AACjCC,IAAAA,OAAO,EAAEC,OAAO,CAACT,KAAK,IAAIV,GAAG,CAACoB,OAAJ,CAAYhB,IAAZ,EAAkBM,KAAlB,CAAV,CADiB;AAEjCW,IAAAA,UAAU,EAAEF,OAAO,CAACd,KAAK,IAAIL,GAAG,CAACoB,OAAJ,CAAYhB,IAAZ,EAAkBC,KAAlB,CAAV,CAFc;AAGjCQ,IAAAA,UAAU,EAAVA,UAHiC;AAIjCS,IAAAA,SAAS,gBAAEd,SAAF,oBAAEA,SAAS,CAAGO,eAAH,EAAoBX,IAAI,CAACkB,SAAzB,CAAX,yBAAkDlB,IAAI,CAACkB,SAJ/B;AAKjClB,IAAAA,IAAI,EAAEW,eAL2B,EAAnC;;;AAQA,MAAMQ,UAA0C,iBAAGd,SAAH,oBAAGA,SAAS,CAAGQ,QAAH,CAAZ,sCAA4B,oBAAC,WAAD,EAAiBA,QAAjB,CAA5E;AACA,MAAMO,qBAAqB,GAAGD,UAAU,CAACpB,KAAX,CAAiBsB,OAA/C;;AAEA,MAAMC,eAAe,GAAGhC,WAAW;AACjC,YAACiC,CAAD,EAAO;AACLH,IAAAA,qBAAqB,QAArB,YAAAA,qBAAqB,CAAGG,CAAH,CAArB;AACAhB,IAAAA,WAAW,QAAX,YAAAA,WAAW,CAAGP,IAAH,CAAX;AACD,GAJgC;AAKjC,GAACoB,qBAAD,EAAwBb,WAAxB,EAAqCP,IAArC,CALiC,CAAnC;;;AAQA,MAAMwB,0BAA0B,gBAAGnC,KAAK,CAACoC,YAAN,CAAqCN,UAArC,EAAiD;AAClFE,IAAAA,OAAO,EAAEC,eADyE,EAAjD,CAAnC;;;AAIA,sBAAO,6BAAK,SAAS,EAAE5B,MAAM,CAACgC,IAAP,CAAYlB,KAAZ,CAAhB,IAAqCgB,0BAArC,CAAP;AACD,CAjCM","sourcesContent":["import React, { ReactElement, 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 { DayCellViewModel } from './DayCellViewModel';\nimport * as CDS from './CalendarDateShape';\nimport { CalendarDay, CalendarDayProps } 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"]}
@@ -22,37 +22,6 @@ export var HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {
22
22
  _this.initialScroll = 0;
23
23
  _this.master = false;
24
24
 
25
- _this.updateScrollVisibility = function () {
26
- var shouldHide = !disposeDocumentStyle;
27
-
28
- if (shouldHide) {
29
- _this.hideScroll();
30
- }
31
- };
32
-
33
- _this.hideScroll = function () {
34
- if (!isBrowser(globalObject)) {
35
- return;
36
- }
37
-
38
- var documentElement = globalObject.document.documentElement;
39
- var clientHeight = documentElement.clientHeight,
40
- scrollHeight = documentElement.scrollHeight;
41
- var documentComputedStyle = globalObject.getComputedStyle(documentElement);
42
- var scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';
43
- var scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;
44
- var documentMargin = parseFloat(documentComputedStyle.marginRight || '');
45
- var className = generateDocumentStyle(documentMargin + scrollWidth);
46
- disposeDocumentStyle = _this.attachStyle(documentElement, className);
47
- };
48
-
49
- _this.attachStyle = function (element, className) {
50
- element.classList.add(className);
51
- return function () {
52
- element.classList.remove(className);
53
- };
54
- };
55
-
56
25
  _this.restoreStyles = function () {
57
26
  if (disposeDocumentStyle) {
58
27
  disposeDocumentStyle();
@@ -77,14 +46,14 @@ export var HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {
77
46
 
78
47
  this.master = true;
79
48
  this.initialScroll = (_globalObject$documen = globalObject.document) != null && _globalObject$documen.documentElement ? globalObject.document.documentElement.scrollTop : 0;
80
- this.updateScrollVisibility();
81
- globalObject.addEventListener == null ? void 0 : globalObject.addEventListener('resize', this.updateScrollVisibility);
49
+ HideBodyVerticalScroll.updateScrollVisibility();
50
+ globalObject.addEventListener == null ? void 0 : globalObject.addEventListener('resize', HideBodyVerticalScroll.updateScrollVisibility);
82
51
  }
83
52
  };
84
53
 
85
54
  _proto.componentDidUpdate = function componentDidUpdate() {
86
55
  if (this.master) {
87
- this.updateScrollVisibility();
56
+ HideBodyVerticalScroll.updateScrollVisibility();
88
57
  }
89
58
  };
90
59
 
@@ -93,7 +62,7 @@ export var HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {
93
62
 
94
63
  if (counter === 0) {
95
64
  this.restoreStyles();
96
- globalObject.removeEventListener == null ? void 0 : globalObject.removeEventListener('resize', this.updateScrollVisibility);
65
+ globalObject.removeEventListener == null ? void 0 : globalObject.removeEventListener('resize', HideBodyVerticalScroll.updateScrollVisibility);
97
66
  }
98
67
  };
99
68
 
@@ -106,6 +75,37 @@ export var HideBodyVerticalScroll = /*#__PURE__*/function (_React$Component) {
106
75
  HideBodyVerticalScroll.__KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';
107
76
  HideBodyVerticalScroll.displayName = 'HideBodyVerticalScroll';
108
77
 
78
+ HideBodyVerticalScroll.updateScrollVisibility = function () {
79
+ var shouldHide = !disposeDocumentStyle;
80
+
81
+ if (shouldHide) {
82
+ HideBodyVerticalScroll.hideScroll();
83
+ }
84
+ };
85
+
86
+ HideBodyVerticalScroll.hideScroll = function () {
87
+ if (!isBrowser(globalObject)) {
88
+ return;
89
+ }
90
+
91
+ var documentElement = globalObject.document.documentElement;
92
+ var clientHeight = documentElement.clientHeight,
93
+ scrollHeight = documentElement.scrollHeight;
94
+ var documentComputedStyle = globalObject.getComputedStyle(documentElement);
95
+ var scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';
96
+ var scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;
97
+ var documentMargin = parseFloat(documentComputedStyle.marginRight || '');
98
+ var className = generateDocumentStyle(documentMargin + scrollWidth);
99
+ disposeDocumentStyle = HideBodyVerticalScroll.attachStyle(documentElement, className);
100
+ };
101
+
102
+ HideBodyVerticalScroll.attachStyle = function (element, className) {
103
+ element.classList.add(className);
104
+ return function () {
105
+ element.classList.remove(className);
106
+ };
107
+ };
108
+
109
109
  var VerticalScrollCounter = function VerticalScrollCounter() {};
110
110
 
111
111
  VerticalScrollCounter.increment = function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["HideBodyVerticalScroll.tsx"],"names":["React","globalObject","isBrowser","getScrollWidth","css","disposeDocumentStyle","HideBodyVerticalScroll","initialScroll","master","updateScrollVisibility","shouldHide","hideScroll","documentElement","document","clientHeight","scrollHeight","documentComputedStyle","getComputedStyle","scrollbarConst","overflowY","scrollWidth","documentMargin","parseFloat","marginRight","className","generateDocumentStyle","attachStyle","element","classList","add","remove","restoreStyles","scrollTop","componentDidMount","counter","VerticalScrollCounter","increment","addEventListener","componentDidUpdate","componentWillUnmount","decrement","removeEventListener","render","Component","__KONTUR_REACT_UI__","displayName","RetailUIVerticalScrollCounter","get"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { css } from '../../lib/theming/Emotion';\n\nlet disposeDocumentStyle: (() => void) | null = null;\n\nexport class HideBodyVerticalScroll extends React.Component {\n public static __KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';\n public static displayName = 'HideBodyVerticalScroll';\n\n private initialScroll = 0;\n private master = false;\n\n public componentDidMount() {\n const counter = VerticalScrollCounter.increment();\n if (counter === 1) {\n this.master = true;\n this.initialScroll = globalObject.document?.documentElement ? globalObject.document.documentElement.scrollTop : 0;\n this.updateScrollVisibility();\n globalObject.addEventListener?.('resize', this.updateScrollVisibility);\n }\n }\n\n public componentDidUpdate() {\n if (this.master) {\n this.updateScrollVisibility();\n }\n }\n\n public componentWillUnmount() {\n const counter = VerticalScrollCounter.decrement();\n if (counter === 0) {\n this.restoreStyles();\n globalObject.removeEventListener?.('resize', this.updateScrollVisibility);\n }\n }\n\n public render() {\n return null;\n }\n\n private updateScrollVisibility = () => {\n const shouldHide = !disposeDocumentStyle;\n if (shouldHide) {\n this.hideScroll();\n }\n };\n\n private hideScroll = () => {\n if (!isBrowser(globalObject)) {\n return;\n }\n const { documentElement } = globalObject.document;\n const { clientHeight, scrollHeight } = documentElement;\n const documentComputedStyle = globalObject.getComputedStyle(documentElement);\n const scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';\n const scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;\n const documentMargin = parseFloat(documentComputedStyle.marginRight || '');\n const className = generateDocumentStyle(documentMargin + scrollWidth);\n\n disposeDocumentStyle = this.attachStyle(documentElement, className);\n };\n\n private attachStyle = (element: HTMLElement, className: string) => {\n element.classList.add(className);\n return () => {\n element.classList.remove(className);\n };\n };\n\n private restoreStyles = () => {\n if (disposeDocumentStyle) {\n disposeDocumentStyle();\n disposeDocumentStyle = null;\n\n if (globalObject.document) {\n globalObject.document.documentElement.scrollTop = this.initialScroll;\n }\n }\n };\n}\n\nclass VerticalScrollCounter {\n public static increment = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter + 1);\n };\n\n public static decrement = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter - 1);\n };\n\n public static get = (): number => {\n return globalObject.RetailUIVerticalScrollCounter || 0;\n };\n}\n\nfunction generateDocumentStyle(documentMargin: number) {\n return css`\n overflow: hidden !important;\n margin-right: ${documentMargin}px !important;\n height: 100%;\n `;\n}\n"]}
1
+ {"version":3,"sources":["HideBodyVerticalScroll.tsx"],"names":["React","globalObject","isBrowser","getScrollWidth","css","disposeDocumentStyle","HideBodyVerticalScroll","initialScroll","master","restoreStyles","document","documentElement","scrollTop","componentDidMount","counter","VerticalScrollCounter","increment","updateScrollVisibility","addEventListener","componentDidUpdate","componentWillUnmount","decrement","removeEventListener","render","Component","__KONTUR_REACT_UI__","displayName","shouldHide","hideScroll","clientHeight","scrollHeight","documentComputedStyle","getComputedStyle","scrollbarConst","overflowY","scrollWidth","documentMargin","parseFloat","marginRight","className","generateDocumentStyle","attachStyle","element","classList","add","remove","RetailUIVerticalScrollCounter","get"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { getScrollWidth } from '../../lib/dom/getScrollWidth';\nimport { css } from '../../lib/theming/Emotion';\n\nlet disposeDocumentStyle: (() => void) | null = null;\n\nexport class HideBodyVerticalScroll extends React.Component {\n public static __KONTUR_REACT_UI__ = 'HideBodyVerticalScroll';\n public static displayName = 'HideBodyVerticalScroll';\n\n private initialScroll = 0;\n private master = false;\n\n public componentDidMount() {\n const counter = VerticalScrollCounter.increment();\n if (counter === 1) {\n this.master = true;\n this.initialScroll = globalObject.document?.documentElement ? globalObject.document.documentElement.scrollTop : 0;\n HideBodyVerticalScroll.updateScrollVisibility();\n globalObject.addEventListener?.('resize', HideBodyVerticalScroll.updateScrollVisibility);\n }\n }\n\n public componentDidUpdate() {\n if (this.master) {\n HideBodyVerticalScroll.updateScrollVisibility();\n }\n }\n\n public componentWillUnmount() {\n const counter = VerticalScrollCounter.decrement();\n if (counter === 0) {\n this.restoreStyles();\n globalObject.removeEventListener?.('resize', HideBodyVerticalScroll.updateScrollVisibility);\n }\n }\n\n public render() {\n return null;\n }\n\n public static updateScrollVisibility = () => {\n const shouldHide = !disposeDocumentStyle;\n if (shouldHide) {\n HideBodyVerticalScroll.hideScroll();\n }\n };\n\n public static hideScroll = () => {\n if (!isBrowser(globalObject)) {\n return;\n }\n const { documentElement } = globalObject.document;\n const { clientHeight, scrollHeight } = documentElement;\n const documentComputedStyle = globalObject.getComputedStyle(documentElement);\n const scrollbarConst = globalObject.getComputedStyle(documentElement).overflowY === 'scroll';\n const scrollWidth = clientHeight < scrollHeight || scrollbarConst ? getScrollWidth() : 0;\n const documentMargin = parseFloat(documentComputedStyle.marginRight || '');\n const className = generateDocumentStyle(documentMargin + scrollWidth);\n\n disposeDocumentStyle = HideBodyVerticalScroll.attachStyle(documentElement, className);\n };\n\n public static attachStyle = (element: HTMLElement, className: string) => {\n element.classList.add(className);\n return () => {\n element.classList.remove(className);\n };\n };\n\n private restoreStyles = () => {\n if (disposeDocumentStyle) {\n disposeDocumentStyle();\n disposeDocumentStyle = null;\n\n if (globalObject.document) {\n globalObject.document.documentElement.scrollTop = this.initialScroll;\n }\n }\n };\n}\n\nclass VerticalScrollCounter {\n public static increment = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter + 1);\n };\n\n public static decrement = (): number => {\n const counter = globalObject.RetailUIVerticalScrollCounter || 0;\n return (globalObject.RetailUIVerticalScrollCounter = counter - 1);\n };\n\n public static get = (): number => {\n return globalObject.RetailUIVerticalScrollCounter || 0;\n };\n}\n\nfunction generateDocumentStyle(documentMargin: number) {\n return css`\n overflow: hidden !important;\n margin-right: ${documentMargin}px !important;\n height: 100%;\n `;\n}\n"]}
@@ -8,8 +8,8 @@ export declare class HideBodyVerticalScroll extends React.Component {
8
8
  componentDidUpdate(): void;
9
9
  componentWillUnmount(): void;
10
10
  render(): null;
11
- private updateScrollVisibility;
12
- private hideScroll;
13
- private attachStyle;
11
+ static updateScrollVisibility: () => void;
12
+ static hideScroll: () => void;
13
+ static attachStyle: (element: HTMLElement, className: string) => () => void;
14
14
  private restoreStyles;
15
15
  }
@@ -40,6 +40,10 @@ export var TaskWithDelayAndMinimalDuration = function TaskWithDelayAndMinimalDur
40
40
 
41
41
  _this.isTaskActive = true;
42
42
 
43
+ if (_this.timeoutBeforeTaskStop) {
44
+ return;
45
+ }
46
+
43
47
  if (_this.timeoutBeforeTaskStart) {
44
48
  _this.clearTimeoutBeforeTaskStart();
45
49
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["taskWithDelayAndMinimalDuration.ts"],"names":["globalObject","TaskWithDelayAndMinimalDuration","initialValues","isTaskActive","setTimeoutBeforeTaskStart","timeoutBeforeTaskStart","setTimeout","taskParams","taskStartCallback","clearTimeoutBeforeTaskStart","setTimeoutBeforeTaskStop","delayBeforeTaskStart","timeoutBeforeTaskStop","taskStopCallback","clearTimeoutBeforeTaskStop","durationOfTask","clearTimeout","start","update","updateData","stop","clearTask"],"mappings":"0DAAA,SAASA,YAAT,QAAwC,0BAAxC;;;;;;;;;AASA,WAAaC,+BAAb;;;;;;AAME,yCAAYC,aAAZ,EAAiE,uBAFzDC,YAEyD,GAF1C,KAE0C;;;;AAIzDC,EAAAA,yBAJyD,GAI7B,YAAM;AACxC,IAAA,KAAI,CAACC,sBAAL,GAA8BL,YAAY,CAACM,UAAb,CAAwB,YAAM;AAC1D,MAAA,KAAI,CAACH,YAAL,IAAqB,KAAI,CAACI,UAAL,CAAgBC,iBAAhB,EAArB;AACA,MAAA,KAAI,CAACC,2BAAL;AACA,MAAA,KAAI,CAACC,wBAAL;AACD,KAJ6B,EAI3B,KAAI,CAACH,UAAL,CAAgBI,oBAJW,CAA9B;AAKD,GAVgE;;AAYzDD,EAAAA,wBAZyD,GAY9B,YAAM;AACvC,IAAA,KAAI,CAACE,qBAAL,GAA6BZ,YAAY,CAACM,UAAb,CAAwB,YAAM;AACzD,OAAC,KAAI,CAACH,YAAN,IAAsB,KAAI,CAACI,UAAL,CAAgBM,gBAAhB,EAAtB;AACA,MAAA,KAAI,CAACC,0BAAL;AACD,KAH4B,EAG1B,KAAI,CAACP,UAAL,CAAgBQ,cAHU,CAA7B;AAID,GAjBgE;;AAmBzDN,EAAAA,2BAnByD,GAmB3B,YAAM;AAC1C,IAAA,KAAI,CAACJ,sBAAL,IAA+BL,YAAY,CAACgB,YAAb,CAA0B,KAAI,CAACX,sBAA/B,CAA/B;AACA,IAAA,KAAI,CAACA,sBAAL,GAA8B,IAA9B;AACD,GAtBgE;;AAwBzDS,EAAAA,0BAxByD,GAwB5B,YAAM;AACzC,IAAA,KAAI,CAACF,qBAAL,IAA8BZ,YAAY,CAACgB,YAAb,CAA0B,KAAI,CAACJ,qBAA/B,CAA9B;AACA,IAAA,KAAI,CAACA,qBAAL,GAA6B,IAA7B;AACD,GA3BgE;;AA6B1DK,EAAAA,KA7B0D,GA6BlD,YAAM;AACnB,QAAI,KAAI,CAACd,YAAT,EAAuB;AACrB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,IAApB;;AAEA,QAAI,KAAI,CAACE,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACI,2BAAL;AACD;;AAED,IAAA,KAAI,CAACL,yBAAL;AACD,GAzCgE;;AA2C1Dc,EAAAA,MA3C0D,GA2CjD,UAACC,UAAD,EAA+D;AAC7E,IAAA,KAAI,CAACZ,UAAL,gBAAuB,KAAI,CAACA,UAA5B,EAA2CY,UAA3C;AACD,GA7CgE;;AA+C1DC,EAAAA,IA/C0D,GA+CnD,YAAM;AAClB,QAAI,CAAC,KAAI,CAACjB,YAAV,EAAwB;AACtB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,KAApB;;AAEA,QAAI,CAAC,KAAI,CAACE,sBAAN,IAAgC,CAAC,KAAI,CAACO,qBAA1C,EAAiE;AAC/D,MAAA,KAAI,CAACL,UAAL,CAAgBM,gBAAhB;AACD;;AAED,QAAI,KAAI,CAACR,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACI,2BAAL;AACD;AACF,GA7DgE;;AA+D1DY,EAAAA,SA/D0D,GA+D9C,YAAM;AACvB,IAAA,KAAI,CAAClB,YAAL,GAAoB,KAApB;AACA,IAAA,KAAI,CAACM,2BAAL;AACA,IAAA,KAAI,CAACK,0BAAL;AACD,GAnEgE,CAC/D,KAAKP,UAAL,GAAkBL,aAAlB,CACD,CARH","sourcesContent":["import { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nexport interface TaskWithDelayAndMinimalDurationProps {\n delayBeforeTaskStart: number;\n durationOfTask: number;\n taskStartCallback: () => void;\n taskStopCallback: () => void;\n}\n\nexport class TaskWithDelayAndMinimalDuration {\n private timeoutBeforeTaskStart: SafeTimer;\n private timeoutBeforeTaskStop: SafeTimer;\n private taskParams: TaskWithDelayAndMinimalDurationProps;\n private isTaskActive = false;\n\n constructor(initialValues: TaskWithDelayAndMinimalDurationProps) {\n this.taskParams = initialValues;\n }\n\n private setTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart = globalObject.setTimeout(() => {\n this.isTaskActive && this.taskParams.taskStartCallback();\n this.clearTimeoutBeforeTaskStart();\n this.setTimeoutBeforeTaskStop();\n }, this.taskParams.delayBeforeTaskStart);\n };\n\n private setTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop = globalObject.setTimeout(() => {\n !this.isTaskActive && this.taskParams.taskStopCallback();\n this.clearTimeoutBeforeTaskStop();\n }, this.taskParams.durationOfTask);\n };\n\n private clearTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart && globalObject.clearTimeout(this.timeoutBeforeTaskStart);\n this.timeoutBeforeTaskStart = null;\n };\n\n private clearTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop && globalObject.clearTimeout(this.timeoutBeforeTaskStop);\n this.timeoutBeforeTaskStop = null;\n };\n\n public start = () => {\n if (this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = true;\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n\n this.setTimeoutBeforeTaskStart();\n };\n\n public update = (updateData: Partial<TaskWithDelayAndMinimalDurationProps>) => {\n this.taskParams = { ...this.taskParams, ...updateData };\n };\n\n public stop = () => {\n if (!this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = false;\n\n if (!this.timeoutBeforeTaskStart && !this.timeoutBeforeTaskStop) {\n this.taskParams.taskStopCallback();\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n };\n\n public clearTask = () => {\n this.isTaskActive = false;\n this.clearTimeoutBeforeTaskStart();\n this.clearTimeoutBeforeTaskStop();\n };\n}\n"]}
1
+ {"version":3,"sources":["taskWithDelayAndMinimalDuration.ts"],"names":["globalObject","TaskWithDelayAndMinimalDuration","initialValues","isTaskActive","setTimeoutBeforeTaskStart","timeoutBeforeTaskStart","setTimeout","taskParams","taskStartCallback","clearTimeoutBeforeTaskStart","setTimeoutBeforeTaskStop","delayBeforeTaskStart","timeoutBeforeTaskStop","taskStopCallback","clearTimeoutBeforeTaskStop","durationOfTask","clearTimeout","start","update","updateData","stop","clearTask"],"mappings":"0DAAA,SAASA,YAAT,QAAwC,0BAAxC;;;;;;;;;AASA,WAAaC,+BAAb;;;;;;AAME,yCAAYC,aAAZ,EAAiE,uBAFzDC,YAEyD,GAF1C,KAE0C;;;;AAIzDC,EAAAA,yBAJyD,GAI7B,YAAM;AACxC,IAAA,KAAI,CAACC,sBAAL,GAA8BL,YAAY,CAACM,UAAb,CAAwB,YAAM;AAC1D,MAAA,KAAI,CAACH,YAAL,IAAqB,KAAI,CAACI,UAAL,CAAgBC,iBAAhB,EAArB;AACA,MAAA,KAAI,CAACC,2BAAL;AACA,MAAA,KAAI,CAACC,wBAAL;AACD,KAJ6B,EAI3B,KAAI,CAACH,UAAL,CAAgBI,oBAJW,CAA9B;AAKD,GAVgE;;AAYzDD,EAAAA,wBAZyD,GAY9B,YAAM;AACvC,IAAA,KAAI,CAACE,qBAAL,GAA6BZ,YAAY,CAACM,UAAb,CAAwB,YAAM;AACzD,OAAC,KAAI,CAACH,YAAN,IAAsB,KAAI,CAACI,UAAL,CAAgBM,gBAAhB,EAAtB;AACA,MAAA,KAAI,CAACC,0BAAL;AACD,KAH4B,EAG1B,KAAI,CAACP,UAAL,CAAgBQ,cAHU,CAA7B;AAID,GAjBgE;;AAmBzDN,EAAAA,2BAnByD,GAmB3B,YAAM;AAC1C,IAAA,KAAI,CAACJ,sBAAL,IAA+BL,YAAY,CAACgB,YAAb,CAA0B,KAAI,CAACX,sBAA/B,CAA/B;AACA,IAAA,KAAI,CAACA,sBAAL,GAA8B,IAA9B;AACD,GAtBgE;;AAwBzDS,EAAAA,0BAxByD,GAwB5B,YAAM;AACzC,IAAA,KAAI,CAACF,qBAAL,IAA8BZ,YAAY,CAACgB,YAAb,CAA0B,KAAI,CAACJ,qBAA/B,CAA9B;AACA,IAAA,KAAI,CAACA,qBAAL,GAA6B,IAA7B;AACD,GA3BgE;;AA6B1DK,EAAAA,KA7B0D,GA6BlD,YAAM;AACnB,QAAI,KAAI,CAACd,YAAT,EAAuB;AACrB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,IAApB;;AAEA,QAAI,KAAI,CAACS,qBAAT,EAAgC;AAC9B;AACD;;AAED,QAAI,KAAI,CAACP,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACI,2BAAL;AACD;;AAED,IAAA,KAAI,CAACL,yBAAL;AACD,GA7CgE;;AA+C1Dc,EAAAA,MA/C0D,GA+CjD,UAACC,UAAD,EAA+D;AAC7E,IAAA,KAAI,CAACZ,UAAL,gBAAuB,KAAI,CAACA,UAA5B,EAA2CY,UAA3C;AACD,GAjDgE;;AAmD1DC,EAAAA,IAnD0D,GAmDnD,YAAM;AAClB,QAAI,CAAC,KAAI,CAACjB,YAAV,EAAwB;AACtB;AACD;;AAED,IAAA,KAAI,CAACA,YAAL,GAAoB,KAApB;;AAEA,QAAI,CAAC,KAAI,CAACE,sBAAN,IAAgC,CAAC,KAAI,CAACO,qBAA1C,EAAiE;AAC/D,MAAA,KAAI,CAACL,UAAL,CAAgBM,gBAAhB;AACD;;AAED,QAAI,KAAI,CAACR,sBAAT,EAAiC;AAC/B,MAAA,KAAI,CAACI,2BAAL;AACD;AACF,GAjEgE;;AAmE1DY,EAAAA,SAnE0D,GAmE9C,YAAM;AACvB,IAAA,KAAI,CAAClB,YAAL,GAAoB,KAApB;AACA,IAAA,KAAI,CAACM,2BAAL;AACA,IAAA,KAAI,CAACK,0BAAL;AACD,GAvEgE,CAC/D,KAAKP,UAAL,GAAkBL,aAAlB,CACD,CARH","sourcesContent":["import { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nexport interface TaskWithDelayAndMinimalDurationProps {\n delayBeforeTaskStart: number;\n durationOfTask: number;\n taskStartCallback: () => void;\n taskStopCallback: () => void;\n}\n\nexport class TaskWithDelayAndMinimalDuration {\n private timeoutBeforeTaskStart: SafeTimer;\n private timeoutBeforeTaskStop: SafeTimer;\n private taskParams: TaskWithDelayAndMinimalDurationProps;\n private isTaskActive = false;\n\n constructor(initialValues: TaskWithDelayAndMinimalDurationProps) {\n this.taskParams = initialValues;\n }\n\n private setTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart = globalObject.setTimeout(() => {\n this.isTaskActive && this.taskParams.taskStartCallback();\n this.clearTimeoutBeforeTaskStart();\n this.setTimeoutBeforeTaskStop();\n }, this.taskParams.delayBeforeTaskStart);\n };\n\n private setTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop = globalObject.setTimeout(() => {\n !this.isTaskActive && this.taskParams.taskStopCallback();\n this.clearTimeoutBeforeTaskStop();\n }, this.taskParams.durationOfTask);\n };\n\n private clearTimeoutBeforeTaskStart = () => {\n this.timeoutBeforeTaskStart && globalObject.clearTimeout(this.timeoutBeforeTaskStart);\n this.timeoutBeforeTaskStart = null;\n };\n\n private clearTimeoutBeforeTaskStop = () => {\n this.timeoutBeforeTaskStop && globalObject.clearTimeout(this.timeoutBeforeTaskStop);\n this.timeoutBeforeTaskStop = null;\n };\n\n public start = () => {\n if (this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = true;\n\n if (this.timeoutBeforeTaskStop) {\n return;\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n\n this.setTimeoutBeforeTaskStart();\n };\n\n public update = (updateData: Partial<TaskWithDelayAndMinimalDurationProps>) => {\n this.taskParams = { ...this.taskParams, ...updateData };\n };\n\n public stop = () => {\n if (!this.isTaskActive) {\n return;\n }\n\n this.isTaskActive = false;\n\n if (!this.timeoutBeforeTaskStart && !this.timeoutBeforeTaskStop) {\n this.taskParams.taskStopCallback();\n }\n\n if (this.timeoutBeforeTaskStart) {\n this.clearTimeoutBeforeTaskStart();\n }\n };\n\n public clearTask = () => {\n this.isTaskActive = false;\n this.clearTimeoutBeforeTaskStart();\n this.clearTimeoutBeforeTaskStop();\n };\n}\n"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "4.27.0",
3
+ "version": "4.27.1",
4
4
  "description": "UI Components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "index.js",
7
7
  "sideEffects": false,
8
- "homepage": "https://tech.skbkontur.ru/react-ui/4.27.0/",
8
+ "homepage": "https://tech.skbkontur.ru/react-ui/4.27.1/",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git@github.com:skbkontur/retail-ui.git"
@@ -154,6 +154,6 @@
154
154
  "react-dom": ">=16.9"
155
155
  },
156
156
  "publishConfig": {
157
- "tag": "latest"
157
+ "tag": "lts"
158
158
  }
159
159
  }