/* * Squidex Headless CMS * * @license * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. */ import { FormControl, Validators } from '@angular/forms'; import { Form, hasNoValue$, hasValue$, TemplatedFormArray, ExtendedFormGroup } from '@app/framework'; import { CreateRoleDto, RoleDto, UpdateRoleDto } from './../services/roles.service'; export class EditRoleForm extends Form { public get controls() { return this.form.controls as FormControl[]; } constructor() { super(new TemplatedFormArray(PermissionTemplate.INSTANCE)); } public transformSubmit(value: any) { return { permissions: value, properties: {} }; } public transformLoad(value: Partial) { return value.permissions || []; } } class PermissionTemplate { public static readonly INSTANCE = new PermissionTemplate(); public createControl(_: any, initialValue: string) { return new FormControl(initialValue, Validators.required); } } type AddPermissionFormType = { permission: string }; export class AddPermissionForm extends Form { public get permission() { return this.form.controls['permission']; } public hasPermission = hasValue$(this.permission); constructor() { super(new ExtendedFormGroup({ permission: new FormControl('', Validators.required, ), })); } } export class AddRoleForm extends Form { public get name() { return this.form.controls['name']; } public hasNoName = hasNoValue$(this.name); constructor() { super(new ExtendedFormGroup({ name: new FormControl('', Validators.required, ), })); } }