@skbkontur/react-ui 4.25.1 → 4.25.2-ZIndex-several-roots.0

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 (49) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +0 -12
  3. package/cjs/components/Calendar/Calendar.js +0 -12
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/DatePicker/DatePicker.md +10 -17
  6. package/cjs/components/Loader/Loader.md +23 -1
  7. package/cjs/components/Modal/Modal.md +39 -6
  8. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  9. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  10. package/cjs/components/Select/Select.js +2 -1
  11. package/cjs/components/Select/Select.js.map +1 -1
  12. package/cjs/components/Token/Token.js +2 -1
  13. package/cjs/components/Token/Token.js.map +1 -1
  14. package/cjs/internal/RenderContainer/RenderContainer.d.ts +2 -0
  15. package/cjs/internal/RenderContainer/RenderContainer.js +6 -3
  16. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  17. package/cjs/internal/RenderContainer/RenderInnerContainer.js +3 -2
  18. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  19. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  20. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  21. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  22. package/cjs/lib/listenFocusOutside.js +4 -2
  23. package/cjs/lib/listenFocusOutside.js.map +1 -1
  24. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  25. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  26. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  27. package/components/Calendar/Calendar.d.ts +0 -12
  28. package/components/DatePicker/DatePicker.md +10 -17
  29. package/components/Loader/Loader.md +23 -1
  30. package/components/Modal/Modal.md +39 -6
  31. package/components/RadioGroup/RadioGroup/RadioGroup.js +6 -2
  32. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  33. package/components/Select/Select/Select.js +2 -1
  34. package/components/Select/Select/Select.js.map +1 -1
  35. package/components/Token/Token/Token.js +4 -1
  36. package/components/Token/Token/Token.js.map +1 -1
  37. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  38. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  39. package/internal/RenderContainer/RenderContainer.d.ts +2 -0
  40. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +5 -4
  41. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  42. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  43. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  44. package/internal/ZIndex/ZIndex.d.ts +7 -3
  45. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  46. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  47. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  48. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  49. package/package.json +2 -5
