@skbkontur/react-ui-validations 2.1.0 → 2.1.3-66a28a30
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/index.d.ts +29 -27
- package/index.js +119 -92
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ declare module '@skbkontur/react-ui-validations' {
|
|
|
11
11
|
import type { ValidationLevel, TextPosition, RenderErrorMessage, Validation, ValidationBehaviour } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
12
12
|
import { ValidationWrapper } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
13
13
|
import type { ValidationInfo, ValidationWrapperProps } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
14
|
-
import type { ValidationContextType, ValidationContextWrapperProps } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
|
|
15
|
-
import { ValidationContext, ValidationContextWrapper
|
|
14
|
+
import type { ValidationContextType, ValidationContextWrapperProps, ValidationContextSettings } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
|
|
15
|
+
import { ValidationContext, ValidationContextWrapper } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
|
|
16
16
|
import { validationsFeatureFlagsDefault, ValidationsFeatureFlagsContext, getFullValidationsFlagsContext } from '@skbkontur/react-ui-validations/src/utils/featureFlagsContext';
|
|
17
17
|
import type { ValidationsFeatureFlags } from '@skbkontur/react-ui-validations/src/utils/featureFlagsContext';
|
|
18
18
|
import { FocusMode } from '@skbkontur/react-ui-validations/src/FocusMode';
|
|
@@ -22,15 +22,15 @@ declare module '@skbkontur/react-ui-validations' {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
declare module '@skbkontur/react-ui-validations/src/ErrorRenderer' {
|
|
25
|
-
import { TooltipPosition } from '@skbkontur/react-ui-validations/src/ValidationTooltip';
|
|
26
|
-
import { RenderErrorMessage, TextPosition } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
25
|
+
import type { TooltipPosition } from '@skbkontur/react-ui-validations/src/ValidationTooltip';
|
|
26
|
+
import type { RenderErrorMessage, TextPosition } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
27
27
|
export function tooltip(pos: TooltipPosition): RenderErrorMessage;
|
|
28
28
|
export function text(pos?: TextPosition): RenderErrorMessage;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
declare module '@skbkontur/react-ui-validations/src/ValidationContainer' {
|
|
32
32
|
import React from 'react';
|
|
33
|
-
import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
33
|
+
import type { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
34
34
|
import { FocusMode } from '@skbkontur/react-ui-validations/src/FocusMode';
|
|
35
35
|
export interface ScrollOffset {
|
|
36
36
|
top?: number;
|
|
@@ -83,8 +83,8 @@ declare module '@skbkontur/react-ui-validations/src/ValidationTooltip' {
|
|
|
83
83
|
|
|
84
84
|
declare module '@skbkontur/react-ui-validations/src/ValidationWrapperInternal' {
|
|
85
85
|
import React from 'react';
|
|
86
|
-
import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
87
|
-
import { ValidationContextType } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
|
|
86
|
+
import type { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
87
|
+
import type { ValidationContextType } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
|
|
88
88
|
export type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';
|
|
89
89
|
export type ValidationLevel = 'error' | 'warning';
|
|
90
90
|
export type TextPosition = 'bottom' | 'right';
|
|
@@ -131,8 +131,8 @@ declare module '@skbkontur/react-ui-validations/src/ValidationWrapperInternal' {
|
|
|
131
131
|
|
|
132
132
|
declare module '@skbkontur/react-ui-validations/src/ValidationWrapper' {
|
|
133
133
|
import React from 'react';
|
|
134
|
-
import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
135
|
-
import { RenderErrorMessage, ValidationBehaviour, ValidationLevel, ValidationWrapperInternalProps } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
134
|
+
import type { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
135
|
+
import type { RenderErrorMessage, ValidationBehaviour, ValidationLevel, ValidationWrapperInternalProps } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
136
136
|
export interface ValidationInfo {
|
|
137
137
|
type?: Nullable<ValidationBehaviour>;
|
|
138
138
|
level?: Nullable<ValidationLevel>;
|
|
@@ -153,7 +153,7 @@ declare module '@skbkontur/react-ui-validations/src/ValidationWrapper' {
|
|
|
153
153
|
|
|
154
154
|
declare module '@skbkontur/react-ui-validations/src/ValidationContextWrapper' {
|
|
155
155
|
import React from 'react';
|
|
156
|
-
import { ValidationWrapperInternal } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
156
|
+
import type { ValidationWrapperInternal } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
157
157
|
import type { ScrollOffset, ValidateArgumentType } from '@skbkontur/react-ui-validations/src/ValidationContainer';
|
|
158
158
|
export interface ValidationContextSettings {
|
|
159
159
|
scrollOffset: ScrollOffset;
|
|
@@ -222,25 +222,27 @@ declare module '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/Va
|
|
|
222
222
|
import React from 'react';
|
|
223
223
|
export interface ValidationsFeatureFlags {
|
|
224
224
|
dropdownsDoNotOpenOnFocusByValidation?: boolean;
|
|
225
|
+
hideTooltipOnSelectionControls?: boolean;
|
|
225
226
|
}
|
|
226
227
|
export const validationsFeatureFlagsDefault: ValidationsFeatureFlags;
|
|
227
228
|
export const ValidationsFeatureFlagsContext: React.Context<ValidationsFeatureFlags>;
|
|
228
229
|
}
|
|
229
230
|
|
|
230
231
|
declare module '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/FeatureFlagsHelpers' {
|
|
231
|
-
import { ValidationsFeatureFlags } from '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/ValidationsFeatureFlagsContext';
|
|
232
|
+
import type { ValidationsFeatureFlags } from '@skbkontur/react-ui-validations/src/utils/featureFlagsContext/ValidationsFeatureFlagsContext';
|
|
232
233
|
export const getFullValidationsFlagsContext: (flags: ValidationsFeatureFlags) => {
|
|
233
234
|
dropdownsDoNotOpenOnFocusByValidation?: boolean | undefined;
|
|
235
|
+
hideTooltipOnSelectionControls?: boolean | undefined;
|
|
234
236
|
};
|
|
235
237
|
}
|
|
236
238
|
|
|
237
239
|
declare module '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder' {
|
|
238
|
-
import React from 'react';
|
|
239
|
-
import { ValidationBehaviour, ValidationLevel } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
240
|
-
import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
241
|
-
import { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
242
|
-
import { ValidationWriter } from '@skbkontur/react-ui-validations/src/Validations/ValidationWriter';
|
|
243
|
-
import { ItemValidationRule, ValidationRule } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
240
|
+
import type React from 'react';
|
|
241
|
+
import type { ValidationBehaviour, ValidationLevel } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
|
|
242
|
+
import type { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
243
|
+
import type { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
244
|
+
import type { ValidationWriter } from '@skbkontur/react-ui-validations/src/Validations/ValidationWriter';
|
|
245
|
+
import type { ItemValidationRule, ValidationRule } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
244
246
|
export class ValidationBuilder<TRoot, T> {
|
|
245
247
|
constructor(writer: ValidationWriter<TRoot>, tokens: PathTokensCache, path: string[], data: T);
|
|
246
248
|
prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void;
|
|
@@ -251,9 +253,9 @@ declare module '@skbkontur/react-ui-validations/src/Validations/ValidationBuilde
|
|
|
251
253
|
}
|
|
252
254
|
|
|
253
255
|
declare module '@skbkontur/react-ui-validations/src/Validations/Types' {
|
|
254
|
-
import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
255
|
-
import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
256
|
-
import { ValidationBuilder } from '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder';
|
|
256
|
+
import type { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
257
|
+
import type { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
258
|
+
import type { ValidationBuilder } from '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder';
|
|
257
259
|
export interface ValidationNode<T> {
|
|
258
260
|
validation: Nullable<ValidationInfo>;
|
|
259
261
|
children: Nullable<{
|
|
@@ -266,10 +268,10 @@ declare module '@skbkontur/react-ui-validations/src/Validations/Types' {
|
|
|
266
268
|
}
|
|
267
269
|
|
|
268
270
|
declare module '@skbkontur/react-ui-validations/src/Validations/ValidationReader' {
|
|
269
|
-
import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
270
|
-
import { ExtractItem, Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
271
|
-
import { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
272
|
-
import { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
271
|
+
import type { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
272
|
+
import type { ExtractItem, Nullable } from '@skbkontur/react-ui-validations/typings/Types';
|
|
273
|
+
import type { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
274
|
+
import type { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
273
275
|
export class ValidationReader<T> {
|
|
274
276
|
constructor(node: Nullable<ValidationNode<T>>, tokens: PathTokensCache);
|
|
275
277
|
getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild>;
|
|
@@ -295,10 +297,10 @@ declare module '@skbkontur/react-ui-validations/src/Validations/PathHelper' {
|
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
declare module '@skbkontur/react-ui-validations/src/Validations/ValidationWriter' {
|
|
298
|
-
import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
299
|
-
import { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
300
|
+
import type { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
|
|
301
|
+
import type { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
|
|
300
302
|
import { ValidationReader } from '@skbkontur/react-ui-validations/src/Validations/ValidationReader';
|
|
301
|
-
import { PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
303
|
+
import type { PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
|
|
302
304
|
export class ValidationWriter<T> {
|
|
303
305
|
constructor(node?: ValidationNode<T>);
|
|
304
306
|
getReader(tokens: PathTokensCache): ValidationReader<T>;
|
package/index.js
CHANGED
|
@@ -29,25 +29,45 @@ var ThemeContext = importContext(require('@skbkontur/react-ui/lib/theming/ThemeC
|
|
|
29
29
|
var ReactUiDetection = /** @class */ (function () {
|
|
30
30
|
function ReactUiDetection() {
|
|
31
31
|
}
|
|
32
|
-
ReactUiDetection.
|
|
32
|
+
ReactUiDetection.checkType = function (element, type) {
|
|
33
33
|
var _a;
|
|
34
|
-
return isNonNullable(
|
|
34
|
+
return isNonNullable(element) && ((_a = element.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === type;
|
|
35
35
|
};
|
|
36
|
-
ReactUiDetection.
|
|
37
|
-
|
|
38
|
-
return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'RadioGroup';
|
|
36
|
+
ReactUiDetection.isDatePicker = function (element) {
|
|
37
|
+
return ReactUiDetection.checkType(element, 'DatePicker');
|
|
39
38
|
};
|
|
40
|
-
ReactUiDetection.
|
|
41
|
-
|
|
42
|
-
return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'TokenInput';
|
|
39
|
+
ReactUiDetection.isRadioGroup = function (element) {
|
|
40
|
+
return ReactUiDetection.checkType(element, 'RadioGroup');
|
|
43
41
|
};
|
|
44
|
-
ReactUiDetection.
|
|
45
|
-
|
|
46
|
-
return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'Switcher';
|
|
42
|
+
ReactUiDetection.isTokenInput = function (element) {
|
|
43
|
+
return ReactUiDetection.checkType(element, 'TokenInput');
|
|
47
44
|
};
|
|
48
|
-
ReactUiDetection.
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
ReactUiDetection.isSwitcher = function (element) {
|
|
46
|
+
return ReactUiDetection.checkType(element, 'Switcher');
|
|
47
|
+
};
|
|
48
|
+
ReactUiDetection.isComboBox = function (element) {
|
|
49
|
+
return ReactUiDetection.checkType(element, 'ComboBox');
|
|
50
|
+
};
|
|
51
|
+
ReactUiDetection.isRadio = function (element) {
|
|
52
|
+
return ReactUiDetection.checkType(element, 'Radio');
|
|
53
|
+
};
|
|
54
|
+
ReactUiDetection.isCheckBox = function (element) {
|
|
55
|
+
return ReactUiDetection.checkType(element, 'Checkbox');
|
|
56
|
+
};
|
|
57
|
+
ReactUiDetection.isToggle = function (element) {
|
|
58
|
+
return ReactUiDetection.checkType(element, 'Toggle');
|
|
59
|
+
};
|
|
60
|
+
ReactUiDetection.isSelect = function (element) {
|
|
61
|
+
return ReactUiDetection.checkType(element, 'Select');
|
|
62
|
+
};
|
|
63
|
+
ReactUiDetection.isSelectionControl = function (element) {
|
|
64
|
+
return (ReactUiDetection.isRadioGroup(element) ||
|
|
65
|
+
ReactUiDetection.isRadio(element) ||
|
|
66
|
+
ReactUiDetection.isCheckBox(element) ||
|
|
67
|
+
ReactUiDetection.isToggle(element) ||
|
|
68
|
+
ReactUiDetection.isSwitcher(element) ||
|
|
69
|
+
ReactUiDetection.isSelect(element) ||
|
|
70
|
+
ReactUiDetection.isComboBox(element));
|
|
51
71
|
};
|
|
52
72
|
return ReactUiDetection;
|
|
53
73
|
}());
|
|
@@ -235,19 +255,11 @@ var isReactUITestEnv = Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is n
|
|
|
235
255
|
Boolean(enableReactTesting); // deprecated, legacy variable
|
|
236
256
|
var isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;
|
|
237
257
|
var isBrowser = typeof window !== 'undefined';
|
|
238
|
-
var canUseDOM = isBrowser && window.document && window.document.createElement;
|
|
239
258
|
function isElement(el) {
|
|
240
|
-
|
|
241
|
-
return el instanceof Element;
|
|
242
|
-
}
|
|
243
|
-
return false;
|
|
259
|
+
return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;
|
|
244
260
|
}
|
|
245
|
-
function
|
|
246
|
-
|
|
247
|
-
return node instanceof Node;
|
|
248
|
-
}
|
|
249
|
-
return false;
|
|
250
|
-
}
|
|
261
|
+
var getDoc = function (node) { var _a; return (_a = node.ownerDocument) !== null && _a !== void 0 ? _a : node; };
|
|
262
|
+
var getWin = function (node) { return getDoc(node).defaultView; };
|
|
251
263
|
|
|
252
264
|
/**
|
|
253
265
|
* Checks if the value `null` or `undefined`.
|
|
@@ -478,7 +490,7 @@ var getRootNode = function (instance) {
|
|
|
478
490
|
* 3. class Component instance (object)
|
|
479
491
|
* 4. literally anything, returned from useImperativeHandle
|
|
480
492
|
*/
|
|
481
|
-
if (!
|
|
493
|
+
if (!instance) {
|
|
482
494
|
// instance can be `null` if component was unmounted
|
|
483
495
|
// also checking undefined for convenient usage
|
|
484
496
|
return null;
|
|
@@ -490,13 +502,7 @@ var getRootNode = function (instance) {
|
|
|
490
502
|
}
|
|
491
503
|
var rootNode;
|
|
492
504
|
if (isInstanceWithRootNode(instance)) {
|
|
493
|
-
|
|
494
|
-
// the "getRootNode" method, but we can ignore it here
|
|
495
|
-
// because we'd already checked the instance on being an Element
|
|
496
|
-
// which is a subclass of Node, so, just fixing types here
|
|
497
|
-
if (!isNode(instance)) {
|
|
498
|
-
rootNode = instance.getRootNode();
|
|
499
|
-
}
|
|
505
|
+
rootNode = instance.getRootNode();
|
|
500
506
|
}
|
|
501
507
|
if (rootNode !== undefined) {
|
|
502
508
|
// the getter exists and has returned something, it should be what we are looking for
|
|
@@ -527,19 +533,21 @@ var getRootNode = function (instance) {
|
|
|
527
533
|
|
|
528
534
|
function smoothScrollIntoView(element, scrollOffset) {
|
|
529
535
|
return __awaiter(this, void 0, void 0, function () {
|
|
530
|
-
var scrollableParent, parentRects, clientRects, topOffset, bottomOffset, html, viewportHeight, viewportWidth, isElementInViewport;
|
|
536
|
+
var activeDocument, activeWindow, scrollableParent, parentRects, clientRects, topOffset, bottomOffset, html, viewportHeight, viewportWidth, isElementInViewport;
|
|
531
537
|
return __generator(this, function (_a) {
|
|
532
538
|
switch (_a.label) {
|
|
533
539
|
case 0:
|
|
540
|
+
activeDocument = getDoc(element);
|
|
541
|
+
activeWindow = getWin(element);
|
|
534
542
|
scrollableParent = findScrollableParent(element);
|
|
535
543
|
parentRects = scrollableParent.getBoundingClientRect();
|
|
536
544
|
clientRects = element.getBoundingClientRect();
|
|
537
545
|
topOffset = scrollOffset.top || 0;
|
|
538
546
|
bottomOffset = scrollOffset.bottom || 0;
|
|
539
|
-
if (!(scrollableParent ===
|
|
540
|
-
html =
|
|
541
|
-
viewportHeight =
|
|
542
|
-
viewportWidth =
|
|
547
|
+
if (!(scrollableParent === activeDocument.body)) return [3 /*break*/, 2];
|
|
548
|
+
html = activeDocument.documentElement || { clientHeight: 0, clientWidth: 0 };
|
|
549
|
+
viewportHeight = (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.innerHeight) || html.clientHeight;
|
|
550
|
+
viewportWidth = (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.innerWidth) || html.clientWidth;
|
|
543
551
|
isElementInViewport = clientRects.top >= topOffset &&
|
|
544
552
|
clientRects.left >= 0 &&
|
|
545
553
|
clientRects.bottom <= viewportHeight - bottomOffset &&
|
|
@@ -548,6 +556,7 @@ function smoothScrollIntoView(element, scrollOffset) {
|
|
|
548
556
|
return [2 /*return*/];
|
|
549
557
|
}
|
|
550
558
|
return [4 /*yield*/, scrollBy({
|
|
559
|
+
element: element,
|
|
551
560
|
left: clientRects.left,
|
|
552
561
|
top: clientRects.top - topOffset,
|
|
553
562
|
})];
|
|
@@ -562,6 +571,7 @@ function smoothScrollIntoView(element, scrollOffset) {
|
|
|
562
571
|
case 3:
|
|
563
572
|
_a.sent();
|
|
564
573
|
return [4 /*yield*/, scrollBy({
|
|
574
|
+
element: element,
|
|
565
575
|
left: parentRects.left,
|
|
566
576
|
top: parentRects.top,
|
|
567
577
|
})];
|
|
@@ -574,59 +584,68 @@ function smoothScrollIntoView(element, scrollOffset) {
|
|
|
574
584
|
});
|
|
575
585
|
}
|
|
576
586
|
function smoothScroll(element, x, y) {
|
|
587
|
+
var activeDocument = getDoc(element);
|
|
588
|
+
var activeWindow = getWin(element);
|
|
577
589
|
var context;
|
|
578
|
-
if (
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
590
|
+
if (activeWindow) {
|
|
591
|
+
if (element === getDocumentBodyStrict(activeDocument)) {
|
|
592
|
+
context = {
|
|
593
|
+
scrollable: element,
|
|
594
|
+
startX: activeWindow.scrollX || activeWindow.pageXOffset,
|
|
595
|
+
startY: activeWindow.scrollY || activeWindow.pageYOffset,
|
|
596
|
+
method: getScrollWindow(element),
|
|
597
|
+
startTime: getNow(element)(),
|
|
598
|
+
x: x,
|
|
599
|
+
y: y,
|
|
600
|
+
};
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
context = {
|
|
604
|
+
scrollable: element,
|
|
605
|
+
startX: element.scrollLeft,
|
|
606
|
+
startY: element.scrollTop,
|
|
607
|
+
method: scrollElement,
|
|
608
|
+
startTime: getNow(element)(),
|
|
609
|
+
x: x,
|
|
610
|
+
y: y,
|
|
611
|
+
};
|
|
612
|
+
}
|
|
599
613
|
}
|
|
600
614
|
return new Promise(function (resolve) { return step(__assign(__assign({}, context), { resolve: resolve })); });
|
|
601
615
|
}
|
|
602
|
-
function step(
|
|
603
|
-
var
|
|
604
|
-
var
|
|
616
|
+
function step(_a) {
|
|
617
|
+
var scrollable = _a.scrollable, startX = _a.startX, startY = _a.startY, x = _a.x, y = _a.y, method = _a.method, resolve = _a.resolve, startTime = _a.startTime;
|
|
618
|
+
var time = getNow(scrollable)();
|
|
619
|
+
var scrollTime = 468;
|
|
620
|
+
var elapsed = Math.min(1, (time - startTime) / scrollTime);
|
|
605
621
|
var value = ease(elapsed);
|
|
606
|
-
var
|
|
607
|
-
var
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
622
|
+
var activeWindow = getWin(scrollable);
|
|
623
|
+
var currentX = startX + (x - startX) * value;
|
|
624
|
+
var currentY = startY + (y - startY) * value;
|
|
625
|
+
method(scrollable, currentX, currentY);
|
|
626
|
+
if (currentX !== x || currentY !== y) {
|
|
627
|
+
!!activeWindow &&
|
|
628
|
+
activeWindow.requestAnimationFrame(function () { return step({ scrollable: scrollable, startX: startX, startY: startY, x: x, y: y, method: method, resolve: resolve, startTime: startTime }); });
|
|
611
629
|
}
|
|
612
630
|
else {
|
|
613
|
-
|
|
631
|
+
resolve();
|
|
614
632
|
}
|
|
615
633
|
}
|
|
616
|
-
var
|
|
617
|
-
var
|
|
634
|
+
var getScrollWindow = function (el) {
|
|
635
|
+
var activeWindow = getWin(el);
|
|
618
636
|
if (isBrowser) {
|
|
619
|
-
if (typeof
|
|
620
|
-
return function (_, x, y) { return
|
|
637
|
+
if (typeof (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.scroll) === 'function') {
|
|
638
|
+
return function (_, x, y) { return activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.scroll(x, y); };
|
|
621
639
|
}
|
|
622
|
-
return function (_, x, y) { return window.scrollTo(x, y); };
|
|
623
640
|
}
|
|
624
641
|
return function () { return undefined; };
|
|
625
642
|
};
|
|
626
|
-
var
|
|
627
|
-
var
|
|
628
|
-
?
|
|
629
|
-
|
|
643
|
+
var getNow = function (el) {
|
|
644
|
+
var activeWindow = getWin(el);
|
|
645
|
+
return isBrowser && (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.performance) && (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.performance.now)
|
|
646
|
+
? activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.performance.now.bind(activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.performance)
|
|
647
|
+
: Date.now;
|
|
648
|
+
};
|
|
630
649
|
function scrollElement(element, x, y) {
|
|
631
650
|
element.scrollLeft = x;
|
|
632
651
|
element.scrollTop = y;
|
|
@@ -634,27 +653,28 @@ function scrollElement(element, x, y) {
|
|
|
634
653
|
function ease(time) {
|
|
635
654
|
return 0.5 * (1 - Math.cos(Math.PI * time));
|
|
636
655
|
}
|
|
637
|
-
function getDocumentBodyStrict() {
|
|
638
|
-
if (isNullable(
|
|
656
|
+
function getDocumentBodyStrict(activeDocument) {
|
|
657
|
+
if (isNullable(activeDocument.body)) {
|
|
639
658
|
throw new Error('Scrolling can be used only in browser');
|
|
640
659
|
}
|
|
641
|
-
return
|
|
660
|
+
return activeDocument.body;
|
|
642
661
|
}
|
|
643
662
|
function findScrollableParent(el) {
|
|
663
|
+
var _a;
|
|
644
664
|
var isBody;
|
|
645
665
|
var hasScrollableSpace;
|
|
646
666
|
var hasVisibleOverflow;
|
|
647
667
|
var currentElement = el;
|
|
648
668
|
do {
|
|
649
|
-
if (isNullable(currentElement.parentElement) || !(currentElement.parentElement
|
|
650
|
-
return getDocumentBodyStrict();
|
|
669
|
+
if (isNullable(currentElement.parentElement) || !isElement(currentElement.parentElement)) {
|
|
670
|
+
return getDocumentBodyStrict(getDoc(currentElement));
|
|
651
671
|
}
|
|
652
672
|
currentElement = currentElement.parentElement;
|
|
653
|
-
isBody = currentElement ===
|
|
673
|
+
isBody = currentElement === getDoc(currentElement).body;
|
|
654
674
|
hasScrollableSpace =
|
|
655
675
|
currentElement.clientHeight < currentElement.scrollHeight ||
|
|
656
676
|
currentElement.clientWidth < currentElement.scrollWidth;
|
|
657
|
-
hasVisibleOverflow =
|
|
677
|
+
hasVisibleOverflow = ((_a = getWin(currentElement)) === null || _a === void 0 ? void 0 : _a.getComputedStyle(currentElement, null).overflow) === 'visible';
|
|
658
678
|
} while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));
|
|
659
679
|
isBody = null;
|
|
660
680
|
hasScrollableSpace = null;
|
|
@@ -662,8 +682,15 @@ function findScrollableParent(el) {
|
|
|
662
682
|
return currentElement;
|
|
663
683
|
}
|
|
664
684
|
function scrollBy(_a) {
|
|
665
|
-
var left = _a.left, top = _a.top;
|
|
666
|
-
|
|
685
|
+
var element = _a.element, left = _a.left, top = _a.top;
|
|
686
|
+
var activeWindow = getWin(element);
|
|
687
|
+
var activeDocument = getDoc(element);
|
|
688
|
+
if (!activeWindow) {
|
|
689
|
+
return new Promise(function (resolve) { return resolve(); });
|
|
690
|
+
}
|
|
691
|
+
var x = Math.floor(left) + ((activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.scrollX) || (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.pageXOffset));
|
|
692
|
+
var y = Math.floor(top) + ((activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.scrollY) || (activeWindow === null || activeWindow === void 0 ? void 0 : activeWindow.pageYOffset));
|
|
693
|
+
return smoothScroll(getDocumentBodyStrict(activeDocument), x, y);
|
|
667
694
|
}
|
|
668
695
|
|
|
669
696
|
function getVisibleValidation(visible, actual, changing) {
|
|
@@ -709,6 +736,7 @@ function isEqual(a, b) {
|
|
|
709
736
|
|
|
710
737
|
var validationsFeatureFlagsDefault = {
|
|
711
738
|
dropdownsDoNotOpenOnFocusByValidation: false,
|
|
739
|
+
hideTooltipOnSelectionControls: false,
|
|
712
740
|
};
|
|
713
741
|
var ValidationsFeatureFlagsContext = React.createContext(validationsFeatureFlagsDefault);
|
|
714
742
|
ValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';
|
|
@@ -718,10 +746,6 @@ var getFullValidationsFlagsContext = function (flags) {
|
|
|
718
746
|
return __assign(__assign({}, validationsFeatureFlagsDefault), flags);
|
|
719
747
|
};
|
|
720
748
|
|
|
721
|
-
if (isBrowser && typeof HTMLElement === 'undefined') {
|
|
722
|
-
var w = window;
|
|
723
|
-
w.HTMLElement = w.Element;
|
|
724
|
-
}
|
|
725
749
|
var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
726
750
|
__extends(ValidationWrapperInternal, _super);
|
|
727
751
|
function ValidationWrapperInternal() {
|
|
@@ -774,7 +798,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
774
798
|
switch (_b.label) {
|
|
775
799
|
case 0:
|
|
776
800
|
htmlElement = this.getRootNode();
|
|
777
|
-
if (!(htmlElement
|
|
801
|
+
if (!isElement(htmlElement)) return [3 /*break*/, 3];
|
|
778
802
|
_a = this.context.getSettings(), disableSmoothScroll = _a.disableSmoothScroll, scrollOffset = _a.scrollOffset;
|
|
779
803
|
if (!!disableSmoothScroll) return [3 /*break*/, 2];
|
|
780
804
|
return [4 /*yield*/, smoothScrollIntoView(htmlElement, scrollOffset)];
|
|
@@ -830,6 +854,9 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
830
854
|
args[_i] = arguments[_i];
|
|
831
855
|
}
|
|
832
856
|
_this.isChanging = true;
|
|
857
|
+
if (_this.featureFlags.hideTooltipOnSelectionControls && ReactUiDetection.isSelectionControl(children)) {
|
|
858
|
+
_this.setValidation(null);
|
|
859
|
+
}
|
|
833
860
|
if (children.props && children.props.onValueChange) {
|
|
834
861
|
(_a = children.props).onValueChange.apply(_a, args);
|
|
835
862
|
}
|
|
@@ -860,7 +887,7 @@ var ValidationWrapperInternal = /** @class */ (function (_super) {
|
|
|
860
887
|
};
|
|
861
888
|
ValidationWrapperInternal.prototype.getControlPosition = function () {
|
|
862
889
|
var htmlElement = this.getRootNode();
|
|
863
|
-
if (htmlElement
|
|
890
|
+
if (isElement(htmlElement)) {
|
|
864
891
|
var rect = htmlElement.getBoundingClientRect();
|
|
865
892
|
return { x: rect.top, y: rect.left };
|
|
866
893
|
}
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/utils/getValidationTextColor.ts","../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationText.tsx","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/FocusMode.tsx","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/utils/getRootNode/getRootNode.ts","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../src/utils/featureFlagsContext/ValidationsFeatureFlagsContext.tsx","../../src/utils/featureFlagsContext/FeatureFlagsHelpers.tsx","../../src/ValidationWrapperInternal.tsx","../../src/ValidationWrapper.tsx","../../src/Validations/ValidationBuilder.ts","../../src/Validations/ValidationReader.ts","../../src/Validations/ValidationWriter.ts","../../src/Validations/PathHelper.ts","../../src/Validations/index.ts"],"sourcesContent":["import type { ValidationLevel } from '../ValidationWrapperInternal';\nimport type { ThemeValidations } from '../../typings/theme-context';\n\nexport const DEFAULT_TEXT_COLOR = '#d43517';\n\nexport function getValidationTextColor(theme: ThemeValidations, level: ValidationLevel = 'error') {\n return (\n (level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR\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","import React from 'react';\n\nimport { isNonNullable } from '../src/utils/isNonNullable';\n\ndeclare function require(name: string): any;\n\nconst defaultOrNamed = (module: any, component: string) =>\n module && module.__esModule && module.default ? module.default : module[component];\n\nconst importContext = (module: any, component: string) => module[component] || React.createContext({});\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\nconst ThemeContext = importContext(require('__REACT_UI_PACKAGE__/lib/theming/ThemeContext'), 'ThemeContext');\n\nexport { Tooltip, ThemeContext };\n\nexport class ReactUiDetection {\n public static isDatePicker(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'DatePicker';\n }\n\n public static isRadioGroup(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'RadioGroup';\n }\n\n public static isTokenInput(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'TokenInput';\n }\n\n public static isSwitcher(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'Switcher';\n }\n public static isComboBox(childrenArray: any): boolean {\n return isNonNullable(childrenArray) && childrenArray.type?.__KONTUR_REACT_UI__ === 'ComboBox';\n }\n}\n","import React, { useContext } from 'react';\n\nimport { Nullable } from '../typings/Types';\nimport { ThemeValidations } from '../typings/theme-context';\n\nimport { TextPosition, Validation } from './ValidationWrapperInternal';\nimport { getValidationTextColor } from './utils/getValidationTextColor';\nimport { ThemeContext } from './ReactUiDetection';\n\nexport interface ValidationTextProps {\n pos: TextPosition;\n children: React.ReactNode;\n validation: Nullable<Validation>;\n 'data-tid'?: string;\n}\n\nexport const ValidationText = ({ pos, children, validation, 'data-tid': dataTid }: ValidationTextProps) => {\n const theme = useContext<ThemeValidations>(ThemeContext);\n const color = getValidationTextColor(theme, validation?.level);\n\n if (pos === 'right') {\n const childrenAndValidationText = (\n <>\n {children}\n <span data-tid={dataTid} data-validation-message=\"text\" style={{ marginLeft: '10px', color }}>\n {(validation && validation.message) || ''}\n </span>\n </>\n );\n return <div style={{ display: 'inline-block' }}>{childrenAndValidationText}</div>;\n }\n\n const validationText = (\n <span\n data-tid={dataTid}\n data-validation-message=\"text\"\n style={{\n color,\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n );\n\n const childrenAndValidationText = (\n <>\n {children}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>{validationText}</span>\n </>\n );\n\n return <div style={{ position: 'relative', display: 'inline-block' }}>{childrenAndValidationText}</div>;\n};\n\nValidationText.__KONTUR_REACT_UI__ = 'ValidationText';\nValidationText.displayName = 'ValidationText';\n","import React from 'react';\n\nimport { ReactUiDetection, Tooltip } from './ReactUiDetection';\n\nexport type TooltipPosition =\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n\nexport interface ValidationTooltipProps {\n children: React.ReactElement<any>;\n error: boolean;\n pos?: TooltipPosition;\n render?: () => React.ReactNode;\n 'data-tid'?: string;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationTooltip';\n public static displayName = 'ValidationTooltip';\n\n public render() {\n const { children, pos, error, render, ...rest } = this.props;\n\n const onlyChild = React.Children.only(children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n\n return ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child) ? (\n <Tooltip useWrapper={false} pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {child}\n </Tooltip>\n ) : (\n <Tooltip pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {children}\n </Tooltip>\n );\n }\n}\n","import React from 'react';\n\nimport { ValidationText } from './ValidationText';\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage, TextPosition } from './ValidationWrapperInternal';\n\nexport function tooltip(pos: TooltipPosition): RenderErrorMessage {\n return (control, hasError, validation) => {\n return (\n <ValidationTooltip\n pos={pos}\n error={hasError}\n render={() => {\n if (!validation || !validation.message) {\n return null;\n }\n return (validation && validation.message) || '';\n }}\n >\n {control}\n </ValidationTooltip>\n );\n };\n}\n\nexport function text(pos: TextPosition = 'right'): RenderErrorMessage {\n return (control, _hasError, validation) => {\n return (\n <ValidationText pos={pos} validation={validation}>\n {control}\n </ValidationText>\n );\n };\n}\n","import React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unnecessary-type-constraint\nexport function createPropsGetter<DP extends unknown>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T) {\n return this.props as DefaultizedProps<T['props'], DP>;\n };\n}\n","const env: NodeJS.ProcessEnv = (typeof process === 'object' && process && process.env) || {};\nconst { enableReactTesting, NODE_ENV, REACT_UI_TEST, REACT_APP_REACT_UI_TEST, STORYBOOK_REACT_UI_TEST } = env;\n\nconst isReactUITestEnv =\n Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is not usable (dev/prod)\n Boolean(REACT_APP_REACT_UI_TEST) || // for usage with CRA\n Boolean(STORYBOOK_REACT_UI_TEST) || // for usage with storybook\n Boolean(enableReactTesting); // deprecated, legacy variable\n\nexport const isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;\n\nexport const isBrowser = typeof window !== 'undefined';\n\nexport const canUseDOM = isBrowser && window.document && window.document.createElement;\n\nexport function isElement(el: unknown): el is Element {\n if (isBrowser) {\n return el instanceof Element;\n }\n\n return false;\n}\n\nexport function isNode(node: unknown): node is Node {\n if (isBrowser) {\n return node instanceof Node;\n }\n\n return false;\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 */\n// @ts-expect-error: TypeScript doesn't consider the check inside of the function.\nexport const isNullable = <T>(value: T): value is null | undefined => {\n return value === null || value === undefined;\n};\n","export enum FocusMode {\n 'Errors',\n 'ErrorsAndWarnings',\n 'None',\n}\n","import React from 'react';\n\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport type { ScrollOffset, ValidateArgumentType } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\nimport { FocusMode } from './FocusMode';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n 'data-tid'?: string;\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: boolean) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextType {\n register: (wrapper: ValidationWrapperInternal) => void;\n unregister: (wrapper: ValidationWrapperInternal) => void;\n instanceProcessBlur: (wrapper: ValidationWrapperInternal) => void;\n onValidationUpdated: (wrapper: ValidationWrapperInternal, isValid: boolean) => void;\n getSettings: () => ValidationContextSettings;\n isAnyWrapperInChangingMode: () => boolean;\n}\n\nexport const ValidationContext = React.createContext<ValidationContextType>({\n register: () => undefined,\n unregister: () => undefined,\n instanceProcessBlur: () => undefined,\n onValidationUpdated: () => undefined,\n getSettings: () => ({\n scrollOffset: {},\n disableSmoothScroll: false,\n }),\n isAnyWrapperInChangingMode: () => false,\n});\n\nValidationContext.displayName = 'ValidationContext';\n\nexport class ValidationContextWrapper extends React.Component<ValidationContextWrapperProps> {\n public childWrappers: ValidationWrapperInternal[] = [];\n\n public getSettings(): ValidationContextSettings {\n let scrollOffset: ScrollOffset = {};\n\n if (typeof this.props.scrollOffset === 'number') {\n scrollOffset = { top: this.props.scrollOffset };\n } else {\n scrollOffset = isNullable(this.props.scrollOffset) ? {} : this.props.scrollOffset;\n }\n\n const { top = 50, bottom = 0 } = scrollOffset;\n return {\n scrollOffset: {\n top,\n bottom,\n },\n disableSmoothScroll: this.props.disableSmoothScroll,\n };\n }\n\n public register(wrapper: ValidationWrapperInternal) {\n this.childWrappers.push(wrapper);\n }\n\n public unregister(wrapper: ValidationWrapperInternal) {\n this.childWrappers.splice(this.childWrappers.indexOf(wrapper), 1);\n this.onValidationRemoved();\n }\n\n public instanceProcessBlur(instance: ValidationWrapperInternal) {\n for (const wrapper of this.childWrappers.filter((x) => x !== instance && !x.isIndependent())) {\n wrapper.processBlur();\n }\n }\n\n public onValidationUpdated(wrapper: ValidationWrapperInternal, isValid?: boolean) {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => {\n if (x === wrapper) {\n return !isValid;\n }\n return x.hasError();\n });\n onValidationUpdated(isValidResult);\n }\n }\n\n public isAnyWrapperInChangingMode(): boolean {\n return this.childWrappers.some((x) => x.isChanging);\n }\n\n public onValidationRemoved() {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => x.hasError());\n onValidationUpdated(isValidResult);\n }\n }\n\n public getChildWrappersSortedByPosition(): ValidationWrapperInternal[] {\n const wrappersWithPosition = [...this.childWrappers].map((x) => ({\n target: x,\n position: x.getControlPosition(),\n }));\n wrappersWithPosition.sort((x, y) => {\n const xPosition = x.position;\n const yPosition = y.position;\n if (isNullable(xPosition) && isNullable(yPosition)) {\n return 0;\n }\n\n if (isNullable(xPosition)) {\n return 1;\n }\n if (isNullable(yPosition)) {\n return -1;\n }\n if (Math.sign(xPosition.x - yPosition.x) !== 0) {\n return Math.sign(xPosition.x - yPosition.x);\n }\n return Math.sign(xPosition.y - yPosition.y);\n });\n return wrappersWithPosition.map((x) => x.target);\n }\n\n public async validate(withoutFocusOrValidationSettings: ValidateArgumentType): Promise<boolean> {\n const focusMode = ValidationContextWrapper.getFocusMode(withoutFocusOrValidationSettings);\n\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n\n const childrenWrappersSortedByPosition = this.getChildWrappersSortedByPosition();\n const firstError = childrenWrappersSortedByPosition.find((x) => x.hasError());\n if (focusMode === FocusMode.ErrorsAndWarnings) {\n childrenWrappersSortedByPosition.find((x) => x.hasError() || x.hasWarning())?.focus();\n }\n if (focusMode === FocusMode.Errors) {\n firstError?.focus();\n }\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstError);\n }\n return !firstError;\n }\n\n private static getFocusMode(withoutFocusOrValidationSettings: ValidateArgumentType) {\n if (typeof withoutFocusOrValidationSettings === 'object' && 'focusMode' in withoutFocusOrValidationSettings) {\n return withoutFocusOrValidationSettings.focusMode;\n } else if (!withoutFocusOrValidationSettings) {\n return FocusMode.Errors;\n }\n return FocusMode.None;\n }\n\n private renderChildren = (children: ValidationContextWrapperProps['children']) => {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement, {\n 'data-tid': this.props['data-tid'],\n });\n }\n\n return children;\n };\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n {this.renderChildren(<div style={{ display: 'inline' }}>{this.props.children}</div>)}\n </ValidationContext.Provider>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { createPropsGetter } from './utils/createPropsGetter';\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\nimport { FocusMode } from './FocusMode';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationSettings {\n focusMode: FocusMode;\n}\n\nexport type ValidateArgumentType = boolean | ValidationSettings;\n\nexport interface ValidationContainerProps {\n 'data-tid'?: string;\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: Nullable<boolean>) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll?: boolean;\n}\n\ntype DefaultProps = Required<Pick<ValidationContainerProps, 'disableSmoothScroll'>>;\n\nexport class ValidationContainer extends React.Component<ValidationContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationContainer';\n public static displayName = 'ValidationContainer';\n\n public static defaultProps: DefaultProps = {\n disableSmoothScroll: isTestEnv,\n };\n\n private getProps = createPropsGetter(ValidationContainer.defaultProps);\n\n public static propTypes = {\n scrollOffset(props: ValidationContainerProps, propName: keyof ValidationContainerProps, componentName: string) {\n const { scrollOffset } = props;\n if (typeof scrollOffset === 'number') {\n return new Error(\n `[${componentName}]: scrollOffset as a number type has been deprecated, now use object { top?: number; bottom?: number; }`,\n );\n }\n },\n };\n\n private childContext: ValidationContextWrapper | null = null;\n\n public async submit(withoutFocus?: boolean): Promise<void>;\n public async submit(validationSettings?: ValidationSettings): Promise<void>;\n\n public async submit(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public async validate(withoutFocus?: boolean): Promise<boolean>;\n public async validate(validationSettings?: ValidationSettings): Promise<boolean>;\n\n public validate(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n data-tid={this.props['data-tid']}\n ref={this.refChildContext}\n scrollOffset={this.props.scrollOffset}\n disableSmoothScroll={this.getProps().disableSmoothScroll}\n onValidationUpdated={this.props.onValidationUpdated}\n >\n {this.props.children}\n </ValidationContextWrapper>\n );\n }\n\n private refChildContext = (el: ValidationContextWrapper | null) => (this.childContext = el);\n}\n","import { findDOMNode } from 'react-dom';\nimport React from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../../../typings/Types';\nimport { isElement, isNode, canUseDOM } from '../utils';\n\ninterface InstanceWithRootNode {\n getRootNode: () => Nullable<HTMLElement>;\n}\n\nconst isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n\n/**\n * Temporary duplicates @skbkontur/react-ui/lib/rootNode/getRootNode.ts\n * */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n /**\n * Options of what instance can be:\n * 1. null or undefined\n * 2. DOM Element\n * 3. class Component instance (object)\n * 4. literally anything, returned from useImperativeHandle\n */\n\n if (!canUseDOM || !instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convenient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be an Element already if its coming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n // it happened to be that native Node interface also has\n // the \"getRootNode\" method, but we can ignore it here\n // because we'd already checked the instance on being an Element\n // which is a subclass of Node, so, just fixing types here\n if (!isNode(instance)) {\n rootNode = instance.getRootNode();\n }\n }\n\n if (rootNode !== undefined) {\n // the getter exists and has returned something, it should be what we are looking for\n // probably its an Element or null (which is also OK, e.g. Popup/Tooltip/Hint before opening)\n return rootNode;\n }\n\n try {\n // rootNode is undefined, which means that the getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected,\n // so, we have to fall back to the deprecated findDOMNode, which breaks StrictMode\n // instance can still be a class component or an imperative handle (i.e., anything, except null/undefined/Element)\n rootNode = findDOMNode(instance);\n } catch (e) {\n // but findDOMNode doesn`t accept everything that instance can be at this point,\n // so we have to handle exceptions\n // see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86\n warning(\n false,\n '[getRootNode]: can`t fallback to findDOMNode.' +\n '\\n' +\n 'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +\n '\\n\\n' +\n e.message,\n );\n return null;\n }\n\n // the findDOMNode can also return Text, but we are only interested in Elements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n","import { Nullable, Omit } from '../typings/Types';\n\nimport { ScrollOffset } from './ValidationContainer';\nimport { isBrowser } from './utils/utils';\nimport { isNullable } from './utils/isNullable';\n\nexport async function smoothScrollIntoView(element: HTMLElement, scrollOffset: ScrollOffset): Promise<void> {\n const scrollableParent = findScrollableParent(element);\n const parentRects = scrollableParent.getBoundingClientRect();\n const clientRects = element.getBoundingClientRect();\n\n const topOffset = scrollOffset.top || 0;\n const bottomOffset = scrollOffset.bottom || 0;\n\n if (scrollableParent === document.body) {\n const html = document.documentElement || { clientHeight: 0, clientWidth: 0 };\n const viewportHeight = window.innerHeight || html.clientHeight;\n const viewportWidth = window.innerWidth || html.clientWidth;\n\n const isElementInViewport =\n clientRects.top >= topOffset &&\n clientRects.left >= 0 &&\n clientRects.bottom <= viewportHeight - bottomOffset &&\n clientRects.right <= viewportWidth;\n\n if (isElementInViewport) {\n return;\n }\n\n await scrollBy({\n left: clientRects.left,\n top: clientRects.top - topOffset,\n });\n } else {\n if (clientRects.top - topOffset + 50 > parentRects.top && clientRects.bottom < parentRects.bottom) {\n return;\n }\n\n await smoothScroll(\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top - topOffset,\n );\n await scrollBy({\n left: parentRects.left,\n top: parentRects.top,\n });\n }\n}\n\nfunction smoothScroll(element: HTMLElement, x: number, y: number): Promise<void> {\n let context: Omit<StepContent, 'resolve'>;\n if (element === getDocumentBodyStrict()) {\n context = {\n scrollable: window as any as HTMLElement,\n startX: window.scrollX || window.pageXOffset,\n startY: window.scrollY || window.pageYOffset,\n method: scrollWindow,\n startTime: now(),\n x,\n y,\n };\n } else {\n context = {\n scrollable: element,\n startX: element.scrollLeft,\n startY: element.scrollTop,\n method: scrollElement,\n startTime: now(),\n x,\n y,\n };\n }\n\n return new Promise((resolve) => step({ ...context, resolve }));\n}\n\ninterface StepContent {\n scrollable: HTMLElement;\n startTime: number;\n startX: number;\n startY: number;\n x: number;\n y: number;\n method: (element: Element, x: number, y: number) => void;\n resolve: () => void;\n}\n\nfunction step(context: StepContent) {\n const time = now();\n const elapsed = Math.min(1, (time - context.startTime) / ScrollTime);\n const value = ease(elapsed);\n\n const currentX = context.startX + (context.x - context.startX) * value;\n const currentY = context.startY + (context.y - context.startY) * value;\n\n context.method(context.scrollable, currentX, currentY);\n\n if (currentX !== context.x || currentY !== context.y) {\n window.requestAnimationFrame(() => step(context));\n } else {\n context.resolve();\n }\n}\n\nconst ScrollTime = 468;\n\nconst getScrollWindow = (isBrowser: boolean) => {\n if (isBrowser) {\n if (typeof window.scroll === 'function') {\n return (_: any, x: any, y: any) => window.scroll(x, y);\n }\n\n return (_: any, x: any, y: any) => window.scrollTo(x, y);\n }\n\n return () => undefined;\n};\n\nconst scrollWindow = getScrollWindow(isBrowser);\n\nconst now =\n isBrowser && window.performance && window.performance.now\n ? window.performance.now.bind(window.performance)\n : Date.now;\n\nfunction scrollElement(element: Element, x: number, y: number) {\n element.scrollLeft = x;\n element.scrollTop = y;\n}\n\nfunction ease(time: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * time));\n}\n\nfunction getDocumentBodyStrict(): HTMLElement {\n if (isNullable(document.body)) {\n throw new Error('Scrolling can be used only in browser');\n }\n\n return document.body;\n}\n\nfunction findScrollableParent(el: HTMLElement): HTMLElement {\n let isBody: Nullable<boolean>;\n let hasScrollableSpace: Nullable<boolean>;\n let hasVisibleOverflow: Nullable<boolean>;\n let currentElement: HTMLElement = el;\n do {\n if (isNullable(currentElement.parentElement) || !(currentElement.parentElement instanceof HTMLElement)) {\n return getDocumentBodyStrict();\n }\n currentElement = currentElement.parentElement;\n isBody = currentElement === document.body;\n hasScrollableSpace =\n currentElement.clientHeight < currentElement.scrollHeight ||\n currentElement.clientWidth < currentElement.scrollWidth;\n hasVisibleOverflow = window.getComputedStyle(currentElement, null).overflow === 'visible';\n } while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));\n\n isBody = null;\n hasScrollableSpace = null;\n hasVisibleOverflow = null;\n\n return currentElement;\n}\n\nfunction scrollBy({ left, top }: { left: number; top: number }): Promise<void> {\n return smoothScroll(\n getDocumentBodyStrict(),\n Math.floor(left) + (window.scrollX || window.pageXOffset),\n Math.floor(top) + (window.scrollY || window.pageYOffset),\n );\n}\n","import { Nullable } from '../typings/Types';\n\nimport { Validation, ValidationBehaviour, ValidationLevel } from './ValidationWrapperInternal';\n\nexport function getVisibleValidation(\n visible: Nullable<Validation>,\n actual: Nullable<Validation>,\n changing: boolean,\n): Nullable<Validation> {\n const from = (type?: Nullable<ValidationBehaviour>): boolean => getType(visible) === type;\n const to = (type?: Nullable<ValidationBehaviour>): boolean => getType(actual) === type;\n\n if (to('immediate')) {\n return actual;\n }\n\n if (changing) {\n return from('immediate') ? null : visible;\n }\n\n if (from(null) && to('lostfocus')) {\n return null;\n }\n\n if (to('lostfocus')) {\n return actual;\n }\n\n if (from('submit') && to('submit')) {\n return visible;\n }\n\n return null;\n}\n\nexport function getType(validation: Nullable<Validation>): Nullable<ValidationBehaviour> {\n return validation ? validation.behaviour : null;\n}\n\nexport function getLevel(validation: Nullable<Validation>): Nullable<ValidationLevel> {\n return validation ? validation.level : null;\n}\n\nexport function getIndependent(validation: Nullable<Validation>): Nullable<boolean> {\n return validation ? validation.independent : null;\n}\n\nexport function isEqual(a: Nullable<Validation>, b: Nullable<Validation>): boolean {\n if (a === b) {\n return true;\n }\n return (\n !!a &&\n !!b &&\n a.behaviour === b.behaviour &&\n a.message === b.message &&\n a.independent === b.independent &&\n a.level === b.level\n );\n}\n","import React from 'react';\n\nexport interface ValidationsFeatureFlags {\n dropdownsDoNotOpenOnFocusByValidation?: boolean;\n}\n\nexport const validationsFeatureFlagsDefault: ValidationsFeatureFlags = {\n dropdownsDoNotOpenOnFocusByValidation: false,\n};\n\nexport const ValidationsFeatureFlagsContext =\n React.createContext<ValidationsFeatureFlags>(validationsFeatureFlagsDefault);\n\nValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';\nValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';\n","import { validationsFeatureFlagsDefault, ValidationsFeatureFlags } from './ValidationsFeatureFlagsContext';\n\nexport const getFullValidationsFlagsContext = (flags: ValidationsFeatureFlags) => {\n return { ...validationsFeatureFlagsDefault, ...flags };\n};\n","import React, { ReactInstance } from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\nimport { getRootNode } from './utils/getRootNode';\nimport { isBrowser } from './utils/utils';\nimport { smoothScrollIntoView } from './smoothScrollIntoView';\nimport { getIndependent, getLevel, getType, getVisibleValidation, isEqual } from './ValidationHelper';\nimport { ReactUiDetection } from './ReactUiDetection';\nimport { ValidationContext, ValidationContextType } from './ValidationContextWrapper';\nimport { ValidationsFeatureFlags, ValidationsFeatureFlagsContext } from './utils/featureFlagsContext';\n\nif (isBrowser && typeof HTMLElement === 'undefined') {\n const w = window as any;\n w.HTMLElement = w.Element;\n}\n\nexport type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';\n\nexport type ValidationLevel = 'error' | 'warning';\n\nexport type TextPosition = 'bottom' | 'right';\n\nexport interface Validation {\n level: ValidationLevel;\n behaviour: ValidationBehaviour;\n message: React.ReactNode;\n independent: boolean;\n}\n\nexport type RenderErrorMessage = (\n control: React.ReactElement<any>,\n hasError: boolean,\n validation: Nullable<Validation>,\n) => React.ReactElement<any>;\n\nexport interface ValidationWrapperInternalProps {\n children?: React.ReactElement<any>;\n validation: Nullable<Validation>;\n errorMessage: RenderErrorMessage;\n 'data-tid'?: string;\n}\n\ninterface ValidationWrapperInternalState {\n validation: Nullable<Validation>;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class ValidationWrapperInternal extends React.Component<\n ValidationWrapperInternalProps,\n ValidationWrapperInternalState\n> {\n public state: ValidationWrapperInternalState = {\n validation: null,\n };\n\n public isChanging = false;\n private child: any; // todo type\n private rootNode: Nullable<Element>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n private featureFlags!: ValidationsFeatureFlags;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs',\n );\n if (this.context) {\n this.context.register(this);\n }\n this.applyValidation(this.props.validation);\n }\n\n public componentWillUnmount() {\n this.context.unregister(this);\n }\n\n public componentDidUpdate() {\n this.applyValidation(this.props.validation);\n }\n\n public async focus(): Promise<void> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const { disableSmoothScroll, scrollOffset } = this.context.getSettings();\n if (!disableSmoothScroll) {\n await smoothScrollIntoView(htmlElement, scrollOffset);\n }\n if (this.child && typeof this.child.focus === 'function') {\n this.child.focus({ withoutOpenDropdown: this.featureFlags.dropdownsDoNotOpenOnFocusByValidation });\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children, 'data-tid': dataTid } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: this.customRef,\n error: !this.isChanging && getLevel(validation) === 'error',\n warning: !this.isChanging && getLevel(validation) === 'warning',\n onBlur: (...args: any[]) => {\n this.handleBlur();\n if (children.props && children.props.onBlur) {\n children.props.onBlur(...args);\n }\n },\n onChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onChange) {\n children.props.onChange(...args);\n }\n },\n onValueChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onValueChange) {\n children.props.onValueChange(...args);\n }\n },\n })\n ) : (\n <span ref={this.setRootNode} />\n );\n if (ReactUiDetection.isComboBox(clonedChild)) {\n clonedChild = React.cloneElement(clonedChild, {\n onInputValueChange: (...args: any[]) => {\n this.isChanging = true;\n this.forceUpdate();\n if (children && children.props && children.props.onInputValueChange) {\n return children.props.onInputValueChange(...args);\n }\n },\n });\n }\n\n return (\n <ValidationsFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = flags;\n return React.cloneElement(\n this.props.errorMessage(<div style={{ display: 'inline' }}>{clonedChild}</div>, !!validation, validation),\n {\n 'data-tid': dataTid,\n },\n );\n }}\n </ValidationsFeatureFlagsContext.Consumer>\n );\n }\n\n private customRef = (instance: Nullable<ReactInstance>) => {\n const { children } = this.props;\n\n this.setRootNode(instance);\n const child = children as any; // todo type or maybe React.Children.only\n if (child && child.ref) {\n if (typeof child.ref === 'function') {\n child.ref(instance);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = instance;\n }\n }\n this.child = instance;\n };\n\n private setRootNode = (element: Nullable<ReactInstance>) => {\n this.rootNode = getRootNode(element);\n };\n\n public getRootNode = () => {\n return this.rootNode;\n };\n\n public getControlPosition(): Nullable<Point> {\n const htmlElement = this.getRootNode();\n if (htmlElement instanceof HTMLElement) {\n const rect = htmlElement.getBoundingClientRect();\n return { x: rect.top, y: rect.left };\n }\n return null;\n }\n\n public processBlur() {\n const touched = this.isChanging;\n this.isChanging = false;\n const validation = this.getOnBlurValidation(touched);\n return this.setValidation(validation);\n }\n\n public async processSubmit(): Promise<void> {\n this.isChanging = false;\n return this.setValidation(this.props.validation);\n }\n\n public hasError(): boolean {\n return getLevel(this.state.validation) === 'error';\n }\n\n public hasWarning(): boolean {\n return getLevel(this.state.validation) === 'warning';\n }\n\n public isIndependent(): boolean {\n return getIndependent(this.state.validation || this.props.validation) === true;\n }\n\n private handleBlur() {\n setTimeout(() => {\n this.processBlur();\n if (!this.isIndependent()) {\n this.context.instanceProcessBlur(this);\n }\n this.setState({});\n });\n }\n\n private applyValidation(actual: Nullable<Validation>) {\n const visible = this.getVisibleValidation(actual);\n this.setValidation(visible);\n }\n\n private setValidation(validation: Nullable<Validation>): Promise<void> {\n const current = this.state.validation;\n\n if (current === validation) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.setState({ validation }, () => {\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n resolve();\n });\n });\n }\n\n private getOnBlurValidation(touched: boolean): Nullable<Validation> {\n const actual = this.props.validation;\n if (getType(actual) === 'submit') {\n const visible = this.state.validation;\n return !touched && getType(visible) === 'submit' ? visible : null;\n }\n return actual;\n }\n\n private getVisibleValidation(actual: Nullable<Validation>): Nullable<Validation> {\n const visible = this.state.validation;\n if (isEqual(visible, actual)) {\n return visible;\n }\n const changing = this.context.isAnyWrapperInChangingMode();\n return getVisibleValidation(visible, actual, changing);\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { tooltip } from './ErrorRenderer';\nimport {\n RenderErrorMessage,\n Validation,\n ValidationBehaviour,\n ValidationLevel,\n ValidationWrapperInternal,\n ValidationWrapperInternalProps,\n} from './ValidationWrapperInternal';\n\nexport interface ValidationInfo {\n type?: Nullable<ValidationBehaviour>;\n level?: Nullable<ValidationLevel>;\n message: React.ReactNode;\n independent?: boolean;\n}\n\nexport interface ValidationWrapperProps extends Pick<ValidationWrapperInternalProps, 'data-tid'> {\n children?: React.ReactElement<any>;\n validationInfo: Nullable<ValidationInfo>;\n renderMessage?: Nullable<RenderErrorMessage>;\n}\n\nexport class ValidationWrapper extends React.Component<ValidationWrapperProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationWrapper';\n public static displayName = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage, 'data-tid': datTid } = this.props;\n const validation: Nullable<Validation> = validationInfo\n ? {\n level: validationInfo.level || 'error',\n behaviour: validationInfo.type || 'lostfocus',\n message: validationInfo.message,\n independent: validationInfo.independent || false,\n }\n : null;\n\n return (\n <ValidationWrapperInternal\n data-tid={datTid}\n errorMessage={renderMessage || tooltip('right top')}\n validation={validation}\n >\n {children}\n </ValidationWrapperInternal>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../../typings/Types';\nimport { ValidationBehaviour, ValidationLevel } from '../ValidationWrapperInternal';\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { isNullable } from '../utils/isNullable';\n\nimport { LambdaPath, PathTokensCache } from './PathHelper';\nimport { ValidationWriter } from './ValidationWriter';\nimport { ItemValidationRule, ValidationRule } from './Types';\n\ninterface PathInfo<T> {\n data: T;\n path: string[];\n}\n\nexport class ValidationBuilder<TRoot, T> {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private readonly writer: ValidationWriter<TRoot>,\n private readonly tokens: PathTokensCache,\n private readonly path: string[],\n private readonly data: T,\n ) {}\n\n public prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info)) {\n return;\n }\n\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, info.path, info.data);\n rule(builder, builder.data);\n }\n\n public array<TChild>(lambdaPath: LambdaPath<T, TChild[]>, rule: ItemValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info) || !Array.isArray(info.data)) {\n return;\n }\n\n const array = info.data;\n for (let i = 0; i < array.length; ++i) {\n const path = [...info.path, i.toString()];\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, path, array[i]);\n rule(builder, builder.data, i, array);\n }\n }\n\n public invalid(isInvalid: (value: T) => boolean, validationInfo: ValidationInfo): void;\n public invalid(\n isInvalid: (value: T) => boolean,\n message: React.ReactNode,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ): void;\n\n public invalid(\n isInvalid: (value: T) => boolean,\n messageOrValidationInfo: React.ReactNode | ValidationInfo,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ) {\n const validationWriter = this.writer.getNode<T>(this.path);\n if (validationWriter.isValidated()) {\n return;\n }\n\n const invalid = isInvalid(this.data);\n if (!invalid) {\n return;\n }\n\n if (isValidationInfo(messageOrValidationInfo)) {\n validationWriter.set(messageOrValidationInfo);\n } else {\n validationWriter.set({ message: messageOrValidationInfo, type, level, independent });\n }\n }\n\n private getPathInfo<TChild>(lambdaPath: LambdaPath<T, TChild>): Nullable<PathInfo<TChild>> {\n const path = this.tokens.getOrAdd(lambdaPath);\n\n let data: any = this.data;\n for (const part of path) {\n if (isNullable(data)) {\n return null;\n }\n data = data[part];\n }\n\n return { data, path: [...this.path, ...path] };\n }\n}\n\nconst isValidationInfo = (argument: unknown): argument is ValidationInfo =>\n typeof argument === 'object' && Object.prototype.hasOwnProperty.call(argument, 'message');\n","/* eslint-disable no-useless-constructor */\nimport { ValidationInfo } from '../ValidationWrapper';\nimport { ExtractItem, Nullable } from '../../typings/Types';\n\nimport { ValidationNode } from './Types';\nimport { LambdaPath, PathTokensCache } from './PathHelper';\n\nexport class ValidationReader<T> {\n constructor(\n private readonly node: Nullable<ValidationNode<T>>,\n private readonly tokens: PathTokensCache,\n ) {}\n\n public getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild> {\n const path = this.tokens.getOrAdd(lambdaPath);\n return this.getReaderInternal<TChild>(path);\n }\n\n public getNodeByIndex(index: number): ValidationReader<ExtractItem<T>> {\n return this.getReaderInternal<ExtractItem<T>>([index.toString()]);\n }\n\n public getNodeByKey<TKey extends keyof T>(key: TKey): ValidationReader<T[TKey]> {\n return this.getReaderInternal<T[TKey]>([key.toString()]);\n }\n\n public get(): Nullable<ValidationInfo> {\n return this.node ? this.node.validation : null;\n }\n\n private getReaderInternal<TChild>(path: string[]): ValidationReader<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationReader<TChild>(node, this.tokens);\n }\n\n private getNodeInternal<TChild>(path: string[]): Nullable<ValidationNode<TChild>> {\n let current: Nullable<ValidationNode<any>> = this.node;\n for (const part of path) {\n if (!current || !current.children) {\n return null;\n }\n current = current.children[part];\n }\n return current;\n }\n}\n","import { ValidationInfo } from '../ValidationWrapper';\n\nimport { ValidationNode } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nexport class ValidationWriter<T> {\n private readonly node: ValidationNode<T>;\n\n constructor(node?: ValidationNode<T>) {\n this.node = node || { validation: null, children: null };\n }\n\n public getReader(tokens: PathTokensCache): ValidationReader<T> {\n return new ValidationReader(this.node, tokens);\n }\n\n public set(validation: ValidationInfo): void {\n this.node.validation = validation;\n }\n\n public isValidated(): boolean {\n return !!this.node.validation;\n }\n\n public getNode<TChild>(path: string[]): ValidationWriter<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationWriter<TChild>(node);\n }\n\n private getNodeInternal<TChild>(path: string[]): ValidationNode<TChild> {\n let node: ValidationNode<any> = this.node;\n for (const part of path) {\n if (!node.children) {\n node.children = {};\n }\n if (!node.children[part]) {\n node.children[part] = {\n validation: null,\n children: null,\n };\n }\n node = node.children[part];\n }\n return node;\n }\n}\n","const classicFunctionRegEx =\n /^\\s*function\\s*\\(\\s*([A-Za-z0-9_$]+)\\s*\\)\\s*\\{\\s*(?:(?:\"use strict\"|'use strict');?)?\\s*return\\s+\\1\\s*([.[].*?)?\\s*;?\\s*\\}\\s*$/;\nconst arrowFunctionRegEx = /^\\s*\\(?\\s*([A-Za-z0-9_$]+)\\s*\\)?\\s*=>\\s*\\1\\s*([.[].*?)?\\s*$/;\n\ntype NonNullableRecursive<T> = {\n [K in keyof T]-?: T[K] extends Record<string, unknown> ? NonNullable<NonNullableRecursive<T[K]>> : NonNullable<T[K]>;\n};\n\nexport type LambdaPath<T, TChild> = (x: NonNullable<NonNullableRecursive<T>>) => TChild;\n\nexport function extractPath(lambda: string): string {\n const match = classicFunctionRegEx.exec(lambda) || arrowFunctionRegEx.exec(lambda);\n if (match && match.length === 3) {\n return (match[2] || '').replace(/(^\\.\\s*)/g, '');\n }\n throw new Error(`Not supported or invalid path: <${lambda}>`);\n}\n\nexport function extractTokens(path: string): string[] {\n return path.split(/[\\s.[\\]]+/g).filter((x) => x);\n}\n\nexport class PathTokensCache {\n private readonly cache = new Map<string, string[]>();\n\n public getOrAdd<T, TChild>(lambdaPath: LambdaPath<T, TChild>): string[] {\n const lambdaString = lambdaPath.toString();\n\n if (!this.cache.has(lambdaString)) {\n const path = extractPath(lambdaString);\n const tokens = extractTokens(path);\n this.cache.set(lambdaString, tokens);\n }\n\n return this.cache.get(lambdaString) as string[];\n }\n\n public has<T, TChild>(lambdaPath: LambdaPath<T, TChild>): boolean {\n const lambdaString = lambdaPath.toString();\n return this.cache.has(lambdaString);\n }\n\n public get size(): number {\n return this.cache.size;\n }\n}\n","import { ValidationBuilder } from './ValidationBuilder';\nimport { ValidationWriter } from './ValidationWriter';\nimport { RootValidationRule, ValidationRule, ItemValidationRule } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nfunction validate<T>(data: T, validationRule: RootValidationRule<T>, tokens: PathTokensCache): ValidationReader<T> {\n const validationWriter = new ValidationWriter<T>();\n const builder = new ValidationBuilder<T, T>(validationWriter, tokens, [], data);\n validationRule(builder, data);\n return validationWriter.getReader(tokens);\n}\n\nexport type Validator<T> = (value: T) => ValidationReader<T>;\n\nexport function createValidator<T>(rule: RootValidationRule<T>): Validator<T> {\n const tokens = new PathTokensCache();\n return (value: T): ValidationReader<T> => {\n return validate(value, rule, tokens);\n };\n}\n\nexport { ValidationReader, ValidationBuilder, RootValidationRule, ValidationRule, ItemValidationRule };\n"],"names":["useContext","FocusMode","findDOMNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/getValidationTextColor.ts","../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationText.tsx","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/FocusMode.tsx","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/utils/getRootNode/getRootNode.ts","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../src/utils/featureFlagsContext/ValidationsFeatureFlagsContext.tsx","../../src/utils/featureFlagsContext/FeatureFlagsHelpers.tsx","../../src/ValidationWrapperInternal.tsx","../../src/ValidationWrapper.tsx","../../src/Validations/ValidationBuilder.ts","../../src/Validations/ValidationReader.ts","../../src/Validations/ValidationWriter.ts","../../src/Validations/PathHelper.ts","../../src/Validations/index.ts"],"sourcesContent":["import type { ValidationLevel } from '../ValidationWrapperInternal';\nimport type { ThemeValidations } from '../../typings/theme-context';\n\nexport const DEFAULT_TEXT_COLOR = '#d43517';\n\nexport function getValidationTextColor(theme: ThemeValidations, level: ValidationLevel = 'error') {\n return (\n (level === 'warning' ? theme.validationsTextColorWarning : theme.validationsTextColorError) || DEFAULT_TEXT_COLOR\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","import type { ReactElement } from 'react';\nimport React from 'react';\n\nimport { isNonNullable } from '../src/utils/isNonNullable';\n\ndeclare function require(name: string): any;\n\nconst defaultOrNamed = (module: any, component: string) =>\n module && module.__esModule && module.default ? module.default : module[component];\n\nconst importContext = (module: any, component: string) => module[component] || React.createContext({});\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\nconst ThemeContext = importContext(require('__REACT_UI_PACKAGE__/lib/theming/ThemeContext'), 'ThemeContext');\n\nexport { Tooltip, ThemeContext };\n\nexport class ReactUiDetection {\n public static checkType(element: any, type: string) {\n return isNonNullable(element) && element.type?.__KONTUR_REACT_UI__ === type;\n }\n\n public static isDatePicker(element: any): boolean {\n return ReactUiDetection.checkType(element, 'DatePicker');\n }\n\n public static isRadioGroup(element: any): boolean {\n return ReactUiDetection.checkType(element, 'RadioGroup');\n }\n\n public static isTokenInput(element: any): boolean {\n return ReactUiDetection.checkType(element, 'TokenInput');\n }\n\n public static isSwitcher(element: any): boolean {\n return ReactUiDetection.checkType(element, 'Switcher');\n }\n\n public static isComboBox(element: any): boolean {\n return ReactUiDetection.checkType(element, 'ComboBox');\n }\n\n public static isRadio(element: any): boolean {\n return ReactUiDetection.checkType(element, 'Radio');\n }\n\n public static isCheckBox(element: any): boolean {\n return ReactUiDetection.checkType(element, 'Checkbox');\n }\n\n public static isToggle(element: any): boolean {\n return ReactUiDetection.checkType(element, 'Toggle');\n }\n\n public static isSelect(element: any): boolean {\n return ReactUiDetection.checkType(element, 'Select');\n }\n\n public static isSelectionControl(element: ReactElement): boolean {\n return (\n ReactUiDetection.isRadioGroup(element) ||\n ReactUiDetection.isRadio(element) ||\n ReactUiDetection.isCheckBox(element) ||\n ReactUiDetection.isToggle(element) ||\n ReactUiDetection.isSwitcher(element) ||\n ReactUiDetection.isSelect(element) ||\n ReactUiDetection.isComboBox(element)\n );\n }\n}\n","import React, { useContext } from 'react';\n\nimport type { Nullable } from '../typings/Types';\nimport type { ThemeValidations } from '../typings/theme-context';\n\nimport type { TextPosition, Validation } from './ValidationWrapperInternal';\nimport { getValidationTextColor } from './utils/getValidationTextColor';\nimport { ThemeContext } from './ReactUiDetection';\n\nexport interface ValidationTextProps {\n pos: TextPosition;\n children: React.ReactNode;\n validation: Nullable<Validation>;\n 'data-tid'?: string;\n}\n\nexport const ValidationText = ({ pos, children, validation, 'data-tid': dataTid }: ValidationTextProps) => {\n const theme = useContext<ThemeValidations>(ThemeContext);\n const color = getValidationTextColor(theme, validation?.level);\n\n if (pos === 'right') {\n const childrenAndValidationText = (\n <>\n {children}\n <span data-tid={dataTid} data-validation-message=\"text\" style={{ marginLeft: '10px', color }}>\n {(validation && validation.message) || ''}\n </span>\n </>\n );\n return <div style={{ display: 'inline-block' }}>{childrenAndValidationText}</div>;\n }\n\n const validationText = (\n <span\n data-tid={dataTid}\n data-validation-message=\"text\"\n style={{\n color,\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n );\n\n const childrenAndValidationText = (\n <>\n {children}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>{validationText}</span>\n </>\n );\n\n return <div style={{ position: 'relative', display: 'inline-block' }}>{childrenAndValidationText}</div>;\n};\n\nValidationText.__KONTUR_REACT_UI__ = 'ValidationText';\nValidationText.displayName = 'ValidationText';\n","import React from 'react';\n\nimport { ReactUiDetection, Tooltip } from './ReactUiDetection';\n\nexport type TooltipPosition =\n | 'top left'\n | 'top center'\n | 'top right'\n | 'bottom left'\n | 'bottom center'\n | 'bottom right'\n | 'left top'\n | 'left middle'\n | 'left bottom'\n | 'right top'\n | 'right middle'\n | 'right bottom';\n\nexport interface ValidationTooltipProps {\n children: React.ReactElement<any>;\n error: boolean;\n pos?: TooltipPosition;\n render?: () => React.ReactNode;\n 'data-tid'?: string;\n}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationTooltip';\n public static displayName = 'ValidationTooltip';\n\n public render() {\n const { children, pos, error, render, ...rest } = this.props;\n\n const onlyChild = React.Children.only(children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n\n return ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child) ? (\n <Tooltip useWrapper={false} pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {child}\n </Tooltip>\n ) : (\n <Tooltip pos={pos} render={error && render} trigger={'hover&focus'} {...rest}>\n {children}\n </Tooltip>\n );\n }\n}\n","import React from 'react';\n\nimport { ValidationText } from './ValidationText';\nimport type { TooltipPosition } from './ValidationTooltip';\nimport { ValidationTooltip } from './ValidationTooltip';\nimport type { RenderErrorMessage, TextPosition } from './ValidationWrapperInternal';\n\nexport function tooltip(pos: TooltipPosition): RenderErrorMessage {\n return (control, hasError, validation) => {\n return (\n <ValidationTooltip\n pos={pos}\n error={hasError}\n render={() => {\n if (!validation || !validation.message) {\n return null;\n }\n return (validation && validation.message) || '';\n }}\n >\n {control}\n </ValidationTooltip>\n );\n };\n}\n\nexport function text(pos: TextPosition = 'right'): RenderErrorMessage {\n return (control, _hasError, validation) => {\n return (\n <ValidationText pos={pos} validation={validation}>\n {control}\n </ValidationText>\n );\n };\n}\n","import type React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unnecessary-type-constraint\nexport function createPropsGetter<DP extends unknown>(defaultProps: DP) {\n return function <P, T extends React.Component<P>>(this: T) {\n return this.props as DefaultizedProps<T['props'], DP>;\n };\n}\n","const env: NodeJS.ProcessEnv = (typeof process === 'object' && process && process.env) || {};\nconst { enableReactTesting, NODE_ENV, REACT_UI_TEST, REACT_APP_REACT_UI_TEST, STORYBOOK_REACT_UI_TEST } = env;\n\nconst isReactUITestEnv =\n Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is not usable (dev/prod)\n Boolean(REACT_APP_REACT_UI_TEST) || // for usage with CRA\n Boolean(STORYBOOK_REACT_UI_TEST) || // for usage with storybook\n Boolean(enableReactTesting); // deprecated, legacy variable\n\nexport const isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;\n\nexport const isBrowser = typeof window !== 'undefined';\n\nexport function isElement(el: unknown): el is Element {\n return !!el && typeof el === 'object' && 'nodeType' in el && el.nodeType === Node.ELEMENT_NODE;\n}\n\nexport const getDoc = (node: Node): Document => node.ownerDocument ?? (node as Document);\nexport const getWin = (node: Node): (WindowProxy & typeof globalThis) | null => getDoc(node).defaultView;\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 */\n// @ts-expect-error: TypeScript doesn't consider the check inside of the function.\nexport const isNullable = <T>(value: T): value is null | undefined => {\n return value === null || value === undefined;\n};\n","export enum FocusMode {\n 'Errors',\n 'ErrorsAndWarnings',\n 'None',\n}\n","import React from 'react';\n\nimport type { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport type { ScrollOffset, ValidateArgumentType } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\nimport { FocusMode } from './FocusMode';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\n 'data-tid'?: string;\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: boolean) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextType {\n register: (wrapper: ValidationWrapperInternal) => void;\n unregister: (wrapper: ValidationWrapperInternal) => void;\n instanceProcessBlur: (wrapper: ValidationWrapperInternal) => void;\n onValidationUpdated: (wrapper: ValidationWrapperInternal, isValid: boolean) => void;\n getSettings: () => ValidationContextSettings;\n isAnyWrapperInChangingMode: () => boolean;\n}\n\nexport const ValidationContext = React.createContext<ValidationContextType>({\n register: () => undefined,\n unregister: () => undefined,\n instanceProcessBlur: () => undefined,\n onValidationUpdated: () => undefined,\n getSettings: () => ({\n scrollOffset: {},\n disableSmoothScroll: false,\n }),\n isAnyWrapperInChangingMode: () => false,\n});\n\nValidationContext.displayName = 'ValidationContext';\n\nexport class ValidationContextWrapper extends React.Component<ValidationContextWrapperProps> {\n public childWrappers: ValidationWrapperInternal[] = [];\n\n public getSettings(): ValidationContextSettings {\n let scrollOffset: ScrollOffset = {};\n\n if (typeof this.props.scrollOffset === 'number') {\n scrollOffset = { top: this.props.scrollOffset };\n } else {\n scrollOffset = isNullable(this.props.scrollOffset) ? {} : this.props.scrollOffset;\n }\n\n const { top = 50, bottom = 0 } = scrollOffset;\n return {\n scrollOffset: {\n top,\n bottom,\n },\n disableSmoothScroll: this.props.disableSmoothScroll,\n };\n }\n\n public register(wrapper: ValidationWrapperInternal) {\n this.childWrappers.push(wrapper);\n }\n\n public unregister(wrapper: ValidationWrapperInternal) {\n this.childWrappers.splice(this.childWrappers.indexOf(wrapper), 1);\n this.onValidationRemoved();\n }\n\n public instanceProcessBlur(instance: ValidationWrapperInternal) {\n for (const wrapper of this.childWrappers.filter((x) => x !== instance && !x.isIndependent())) {\n wrapper.processBlur();\n }\n }\n\n public onValidationUpdated(wrapper: ValidationWrapperInternal, isValid?: boolean) {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => {\n if (x === wrapper) {\n return !isValid;\n }\n return x.hasError();\n });\n onValidationUpdated(isValidResult);\n }\n }\n\n public isAnyWrapperInChangingMode(): boolean {\n return this.childWrappers.some((x) => x.isChanging);\n }\n\n public onValidationRemoved() {\n const { onValidationUpdated } = this.props;\n if (onValidationUpdated) {\n const isValidResult = !this.childWrappers.find((x) => x.hasError());\n onValidationUpdated(isValidResult);\n }\n }\n\n public getChildWrappersSortedByPosition(): ValidationWrapperInternal[] {\n const wrappersWithPosition = [...this.childWrappers].map((x) => ({\n target: x,\n position: x.getControlPosition(),\n }));\n wrappersWithPosition.sort((x, y) => {\n const xPosition = x.position;\n const yPosition = y.position;\n if (isNullable(xPosition) && isNullable(yPosition)) {\n return 0;\n }\n\n if (isNullable(xPosition)) {\n return 1;\n }\n if (isNullable(yPosition)) {\n return -1;\n }\n if (Math.sign(xPosition.x - yPosition.x) !== 0) {\n return Math.sign(xPosition.x - yPosition.x);\n }\n return Math.sign(xPosition.y - yPosition.y);\n });\n return wrappersWithPosition.map((x) => x.target);\n }\n\n public async validate(withoutFocusOrValidationSettings: ValidateArgumentType): Promise<boolean> {\n const focusMode = ValidationContextWrapper.getFocusMode(withoutFocusOrValidationSettings);\n\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n\n const childrenWrappersSortedByPosition = this.getChildWrappersSortedByPosition();\n const firstError = childrenWrappersSortedByPosition.find((x) => x.hasError());\n if (focusMode === FocusMode.ErrorsAndWarnings) {\n childrenWrappersSortedByPosition.find((x) => x.hasError() || x.hasWarning())?.focus();\n }\n if (focusMode === FocusMode.Errors) {\n firstError?.focus();\n }\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstError);\n }\n return !firstError;\n }\n\n private static getFocusMode(withoutFocusOrValidationSettings: ValidateArgumentType) {\n if (typeof withoutFocusOrValidationSettings === 'object' && 'focusMode' in withoutFocusOrValidationSettings) {\n return withoutFocusOrValidationSettings.focusMode;\n } else if (!withoutFocusOrValidationSettings) {\n return FocusMode.Errors;\n }\n return FocusMode.None;\n }\n\n private renderChildren = (children: ValidationContextWrapperProps['children']) => {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement, {\n 'data-tid': this.props['data-tid'],\n });\n }\n\n return children;\n };\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n {this.renderChildren(<div style={{ display: 'inline' }}>{this.props.children}</div>)}\n </ValidationContext.Provider>\n );\n }\n}\n","import React from 'react';\n\nimport type { Nullable } from '../typings/Types';\n\nimport { createPropsGetter } from './utils/createPropsGetter';\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\nimport { FocusMode } from './FocusMode';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationSettings {\n focusMode: FocusMode;\n}\n\nexport type ValidateArgumentType = boolean | ValidationSettings;\n\nexport interface ValidationContainerProps {\n 'data-tid'?: string;\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: Nullable<boolean>) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll?: boolean;\n}\n\ntype DefaultProps = Required<Pick<ValidationContainerProps, 'disableSmoothScroll'>>;\n\nexport class ValidationContainer extends React.Component<ValidationContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationContainer';\n public static displayName = 'ValidationContainer';\n\n public static defaultProps: DefaultProps = {\n disableSmoothScroll: isTestEnv,\n };\n\n private getProps = createPropsGetter(ValidationContainer.defaultProps);\n\n public static propTypes = {\n scrollOffset(props: ValidationContainerProps, propName: keyof ValidationContainerProps, componentName: string) {\n const { scrollOffset } = props;\n if (typeof scrollOffset === 'number') {\n return new Error(\n `[${componentName}]: scrollOffset as a number type has been deprecated, now use object { top?: number; bottom?: number; }`,\n );\n }\n },\n };\n\n private childContext: ValidationContextWrapper | null = null;\n\n public async submit(withoutFocus?: boolean): Promise<void>;\n public async submit(validationSettings?: ValidationSettings): Promise<void>;\n\n public async submit(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public async validate(withoutFocus?: boolean): Promise<boolean>;\n public async validate(validationSettings?: ValidationSettings): Promise<boolean>;\n\n public validate(\n withoutFocusOrValidationSettings: ValidateArgumentType = { focusMode: FocusMode.Errors },\n ): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocusOrValidationSettings);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n data-tid={this.props['data-tid']}\n ref={this.refChildContext}\n scrollOffset={this.props.scrollOffset}\n disableSmoothScroll={this.getProps().disableSmoothScroll}\n onValidationUpdated={this.props.onValidationUpdated}\n >\n {this.props.children}\n </ValidationContextWrapper>\n );\n }\n\n private refChildContext = (el: ValidationContextWrapper | null) => (this.childContext = el);\n}\n","import { findDOMNode } from 'react-dom';\nimport type React from 'react';\nimport warning from 'warning';\n\nimport type { Nullable } from '../../../typings/Types';\nimport { isElement } from '../utils';\n\nexport interface InstanceWithRootNode {\n getRootNode: () => Nullable<HTMLElement>;\n}\n\nconst isInstanceWithRootNode = (instance: unknown): instance is InstanceWithRootNode => {\n return Boolean(instance) && Object.prototype.hasOwnProperty.call(instance, 'getRootNode');\n};\n\n/**\n * Temporary duplicates @skbkontur/react-ui/lib/rootNode/getRootNode.ts\n * */\n\nexport const getRootNode = (instance: Nullable<React.ReactInstance>): Nullable<Element> => {\n /**\n * Options of what instance can be:\n * 1. null or undefined\n * 2. DOM Element\n * 3. class Component instance (object)\n * 4. literally anything, returned from useImperativeHandle\n */\n\n if (!instance) {\n // instance can be `null` if component was unmounted\n // also checking undefined for convenient usage\n return null;\n }\n\n if (isElement(instance)) {\n // instance can be an Element already if its coming\n // from Refs of intrinsic elements (<div />, <button />, etc.)\n return instance;\n }\n\n let rootNode;\n\n if (isInstanceWithRootNode(instance)) {\n rootNode = instance.getRootNode();\n }\n\n if (rootNode !== undefined) {\n // the getter exists and has returned something, it should be what we are looking for\n // probably its an Element or null (which is also OK, e.g. Popup/Tooltip/Hint before opening)\n return rootNode;\n }\n\n try {\n // rootNode is undefined, which means that the getter doesn't exists or returns the undefined\n // anyway, it tell us that the convention is not respected,\n // so, we have to fall back to the deprecated findDOMNode, which breaks StrictMode\n // instance can still be a class component or an imperative handle (i.e., anything, except null/undefined/Element)\n rootNode = findDOMNode(instance);\n } catch (e) {\n // but findDOMNode doesn`t accept everything that instance can be at this point,\n // so we have to handle exceptions\n // see https://github.com/facebook/react/blob/cae63505/packages/react-dom/src/__tests__/findDOMNode-test.js#L66-L86\n warning(\n false,\n '[getRootNode]: can`t fallback to findDOMNode.' +\n '\\n' +\n 'See https://github.com/skbkontur/retail-ui/blob/master/packages/react-ui/README.md#strictmode' +\n '\\n\\n' +\n e.message,\n );\n return null;\n }\n\n // the findDOMNode can also return Text, but we are only interested in Elements, so just filter it\n return isElement(rootNode) ? rootNode : null;\n};\n","import type { Nullable, Omit } from '../typings/Types';\n\nimport type { ScrollOffset } from './ValidationContainer';\nimport { getDoc, getWin, isBrowser, isElement } from './utils/utils';\nimport { isNullable } from './utils/isNullable';\n\nexport async function smoothScrollIntoView(element: Element, scrollOffset: ScrollOffset): Promise<void> {\n const activeDocument = getDoc(element);\n const activeWindow = getWin(element);\n const scrollableParent = findScrollableParent(element);\n const parentRects = scrollableParent.getBoundingClientRect();\n const clientRects = element.getBoundingClientRect();\n\n const topOffset = scrollOffset.top || 0;\n const bottomOffset = scrollOffset.bottom || 0;\n\n if (scrollableParent === activeDocument.body) {\n const html = activeDocument.documentElement || { clientHeight: 0, clientWidth: 0 };\n const viewportHeight = activeWindow?.innerHeight || html.clientHeight;\n const viewportWidth = activeWindow?.innerWidth || html.clientWidth;\n\n const isElementInViewport =\n clientRects.top >= topOffset &&\n clientRects.left >= 0 &&\n clientRects.bottom <= viewportHeight - bottomOffset &&\n clientRects.right <= viewportWidth;\n\n if (isElementInViewport) {\n return;\n }\n\n await scrollBy({\n element,\n left: clientRects.left,\n top: clientRects.top - topOffset,\n });\n } else {\n if (clientRects.top - topOffset + 50 > parentRects.top && clientRects.bottom < parentRects.bottom) {\n return;\n }\n\n await smoothScroll(\n scrollableParent,\n scrollableParent.scrollLeft + clientRects.left - parentRects.left,\n scrollableParent.scrollTop + clientRects.top - parentRects.top - topOffset,\n );\n await scrollBy({\n element,\n left: parentRects.left,\n top: parentRects.top,\n });\n }\n}\n\nfunction smoothScroll(element: Element, x: number, y: number): Promise<void> {\n const activeDocument = getDoc(element);\n const activeWindow = getWin(element);\n let context: Omit<StepContent, 'resolve'>;\n\n if (activeWindow) {\n if (element === getDocumentBodyStrict(activeDocument)) {\n context = {\n scrollable: element,\n startX: activeWindow.scrollX || activeWindow.pageXOffset,\n startY: activeWindow.scrollY || activeWindow.pageYOffset,\n method: getScrollWindow(element),\n startTime: getNow(element)(),\n x,\n y,\n };\n } else {\n context = {\n scrollable: element,\n startX: element.scrollLeft,\n startY: element.scrollTop,\n method: scrollElement,\n startTime: getNow(element)(),\n x,\n y,\n };\n }\n }\n\n return new Promise((resolve) => step({ ...context, resolve }));\n}\n\ninterface StepContent {\n scrollable: Element;\n startTime: number;\n startX: number;\n startY: number;\n x: number;\n y: number;\n method: (element: Element, x: number, y: number) => void;\n resolve: () => void;\n}\n\nfunction step({ scrollable, startX, startY, x, y, method, resolve, startTime }: StepContent) {\n const time = getNow(scrollable)();\n const scrollTime = 468;\n const elapsed = Math.min(1, (time - startTime) / scrollTime);\n const value = ease(elapsed);\n const activeWindow = getWin(scrollable);\n\n const currentX = startX + (x - startX) * value;\n const currentY = startY + (y - startY) * value;\n\n method(scrollable, currentX, currentY);\n\n if (currentX !== x || currentY !== y) {\n !!activeWindow &&\n activeWindow.requestAnimationFrame(() => step({ scrollable, startX, startY, x, y, method, resolve, startTime }));\n } else {\n resolve();\n }\n}\n\nconst getScrollWindow = (el: Element) => {\n const activeWindow = getWin(el);\n\n if (isBrowser) {\n if (typeof activeWindow?.scroll === 'function') {\n return (_: any, x: any, y: any) => activeWindow?.scroll(x, y);\n }\n }\n\n return () => undefined;\n};\n\nconst getNow = (el: Element) => {\n const activeWindow = getWin(el);\n return isBrowser && activeWindow?.performance && activeWindow?.performance.now\n ? activeWindow?.performance.now.bind(activeWindow?.performance)\n : Date.now;\n};\n\nfunction scrollElement(element: Element, x: number, y: number) {\n element.scrollLeft = x;\n element.scrollTop = y;\n}\n\nfunction ease(time: number): number {\n return 0.5 * (1 - Math.cos(Math.PI * time));\n}\n\nfunction getDocumentBodyStrict(activeDocument: Document): Element {\n if (isNullable(activeDocument.body)) {\n throw new Error('Scrolling can be used only in browser');\n }\n\n return activeDocument.body;\n}\n\nfunction findScrollableParent(el: Element): Element {\n let isBody: Nullable<boolean>;\n let hasScrollableSpace: Nullable<boolean>;\n let hasVisibleOverflow: Nullable<boolean>;\n let currentElement: Element = el;\n do {\n if (isNullable(currentElement.parentElement) || !isElement(currentElement.parentElement)) {\n return getDocumentBodyStrict(getDoc(currentElement));\n }\n currentElement = currentElement.parentElement;\n isBody = currentElement === getDoc(currentElement).body;\n hasScrollableSpace =\n currentElement.clientHeight < currentElement.scrollHeight ||\n currentElement.clientWidth < currentElement.scrollWidth;\n hasVisibleOverflow = getWin(currentElement)?.getComputedStyle(currentElement, null).overflow === 'visible';\n } while (!isBody && !(hasScrollableSpace && !hasVisibleOverflow));\n\n isBody = null;\n hasScrollableSpace = null;\n hasVisibleOverflow = null;\n\n return currentElement;\n}\n\nfunction scrollBy({ element, left, top }: { element: Element; left: number; top: number }): Promise<void> {\n const activeWindow = getWin(element);\n const activeDocument = getDoc(element);\n\n if (!activeWindow) {\n return new Promise((resolve) => resolve());\n }\n\n const x = Math.floor(left) + (activeWindow?.scrollX || activeWindow?.pageXOffset);\n const y = Math.floor(top) + (activeWindow?.scrollY || activeWindow?.pageYOffset);\n\n return smoothScroll(getDocumentBodyStrict(activeDocument), x, y);\n}\n","import type { Nullable } from '../typings/Types';\n\nimport type { Validation, ValidationBehaviour, ValidationLevel } from './ValidationWrapperInternal';\n\nexport function getVisibleValidation(\n visible: Nullable<Validation>,\n actual: Nullable<Validation>,\n changing: boolean,\n): Nullable<Validation> {\n const from = (type?: Nullable<ValidationBehaviour>): boolean => getType(visible) === type;\n const to = (type?: Nullable<ValidationBehaviour>): boolean => getType(actual) === type;\n\n if (to('immediate')) {\n return actual;\n }\n\n if (changing) {\n return from('immediate') ? null : visible;\n }\n\n if (from(null) && to('lostfocus')) {\n return null;\n }\n\n if (to('lostfocus')) {\n return actual;\n }\n\n if (from('submit') && to('submit')) {\n return visible;\n }\n\n return null;\n}\n\nexport function getType(validation: Nullable<Validation>): Nullable<ValidationBehaviour> {\n return validation ? validation.behaviour : null;\n}\n\nexport function getLevel(validation: Nullable<Validation>): Nullable<ValidationLevel> {\n return validation ? validation.level : null;\n}\n\nexport function getIndependent(validation: Nullable<Validation>): Nullable<boolean> {\n return validation ? validation.independent : null;\n}\n\nexport function isEqual(a: Nullable<Validation>, b: Nullable<Validation>): boolean {\n if (a === b) {\n return true;\n }\n return (\n !!a &&\n !!b &&\n a.behaviour === b.behaviour &&\n a.message === b.message &&\n a.independent === b.independent &&\n a.level === b.level\n );\n}\n","import React from 'react';\n\nexport interface ValidationsFeatureFlags {\n dropdownsDoNotOpenOnFocusByValidation?: boolean;\n hideTooltipOnSelectionControls?: boolean;\n}\n\nexport const validationsFeatureFlagsDefault: ValidationsFeatureFlags = {\n dropdownsDoNotOpenOnFocusByValidation: false,\n hideTooltipOnSelectionControls: false,\n};\n\nexport const ValidationsFeatureFlagsContext =\n React.createContext<ValidationsFeatureFlags>(validationsFeatureFlagsDefault);\n\nValidationsFeatureFlagsContext.displayName = 'ValidationsFeatureFlagsContext';\nValidationsFeatureFlagsContext.__KONTUR_REACT_UI__ = 'ValidationsFeatureFlagsContext';\n","import type { ValidationsFeatureFlags } from './ValidationsFeatureFlagsContext';\nimport { validationsFeatureFlagsDefault } from './ValidationsFeatureFlagsContext';\n\nexport const getFullValidationsFlagsContext = (flags: ValidationsFeatureFlags) => {\n return { ...validationsFeatureFlagsDefault, ...flags };\n};\n","import type { ReactInstance } from 'react';\nimport React from 'react';\nimport warning from 'warning';\n\nimport type { Nullable } from '../typings/Types';\n\nimport { getRootNode } from './utils/getRootNode';\nimport { isElement } from './utils/utils';\nimport { smoothScrollIntoView } from './smoothScrollIntoView';\nimport { getIndependent, getLevel, getType, getVisibleValidation, isEqual } from './ValidationHelper';\nimport { ReactUiDetection } from './ReactUiDetection';\nimport type { ValidationContextType } from './ValidationContextWrapper';\nimport type { ValidationsFeatureFlags } from './utils/featureFlagsContext';\nimport { ValidationsFeatureFlagsContext } from './utils/featureFlagsContext';\nimport { ValidationContext } from './ValidationContextWrapper';\n\nexport type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';\n\nexport type ValidationLevel = 'error' | 'warning';\n\nexport type TextPosition = 'bottom' | 'right';\n\nexport interface Validation {\n level: ValidationLevel;\n behaviour: ValidationBehaviour;\n message: React.ReactNode;\n independent: boolean;\n}\n\nexport type RenderErrorMessage = (\n control: React.ReactElement<any>,\n hasError: boolean,\n validation: Nullable<Validation>,\n) => React.ReactElement<any>;\n\nexport interface ValidationWrapperInternalProps {\n children?: React.ReactElement<any>;\n validation: Nullable<Validation>;\n errorMessage: RenderErrorMessage;\n 'data-tid'?: string;\n}\n\ninterface ValidationWrapperInternalState {\n validation: Nullable<Validation>;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class ValidationWrapperInternal extends React.Component<\n ValidationWrapperInternalProps,\n ValidationWrapperInternalState\n> {\n public state: ValidationWrapperInternalState = {\n validation: null,\n };\n\n public isChanging = false;\n private child: any; // todo type\n private rootNode: Nullable<Element>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n private featureFlags!: ValidationsFeatureFlags;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs',\n );\n if (this.context) {\n this.context.register(this);\n }\n this.applyValidation(this.props.validation);\n }\n\n public componentWillUnmount() {\n this.context.unregister(this);\n }\n\n public componentDidUpdate() {\n this.applyValidation(this.props.validation);\n }\n\n public async focus(): Promise<void> {\n const htmlElement = this.getRootNode();\n if (isElement(htmlElement)) {\n const { disableSmoothScroll, scrollOffset } = this.context.getSettings();\n if (!disableSmoothScroll) {\n await smoothScrollIntoView(htmlElement, scrollOffset);\n }\n if (this.child && typeof this.child.focus === 'function') {\n this.child.focus({ withoutOpenDropdown: this.featureFlags.dropdownsDoNotOpenOnFocusByValidation });\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children, 'data-tid': dataTid } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: this.customRef,\n error: !this.isChanging && getLevel(validation) === 'error',\n warning: !this.isChanging && getLevel(validation) === 'warning',\n onBlur: (...args: any[]) => {\n this.handleBlur();\n if (children.props && children.props.onBlur) {\n children.props.onBlur(...args);\n }\n },\n onChange: (...args: any[]) => {\n this.isChanging = true;\n if (children.props && children.props.onChange) {\n children.props.onChange(...args);\n }\n },\n onValueChange: (...args: any[]) => {\n this.isChanging = true;\n\n if (this.featureFlags.hideTooltipOnSelectionControls && ReactUiDetection.isSelectionControl(children)) {\n this.setValidation(null);\n }\n\n if (children.props && children.props.onValueChange) {\n children.props.onValueChange(...args);\n }\n },\n })\n ) : (\n <span ref={this.setRootNode} />\n );\n if (ReactUiDetection.isComboBox(clonedChild)) {\n clonedChild = React.cloneElement(clonedChild, {\n onInputValueChange: (...args: any[]) => {\n this.isChanging = true;\n this.forceUpdate();\n if (children && children.props && children.props.onInputValueChange) {\n return children.props.onInputValueChange(...args);\n }\n },\n });\n }\n\n return (\n <ValidationsFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = flags;\n return React.cloneElement(\n this.props.errorMessage(<div style={{ display: 'inline' }}>{clonedChild}</div>, !!validation, validation),\n {\n 'data-tid': dataTid,\n },\n );\n }}\n </ValidationsFeatureFlagsContext.Consumer>\n );\n }\n\n private customRef = (instance: Nullable<ReactInstance>) => {\n const { children } = this.props;\n\n this.setRootNode(instance);\n const child = children as any; // todo type or maybe React.Children.only\n if (child && child.ref) {\n if (typeof child.ref === 'function') {\n child.ref(instance);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = instance;\n }\n }\n this.child = instance;\n };\n\n private setRootNode = (element: Nullable<ReactInstance>) => {\n this.rootNode = getRootNode(element);\n };\n\n public getRootNode = () => {\n return this.rootNode;\n };\n\n public getControlPosition(): Nullable<Point> {\n const htmlElement = this.getRootNode();\n if (isElement(htmlElement)) {\n const rect = htmlElement.getBoundingClientRect();\n return { x: rect.top, y: rect.left };\n }\n return null;\n }\n\n public processBlur() {\n const touched = this.isChanging;\n this.isChanging = false;\n const validation = this.getOnBlurValidation(touched);\n return this.setValidation(validation);\n }\n\n public async processSubmit(): Promise<void> {\n this.isChanging = false;\n return this.setValidation(this.props.validation);\n }\n\n public hasError(): boolean {\n return getLevel(this.state.validation) === 'error';\n }\n\n public hasWarning(): boolean {\n return getLevel(this.state.validation) === 'warning';\n }\n\n public isIndependent(): boolean {\n return getIndependent(this.state.validation || this.props.validation) === true;\n }\n\n private handleBlur() {\n setTimeout(() => {\n this.processBlur();\n if (!this.isIndependent()) {\n this.context.instanceProcessBlur(this);\n }\n this.setState({});\n });\n }\n\n private applyValidation(actual: Nullable<Validation>) {\n const visible = this.getVisibleValidation(actual);\n this.setValidation(visible);\n }\n\n private setValidation(validation: Nullable<Validation>): Promise<void> {\n const current = this.state.validation;\n\n if (current === validation) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n this.setState({ validation }, () => {\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\n }\n resolve();\n });\n });\n }\n\n private getOnBlurValidation(touched: boolean): Nullable<Validation> {\n const actual = this.props.validation;\n if (getType(actual) === 'submit') {\n const visible = this.state.validation;\n return !touched && getType(visible) === 'submit' ? visible : null;\n }\n return actual;\n }\n\n private getVisibleValidation(actual: Nullable<Validation>): Nullable<Validation> {\n const visible = this.state.validation;\n if (isEqual(visible, actual)) {\n return visible;\n }\n const changing = this.context.isAnyWrapperInChangingMode();\n return getVisibleValidation(visible, actual, changing);\n }\n}\n","import React from 'react';\n\nimport type { Nullable } from '../typings/Types';\n\nimport { tooltip } from './ErrorRenderer';\nimport type {\n RenderErrorMessage,\n Validation,\n ValidationBehaviour,\n ValidationLevel,\n ValidationWrapperInternalProps,\n} from './ValidationWrapperInternal';\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\n\nexport interface ValidationInfo {\n type?: Nullable<ValidationBehaviour>;\n level?: Nullable<ValidationLevel>;\n message: React.ReactNode;\n independent?: boolean;\n}\n\nexport interface ValidationWrapperProps extends Pick<ValidationWrapperInternalProps, 'data-tid'> {\n children?: React.ReactElement<any>;\n validationInfo: Nullable<ValidationInfo>;\n renderMessage?: Nullable<RenderErrorMessage>;\n}\n\nexport class ValidationWrapper extends React.Component<ValidationWrapperProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationWrapper';\n public static displayName = 'ValidationWrapper';\n\n public render() {\n const { children, validationInfo, renderMessage, 'data-tid': datTid } = this.props;\n const validation: Nullable<Validation> = validationInfo\n ? {\n level: validationInfo.level || 'error',\n behaviour: validationInfo.type || 'lostfocus',\n message: validationInfo.message,\n independent: validationInfo.independent || false,\n }\n : null;\n\n return (\n <ValidationWrapperInternal\n data-tid={datTid}\n errorMessage={renderMessage || tooltip('right top')}\n validation={validation}\n >\n {children}\n </ValidationWrapperInternal>\n );\n }\n}\n","import type React from 'react';\n\nimport type { Nullable } from '../../typings/Types';\nimport type { ValidationBehaviour, ValidationLevel } from '../ValidationWrapperInternal';\nimport type { ValidationInfo } from '../ValidationWrapper';\nimport { isNullable } from '../utils/isNullable';\n\nimport type { LambdaPath, PathTokensCache } from './PathHelper';\nimport type { ValidationWriter } from './ValidationWriter';\nimport type { ItemValidationRule, ValidationRule } from './Types';\n\ninterface PathInfo<T> {\n data: T;\n path: string[];\n}\n\nexport class ValidationBuilder<TRoot, T> {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n private readonly writer: ValidationWriter<TRoot>,\n private readonly tokens: PathTokensCache,\n private readonly path: string[],\n private readonly data: T,\n ) {}\n\n public prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info)) {\n return;\n }\n\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, info.path, info.data);\n rule(builder, builder.data);\n }\n\n public array<TChild>(lambdaPath: LambdaPath<T, TChild[]>, rule: ItemValidationRule<TRoot, TChild>): void {\n const info = this.getPathInfo(lambdaPath);\n if (isNullable(info) || !Array.isArray(info.data)) {\n return;\n }\n\n const array = info.data;\n for (let i = 0; i < array.length; ++i) {\n const path = [...info.path, i.toString()];\n const builder = new ValidationBuilder<TRoot, TChild>(this.writer, this.tokens, path, array[i]);\n rule(builder, builder.data, i, array);\n }\n }\n\n public invalid(isInvalid: (value: T) => boolean, validationInfo: ValidationInfo): void;\n public invalid(\n isInvalid: (value: T) => boolean,\n message: React.ReactNode,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ): void;\n\n public invalid(\n isInvalid: (value: T) => boolean,\n messageOrValidationInfo: React.ReactNode | ValidationInfo,\n type?: ValidationBehaviour,\n level?: ValidationLevel,\n independent?: boolean,\n ) {\n const validationWriter = this.writer.getNode<T>(this.path);\n if (validationWriter.isValidated()) {\n return;\n }\n\n const invalid = isInvalid(this.data);\n if (!invalid) {\n return;\n }\n\n if (isValidationInfo(messageOrValidationInfo)) {\n validationWriter.set(messageOrValidationInfo);\n } else {\n validationWriter.set({ message: messageOrValidationInfo, type, level, independent });\n }\n }\n\n private getPathInfo<TChild>(lambdaPath: LambdaPath<T, TChild>): Nullable<PathInfo<TChild>> {\n const path = this.tokens.getOrAdd(lambdaPath);\n\n let data: any = this.data;\n for (const part of path) {\n if (isNullable(data)) {\n return null;\n }\n data = data[part];\n }\n\n return { data, path: [...this.path, ...path] };\n }\n}\n\nconst isValidationInfo = (argument: unknown): argument is ValidationInfo =>\n typeof argument === 'object' && Object.prototype.hasOwnProperty.call(argument, 'message');\n","/* eslint-disable no-useless-constructor */\nimport type { ValidationInfo } from '../ValidationWrapper';\nimport type { ExtractItem, Nullable } from '../../typings/Types';\n\nimport type { ValidationNode } from './Types';\nimport type { LambdaPath, PathTokensCache } from './PathHelper';\n\nexport class ValidationReader<T> {\n constructor(\n private readonly node: Nullable<ValidationNode<T>>,\n private readonly tokens: PathTokensCache,\n ) {}\n\n public getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild> {\n const path = this.tokens.getOrAdd(lambdaPath);\n return this.getReaderInternal<TChild>(path);\n }\n\n public getNodeByIndex(index: number): ValidationReader<ExtractItem<T>> {\n return this.getReaderInternal<ExtractItem<T>>([index.toString()]);\n }\n\n public getNodeByKey<TKey extends keyof T>(key: TKey): ValidationReader<T[TKey]> {\n return this.getReaderInternal<T[TKey]>([key.toString()]);\n }\n\n public get(): Nullable<ValidationInfo> {\n return this.node ? this.node.validation : null;\n }\n\n private getReaderInternal<TChild>(path: string[]): ValidationReader<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationReader<TChild>(node, this.tokens);\n }\n\n private getNodeInternal<TChild>(path: string[]): Nullable<ValidationNode<TChild>> {\n let current: Nullable<ValidationNode<any>> = this.node;\n for (const part of path) {\n if (!current || !current.children) {\n return null;\n }\n current = current.children[part];\n }\n return current;\n }\n}\n","import type { ValidationInfo } from '../ValidationWrapper';\n\nimport type { ValidationNode } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport type { PathTokensCache } from './PathHelper';\n\nexport class ValidationWriter<T> {\n private readonly node: ValidationNode<T>;\n\n constructor(node?: ValidationNode<T>) {\n this.node = node || { validation: null, children: null };\n }\n\n public getReader(tokens: PathTokensCache): ValidationReader<T> {\n return new ValidationReader(this.node, tokens);\n }\n\n public set(validation: ValidationInfo): void {\n this.node.validation = validation;\n }\n\n public isValidated(): boolean {\n return !!this.node.validation;\n }\n\n public getNode<TChild>(path: string[]): ValidationWriter<TChild> {\n const node = this.getNodeInternal<TChild>(path);\n return new ValidationWriter<TChild>(node);\n }\n\n private getNodeInternal<TChild>(path: string[]): ValidationNode<TChild> {\n let node: ValidationNode<any> = this.node;\n for (const part of path) {\n if (!node.children) {\n node.children = {};\n }\n if (!node.children[part]) {\n node.children[part] = {\n validation: null,\n children: null,\n };\n }\n node = node.children[part];\n }\n return node;\n }\n}\n","const classicFunctionRegEx =\n /^\\s*function\\s*\\(\\s*([A-Za-z0-9_$]+)\\s*\\)\\s*\\{\\s*(?:(?:\"use strict\"|'use strict');?)?\\s*return\\s+\\1\\s*([.[].*?)?\\s*;?\\s*\\}\\s*$/;\nconst arrowFunctionRegEx = /^\\s*\\(?\\s*([A-Za-z0-9_$]+)\\s*\\)?\\s*=>\\s*\\1\\s*([.[].*?)?\\s*$/;\n\ntype NonNullableRecursive<T> = {\n [K in keyof T]-?: T[K] extends Record<string, unknown> ? NonNullable<NonNullableRecursive<T[K]>> : NonNullable<T[K]>;\n};\n\nexport type LambdaPath<T, TChild> = (x: NonNullable<NonNullableRecursive<T>>) => TChild;\n\nexport function extractPath(lambda: string): string {\n const match = classicFunctionRegEx.exec(lambda) || arrowFunctionRegEx.exec(lambda);\n if (match && match.length === 3) {\n return (match[2] || '').replace(/(^\\.\\s*)/g, '');\n }\n throw new Error(`Not supported or invalid path: <${lambda}>`);\n}\n\nexport function extractTokens(path: string): string[] {\n return path.split(/[\\s.[\\]]+/g).filter((x) => x);\n}\n\nexport class PathTokensCache {\n private readonly cache = new Map<string, string[]>();\n\n public getOrAdd<T, TChild>(lambdaPath: LambdaPath<T, TChild>): string[] {\n const lambdaString = lambdaPath.toString();\n\n if (!this.cache.has(lambdaString)) {\n const path = extractPath(lambdaString);\n const tokens = extractTokens(path);\n this.cache.set(lambdaString, tokens);\n }\n\n return this.cache.get(lambdaString) as string[];\n }\n\n public has<T, TChild>(lambdaPath: LambdaPath<T, TChild>): boolean {\n const lambdaString = lambdaPath.toString();\n return this.cache.has(lambdaString);\n }\n\n public get size(): number {\n return this.cache.size;\n }\n}\n","import { ValidationBuilder } from './ValidationBuilder';\nimport { ValidationWriter } from './ValidationWriter';\nimport { RootValidationRule, ValidationRule, ItemValidationRule } from './Types';\nimport { ValidationReader } from './ValidationReader';\nimport { PathTokensCache } from './PathHelper';\n\nfunction validate<T>(data: T, validationRule: RootValidationRule<T>, tokens: PathTokensCache): ValidationReader<T> {\n const validationWriter = new ValidationWriter<T>();\n const builder = new ValidationBuilder<T, T>(validationWriter, tokens, [], data);\n validationRule(builder, data);\n return validationWriter.getReader(tokens);\n}\n\nexport type Validator<T> = (value: T) => ValidationReader<T>;\n\nexport function createValidator<T>(rule: RootValidationRule<T>): Validator<T> {\n const tokens = new PathTokensCache();\n return (value: T): ValidationReader<T> => {\n return validate(value, rule, tokens);\n };\n}\n\nexport { ValidationReader, ValidationBuilder, RootValidationRule, ValidationRule, ItemValidationRule };\n"],"names":["useContext","FocusMode","findDOMNode"],"mappings":"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"}
|