Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { OperationKeys } from '@decaf-ts/db-decorators';
import {
date,
email,
eq,
max,
min,
minlength,
model,
Model,
ModelArg,
password,
required,
url,
} from '@decaf-ts/decorator-validation';
import { hideOn, uichild, uielement, uilayoutprop, uimodel } from '@decaf-ts/ui-decorators';
import { CategoryModel } from './CategoryModel';
import { UserModel } from './UserModel';
import { pk } from '@decaf-ts/core';
@uimodel('ngx-decaf-crud-form', {cols: 2, rows: 1})
// or just
// @uilayout('ngx-decaf-crud-form', 2, 1)
@model()
export class ForAngularModel extends Model {
@pk({type: Number})
@min(1)
@max(100)
@uielement('ngx-decaf-crud-field', {
label: 'demo.id.label',
placeholder: 'demo.id.placeholder',
// className: 'dcf-width-1-2@s dcf-width-1-1',
})
@uilayoutprop(1, 1)
id!: number;
@uilayoutprop(1, 1)
@required()
@minlength(5)
@uielement('ngx-decaf-crud-field', {
label: 'demo.name.label',
placeholder: 'demo.name.placeholder',
// className: 'dcf-width-1-2@s dcf-width-1-1',
})
name!: string;
@required()
@uielement('ngx-decaf-crud-field', {
label: 'demo.gender.label',
type: 'radio',
options: [
{ value: 'Male', text: 'male' },
{ value: 'Female', text: 'female' },
],
})
gender!: string;
@required()
@uielement('ngx-decaf-crud-field', {
label: 'demo.contact.label',
type: 'select',
options: [
{ value: 'morning', text: 'morning' },
{ value: 'afternoon', text: 'afternoon' },
{ value: 'evening', text: 'evening' },
{ value: 'all', text: 'all' },
],
})
contact!: string;
@uichild(CategoryModel.name, 'ngx-decaf-fieldset', {collapsable: false})
category!: CategoryModel;
@required()
@date('yyyy-MM-dd')
@uielement('ngx-decaf-crud-field', { label: 'demo.birthdate.label' })
birthdate!: Date;
@required()
@email()
@uielement('ngx-decaf-crud-field', {
label: 'demo.email.label',
placeholder: 'demo.email.placeholder',
})
email!: string;
@url()
@uielement('ngx-decaf-crud-field', { label: 'demo.website.label' })
website!: string;
@required()
@password()
@eq('user.secret')
@uielement('ngx-decaf-crud-field', { label: 'demo.password.label' })
password!: string;
@uichild(UserModel.name, 'ngx-decaf-fieldset')
user!: UserModel;
@required()
@uielement('ngx-decaf-crud-field', {
label: 'demo.agree.label',
type: 'checkbox',
})
@hideOn(OperationKeys.DELETE, OperationKeys.UPDATE, OperationKeys.READ)
agree!: string;
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
constructor(arg?: ModelArg<ForAngularModel>) {
super(arg);
}
}
|