@@ -23,19 +23,22 @@ export interface ZIndexProps extends React.HTMLAttributes<HTMLDivElement> {
23
23
  declare type DefaultProps = Required<Pick<ZIndexProps, 'delta' | 'priority' | 'style' | 'applyZIndex' | 'coverChildren' | 'createStackingContext' | 'useWrapper'>>;
24
24
  interface ZIndexState {
25
25
  zIndex: number;
26
+ savedZIndexContext: {
27
+ parentLayerZIndex: number;
28
+ maxZIndex: number;
29
+ } | null;
26
30
  }
27
31
  export declare class ZIndex extends React.Component<ZIndexProps, ZIndexState> {
28
32
  static __KONTUR_REACT_UI__: string;
29
33
  static displayName: string;
30
34
  static defaultProps: DefaultProps;
31
- state: {
32
- zIndex: number;
33
- };
35
+ state: ZIndexState;
34
36
  private getProps;
35
37
  static propTypes: {
36
38
  delta(props: ZIndexProps): Error | undefined;
37
39
  };
38
40
  private setRootNode;
41
+ private zIndexContext;
39
42
  constructor(props: ZIndexProps);
40
43
  componentDidUpdate(prevProps: Readonly<ZIndexProps>): void;
41
44
  componentWillUnmount(): void;
@@ -43,5 +46,6 @@ export declare class ZIndex extends React.Component<ZIndexProps, ZIndexState> {
43
46
  private wrapperRef;
44
47
  private calcZIndex;
45
48
  private increment;
49
+ private tryGetContextByDOM;
46
50
  }
47
51
  export {};
@@ -3,6 +3,7 @@ var _globalObject$documen2;
3
3
  import ReactDOM from 'react-dom';
4
4
  import debounce from 'lodash.debounce';
5
5
  import { globalObject } from '@skbkontur/global-object';
6
+ import { PORTAL_ANCHOR_ATTR, PORTAL_TAG_ATTR } from "../../internal/RenderContainer";
6
7
  import { isInstanceOf } from "../isInstanceOf";
7
8
  import { isFirefox } from "../client";
8
9
  var handlers = [];
@@ -80,12 +81,12 @@ export function findRenderContainer(node, rootNode, container) {
80
81
  return container ? container : null;
81
82
  }
82
83
 
83
- var newContainerId = currentNode.getAttribute('data-rendered-container-id');
84
+ var newContainerId = currentNode.getAttribute(PORTAL_TAG_ATTR);
84
85
 
85
86
  if (newContainerId) {
86
87
  var _globalObject$documen5;
87
88
 
88
- var nextNode = (_globalObject$documen5 = globalObject.document) == null ? void 0 : _globalObject$documen5.querySelector("[data-render-container-id~=\"" + newContainerId + "\"]");
89
+ var nextNode = (_globalObject$documen5 = globalObject.document) == null ? void 0 : _globalObject$documen5.querySelector("[" + PORTAL_ANCHOR_ATTR + "~=\"" + newContainerId + "\"]");
89
90
 
90
91
  if (!nextNode) {
91
92
  throw Error("Origin node for render container was not found");
@@ -1 +1 @@
1
- {"version":3,"sources":["listenFocusOutside.ts"],"names":["ReactDOM","debounce","globalObject","isInstanceOf","isFirefox","handlers","addHandleEvent","document","body","addEventListener","handleNativeFocus","leading","trailing","capture","readyState","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"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","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from './isInstanceOf';\nimport { isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n globalObject.document?.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (globalObject.document?.readyState === 'complete') {\n addHandleEvent();\n} else {\n globalObject.addEventListener?.('load', addHandleEvent);\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === globalObject.document?.body ||\n currentNode === globalObject.document?.documentElement ||\n !isInstanceOf(currentNode, globalObject.Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute('data-rendered-container-id');\n if (newContainerId) {\n const nextNode = globalObject.document?.querySelector(`[data-render-container-id~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["listenFocusOutside.ts"],"names":["ReactDOM","debounce","globalObject","PORTAL_ANCHOR_ATTR","PORTAL_TAG_ATTR","isInstanceOf","isFirefox","handlers","addHandleEvent","document","body","addEventListener","handleNativeFocus","leading","trailing","capture","readyState","event","target","srcElement","forEach","handler","elements","some","containsTargetOrRenderContainer","unstable_batchedUpdates","callback","element","contains","container","findRenderContainer","node","rootNode","currentNode","parentNode","documentElement","Element","newContainerId","getAttribute","nextNode","querySelector","Error","listen","push","remove","index","indexOf","splice"],"mappings":"2BAAA,OAAOA,QAAP,MAAqB,WAArB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,SAASC,YAAT,QAA6B,0BAA7B;;AAEA,SAASC,kBAAT,EAA6BC,eAA7B,QAAoD,6BAApD;;AAEA,SAASC,YAAT,QAA6B,gBAA7B;AACA,SAASC,SAAT,QAA0B,UAA1B;;;;;;;AAOA,IAAMC,QAAoC,GAAG,EAA7C;;AAEA,SAASC,cAAT,GAA0B;AACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,2BAAAN,YAAY,CAACO,QAAb,2CAAuBC,IAAvB,CAA4BC,gBAA5B;AACEL,EAAAA,SAAS,GAAG,OAAH,GAAc,SADzB;AAEEA,EAAAA,SAAS,GAAGL,QAAQ,CAACW,iBAAD,EAAoB,CAApB,EAAuB,EAAEC,OAAO,EAAE,IAAX,EAAiBC,QAAQ,EAAE,KAA3B,EAAvB,CAAX,GAAwEF,iBAFnF;AAGE,IAAEG,OAAO,EAAE,IAAX,EAHF;;AAKD;;AAED,IAAI,2BAAAb,YAAY,CAACO,QAAb,4CAAuBO,UAAvB,MAAsC,UAA1C,EAAsD;AACpDR,EAAAA,cAAc;AACf,CAFD,MAEO;AACLN,EAAAA,YAAY,CAACS,gBAAb,oBAAAT,YAAY,CAACS,gBAAb,CAAgC,MAAhC,EAAwCH,cAAxC;AACD;;AAED,SAASI,iBAAT,CAA2BK,KAA3B,EAA2C;AACzC;AACA,MAAMC,MAAe,GAAID,KAAK,CAACC,MAAN,IAAgBD,KAAK,CAACE,UAA/C;;AAEAZ,EAAAA,QAAQ,CAACa,OAAT,CAAiB,UAACC,OAAD,EAAa;AAC5B,QAAIC,QAAQ,GAAGD,OAAO,CAACC,QAAvB;AACA,QAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClCA,MAAAA,QAAQ,GAAGA,QAAQ,EAAnB;AACD;;AAED,QAAIA,QAAQ,CAACC,IAAT,CAAcC,+BAA+B,CAACN,MAAD,CAA7C,CAAJ,EAA4D;AAC1D;AACD;AACDlB,IAAAA,QAAQ,CAACyB,uBAAT,CAAiC,oBAAMJ,OAAO,CAACK,QAAR,CAAiBT,KAAjB,CAAN,EAAjC;AACD,GAVD;AAWD;;AAED,OAAO,SAASO,+BAAT,CAAyCN,MAAzC,EAA0D;AAC/D,SAAO,UAACS,OAAD,EAAsB;AAC3B,QAAI,CAACA,OAAL,EAAc;AACZ,aAAO,KAAP;AACD;AACD,QAAIA,OAAO,CAACC,QAAR,CAAiBV,MAAjB,CAAJ,EAA8B;AAC5B,aAAO,IAAP;AACD;AACD,QAAMW,SAAS,GAAGC,mBAAmB,CAACZ,MAAD,EAASS,OAAT,CAArC;AACA,WAAO,CAAC,CAACE,SAAF,IAAeF,OAAO,CAACC,QAAR,CAAiBC,SAAjB,CAAtB;AACD,GATD;AAUD;;AAED;AACA;AACA;AACA,OAAO,SAASC,mBAAT,CAA6BC,IAA7B,EAA4CC,QAA5C,EAA+DH,SAA/D,EAAoG;AACzG,MAAMI,WAAW,GAAGF,IAAI,CAACG,UAAzB;AACA;AACE,GAACD,WAAD;AACAF,EAAAA,IAAI,KAAKC,QADT;AAEAC,EAAAA,WAAW,KAAKD,QAFhB;AAGAC,EAAAA,WAAW,gCAAK/B,YAAY,CAACO,QAAlB,qBAAK,uBAAuBC,IAA5B,CAHX;AAIAuB,EAAAA,WAAW,gCAAK/B,YAAY,CAACO,QAAlB,qBAAK,uBAAuB0B,eAA5B,CAJX;AAKA,GAAC9B,YAAY,CAAC4B,WAAD,EAAc/B,YAAY,CAACkC,OAA3B,CANf;AAOE;AACA,WAAOP,SAAS,GAAGA,SAAH,GAAe,IAA/B;AACD;;AAED,MAAMQ,cAAc,GAAGJ,WAAW,CAACK,YAAZ,CAAyBlC,eAAzB,CAAvB;AACA,MAAIiC,cAAJ,EAAoB;AAClB,QAAME,QAAQ,6BAAGrC,YAAY,CAACO,QAAhB,qBAAG,uBAAuB+B,aAAvB,OAAyCrC,kBAAzC,YAAiEkC,cAAjE,SAAjB;;AAEA,QAAI,CAACE,QAAL,EAAe;AACb,YAAME,KAAK,kDAAX;AACD;;AAED,WAAOX,mBAAmB,CAACS,QAAD,EAAWP,QAAX,EAAqBO,QAArB,CAA1B;AACD;;AAED,SAAOT,mBAAmB,CAACG,WAAD,EAAcD,QAAd,EAAwBH,SAAxB,CAA1B;AACD;;AAED,OAAO,SAASa,MAAT,CAAgBpB,QAAhB,EAAyDI,QAAzD,EAA2F;AAChG,MAAML,OAAO,GAAG;AACdC,IAAAA,QAAQ,EAARA,QADc;AAEdI,IAAAA,QAAQ,EAARA,QAFc,EAAhB;;AAIAnB,EAAAA,QAAQ,CAACoC,IAAT,CAActB,OAAd;;AAEA,SAAO;AACLuB,IAAAA,MADK,oBACI;AACP,UAAMC,KAAK,GAAGtC,QAAQ,CAACuC,OAAT,CAAiBzB,OAAjB,CAAd;AACA,UAAIwB,KAAK,GAAG,CAAC,CAAb,EAAgB;AACdtC,QAAAA,QAAQ,CAACwC,MAAT,CAAgBF,KAAhB,EAAuB,CAAvB;AACD;AACF,KANI,EAAP;;AAQD","sourcesContent":["import ReactDOM from 'react-dom';\nimport debounce from 'lodash.debounce';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { PORTAL_ANCHOR_ATTR, PORTAL_TAG_ATTR } from '../internal/RenderContainer';\n\nimport { isInstanceOf } from './isInstanceOf';\nimport { isFirefox } from './client';\n\ninterface FocusOutsideEventHandler {\n elements: Element[] | (() => Element[]);\n callback: (event: Event) => void;\n}\n\nconst handlers: FocusOutsideEventHandler[] = [];\n\nfunction addHandleEvent() {\n /**\n * Firefox do not supports 'focusin' event.\n * Focus events bubbles multiple time\n * without possibilty to cancell bubbling.\n * Using debounce to capture only first focus event\n * Mozilla Firefix\n * ¯\\_(ツ)_/¯\n */\n globalObject.document?.body.addEventListener(\n isFirefox ? 'focus' : ('focusin' as 'focus'),\n isFirefox ? debounce(handleNativeFocus, 0, { leading: true, trailing: false }) : handleNativeFocus,\n { capture: true },\n );\n}\n\nif (globalObject.document?.readyState === 'complete') {\n addHandleEvent();\n} else {\n globalObject.addEventListener?.('load', addHandleEvent);\n}\n\nfunction handleNativeFocus(event: UIEvent) {\n // FIXME: not safe casting\n const target: Element = (event.target || event.srcElement) as Element;\n\n handlers.forEach((handler) => {\n let elements = handler.elements;\n if (typeof elements === 'function') {\n elements = elements();\n }\n\n if (elements.some(containsTargetOrRenderContainer(target))) {\n return;\n }\n ReactDOM.unstable_batchedUpdates(() => handler.callback(event));\n });\n}\n\nexport function containsTargetOrRenderContainer(target: Element) {\n return (element: Element) => {\n if (!element) {\n return false;\n }\n if (element.contains(target)) {\n return true;\n }\n const container = findRenderContainer(target, element);\n return !!container && element.contains(container);\n };\n}\n\n/**\n * Searches RenderContainer placed in \"rootNode\" for \"node\"\n */\nexport function findRenderContainer(node: Element, rootNode: Element, container?: Element): Element | null {\n const currentNode = node.parentNode;\n if (\n !currentNode ||\n node === rootNode ||\n currentNode === rootNode ||\n currentNode === globalObject.document?.body ||\n currentNode === globalObject.document?.documentElement ||\n !isInstanceOf(currentNode, globalObject.Element)\n ) {\n return container ? container : null;\n }\n\n const newContainerId = currentNode.getAttribute(PORTAL_TAG_ATTR);\n if (newContainerId) {\n const nextNode = globalObject.document?.querySelector(`[${PORTAL_ANCHOR_ATTR}~=\"${newContainerId}\"]`);\n\n if (!nextNode) {\n throw Error(`Origin node for render container was not found`);\n }\n\n return findRenderContainer(nextNode, rootNode, nextNode);\n }\n\n return findRenderContainer(currentNode, rootNode, container);\n}\n\nexport function listen(elements: Element[] | (() => Element[]), callback: (event: Event) => void) {\n const handler = {\n elements,\n callback,\n };\n handlers.push(handler);\n\n return {\n remove() {\n const index = handlers.indexOf(handler);\n if (index > -1) {\n handlers.splice(index, 1);\n }\n },\n };\n}\n"]}
@@ -68,6 +68,8 @@ export var TaskWithDelayAndMinimalDuration = function TaskWithDelayAndMinimalDur
68
68
  };
69
69
 
70
70
  this.clearTask = function () {
71
+ _this.isTaskActive = false;
72
+
71
73
  _this.clearTimeoutBeforeTaskStart();
72
74
 
73
75
  _this.clearTimeoutBeforeTaskStop();
@@ -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,CAACZ,2BAAL;AACA,IAAA,KAAI,CAACK,0BAAL;AACD,GAlEgE,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.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,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"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "4.25.1",
3
+ "version": "4.25.2-ZIndex-several-roots.0",
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.25.1/",
8
+ "homepage": "https://tech.skbkontur.ru/react-ui",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git@github.com:skbkontur/retail-ui.git"
@@ -152,8 +152,5 @@
152
152
  "peerDependencies": {
153
153
  "react": ">=16.9",
154
154
  "react-dom": ">=16.9"
155
- },
156
- "publishConfig": {
157
- "tag": "latest"
158
155
  }
159
156
  }