%_ if (field.type === "SchemaString") { %><%_
if (field.editor) { %>
']" name="Edit<%-Fn%>"<%
if (field.required) {%>
[required]="true"<%
}
if (field.validators) {%>
<%-mn%><%-Sn%>Directive<%-Fn%>=""<%
}
if (typeof field.minlength === 'number') {%>
[minlength]="<%-field.minlength%>"<%
}
if (typeof field.maxlength === 'number') {%>
[maxlength]="<%-field.maxlength%>"<%
}%>
#Edit<%-Fn%>="ngModel">
<% if (field.required || field.validators
|| typeof field.maxlength === 'number'
|| typeof field.minlength === 'number') {%>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%><%_
if (typeof field.maxlength === 'number') {%>
.pristine && Edit<%-Fn%>.errors['maxlength']"
class="alert alert-danger">
<%-field.maxlengthMsg%>.
<%}%><%_
if (typeof field.minlength === 'number') {%>
.untouched || !Edit<%-Fn%>.errors['minlength'])"
class="alert alert-danger">
<%-field.minlengthMsg%>.
<%}%>
<%
}%><%_
} else if (field.picture) {%>
<%_
if (field.required) {%>
.valid || !Edit<%-Fn%>.errors)">
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
} else if (field.file) { %>
<%_
if (field.required) {%>
.valid || Edit<%-Fn%>.errors)">
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
} else { %><%_
if (field.enumValues) { %>
<%_
} else if (field.mraType === 'httpurl') { %>
<%_
} else { %>
<%_
} %><%
if (field.required
|| field.validators
|| typeof field.maxlength === 'number'
|| typeof field.minlength === 'number'
|| typeof field.match
|| field.mraType === 'email') {%>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%><%_
if (typeof field.maxlength === 'number') {%>
.pristine && Edit<%-Fn%>.errors['maxlength']"
class="alert alert-danger">
<%-field.maxlengthMsg%>.
<%}%><%_
if (typeof field.minlength === 'number') {%>
.untouched && Edit<%-Fn%>.errors['minlength']"
class="alert alert-danger">
<%-field.minlengthMsg%>.
<%}%><%_
if (field.match) {%>
.untouched && Edit<%-Fn%>.errors['pattern']"
class="alert alert-danger">
<%-field.matchMsg%>.
<%}%><%_
if (field.mraType === 'email') {%>
.untouched && Edit<%-Fn%>.errors['email']"
class="alert alert-danger">
<%-fD%> must be a valid email address.
<%}%>
<%}%><%_
if (!field.enumValues && field.hint) {%>
'].length > 0" class="new-area">
Type in new value or select from available ones:
']" let-i="index">
'] !== hintEle['_id']"
(click)="detail['<%-fn%>'] = hintEle['_id']">
{{hintEle['_id']}}
<%_
}%><%_
}%><%
} else if (field.type === "SchemaBoolean") { %>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%>
<%_
} else if (field.type === "SchemaNumber") { %><%
if (field.mraType === 'currency'){%>
$ <%}%>
libMddsMinNumber="<%-field.numberMin%>" min="<%-field.numberMin%>"<%}%><%
if (typeof field.numberMax === 'number') {%>
libMddsMaxNumber="<%-field.numberMax%>" max="<%-field.numberMax%>"<%}%><%
if (field.required) {%>
required<%}%><%
if (field.validators) {%>
<%-mn%><%-Sn%>Directive<%-Fn%>=""<%}%>
[(ngModel)]="detail['<%-fn%>']" name="Edit<%-Fn%>"
#Edit<%-Fn%>="ngModel"><%_
if (field.required
|| field.validators
|| typeof field.numberMax === 'number'
|| typeof field.numberMin === 'number') {%>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%><%_
if (typeof field.numberMax === 'number') {%>
.pristine && Edit<%-Fn%>.errors['libMddsMaxNumber']"
class="alert alert-danger">
<%-field.numberMaxMsg%>.
<%}%><%_
if (typeof field.numberMin === 'number') {%>
.untouched && Edit<%-Fn%>.errors['libMddsMinNumber']"
class="alert alert-danger">
<%-field.numberMinMsg%>.
<%}%>
<%}%><%_
} else if (field.type === "SchemaDate") { %>
<%
let colClassDate = 'col-11';
let colClassTime = '';
if (field.mraDate.includes('time')) {
colClassDate = 'col-12 col-md-8';
colClassTime = 'col-11 col-md-3';
}
%>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required'] && !(detail['<%-fn%>']?.date)"
class="alert alert-danger">
Date is required.
<%}%><%_
if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%>
.untouched || !Edit<%-Fn%>.errors['ngbDate'] || !Edit<%-Fn%>.errors['ngbDate']['minDate'])"
class="alert alert-danger">
Date must not be earlier than {{minDate | json}}.
.untouched || !Edit<%-Fn%>.errors['ngbDate'] || !Edit<%-Fn%>.errors['ngbDate']['invalid'])"
class="alert alert-danger">
<%-fD%> must be in {{dateFormat}} format.
<%
if (field.mraDate.includes('time')) {%>
required<%}%>
[(ngModel)]="detail['<%-fn%>']['t_value']" name="Edit<%-Fn%>Time"
#Edit<%-Fn%>Time="ngModel"
>
Time.valid || !Edit<%-Fn%>Time.errors)"><%_
if (field.required) {%>
Time.pristine && Edit<%-Fn%>Time.errors['required']"
class="alert alert-danger">
Time is required.
<%}%>
<%
}%>
']['date'] || detail['<%-fn%>']['time']" class="col-1 mt-1">
')">
<%_
} else if (field.type === "ObjectId") { %>
<%_
if (field.required
|| field.validators) {%>
.valid || !Edit<%-Fn%>.errors)"><%_
if (field.required) {%>
.pristine && Edit<%-Fn%>.errors['required'] && !(detail['<%-fn%>']?.date)"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
if (field.validators) {%>
.pristine && Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']"
class="alert alert-danger">
{{Edit<%-Fn%>.errors['<%-mn%><%-Sn%>Directive<%-Fn%>']}}
<%}%>
<%}%><%_
} else if (field.type === "Map") { %><%_
if (field.elementType === "SchemaString" || field.elementType === "SchemaNumber") { %>
<%_
} else { %>
Not supported yet.
<%_
} %><%_
if (field.required) {%>
.errors && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
} else if (field.type === "SchemaArray") { %><%_
if (field.elementType === "SchemaString" && field.elementMultiSelect) { %>
<%_
} else if (field.elementType === 'SchemaString' && field.picture) { %>
<%_
} else if (field.elementType === 'SchemaString' && field.file) { %>
<%_
} else if (field.elementType === 'SchemaString' && field.mraType === 'httpurl') { %>
<%_
} else if (field.elementType === 'SchemaString') { %>
<%_
} else if (field.elementType === 'ObjectId') { %>
<%_
} else { %>
Not supported yet.
<%_
} %><%
if (field.required) {%>
.valid || !Edit<%-Fn%>.errors)">
.pristine && Edit<%-Fn%>.errors['required']"
class="alert alert-danger">
<%-fD%> is required.
<%}%><%_
} else if (ft === 'AngularSelector') { let sel = field.selector;%>
']" name="Edit<%-Fn%>"
#Edit<%-Fn%>="ngModel">
<<%-sel.selector%><% for(let input of sel.inputs) {%>
[<%-input.key%>]="<%-input.value%>"<%}%><%for(let output of sel.outputs) {%>
(<%-output.key%>)="<%-output.value%>"<%}%>
>
<%-sel.selector%>><%
} else { %>
Not supported yet.
<%_
} %>