@skbkontur/react-ui 3.12.7 → 3.12.9

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 (115) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +25 -4
  3. package/cjs/components/CurrencyInput/CurrencyInput.js +6 -2
  4. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  5. package/cjs/components/DatePicker/DatePicker.d.ts +1 -1
  6. package/cjs/components/Hint/Hint.d.ts +5 -1
  7. package/cjs/components/Hint/Hint.js +9 -1
  8. package/cjs/components/Hint/Hint.js.map +1 -1
  9. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  10. package/cjs/components/ScrollContainer/ScrollContainer.js +1 -1
  11. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  12. package/cjs/components/Toast/Toast.js.map +1 -1
  13. package/cjs/components/Tooltip/Tooltip.d.ts +4 -2
  14. package/cjs/components/Tooltip/Tooltip.js +11 -8
  15. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  16. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -1
  17. package/cjs/internal/CommonWrapper/CommonWrapper.js +20 -6
  18. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  19. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  20. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  21. package/cjs/internal/InternalMenu/InternalMenu.js +22 -8
  22. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  23. package/cjs/internal/Menu/Menu.js +7 -3
  24. package/cjs/internal/Menu/Menu.js.map +1 -1
  25. package/cjs/internal/Popup/Popup.d.ts +2 -2
  26. package/cjs/internal/Popup/Popup.js +29 -21
  27. package/cjs/internal/Popup/Popup.js.map +1 -1
  28. package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
  29. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  30. package/cjs/internal/Popup/PopupPin.d.ts +1 -1
  31. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  32. package/cjs/internal/RenderContainer/RenderContainer.js +10 -0
  33. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  34. package/cjs/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  35. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -1
  36. package/cjs/internal/RenderLayer/RenderLayer.js +11 -3
  37. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  38. package/cjs/lib/SSRSafe.d.ts +2 -0
  39. package/cjs/lib/SSRSafe.js +17 -1
  40. package/cjs/lib/SSRSafe.js.map +1 -1
  41. package/cjs/lib/dom/getDOMRect.d.ts +11 -0
  42. package/cjs/lib/dom/getDOMRect.js +36 -0
  43. package/cjs/lib/dom/getDOMRect.js.map +1 -0
  44. package/cjs/lib/instanceWithAnchorElement.d.ts +5 -0
  45. package/cjs/lib/instanceWithAnchorElement.js +9 -0
  46. package/cjs/lib/instanceWithAnchorElement.js.map +1 -0
  47. package/cjs/lib/listenFocusOutside.d.ts +1 -1
  48. package/cjs/lib/listenFocusOutside.js.map +1 -1
  49. package/cjs/lib/rootNode/getRootNode.d.ts +10 -1
  50. package/cjs/lib/rootNode/getRootNode.js +67 -12
  51. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  52. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +22 -3
  53. package/cjs/lib/rootNode/rootNodeDecorator.js +40 -4
  54. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  55. package/cjs/lib/utils.d.ts +7 -0
  56. package/cjs/lib/utils.js +12 -2
  57. package/cjs/lib/utils.js.map +1 -1
  58. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +8 -1
  59. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  60. package/components/DatePicker/DatePicker.d.ts +1 -1
  61. package/components/Hint/Hint/Hint.js +9 -1
  62. package/components/Hint/Hint/Hint.js.map +1 -1
  63. package/components/Hint/Hint.d.ts +5 -1
  64. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
  65. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  66. package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  67. package/components/Toast/Toast/Toast.js.map +1 -1
  68. package/components/Tooltip/Tooltip/Tooltip.js +13 -9
  69. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  70. package/components/Tooltip/Tooltip.d.ts +4 -2
  71. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +22 -7
  72. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  73. package/internal/CommonWrapper/CommonWrapper.d.ts +2 -1
  74. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  75. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
  76. package/internal/InternalMenu/InternalMenu/InternalMenu.js +16 -6
  77. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  78. package/internal/Menu/Menu/Menu.js +6 -1
  79. package/internal/Menu/Menu/Menu.js.map +1 -1
  80. package/internal/Popup/Popup/Popup.js +36 -27
  81. package/internal/Popup/Popup/Popup.js.map +1 -1
  82. package/internal/Popup/Popup.d.ts +2 -2
  83. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  84. package/internal/Popup/PopupHelper.d.ts +1 -1
  85. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  86. package/internal/Popup/PopupPin.d.ts +1 -1
  87. package/internal/RenderContainer/RenderContainer/RenderContainer.js +9 -0
  88. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  89. package/internal/RenderContainer/RenderContainerTypes.d.ts +1 -0
  90. package/internal/RenderLayer/RenderLayer/RenderLayer.js +13 -6
  91. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  92. package/internal/RenderLayer/RenderLayer.d.ts +2 -1
  93. package/lib/SSRSafe/SSRSafe.js +14 -0
  94. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  95. package/lib/SSRSafe.d.ts +2 -0
  96. package/lib/dom/getDOMRect/getDOMRect.js +40 -0
  97. package/lib/dom/getDOMRect/getDOMRect.js.map +1 -0
  98. package/lib/dom/getDOMRect/package.json +6 -0
  99. package/lib/dom/getDOMRect.d.ts +11 -0
  100. package/lib/instanceWithAnchorElement/instanceWithAnchorElement.js +3 -0
  101. package/lib/instanceWithAnchorElement/instanceWithAnchorElement.js.map +1 -0
  102. package/lib/instanceWithAnchorElement/package.json +6 -0
  103. package/lib/instanceWithAnchorElement.d.ts +5 -0
  104. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  105. package/lib/listenFocusOutside.d.ts +1 -1
  106. package/lib/rootNode/getRootNode/getRootNode.js +58 -12
  107. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  108. package/lib/rootNode/getRootNode.d.ts +10 -1
  109. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +24 -3
  110. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  111. package/lib/rootNode/rootNodeDecorator.d.ts +22 -3
  112. package/lib/utils/utils.js +10 -0
  113. package/lib/utils/utils.js.map +1 -1
  114. package/lib/utils.d.ts +7 -0
  115. package/package.json +12 -9
