validation: disable notification for options elements validation

This commit is contained in:
vchikalkin 2023-02-02 12:09:29 +03:00
parent f53f4b8d66
commit 626b71c363
4 changed files with 13 additions and 9 deletions

View File

@ -38,6 +38,7 @@ export function createReactions($calculation: CalculationStore) {
element.validate({
invalid: hasInvalidValue(value, options),
message: 'Выбранное значение отсутствует в списке',
silent: true,
});
},
{

View File

@ -99,12 +99,12 @@ export default class CalculationStore {
return this.element(elementName);
},
validate: ({ invalid, message }: ValidationParams) => {
validate: ({ invalid, message, silent }: ValidationParams) => {
if (!this.$validation[elementName]) this.createElementValidation(elementName);
let removeError: RemoveError | undefined;
if (invalid) {
removeError = this.$validation[elementName]?.addError(message);
removeError = this.$validation[elementName]?.addError(message, silent);
} else {
this.$validation[elementName]?.removeError(message);
}

View File

@ -1,6 +1,6 @@
import { makeAutoObservable } from 'mobx';
import notification from 'ui/elements/notification';
import type { ValidationConfig } from './types';
import type { ValidationConfig, ValidationParams } from './types';
export default class Validation {
params: ValidationConfig;
@ -25,14 +25,16 @@ export default class Validation {
if (this.messages.size === 0) notification.close(this.params.err_key);
};
addError = (message: string) => {
addError = (message: string, silent: ValidationParams['silent']) => {
this.messages.add(message);
notification.error({
key: this.params.err_key,
message: this.params.err_title,
description: message,
});
if (!silent) {
notification.error({
key: this.params.err_key,
message: this.params.err_title,
description: message,
});
}
return () => this.removeError(message);
};

View File

@ -6,6 +6,7 @@ export type ValidationConfig = {
export type ValidationParams = {
invalid: boolean;
message: string;
silent?: boolean;
};
export type RemoveError = () => void;