Merge pull request #6434 from kalutkaz/fix/validationJsonEditor

[3.4] UI: Fix validation logic for JSON
This commit is contained in:
Igor Kulikov 2022-06-09 16:18:43 +03:00 committed by GitHub
commit 0adcb36d10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 4 deletions

View File

@ -26,6 +26,7 @@ import {
Validator
} from '@angular/forms';
import { ErrorStateMatcher } from '@angular/material/core';
import { isObject } from "@core/utils";
@Directive({
selector: '[tb-json-to-string]',
@ -53,7 +54,11 @@ export class TbJsonToStringDirective implements ControlValueAccessor, Validator,
@HostListener('input', ['$event.target.value']) input(newValue: any): void {
try {
this.data = JSON.parse(newValue);
this.parseError = false;
if (isObject(this.data)) {
this.parseError = false;
} else {
this.parseError = true;
}
} catch (e) {
this.parseError = true;
}

View File

@ -22,7 +22,7 @@ import { ActionNotificationHide, ActionNotificationShow } from '@core/notificati
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { CancelAnimationFrame, RafService } from '@core/services/raf.service';
import { guid, isDefinedAndNotNull, isLiteralObject, isUndefined } from '@core/utils';
import { guid, isDefinedAndNotNull, isObject, isUndefined } from '@core/utils';
import { ResizeObserver } from '@juggle/resize-observer';
import { getAce } from '@shared/models/ace/ace.models';
@ -259,7 +259,7 @@ export class JsonObjectEditComponent implements OnInit, ControlValueAccessor, Va
if (this.contentValue && this.contentValue.length > 0) {
try {
data = JSON.parse(this.contentValue);
if (!isLiteralObject(data)) {
if (!isObject(data)) {
throw new TypeError(`Value is not a valid JSON`);
}
this.objectValid = true;

View File

@ -202,7 +202,7 @@ export const valueTypesMap = new Map<ValueType, ValueTypeData>(
ValueType.JSON,
{
name: 'value.json',
icon: 'mdi:json'
icon: 'mdi:code-json'
}
]
]