@@ -1,4 +1,5 @@
1
1
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
+ import EventEmitter from 'eventemitter3';
2
3
  import { getRootNode } from "../getRootNode";
3
4
  export function rootNode(Component) {
4
5
  var _temp;
@@ -10,16 +11,33 @@ export function rootNode(Component) {
10
11
  var _this;
11
12
 
12
13
  _this = _Component.call(this, arguments.length <= 0 ? undefined : arguments[0]) || this;
13
- _this.rootNode = void 0;
14
+ _this.rootNode = Component.defaultRootNode;
15
+ _this.rootNodeEmitter = new EventEmitter();
14
16
 
15
17
  _this.setRootNode = function (instance) {
16
- _this.rootNode = getRootNode(instance);
18
+ var _rootNode = getRootNode(instance);
19
+
20
+ if (_rootNode !== _this.rootNode) {
21
+ _this.rootNode = _rootNode;
22
+
23
+ _this.rootNodeEmitter.emit('change', _rootNode);
24
+ }
17
25
  };
18
26
 
19
27
  _this.getRootNode = function () {
20
28
  return _this.rootNode;
21
29
  };
22
30
 
31
+ _this.addRootNodeChangeListener = function (callback) {
32
+ _this.rootNodeEmitter.addListener('change', callback);
33
+
34
+ return {
35
+ remove: function remove() {
36
+ _this.rootNodeEmitter.removeListener('change', callback);
37
+ }
38
+ };
39
+ };
40
+
23
41
  return _this;
24
42
  }
25
43
 
@@ -34,4 +52,7 @@ export function rootNode(Component) {
34
52
  }
35
53
 
36
54
  return rootNode;
37
- }
55
+ }
56
+ export var isInstanceWithRootNode = function isInstanceWithRootNode(instance) {
57
+ return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');
58
+ };
@@ -1 +1 @@
1
- {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["getRootNode","rootNode","Component","setRootNode","instance","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name"],"mappings":";;;;AAIA,SAASA,WAAT,QAA4B,eAA5B;;;;AAIA,OAAO,SAASC,QAAT,CAAqEC,SAArE,EAAmF;AACxF,MAAMD,QAAQ;;AAEZ,wBAAmC;AACjC,8FADiC,MAD5BA,QAC4B;;;AAI5BE,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,cAAKH,QAAL,GAAgBD,WAAW,CAACI,QAAD,CAA3B;AACD,OANkC;;AAQ5BJ,MAAAA,WAR4B,GAQd,YAA6B;AAChD,eAAO,MAAKC,QAAZ;AACD,OAVkC,cAElC,CAJW,kBAAiBC,SAAjB,SAAd;;;AAeA,MAAMG,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgCN,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACI,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBR,QAAtB,EAAgC,MAAhC,EAAwC,EAAES,KAAK,EAAER,SAAS,CAACS,IAAnB,EAAxC;AACD;;AAED,SAAOV,QAAP;AACD","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport function rootNode<T extends new (...args: any[]) => React.Component>(Component: T) {\n const rootNode = class extends Component {\n public rootNode: Nullable<HTMLElement>;\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n this.rootNode = getRootNode(instance);\n };\n\n public getRootNode = (): Nullable<HTMLElement> => {\n return this.rootNode;\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n"]}
1
+ {"version":3,"sources":["rootNodeDecorator.tsx"],"names":["EventEmitter","getRootNode","rootNode","Component","defaultRootNode","rootNodeEmitter","setRootNode","instance","emit","addRootNodeChangeListener","callback","addListener","remove","removeListener","nameDescriptor","Object","getOwnPropertyDescriptor","configurable","defineProperty","value","name","isInstanceWithRootNode","Boolean","prototype","hasOwnProperty","call"],"mappings":";AACA,OAAOA,YAAP,MAAyB,eAAzB;;;;AAIA,SAASC,WAAT,QAA4B,eAA5B;;;;;;;;;;;;;;;;;;;;;AAqBA,OAAO,SAASC,QAAT,CAAuDC,SAAvD,EAAqE;AAC1E,MAAMD,QAAQ;;;AAGZ,wBAAmC;AACjC,8FADiC,MAF5BA,QAE4B,GAFEC,SAAS,CAACC,eAEZ,OAD5BC,eAC4B,GADV,IAAIL,YAAJ,EACU;;;AAI5BM,MAAAA,WAJ4B,GAId,UAACC,QAAD,EAA6C;AAChE,YAAML,SAAQ,GAAGD,WAAW,CAACM,QAAD,CAA5B;AACA,YAAIL,SAAQ,KAAK,MAAKA,QAAtB,EAAgC;AAC9B,gBAAKA,QAAL,GAAgBA,SAAhB;AACA,gBAAKG,eAAL,CAAqBG,IAArB,CAA0B,QAA1B,EAAoCN,SAApC;AACD;AACF,OAVkC;;AAY5BD,MAAAA,WAZ4B,GAYd,YAAyB;AAC5C,eAAO,MAAKC,QAAZ;AACD,OAdkC;;AAgB5BO,MAAAA,yBAhB4B,GAgBA,UAACC,QAAD,EAAwE;AACzG,cAAKL,eAAL,CAAqBM,WAArB,CAAiC,QAAjC,EAA2CD,QAA3C;AACA,eAAO;AACLE,UAAAA,MAAM,EAAE,kBAAM;AACZ,kBAAKP,eAAL,CAAqBQ,cAArB,CAAoC,QAApC,EAA8CH,QAA9C;AACD,WAHI,EAAP;;AAKD,OAvBkC,cAElC,CALW,kBAAiBP,SAAjB,SAAd;;;AA6BA,MAAMW,cAAc,GAAGC,MAAM,CAACC,wBAAP,CAAgCd,QAAhC,EAA0C,MAA1C,CAAvB;AACA,MAAI,CAACY,cAAD,IAAmBA,cAAc,CAACG,YAAtC,EAAoD;AAClDF,IAAAA,MAAM,CAACG,cAAP,CAAsBhB,QAAtB,EAAgC,MAAhC,EAAwC,EAAEiB,KAAK,EAAEhB,SAAS,CAACiB,IAAnB,EAAxC;AACD;;AAED,SAAOlB,QAAP;AACD;;AAED,OAAO,IAAMmB,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACd,QAAD,EAAyD;AAC7F,SAAOe,OAAO,CAACf,QAAD,CAAP,IAAqBQ,MAAM,CAACQ,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqClB,QAArC,EAA+C,aAA/C,CAA5B;AACD,CAFM","sourcesContent":["import React from 'react';\nimport EventEmitter from 'eventemitter3';\n\nimport { Nullable } from '../../typings/utility-types';\n\nimport { getRootNode } from './getRootNode';\n\nexport type TSetRootNode = (e: Nullable<React.ReactNode>) => void;\n\nexport type TRootNodeSubscription = {\n remove: () => void;\n};\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<Element>;\n addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;\n}\n\ninterface ComponentWithDefaultRootNode {\n defaultRootNode?: Element | null;\n}\n\ninterface DecoratableClassComponent extends ComponentWithDefaultRootNode {\n new (...args: any[]): React.Component;\n}\n\nexport function rootNode<T extends DecoratableClassComponent>(Component: T) {\n const rootNode = class extends Component implements InstanceWithRootNode {\n public rootNode: Nullable<Element> = Component.defaultRootNode;\n public rootNodeEmitter = new EventEmitter();\n public constructor(...args: any[]) {\n super(args[0]);\n }\n\n public setRootNode = (instance: Nullable<React.ReactInstance>) => {\n const rootNode = getRootNode(instance);\n if (rootNode !== this.rootNode) {\n this.rootNode = rootNode;\n this.rootNodeEmitter.emit('change', rootNode);\n }\n };\n\n public getRootNode = (): Nullable<Element> => {\n return this.rootNode;\n };\n\n public addRootNodeChangeListener = (callback: (node: Nullable<Element>) => void): TRootNodeSubscription => {\n this.rootNodeEmitter.addListener('change', callback);\n return {\n remove: () => {\n this.rootNodeEmitter.removeListener('change', callback);\n },\n };\n };\n };\n\n const nameDescriptor = Object.getOwnPropertyDescriptor(rootNode, 'name');\n if (!nameDescriptor || nameDescriptor.configurable) {\n Object.defineProperty(rootNode, 'name', { value: Component.name });\n }\n\n return rootNode;\n}\n\nexport const isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n"]}
@@ -1,11 +1,27 @@
1
1
  import React from 'react';
