@skbkontur/react-ui-validations 1.8.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,33 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.9.0](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.8.4...react-ui-validations@1.9.0) (2022-08-01)
7
+
8
+
9
+ ### Features
10
+
11
+ * make props with default values truly optional in types ([72d02d5](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/commit/72d02d511a6ca0ea1a3569942f8cbde2f4c07d25))
12
+
13
+
14
+
15
+
16
+
17
+ ## [1.8.4](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.8.3...react-ui-validations@1.8.4) (2022-06-15)
18
+
19
+ **Note:** Version bump only for package react-ui-validations
20
+
21
+
22
+
23
+
24
+
25
+ ## [1.8.3](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.8.2...react-ui-validations@1.8.3) (2022-05-04)
26
+
27
+ **Note:** Version bump only for package react-ui-validations
28
+
29
+
30
+
31
+
32
+
6
33
  ## [1.8.2](https://github.com/skbkontur/retail-ui/tree/master/packages/react-ui-validations/compare/react-ui-validations@1.8.1...react-ui-validations@1.8.2) (2022-04-25)
7
34
 
8
35
 
package/index.js CHANGED
@@ -100,6 +100,16 @@ function __spreadArray(to, from, pack) {
100
100
  return to.concat(ar || Array.prototype.slice.call(from));
101
101
  }
102
102
 
103
+ /**
104
+ * Проверяет, не является ли переданный аргумент null или undefined и исключает типы null и undefined из типа аргумента
105
+ *
106
+ * @param value Значение, которое нужно проверить и исключить из него типы
107
+ * @returns Возвращает true, если переданный аргумент не является null или undefined иначе false
108
+ */
109
+ var isNonNullable = function (value) {
110
+ return value !== null && value !== undefined;
111
+ };
112
+
103
113
  var defaultOrNamed = function (module, component) {
104
114
  return module && module.__esModule && module.default ? module.default : module[component];
105
115
  };
@@ -109,23 +119,23 @@ var ReactUiDetection = /** @class */ (function () {
109
119
  }
110
120
  ReactUiDetection.isDatePicker = function (childrenArray) {
111
121
  var _a;
112
- return childrenArray != null && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'DatePicker';
122
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'DatePicker';
113
123
  };
114
124
  ReactUiDetection.isRadioGroup = function (childrenArray) {
115
125
  var _a;
116
- return childrenArray != null && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'RadioGroup';
126
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'RadioGroup';
117
127
  };
118
128
  ReactUiDetection.isTokenInput = function (childrenArray) {
119
129
  var _a;
120
- return childrenArray != null && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'TokenInput';
130
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'TokenInput';
121
131
  };
122
132
  ReactUiDetection.isSwitcher = function (childrenArray) {
123
133
  var _a;
124
- return childrenArray != null && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'Switcher';
134
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'Switcher';
125
135
  };
126
136
  ReactUiDetection.isComboBox = function (childrenArray) {
127
137
  var _a;
128
- return childrenArray != null && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'ComboBox';
138
+ return isNonNullable(childrenArray) && ((_a = childrenArray.type) === null || _a === void 0 ? void 0 : _a.__KONTUR_REACT_UI__) === 'ComboBox';
129
139
  };
130
140
  return ReactUiDetection;
131
141
  }());
@@ -148,6 +158,7 @@ var ValidationTooltip = /** @class */ (function (_super) {
148
158
  return ValidationTooltip;
149
159
  }(React__default["default"].Component));
150
160
 
