diff --git a/ui/src/app/schema-form/registry.ts b/ui/src/app/schema-form/registry.ts index d197dcf2c..47761b3ac 100644 --- a/ui/src/app/schema-form/registry.ts +++ b/ui/src/app/schema-form/registry.ts @@ -15,6 +15,7 @@ import { DatalistComponent } from './widget/datalist/datalist.component'; import { CustomCheckboxComponent } from './widget/check/checkbox.component'; import { CustomTextAreaComponent } from './widget/textarea/textarea.component'; import { CustomArrayComponent } from './widget/array/array.component'; +import { CustomIntegerComponent } from './widget/number/number.component'; export class CustomWidgetRegistry extends WidgetRegistry { @@ -44,13 +45,13 @@ export class CustomWidgetRegistry extends WidgetRegistry { this.register('textarea', CustomTextAreaComponent); + this.register('integer', CustomIntegerComponent); + this.register('number', CustomIntegerComponent); + this.register('datalist', DatalistComponent); /* NGX-Form */ this.register('object', ObjectWidget); - - this.register('integer', IntegerWidget); - this.register('number', IntegerWidget); this.register('range', RangeWidget); this.register('file', FileWidget); diff --git a/ui/src/app/schema-form/schema-form.module.ts b/ui/src/app/schema-form/schema-form.module.ts index d51ae2269..15edd4b6d 100644 --- a/ui/src/app/schema-form/schema-form.module.ts +++ b/ui/src/app/schema-form/schema-form.module.ts @@ -14,6 +14,7 @@ import { DatalistComponent } from './widget/datalist/datalist.component'; import { CustomCheckboxComponent } from './widget/check/checkbox.component'; import { CustomTextAreaComponent } from './widget/textarea/textarea.component'; import { CustomArrayComponent } from './widget/array/array.component'; +import { CustomIntegerComponent } from './widget/number/number.component'; export const COMPONENTS = [ BooleanRadioComponent, @@ -23,7 +24,8 @@ export const COMPONENTS = [ DatalistComponent, CustomCheckboxComponent, CustomTextAreaComponent, - CustomArrayComponent + CustomArrayComponent, + CustomIntegerComponent ]; @NgModule({ diff --git a/ui/src/app/schema-form/service/schema.service.ts b/ui/src/app/schema-form/service/schema.service.ts index 20177e115..86989b6f1 100644 --- a/ui/src/app/schema-form/service/schema.service.ts +++ b/ui/src/app/schema-form/service/schema.service.ts @@ -12,4 +12,21 @@ export class SchemaService { get(path: string): Observable { return this.http.get(`${path}`); } + + isRequired(formProperty: any): boolean { + let required = false; + let requiredFields = formProperty.parent.schema.required || []; + let fieldPath = formProperty.path; + let controlName = fieldPath.substr(fieldPath.lastIndexOf('/') + 1); + required = requiredFields.indexOf(controlName) > -1; + + if (!required) { + const conditions = formProperty.parent.schema.anyOf || []; + conditions.forEach(el => { + requiredFields = el.required || []; + required = !required ? requiredFields.indexOf(controlName) > -1 : required; + }); + } + return required; + } } diff --git a/ui/src/app/schema-form/widget/datalist/datalist.component.html b/ui/src/app/schema-form/widget/datalist/datalist.component.html index 9df975a27..94242cc8a 100644 --- a/ui/src/app/schema-form/widget/datalist/datalist.component.html +++ b/ui/src/app/schema-form/widget/datalist/datalist.component.html @@ -1,6 +1,9 @@