2
+ import EventEmitter from 'eventemitter3';
2
3
  import { Nullable } from '../../typings/utility-types';
3
4
  export declare type TSetRootNode = (e: Nullable<React.ReactNode>) => void;
4
- export declare function rootNode<T extends new (...args: any[]) => React.Component>(Component: T): {
5
+ export declare type TRootNodeSubscription = {
6
+ remove: () => void;
7
+ };
8
+ export interface InstanceWithRootNode {
9
+ getRootNode: () => Nullable<Element>;
10
+ addRootNodeChangeListener?: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
11
+ }
12
+ interface ComponentWithDefaultRootNode {
13
+ defaultRootNode?: Element | null;
14
+ }
15
+ interface DecoratableClassComponent extends ComponentWithDefaultRootNode {
16
+ new (...args: any[]): React.Component;
17
+ }
18
+ export declare function rootNode<T extends DecoratableClassComponent>(Component: T): {
5
19
  new (...args: any[]): {
6
- rootNode: Nullable<HTMLElement>;
20
+ rootNode: Nullable<Element>;
21
+ rootNodeEmitter: EventEmitter<string | symbol, any>;
7
22
  setRootNode: (instance: Nullable<React.ReactInstance>) => void;
8
- getRootNode: () => Nullable<HTMLElement>;
23
+ getRootNode: () => Nullable<Element>;
24
+ addRootNodeChangeListener: (callback: (node: Nullable<Element>) => void) => TRootNodeSubscription;
9
25
  context: any;
10
26
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
11
27
  forceUpdate(callback?: (() => void) | undefined): void;
@@ -30,4 +46,7 @@ export declare function rootNode<T extends new (...args: any[]) => React.Compone
30
46
  componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
31
47
  UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void;
32
48
  };
49
+ defaultRootNode?: Element | null | undefined;
33
50
  } & T;
51
+ export declare const isInstanceWithRootNode: (instance: unknown) => instance is InstanceWithRootNode;
52
+ export {};
@@ -88,6 +88,16 @@ export var isReactUINode = function isReactUINode(componentName, node) {
88
88
  export var isNonNullable = function isNonNullable(value) {
89
89
  return value !== null && value !== undefined;
90
90
  };
91
+ /**
92
+ * Checks if the value `null` or `undefined`.
93
+ *
94
+ * @param value Value to check for `null` and `undefined`.
95
+ * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.
96
+ */
97
+
98
+ export var isNullable = function isNullable(value) {
99
+ return value === null || value === undefined;
100
+ };
91
101
  /**
92
102
  * Creates a function that checks if the given `child`
93
103
  * is an instance of some component specified by `name`.
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.ts"],"names":["React","isForwardRef","isBrowser","delay","ms","Promise","resolve","setTimeout","emptyHandler","CancelationError","code","Error","taskWithDelay","task","cancelationToken","reject","then","isFunction","x","isFunctionalComponent","Component","Boolean","prototype","isReactComponent","isClassComponent","isIntrinsicElement","element","type","isRefableElement","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","window","location","host","test","isReactUINode","componentName","node","isValidElement","Object","hasOwnProperty","call","__KONTUR_REACT_UI__","isNonNullable","value","undefined","isReactUIComponent","name","child","mergeRefs","refs","forEach","ref","current","extractDataProps","props","dataProps","restWithoutDataProps","entries","map","startsWith"],"mappings":"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","sourcesContent":["import { ReactComponentLike } from 'prop-types';\nimport React from 'react';\nimport { isForwardRef } from 'react-is';\n\nimport { isBrowser } from './client';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const emptyHandler = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport function isFunction<T>(x: T | Function): x is Function {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: ReactComponentLike): boolean {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: ReactComponentLike): boolean {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement): boolean {\n return Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element));\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string): boolean => {\n return new RegExp(`^(https?:)?//${isBrowser ? `(?!${window.location.host})` : ``}\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (React.isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-ignore\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-ignore\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Merges two or more refs into one.\n *\n * @param refs Array of refs.\n * @returns A single ref composing all the refs passed.\n *\n * @example\n * const SomeComponent = forwardRef((props, ref) => {\n * const localRef = useRef();\n *\n * return <div ref={mergeRefs([localRef, ref])} />;\n * });\n */\nexport function mergeRefs<T = any>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (isNonNullable(ref)) {\n return ((ref as React.MutableRefObject<T | null>).current = value);\n }\n });\n };\n}\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T>(props: T) => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n dataProps[name] = value;\n } else {\n restWithoutDataProps[name] = value;\n }\n });\n\n return { dataProps, restWithoutDataProps };\n};\n"]}
1
+ {"version":3,"sources":["utils.ts"],"names":["React","isForwardRef","isBrowser","delay","ms","Promise","resolve","setTimeout","emptyHandler","CancelationError","code","Error","taskWithDelay","task","cancelationToken","reject","then","isFunction","x","isFunctionalComponent","Component","Boolean","prototype","isReactComponent","isClassComponent","isIntrinsicElement","element","type","isRefableElement","escapeRegExpSpecChars","s","replace","getRandomID","Math","random","toString","slice","isExternalLink","link","RegExp","window","location","host","test","isReactUINode","componentName","node","isValidElement","Object","hasOwnProperty","call","__KONTUR_REACT_UI__","isNonNullable","value","undefined","isNullable","isReactUIComponent","name","child","mergeRefs","refs","forEach","ref","current","extractDataProps","props","dataProps","restWithoutDataProps","entries","map","startsWith"],"mappings":";AACA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,YAAT,QAA6B,UAA7B;;AAEA,SAASC,SAAT,QAA0B,UAA1B;;AAEA;;;;;;;;;;;AAWA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAACC,EAAD,UAAgB,IAAIC,OAAJ,CAAY,UAACC,OAAD,UAAaC,UAAU,CAACD,OAAD,EAAUF,EAAV,CAAvB,EAAZ,CAAhB,EAAd;;AAEP,OAAO,IAAMI,YAAY,GAAG,SAAfA,YAAe,GAAM;AAChC;AACD,CAFM;;AAIP,WAAaC,gBAAb;AACSC,IAAAA,IADT,GACgB,kBADhB,wEAAsCC,KAAtC;;;AAIA,OAAO,SAASC,aAAT,CAAuBC,IAAvB,EAAyCT,EAAzC,EAAqD;AAC1D,MAAIU,gBAA4B,GAAG,oCAAM,IAAN,EAAnC;;AAEA,MAAIT,OAAJ,CAAY,UAACC,OAAD,EAAUS,MAAV,EAAqB;AAC/BD,IAAAA,gBAAgB,GAAGC,MAAnB;AACAR,IAAAA,UAAU,CAACD,OAAD,EAAUF,EAAV,CAAV;AACD,GAHD;AAIGY,EAAAA,IAJH,CAIQH,IAJR;AAKS,sBAAM,IAAN,EALT;;AAOA,SAAOC,gBAAP;AACD;;AAED,OAAO,SAASG,UAAT,CAAuBC,CAAvB,EAAuD;AAC5D,SAAO,OAAOA,CAAP,KAAa,UAApB;AACD;;AAED,OAAO,SAASC,qBAAT,CAA+BC,SAA/B,EAAuE;AAC5E,SAAOC,OAAO,CAAC,OAAOD,SAAP,KAAqB,UAArB,IAAmC,EAAEA,SAAS,CAACE,SAAV,IAAuBF,SAAS,CAACE,SAAV,CAAoBC,gBAA7C,CAApC,CAAd;AACD;;AAED,OAAO,SAASC,gBAAT,CAA0BJ,SAA1B,EAAkE;AACvE,SAAOC,OAAO,CAAC,OAAOD,SAAP,KAAqB,UAArB,IAAmCA,SAAS,CAACE,SAA7C,IAA0DF,SAAS,CAACE,SAAV,CAAoBC,gBAA/E,CAAd;AACD;;AAED,OAAO,SAASE,kBAAT,CAA4BC,OAA5B,EAAkE;AACvE,SAAO,OAAOA,OAAO,CAACC,IAAf,KAAwB,QAA/B;AACD;;AAED,OAAO,SAASC,gBAAT,CAA0BF,OAA1B,EAAgE;AACrE,SAAOL,OAAO,CAACI,kBAAkB,CAACC,OAAD,CAAlB,IAA+BF,gBAAgB,CAACE,OAAO,CAACC,IAAT,CAA/C,IAAiE1B,YAAY,CAACyB,OAAD,CAA9E,CAAd;AACD;;AAED,OAAO,SAASG,qBAAT,CAA+BC,CAA/B,EAAkD;AACvD,SAAOA,CAAC,CAACC,OAAF,CAAU,qBAAV,EAAiC,MAAjC,CAAP;AACD;;AAED,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc,WAAcC,IAAI,CAACC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,KAA3B,CAAiC,CAAjC,CAAd,EAApB;;AAEP,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,IAAD,EAA2B;AACvD,SAAO,IAAIC,MAAJ,oBAA2BrC,SAAS,WAASsC,MAAM,CAACC,QAAP,CAAgBC,IAAzB,WAApC,YAAiF,IAAjF,EAAuFC,IAAvF,CAA4FL,IAA5F,CAAP;AACD,CAFM;;AAIP;AACA;AACA;AACA,OAAO,IAAMM,aAAa,GAAG,SAAhBA,aAAgB,CAACC,aAAD,EAAwBC,IAAxB,EAA2D;AACtF,oBAAI9C,KAAK,CAAC+C,cAAN,CAAqBD,IAArB,CAAJ,EAAgC;AAC9B;AACEE,MAAAA,MAAM,CAAC1B,SAAP,CAAiB2B,cAAjB,CAAgCC,IAAhC,CAAqCJ,IAAI,CAACnB,IAA1C,EAAgD,qBAAhD;AACA;AACAmB,MAAAA,IAAI,CAACnB,IAAL,CAAUwB,mBAAV,KAAkCN,aAHpC;;AAKD;;AAED,SAAO,KAAP;AACD,CAVM;;AAYP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,CAAIC,KAAJ,EAA0C;AACrE,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKC,SAAnC;AACD,CAFM;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACF,KAAD,EAA+C;AACvE,SAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAKC,SAAnC;AACD,CAFM;;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAME,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUC,IAAV,EAA2B;AAC3D,SAAO,UAACC,KAAD,EAA4D;AACjE;AACA,WAAO,CAAAA,KAAK,QAAL,2BAAAA,KAAK,CAAE/B,IAAP,iCAAawB,mBAAb,MAAqCM,IAA5C;AACD,GAHD;AAID,CALM;;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,SAAT,CAA4BC,IAA5B,EAA+G;AACpH,SAAO,UAACP,KAAD,EAAW;AAChBO,IAAAA,IAAI,CAACC,OAAL,CAAa,UAACC,GAAD,EAAS;AACpB,UAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC7B,eAAOA,GAAG,CAACT,KAAD,CAAV;AACD,OAFD,MAEO,IAAID,aAAa,CAACU,GAAD,CAAjB,EAAwB;AAC7B,eAASA,GAAD,CAA0CC,OAA1C,GAAoDV,KAA5D;AACD;AACF,KAND;AAOD,GARD;AASD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMW,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAIC,KAAJ,EAAiB;AAC/C,MAAMC,SAA8B,GAAG,EAAvC;AACA,MAAMC,oBAAyC,GAAG,EAAlD;;AAEAnB,EAAAA,MAAM,CAACoB,OAAP,CAAeH,KAAf,EAAsBI,GAAtB,CAA0B,gBAAmB,KAAjBZ,IAAiB,WAAXJ,KAAW;AAC3C,QAAII,IAAI,CAACa,UAAL,CAAgB,OAAhB,CAAJ,EAA8B;AAC5BJ,MAAAA,SAAS,CAACT,IAAD,CAAT,GAAkBJ,KAAlB;AACD,KAFD,MAEO;AACLc,MAAAA,oBAAoB,CAACV,IAAD,CAApB,GAA6BJ,KAA7B;AACD;AACF,GAND;;AAQA,SAAO,EAAEa,SAAS,EAATA,SAAF,EAAaC,oBAAoB,EAApBA,oBAAb,EAAP;AACD,CAbM","sourcesContent":["import { ReactComponentLike } from 'prop-types';\nimport React from 'react';\nimport { isForwardRef } from 'react-is';\n\nimport { isBrowser } from './client';\n\n// NOTE: Copy-paste from @types/react\nexport type Defaultize<P, D> = P extends any\n ? string extends keyof P\n ? P\n : Pick<P, Exclude<keyof P, keyof D>> &\n Partial<Pick<P, Extract<keyof P, keyof D>>> &\n Partial<Pick<D, Exclude<keyof D, keyof P>>>\n : never;\n\nexport type DefaultizeProps<C, P> = C extends { defaultProps: infer D } ? Defaultize<P, D> : P;\n\nexport const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const emptyHandler = () => {\n /* noop */\n};\n\nexport class CancelationError extends Error {\n public code = 'CancelationError';\n}\n\nexport function taskWithDelay(task: () => void, ms: number) {\n let cancelationToken: () => void = () => null;\n\n new Promise((resolve, reject) => {\n cancelationToken = reject;\n setTimeout(resolve, ms);\n })\n .then(task)\n .catch(() => null);\n\n return cancelationToken;\n}\n\nexport function isFunction<T>(x: T | Function): x is Function {\n return typeof x === 'function';\n}\n\nexport function isFunctionalComponent(Component: ReactComponentLike): boolean {\n return Boolean(typeof Component === 'function' && !(Component.prototype && Component.prototype.isReactComponent));\n}\n\nexport function isClassComponent(Component: ReactComponentLike): boolean {\n return Boolean(typeof Component === 'function' && Component.prototype && Component.prototype.isReactComponent);\n}\n\nexport function isIntrinsicElement(element: React.ReactElement): boolean {\n return typeof element.type === 'string';\n}\n\nexport function isRefableElement(element: React.ReactElement): boolean {\n return Boolean(isIntrinsicElement(element) || isClassComponent(element.type) || isForwardRef(element));\n}\n\nexport function escapeRegExpSpecChars(s: string): string {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nexport const getRandomID = (): string => Math.random().toString(16).slice(2);\n\nexport const isExternalLink = (link: string): boolean => {\n return new RegExp(`^(https?:)?//${isBrowser ? `(?!${window.location.host})` : ``}\\\\S+`, 'gi').test(link);\n};\n\n/**\n * Check if the given ReactNode is an element of the specified ReactUI component\n */\nexport const isReactUINode = (componentName: string, node: React.ReactNode): boolean => {\n if (React.isValidElement(node)) {\n return (\n Object.prototype.hasOwnProperty.call(node.type, '__KONTUR_REACT_UI__') &&\n // @ts-ignore\n node.type.__KONTUR_REACT_UI__ === componentName\n );\n }\n\n return false;\n};\n\n/**\n * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента\n *\n * @param value Значение, которое нужно проверить и исключить из него типы\n * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false\n */\nexport const isNonNullable = <T>(value: T): value is NonNullable<T> => {\n return value !== null && value !== undefined;\n};\n\n/**\n * Checks if the value `null` or `undefined`.\n *\n * @param value Value to check for `null` and `undefined`.\n * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.\n */\nexport const isNullable = (value: unknown): value is null | undefined => {\n return value === null || value === undefined;\n};\n\n/**\n * Creates a function that checks if the given `child`\n * is an instance of some component specified by `name`.\n *\n * @param name Component name for which function will be created.\n * @returns A function that checks if the given `child` is an instance of the component specified by `name`.\n */\nexport const isReactUIComponent = <P = any>(name: string) => {\n return (child: React.ReactNode): child is React.ReactElement<P> => {\n // @ts-ignore\n return child?.type?.__KONTUR_REACT_UI__ === name;\n };\n};\n\n/**\n * Merges two or more refs into one.\n *\n * @param refs Array of refs.\n * @returns A single ref composing all the refs passed.\n *\n * @example\n * const SomeComponent = forwardRef((props, ref) => {\n * const localRef = useRef();\n *\n * return <div ref={mergeRefs([localRef, ref])} />;\n * });\n */\nexport function mergeRefs<T = any>(refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (isNonNullable(ref)) {\n return ((ref as React.MutableRefObject<T | null>).current = value);\n }\n });\n };\n}\n\n/**\n * Extracts all data attributes from props and returns them as well as props.\n *\n * @param props Props object to extract data attributes from.\n * @returns Separated data attributes and all other props.\n */\nexport const extractDataProps = <T>(props: T) => {\n const dataProps: Record<string, any> = {};\n const restWithoutDataProps: Record<string, any> = {};\n\n Object.entries(props).map(([name, value]) => {\n if (name.startsWith('data-')) {\n dataProps[name] = value;\n } else {\n restWithoutDataProps[name] = value;\n }\n });\n\n return { dataProps, restWithoutDataProps };\n};\n"]}
package/lib/utils.d.ts CHANGED
@@ -29,6 +29,13 @@ export declare const isReactUINode: (componentName: string, node: React.ReactNod
29
29
  * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false
30
30
  */
31
31
  export declare const isNonNullable: <T>(value: T) => value is NonNullable<T>;
32
+ /**
33
+ * Checks if the value `null` or `undefined`.
34
+ *
35
+ * @param value Value to check for `null` and `undefined`.
36
+ * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.
37
+ */
38
+ export declare const isNullable: (value: unknown) => value is null | undefined;
32
39
  /**
33
40
  * Creates a function that checks if the given `child`
34
41
  * is an instance of some component specified by `name`.
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui",
3
- "version": "3.12.7",
3
+ "version": "3.12.9",
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/3.12.7/",
8
+ "homepage": "https://tech.skbkontur.ru/react-ui/3.12.9/",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git@github.com:skbkontur/retail-ui.git"
@@ -38,7 +38,7 @@
38
38
  "fix": "run-s -c fix:*",
39
39
  "fix:eslint": "yarn lint:eslint --fix",
40
40
  "fix:prettier": "yarn prettier --write .",
41
- "test": "cross-env BABEL_ENV=cjs jest",
41
+ "test": "cross-env BABEL_ENV=cjs jest --detectOpenHandles",
42
42
  "test:watch": "yarn test --watch",
43
43
  "creevey": "wait-on -t 300000 http-get://localhost:6060/ && cross-env BABEL_ENV=cjs creevey -c .creevey/config.js",
44
44
  "creevey:ui": "yarn creevey --ui",
@@ -85,9 +85,9 @@
85
85
  "@testing-library/react": "12.1.2",
86
86
  "@testing-library/react-hooks": "^7.0.2",
87
87
  "@testing-library/user-event": "13.5.0",
88
- "@types/enzyme": "^3.10.8",
88
+ "@types/enzyme": "3.10.10",
89
89
  "@types/invariant": "^2.2.33",
90
- "@types/jest": "^26.0.22",
90
+ "@types/jest": "27.0.3",
91
91
  "@types/jest-axe": "^3.5.3",
92
92
  "@types/lodash.debounce": "^4.0.6",
93
93
  "@types/lodash.isequal": "^4.5.5",
@@ -122,7 +122,7 @@
122
122
  "fs-readdir-recursive": "^1.1.0",
123
123
  "gh-pages": "^3.1.0",
124
124
  "identity-obj-proxy": "^3.0.0",
125
- "jest": "26.6.3",
125
+ "jest": "27.4.5",
126
126
  "jest-axe": "^5.0.1",
127
127
  "jest-teamcity-reporter": "^0.9.0",
128
128
  "npm-run-all": "^4.1.5",
@@ -150,15 +150,18 @@
150
150
  "jest": {
151
151
  "testResultsProcessor": "jest-teamcity-reporter",
152
152
  "moduleNameMapper": {
153
- "\\.(jpg|jpeg|png|gif|eot|otf||svg|ttf|woff|woff2)$": "<rootDir>/components/__mocks__/fileMock.ts",
154
- "\\.(css)$": "identity-obj-proxy"
153
+ "\\.(css|less)$": "identity-obj-proxy"
155
154
  },
156
155
  "transform": {
157
- "^.+\\.(j|t)sx?$": "babel-jest"
156
+ "\\.[jt]sx?$": "babel-jest"
158
157
  },
159
158
  "testRegex": "__tests__(\\\\|/).*(\\.|-)test\\.(j|t)sx?$",
159
+ "testEnvironment": "jsdom",
160
160
  "setupFilesAfterEnv": [
161
161
  "<rootDir>/test-setup.js"
162
+ ],
163
+ "transformIgnorePatterns": [
164
+ "<rootDir>/node_modules/"
162
165
  ]
163
166
  },
164
167
  "publishConfig": {