161
+ /* eslint-disable react/display-name */
151
162
  function tooltip(pos) {
152
163
  return function (control, hasError, validation) {
153
164
  return (React__default["default"].createElement(ValidationTooltip, { pos: pos, error: hasError, render: function () {
@@ -161,13 +172,13 @@ function tooltip(pos) {
161
172
  function text(pos) {
162
173
  if (pos === void 0) { pos = 'right'; }
163
174
  if (pos === 'right') {
164
- return function (control, hasError, validation) {
175
+ return function (control, _hasError, validation) {
165
176
  return (React__default["default"].createElement("span", { style: { display: 'inline-block' } },
166
177
  control,
167
178
  React__default["default"].createElement("span", { "data-validation-message": "text", style: { marginLeft: '10px', color: '#d43517' } }, (validation && validation.message) || '')));
168
179
  };
169
180
  }
170
- return function (control, hasError, validation) {
181
+ return function (control, _hasError, validation) {
171
182
  return (React__default["default"].createElement("span", { style: { position: 'relative', display: 'inline-block' } },
172
183
  control,
173
184
  React__default["default"].createElement("span", { style: { position: 'absolute', bottom: 0, left: 0, height: 0 } },
@@ -182,6 +193,12 @@ function text(pos) {
182
193
  };
183
194
  }
184
195
 
196
+ function createPropsGetter(defaultProps) {
197
+ return function () {
198
+ return this.props;
199
+ };
200
+ }
201
+
185
202
  var env = (typeof process === 'object' && process && process.env) || {};
186
203
  var enableReactTesting = env.enableReactTesting, NODE_ENV = env.NODE_ENV, REACT_UI_TEST = env.REACT_UI_TEST, REACT_APP_REACT_UI_TEST = env.REACT_APP_REACT_UI_TEST, STORYBOOK_REACT_UI_TEST = env.STORYBOOK_REACT_UI_TEST;
187
204
  var isReactUITestEnv = Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is not usable (dev/prod)
@@ -191,6 +208,17 @@ var isReactUITestEnv = Boolean(REACT_UI_TEST) || // for cases when NODE_ENV is n
191
208
  var isTestEnv = NODE_ENV === 'test' || isReactUITestEnv;
192
209
  var isBrowser = typeof window !== 'undefined';
193
210
 
211
+ /**
212
+ * Checks if the value `null` or `undefined`.
213
+ *
214
+ * @param value Value to check for `null` and `undefined`.
215
+ * @returns Returns `true` if `value` is `null` or `undefined`, else `false`.
216
+ */
217
+ // @ts-expect-error: TypeScript doesn't consider the check inside of the function.
218
+ var isNullable = function (value) {
219
+ return value === null || value === undefined;
220
+ };
221
+
194
222
  var ValidationContext = React__default["default"].createContext({
195
223
  register: function () { return undefined; },
196
224
  unregister: function () { return undefined; },
@@ -216,7 +244,7 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
216
244
  scrollOffset = { top: this.props.scrollOffset };
217
245
  }
218
246
  else {
219
- scrollOffset = this.props.scrollOffset == null ? {} : this.props.scrollOffset;
247
+ scrollOffset = isNullable(this.props.scrollOffset) ? {} : this.props.scrollOffset;
220
248
  }
221
249
  var _a = scrollOffset.top, top = _a === void 0 ? 50 : _a, _b = scrollOffset.bottom, bottom = _b === void 0 ? 0 : _b;
222
250
  return {
@@ -270,13 +298,13 @@ var ValidationContextWrapper = /** @class */ (function (_super) {
270
298
  wrappersWithPosition.sort(function (x, y) {
271
299
  var xPosition = x.position;
272
300
  var yPosition = y.position;
273
- if (xPosition == null && yPosition == null) {
301
+ if (isNullable(xPosition) && isNullable(yPosition)) {
274
302
  return 0;
275
303
  }
276
- if (xPosition == null) {
304
+ if (isNullable(xPosition)) {
277
305
  return 1;
278
306
  }
279
- if (yPosition == null) {
307
+ if (isNullable(yPosition)) {
280
308
  return -1;
281
309
  }
282
310
  if (Math.sign(xPosition.x - yPosition.x) !== 0) {
@@ -319,6 +347,7 @@ var ValidationContainer = /** @class */ (function (_super) {
319
347
  __extends(ValidationContainer, _super);
320
348
  function ValidationContainer() {
321
349
  var _this = _super !== null && _super.apply(this, arguments) || this;
350
+ _this.getProps = createPropsGetter();
322
351
  _this.childContext = null;
323
352
  _this.refChildContext = function (el) { return (_this.childContext = el); };
324
353
  return _this;
@@ -348,7 +377,7 @@ var ValidationContainer = /** @class */ (function (_super) {
348
377
  return this.childContext.validate(withoutFocus);
349
378
  };
350
379
  ValidationContainer.prototype.render = function () {
351
- return (React__default["default"].createElement(ValidationContextWrapper, { ref: this.refChildContext, scrollOffset: this.props.scrollOffset, disableSmoothScroll: this.props.disableSmoothScroll, onValidationUpdated: this.props.onValidationUpdated }, this.props.children));
380
+ return (React__default["default"].createElement(ValidationContextWrapper, { ref: this.refChildContext, scrollOffset: this.props.scrollOffset, disableSmoothScroll: this.getProps().disableSmoothScroll, onValidationUpdated: this.props.onValidationUpdated }, this.props.children));
352
381
  };
353
382
  ValidationContainer.__KONTUR_REACT_UI__ = 'ValidationContainer';
354
383
  ValidationContainer.defaultProps = {
@@ -454,11 +483,16 @@ function step(context) {
454
483
  }
455
484
  }
456
485
  var ScrollTime = 468;
457
- var scrollWindow = isBrowser
458
- ? typeof window.scroll === 'function'
459
- ? function (_, x, y) { return window.scroll(x, y); }
460
- : function (_, x, y) { return window.scrollTo(x, y); }
461
- : function () { return undefined; };
486
+ var getScrollWindow = function (isBrowser) {
487
+ if (isBrowser) {
488
+ if (typeof window.scroll === 'function') {
489
+ return function (_, x, y) { return window.scroll(x, y); };
490
+ }
491
+ return function (_, x, y) { return window.scrollTo(x, y); };
492
+ }
493
+ return function () { return undefined; };
494
+ };
495
+ var scrollWindow = getScrollWindow(isBrowser);
462
496
  var now = isBrowser && window.performance && window.performance.now
463
497
  ? window.performance.now.bind(window.performance)
464
498
  : Date.now;
@@ -470,7 +504,7 @@ function ease(time) {
470
504
  return 0.5 * (1 - Math.cos(Math.PI * time));
471
505
  }
472
506
  function getDocumentBodyStrict() {
473
- if (document.body == null) {
507
+ if (isNullable(document.body)) {
474
508
  throw new Error('Scrolling can be used only in browser');
475
509
  }
476
510
  return document.body;
@@ -481,7 +515,7 @@ function findScrollableParent(el) {
481
515
  var hasVisibleOverflow;
482
516
  var currentElement = el;
483
517
  do {
484
- if (currentElement.parentElement == null || !(currentElement.parentElement instanceof HTMLElement)) {
518
+ if (isNullable(currentElement.parentElement) || !(currentElement.parentElement instanceof HTMLElement)) {
485
519
  return getDocumentBodyStrict();
486
520
  }
487
521
  currentElement = currentElement.parentElement;
@@ -534,12 +568,7 @@ function isEqual(a, b) {
534
568
  if (a === b) {
535
569
  return true;
536
570
  }
537
- return (!!a &&
538
- !!b &&
539
- a.behaviour === b.behaviour &&
540
- a.level === a.level &&
541
- a.message === b.message &&
542
- a.independent === b.independent);
571
+ return !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;
543
572
  }
544
573
 
545
574
  if (isBrowser && typeof HTMLElement === 'undefined') {
@@ -774,6 +803,7 @@ var ValidationWrapper = /** @class */ (function (_super) {
774
803
  }(React__default["default"].Component));
775
804
 
776
805
  var ValidationBuilder = /** @class */ (function () {
806
+ // eslint-disable-next-line no-useless-constructor
777
807
  function ValidationBuilder(writer, tokens, path, data) {
778
808
  this.writer = writer;
779
809
  this.tokens = tokens;
@@ -782,7 +812,7 @@ var ValidationBuilder = /** @class */ (function () {
782
812
  }
783
813
  ValidationBuilder.prototype.prop = function (lambdaPath, rule) {
784
814
  var info = this.getPathInfo(lambdaPath);
785
- if (info == null) {
815
+ if (isNullable(info)) {
786
816
  return;
787
817
  }
788
818
  var builder = new ValidationBuilder(this.writer, this.tokens, info.path, info.data);
@@ -790,7 +820,7 @@ var ValidationBuilder = /** @class */ (function () {
790
820
  };
791
821
  ValidationBuilder.prototype.array = function (lambdaPath, rule) {
792
822
  var info = this.getPathInfo(lambdaPath);
793
- if (info == null || !Array.isArray(info.data)) {
823
+ if (isNullable(info) || !Array.isArray(info.data)) {
794
824
  return;
795
825
  }
796
826
  var array = info.data;
@@ -821,7 +851,7 @@ var ValidationBuilder = /** @class */ (function () {
821
851
  var data = this.data;
822
852
  for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {
823
853
  var part = path_1[_i];
824
- if (data == null) {
854
+ if (isNullable(data)) {
825
855
  return null;
826
856
  }
827
857
  data = data[part];
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/ReactUiDetection.ts","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../src/utils/utils.ts","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../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":["declare function require(name: string): any;\n\nconst defaultOrNamed = (module: any, component: string) =>\n module && module.__esModule && module.default ? module.default : module[component];\n\nconst Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\n\nexport { Tooltip };\n\nexport class ReactUiDetection {\n public static isDatePicker(childrenArray: any): boolean {\n return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'DatePicker';\n }\n\n public static isRadioGroup(childrenArray: any): boolean {\n return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'RadioGroup';\n }\n\n public static isTokenInput(childrenArray: any): boolean {\n return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'TokenInput';\n }\n\n public static isSwitcher(childrenArray: any): boolean {\n return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'Switcher';\n }\n public static isComboBox(childrenArray: any): boolean {\n return childrenArray != null && childrenArray.type?.__KONTUR_REACT_UI__ === 'ComboBox';\n }\n}\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}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public render() {\n const onlyChild = React.Children.only(this.props.children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n if (\n ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child)\n ) {\n return (\n <Tooltip\n useWrapper={false}\n pos={this.props.pos}\n render={this.props.error && this.props.render}\n trigger={'hover&focus'}\n >\n {child}\n </Tooltip>\n );\n }\n return (\n <Tooltip pos={this.props.pos} render={this.props.error && this.props.render} trigger={'hover&focus'}>\n {this.props.children}\n </Tooltip>\n );\n }\n}\n","import React from 'react';\n\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage } 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: 'bottom' | 'right' = 'right'): RenderErrorMessage {\n if (pos === 'right') {\n return (control, hasError, validation) => {\n return (\n <span style={{ display: 'inline-block' }}>\n {control}\n <span data-validation-message=\"text\" style={{ marginLeft: '10px', color: '#d43517' }}>\n {(validation && validation.message) || ''}\n </span>\n </span>\n );\n };\n }\n return (control, hasError, validation) => {\n return (\n <span style={{ position: 'relative', display: 'inline-block' }}>\n {control}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>\n <span\n data-validation-message=\"text\"\n style={{\n color: '#d43517',\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n </span>\n </span>\n );\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","import React from 'react';\n\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport { ScrollOffset } from './ValidationContainer';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\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 = this.props.scrollOffset == null ? {} : 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 (xPosition == null && yPosition == null) {\n return 0;\n }\n if (xPosition == null) {\n return 1;\n }\n if (yPosition == null) {\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(withoutFocus: boolean): Promise<boolean> {\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n const firstInvalid = this.getChildWrappersSortedByPosition().find((x) => x.hasError() || x.hasWarning());\n if (firstInvalid) {\n if (!withoutFocus) {\n firstInvalid.focus();\n }\n }\n\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstInvalid);\n }\n\n return !firstInvalid;\n }\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n <span>{this.props.children}</span>\n </ValidationContext.Provider>\n );\n }\n}\n","import React from 'react';\n\nimport { Nullable } from '../typings/Types';\n\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationContainerProps {\n children?: React.ReactNode;\n onValidationUpdated?: (isValid?: Nullable<boolean>) => void;\n scrollOffset?: number | ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport class ValidationContainer extends React.Component<ValidationContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ValidationContainer';\n\n public static defaultProps = {\n disableSmoothScroll: isTestEnv,\n };\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 = false): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocus);\n }\n\n public validate(withoutFocus = false): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocus);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\n ref={this.refChildContext}\n scrollOffset={this.props.scrollOffset}\n disableSmoothScroll={this.props.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 { Nullable, Omit } from '../typings/Types';\n\nimport { ScrollOffset } from './ValidationContainer';\nimport { isBrowser } from './utils/utils';\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 scrollWindow = isBrowser\n ? typeof window.scroll === 'function'\n ? (_: any, x: number, y: number) => window.scroll(x, y)\n : (_: any, x: number, y: number) => window.scrollTo(x, y)\n : () => undefined;\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 (document.body == null) {\n throw new Error('Scrolling can be used only in browser');\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 (currentElement.parentElement == null || !(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.level === a.level &&\n a.message === b.message &&\n a.independent === b.independent\n );\n}\n","import React from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\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';\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 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}\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<HTMLElement>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/react-ui-validations/#/getting-started',\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();\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: (x: any) => {\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(x);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = x;\n }\n }\n this.child = x;\n },\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 />\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 children.props.onInputValueChange(...args);\n }\n },\n });\n }\n return this.props.errorMessage(<span ref={this.setRootNode}>{clonedChild}</span>, !!validation, validation);\n }\n\n private setRootNode = (element: Nullable<HTMLElement>) => {\n this.rootNode = 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 }, resolve);\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\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} 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 {\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\n public render() {\n const { children, validationInfo, renderMessage } = 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 return (\n <ValidationWrapperInternal errorMessage={renderMessage || tooltip('right top')} validation={validation}>\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';\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 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 (info == null) {\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 (info == null || !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 (data == null) {\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","import { 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(private readonly node: Nullable<ValidationNode<T>>, private readonly tokens: PathTokensCache) {}\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 object ? 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":["React","warning"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/isNonNullable/isNonNullable.ts","../../src/ReactUiDetection.ts","../../src/ValidationTooltip.tsx","../../src/ErrorRenderer.tsx","../../../react-ui/lib/createPropsGetter.ts","../../src/utils/utils.ts","../../src/utils/isNullable/isNullable.ts","../../src/ValidationContextWrapper.tsx","../../src/ValidationContainer.tsx","../../src/smoothScrollIntoView.ts","../../src/ValidationHelper.ts","../../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":["/**\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 { 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 Tooltip = defaultOrNamed(require('__REACT_UI_PACKAGE__/components/Tooltip'), 'Tooltip');\n\nexport { Tooltip };\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 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}\n\nexport class ValidationTooltip extends React.Component<ValidationTooltipProps> {\n public render() {\n const onlyChild = React.Children.only(this.props.children);\n const child = onlyChild && onlyChild.props ? onlyChild.props.children : null;\n if (\n ReactUiDetection.isRadioGroup(child) ||\n ReactUiDetection.isTokenInput(child) ||\n ReactUiDetection.isSwitcher(child)\n ) {\n return (\n <Tooltip\n useWrapper={false}\n pos={this.props.pos}\n render={this.props.error && this.props.render}\n trigger={'hover&focus'}\n >\n {child}\n </Tooltip>\n );\n }\n return (\n <Tooltip pos={this.props.pos} render={this.props.error && this.props.render} trigger={'hover&focus'}>\n {this.props.children}\n </Tooltip>\n );\n }\n}\n","/* eslint-disable react/display-name */\nimport React from 'react';\n\nimport { TooltipPosition, ValidationTooltip } from './ValidationTooltip';\nimport { RenderErrorMessage } 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: 'bottom' | 'right' = 'right'): RenderErrorMessage {\n if (pos === 'right') {\n return (control, _hasError, validation) => {\n return (\n <span style={{ display: 'inline-block' }}>\n {control}\n <span data-validation-message=\"text\" style={{ marginLeft: '10px', color: '#d43517' }}>\n {(validation && validation.message) || ''}\n </span>\n </span>\n );\n };\n }\n return (control, _hasError, validation) => {\n return (\n <span style={{ position: 'relative', display: 'inline-block' }}>\n {control}\n <span style={{ position: 'absolute', bottom: 0, left: 0, height: 0 }}>\n <span\n data-validation-message=\"text\"\n style={{\n color: '#d43517',\n overflow: 'visible',\n whiteSpace: 'nowrap',\n position: 'absolute',\n top: '2px',\n left: 0,\n }}\n >\n {(validation && validation.message) || ''}\n </span>\n </span>\n </span>\n );\n };\n}\n","import React from 'react';\n\nexport type DefaultizedProps<P, DP> = P & DP;\n\nexport function createPropsGetter<DP extends {}>(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","/**\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","import React from 'react';\n\nimport { ValidationWrapperInternal } from './ValidationWrapperInternal';\nimport { ScrollOffset } from './ValidationContainer';\nimport { isNullable } from './utils/isNullable';\n\nexport interface ValidationContextSettings {\n scrollOffset: ScrollOffset;\n disableSmoothScroll: boolean;\n}\n\nexport interface ValidationContextWrapperProps {\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(withoutFocus: boolean): Promise<boolean> {\n await Promise.all(this.childWrappers.map((x) => x.processSubmit()));\n const firstInvalid = this.getChildWrappersSortedByPosition().find((x) => x.hasError() || x.hasWarning());\n if (firstInvalid) {\n if (!withoutFocus) {\n firstInvalid.focus();\n }\n }\n\n if (this.props.onValidationUpdated) {\n this.props.onValidationUpdated(!firstInvalid);\n }\n\n return !firstInvalid;\n }\n\n public render() {\n return (\n <ValidationContext.Provider value={this}>\n <span>{this.props.children}</span>\n </ValidationContext.Provider>\n );\n }\n}\n","import React from 'react';\nimport { createPropsGetter } from '@skbkontur/react-ui/lib/createPropsGetter';\n\nimport { Nullable } from '../typings/Types';\n\nimport { isTestEnv } from './utils/utils';\nimport { ValidationContextWrapper } from './ValidationContextWrapper';\n\nexport interface ScrollOffset {\n top?: number;\n bottom?: number;\n}\n\nexport interface ValidationContainerProps {\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\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 = false): Promise<void> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n await this.childContext.validate(withoutFocus);\n }\n\n public validate(withoutFocus = false): Promise<boolean> {\n if (!this.childContext) {\n throw new Error('childContext is not defined');\n }\n return this.childContext.validate(withoutFocus);\n }\n\n public render() {\n return (\n <ValidationContextWrapper\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 { 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 !!a && !!b && a.behaviour === b.behaviour && a.message === b.message && a.independent === b.independent;\n}\n","import React from 'react';\nimport warning from 'warning';\n\nimport { Nullable } from '../typings/Types';\n\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';\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 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}\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<HTMLElement>;\n\n public static contextType = ValidationContext;\n public context: ValidationContextType = this.context;\n\n public componentDidMount() {\n warning(\n this.context,\n 'ValidationWrapper should appears as child of ValidationContainer.\\n' +\n 'https://tech.skbkontur.ru/react-ui-validations/#/getting-started',\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();\n }\n }\n this.isChanging = false;\n }\n\n public render() {\n const { children } = this.props;\n const { validation } = this.state;\n\n let clonedChild: React.ReactElement<any> = children ? (\n React.cloneElement(children, {\n ref: (x: any) => {\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(x);\n }\n if (Object.prototype.hasOwnProperty.call(child.ref, 'current')) {\n child.ref.current = x;\n }\n }\n this.child = x;\n },\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 />\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 children.props.onInputValueChange(...args);\n }\n },\n });\n }\n return this.props.errorMessage(<span ref={this.setRootNode}>{clonedChild}</span>, !!validation, validation);\n }\n\n private setRootNode = (element: Nullable<HTMLElement>) => {\n this.rootNode = 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 }, resolve);\n if (Boolean(current) !== Boolean(validation)) {\n this.context.onValidationUpdated(this, !validation);\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} 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 {\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\n public render() {\n const { children, validationInfo, renderMessage } = 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 return (\n <ValidationWrapperInternal errorMessage={renderMessage || tooltip('right top')} validation={validation}>\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(private readonly node: Nullable<ValidationNode<T>>, private readonly tokens: PathTokensCache) {}\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 object ? 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":["React","warning"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skbkontur/react-ui-validations",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "description": "Validations for @skbkontur/react-ui",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -26,20 +26,11 @@
26
26
  "warning": "^4.0.3"
27
27
  },
28
28
  "jest": {
29
+ "testEnvironment": "jsdom",
29
30
  "testResultsProcessor": "jest-teamcity-reporter",
30
- "globals": {
31
- "ts-jest": {
32
- "tsConfig": "./tsconfig.json"
33
- }
34
- },
35
31
  "moduleNameMapper": {
36
- "\\.(jpg|jpeg|png|gif|eot|otf||svg|ttf|woff|woff2)$": "<rootDir>/tests/jest-file-stub.js",
37
32
  "\\.(css|less)$": "identity-obj-proxy"
38
33
  },
39
- "transform": {
40
- "^.+\\.jsx?$": "babel-jest",
41
- "^.+\\.tsx?$": "ts-jest"
42
- },
43
34
  "testMatch": [
44
35
  "<rootDir>/tests/**/*test.(ts|tsx)"
45
36
  ],
@@ -47,6 +38,9 @@
47
38
  "/node_modules/",
48
39
  "/__fixtures__/"
49
40
  ],
41
+ "setupFilesAfterEnv": [
42
+ "<rootDir>/tests/test-setup.js"
43
+ ],
50
44
  "moduleFileExtensions": [
51
45
  "ts",
52
46
  "tsx",
package/index.d.ts DELETED
@@ -1,257 +0,0 @@
1
- // Generated by dts-bundle v0.7.3
2
- // Dependencies for this module:
3
- // ../../react
4
-
5
- declare module '@skbkontur/react-ui-validations' {
6
- import { text, tooltip } from '@skbkontur/react-ui-validations/src/ErrorRenderer';
7
- import { ValidationContainer, ValidationContainerProps } from '@skbkontur/react-ui-validations/src/ValidationContainer';
8
- import { TooltipPosition, ValidationTooltip, ValidationTooltipProps } from '@skbkontur/react-ui-validations/src/ValidationTooltip';
9
- import { RenderErrorMessage, Validation, ValidationBehaviour } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
10
- import { ValidationWrapper, ValidationInfo, ValidationWrapperProps } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
11
- import { ValidationContext, ValidationContextType, ValidationContextWrapper, ValidationContextWrapperProps } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
12
- export { ValidationContainer, ValidationContainerProps, ValidationContext, ValidationContextType, ValidationContextWrapper, ValidationContextWrapperProps, ValidationWrapper as ValidationWrapperV1, ValidationWrapperProps as ValidationWrapperV1Props, RenderErrorMessage, ValidationBehaviour, Validation, ValidationWrapper, ValidationWrapperProps, ValidationInfo, ValidationTooltip, ValidationTooltipProps, TooltipPosition, tooltip, text, };
13
- export * from '@skbkontur/react-ui-validations/src/Validations';
14
- }
15
-
16
- declare module '@skbkontur/react-ui-validations/src/ErrorRenderer' {
17
- import { TooltipPosition } from '@skbkontur/react-ui-validations/src/ValidationTooltip';
18
- import { RenderErrorMessage } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
19
- export function tooltip(pos: TooltipPosition): RenderErrorMessage;
20
- export function text(pos?: 'bottom' | 'right'): RenderErrorMessage;
21
- }
22
-
23
- declare module '@skbkontur/react-ui-validations/src/ValidationContainer' {
24
- import React from 'react';
25
- import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
26
- export interface ScrollOffset {
27
- top?: number;
28
- bottom?: number;
29
- }
30
- export interface ValidationContainerProps {
31
- children?: React.ReactNode;
32
- onValidationUpdated?: (isValid?: Nullable<boolean>) => void;
33
- scrollOffset?: number | ScrollOffset;
34
- disableSmoothScroll: boolean;
35
- }
36
- export class ValidationContainer extends React.Component<ValidationContainerProps> {
37
- static __KONTUR_REACT_UI__: string;
38
- static defaultProps: {
39
- disableSmoothScroll: boolean;
40
- };
41
- static propTypes: {
42
- scrollOffset(props: ValidationContainerProps, propName: keyof ValidationContainerProps, componentName: string): Error | undefined;
43
- };
44
- submit(withoutFocus?: boolean): Promise<void>;
45
- validate(withoutFocus?: boolean): Promise<boolean>;
46
- render(): JSX.Element;
47
- }
48
- }
49
-
50
- declare module '@skbkontur/react-ui-validations/src/ValidationTooltip' {
51
- import React from 'react';
52
- export type TooltipPosition = 'top left' | 'top center' | 'top right' | 'bottom left' | 'bottom center' | 'bottom right' | 'left top' | 'left middle' | 'left bottom' | 'right top' | 'right middle' | 'right bottom';
53
- export interface ValidationTooltipProps {
54
- children: React.ReactElement<any>;
55
- error: boolean;
56
- pos?: TooltipPosition;
57
- render?: () => React.ReactNode;
58
- }
59
- export class ValidationTooltip extends React.Component<ValidationTooltipProps> {
60
- render(): JSX.Element;
61
- }
62
- }
63
-
64
- declare module '@skbkontur/react-ui-validations/src/ValidationWrapperInternal' {
65
- import React from 'react';
66
- import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
67
- import { ValidationContextType } from '@skbkontur/react-ui-validations/src/ValidationContextWrapper';
68
- export type ValidationBehaviour = 'immediate' | 'lostfocus' | 'submit';
69
- export type ValidationLevel = 'error' | 'warning';
70
- export interface Validation {
71
- level: ValidationLevel;
72
- behaviour: ValidationBehaviour;
73
- message: React.ReactNode;
74
- independent: boolean;
75
- }
76
- export type RenderErrorMessage = (control: React.ReactElement<any>, hasError: boolean, validation: Nullable<Validation>) => React.ReactElement<any>;
77
- export interface ValidationWrapperInternalProps {
78
- children?: React.ReactElement<any>;
79
- validation: Nullable<Validation>;
80
- errorMessage: RenderErrorMessage;
81
- }
82
- interface ValidationWrapperInternalState {
83
- validation: Nullable<Validation>;
84
- }
85
- interface Point {
86
- x: number;
87
- y: number;
88
- }
89
- export class ValidationWrapperInternal extends React.Component<ValidationWrapperInternalProps, ValidationWrapperInternalState> {
90
- state: ValidationWrapperInternalState;
91
- isChanging: boolean;
92
- static contextType: React.Context<ValidationContextType>;
93
- context: ValidationContextType;
94
- componentDidMount(): void;
95
- componentWillUnmount(): void;
96
- componentDidUpdate(): void;
97
- focus(): Promise<void>;
98
- render(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
99
- getRootNode: () => Nullable<HTMLElement>;
100
- getControlPosition(): Nullable<Point>;
101
- processBlur(): Promise<void>;
102
- processSubmit(): Promise<void>;
103
- hasError(): boolean;
104
- hasWarning(): boolean;
105
- isIndependent(): boolean;
106
- }
107
- export {};
108
- }
109
-
110
- declare module '@skbkontur/react-ui-validations/src/ValidationWrapper' {
111
- import React from 'react';
112
- import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
113
- import { RenderErrorMessage, ValidationBehaviour, ValidationLevel } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
114
- export interface ValidationInfo {
115
- type?: Nullable<ValidationBehaviour>;
116
- level?: Nullable<ValidationLevel>;
117
- message: React.ReactNode;
118
- independent?: boolean;
119
- }
120
- export interface ValidationWrapperProps {
121
- children?: React.ReactElement<any>;
122
- validationInfo: Nullable<ValidationInfo>;
123
- renderMessage?: Nullable<RenderErrorMessage>;
124
- }
125
- export class ValidationWrapper extends React.Component<ValidationWrapperProps> {
126
- static __KONTUR_REACT_UI__: string;
127
- render(): JSX.Element;
128
- }
129
- }
130
-
131
- declare module '@skbkontur/react-ui-validations/src/ValidationContextWrapper' {
132
- import React from 'react';
133
- import { ValidationWrapperInternal } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
134
- import { ScrollOffset } from '@skbkontur/react-ui-validations/src/ValidationContainer';
135
- export interface ValidationContextSettings {
136
- scrollOffset: ScrollOffset;
137
- disableSmoothScroll: boolean;
138
- }
139
- export interface ValidationContextWrapperProps {
140
- children?: React.ReactNode;
141
- onValidationUpdated?: (isValid?: boolean) => void;
142
- scrollOffset?: number | ScrollOffset;
143
- disableSmoothScroll: boolean;
144
- }
145
- export interface ValidationContextType {
146
- register: (wrapper: ValidationWrapperInternal) => void;
147
- unregister: (wrapper: ValidationWrapperInternal) => void;
148
- instanceProcessBlur: (wrapper: ValidationWrapperInternal) => void;
149
- onValidationUpdated: (wrapper: ValidationWrapperInternal, isValid: boolean) => void;
150
- getSettings: () => ValidationContextSettings;
151
- isAnyWrapperInChangingMode: () => boolean;
152
- }
153
- export const ValidationContext: React.Context<ValidationContextType>;
154
- export class ValidationContextWrapper extends React.Component<ValidationContextWrapperProps> {
155
- childWrappers: ValidationWrapperInternal[];
156
- getSettings(): ValidationContextSettings;
157
- register(wrapper: ValidationWrapperInternal): void;
158
- unregister(wrapper: ValidationWrapperInternal): void;
159
- instanceProcessBlur(instance: ValidationWrapperInternal): void;
160
- onValidationUpdated(wrapper: ValidationWrapperInternal, isValid?: boolean): void;
161
- isAnyWrapperInChangingMode(): boolean;
162
- onValidationRemoved(): void;
163
- getChildWrappersSortedByPosition(): ValidationWrapperInternal[];
164
- validate(withoutFocus: boolean): Promise<boolean>;
165
- render(): JSX.Element;
166
- }
167
- }
168
-
169
- declare module '@skbkontur/react-ui-validations/src/Validations' {
170
- import { ValidationBuilder } from '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder';
171
- import { RootValidationRule, ValidationRule, ItemValidationRule } from '@skbkontur/react-ui-validations/src/Validations/Types';
172
- import { ValidationReader } from '@skbkontur/react-ui-validations/src/Validations/ValidationReader';
173
- export type Validator<T> = (value: T) => ValidationReader<T>;
174
- export function createValidator<T>(rule: RootValidationRule<T>): Validator<T>;
175
- export { ValidationReader, ValidationBuilder, RootValidationRule, ValidationRule, ItemValidationRule };
176
- }
177
-
178
- declare module '@skbkontur/react-ui-validations/typings/Types' {
179
- export type Nullable<T> = T | null | undefined;
180
- export type Omit<T extends object, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
181
- export type ExtractItem<T> = T extends Array<infer TItem> ? TItem : never;
182
- }
183
-
184
- declare module '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder' {
185
- import React from 'react';
186
- import { ValidationBehaviour, ValidationLevel } from '@skbkontur/react-ui-validations/src/ValidationWrapperInternal';
187
- import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
188
- import { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
189
- import { ValidationWriter } from '@skbkontur/react-ui-validations/src/Validations/ValidationWriter';
190
- import { ItemValidationRule, ValidationRule } from '@skbkontur/react-ui-validations/src/Validations/Types';
191
- export class ValidationBuilder<TRoot, T> {
192
- constructor(writer: ValidationWriter<TRoot>, tokens: PathTokensCache, path: string[], data: T);
193
- prop<TChild>(lambdaPath: LambdaPath<T, TChild>, rule: ValidationRule<TRoot, TChild>): void;
194
- array<TChild>(lambdaPath: LambdaPath<T, TChild[]>, rule: ItemValidationRule<TRoot, TChild>): void;
195
- invalid(isInvalid: (value: T) => boolean, validationInfo: ValidationInfo): void;
196
- invalid(isInvalid: (value: T) => boolean, message: React.ReactNode, type?: ValidationBehaviour, level?: ValidationLevel, independent?: boolean): void;
197
- }
198
- }
199
-
200
- declare module '@skbkontur/react-ui-validations/src/Validations/Types' {
201
- import { Nullable } from '@skbkontur/react-ui-validations/typings/Types';
202
- import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
203
- import { ValidationBuilder } from '@skbkontur/react-ui-validations/src/Validations/ValidationBuilder';
204
- export interface ValidationNode<T> {
205
- validation: Nullable<ValidationInfo>;
206
- children: Nullable<{
207
- [K in keyof T]: ValidationNode<T[K]>;
208
- }>;
209
- }
210
- export type ValidationRule<TRoot, T> = (builder: ValidationBuilder<TRoot, T>, value: T) => void;
211
- export type ItemValidationRule<TRoot, T> = (builder: ValidationBuilder<TRoot, T>, value: T, index: number, array: T[]) => void;
212
- export type RootValidationRule<T> = ValidationRule<T, T>;
213
- }
214
-
215
- declare module '@skbkontur/react-ui-validations/src/Validations/ValidationReader' {
216
- import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
217
- import { ExtractItem, Nullable } from '@skbkontur/react-ui-validations/typings/Types';
218
- import { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
219
- import { LambdaPath, PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
220
- export class ValidationReader<T> {
221
- constructor(node: Nullable<ValidationNode<T>>, tokens: PathTokensCache);
222
- getNode<TChild>(lambdaPath: LambdaPath<T, TChild>): ValidationReader<TChild>;
223
- getNodeByIndex(index: number): ValidationReader<ExtractItem<T>>;
224
- getNodeByKey<TKey extends keyof T>(key: TKey): ValidationReader<T[TKey]>;
225
- get(): Nullable<ValidationInfo>;
226
- }
227
- }
228
-
229
- declare module '@skbkontur/react-ui-validations/src/Validations/PathHelper' {
230
- type NonNullableRecursive<T> = {
231
- [K in keyof T]: T[K] extends object ? NonNullable<NonNullableRecursive<T[K]>> : NonNullable<T[K]>;
232
- };
233
- export type LambdaPath<T, TChild> = (x: NonNullable<NonNullableRecursive<T>>) => TChild;
234
- export function extractPath(lambda: string): string;
235
- export function extractTokens(path: string): string[];
236
- export class PathTokensCache {
237
- getOrAdd<T, TChild>(lambdaPath: LambdaPath<T, TChild>): string[];
238
- has<T, TChild>(lambdaPath: LambdaPath<T, TChild>): boolean;
239
- get size(): number;
240
- }
241
- export {};
242
- }
243
-
244
- declare module '@skbkontur/react-ui-validations/src/Validations/ValidationWriter' {
245
- import { ValidationInfo } from '@skbkontur/react-ui-validations/src/ValidationWrapper';
246
- import { ValidationNode } from '@skbkontur/react-ui-validations/src/Validations/Types';
247
- import { ValidationReader } from '@skbkontur/react-ui-validations/src/Validations/ValidationReader';
248
- import { PathTokensCache } from '@skbkontur/react-ui-validations/src/Validations/PathHelper';
249
- export class ValidationWriter<T> {
250
- constructor(node?: ValidationNode<T>);
251
- getReader(tokens: PathTokensCache): ValidationReader<T>;
252
- set(validation: ValidationInfo): void;
253
- isValidated(): boolean;
254
- getNode<TChild>(path: string[]): ValidationWriter<TChild>;
255
- }
256
- }
257
-