@kre-form/ant
Version:
664 lines • 83.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, ElementRef, } from "@angular/core";
import { NzMessageService } from "ng-zorro-antd/message";
import { FormGroup, FormBuilder, } from "@angular/forms";
import { KreFormCommonService, } from "@kre-form/core";
import { BehaviorSubject } from "rxjs";
import { KreSetFormFieldService } from "../../tools/setField.service";
import * as _ from "lodash";
import * as moment_ from "moment";
/** @type {?} */
const moment = moment_;
export class KreFormDSField {
/**
* @param {?} message
* @param {?} fb
* @param {?} kreFormCommonService
* @param {?} kreSetFieldService
* @param {?} el
*/
constructor(message, fb, kreFormCommonService, kreSetFieldService, el) {
this.message = message;
this.fb = fb;
this.kreFormCommonService = kreFormCommonService;
this.kreSetFieldService = kreSetFieldService;
this.el = el;
this.formField = {
key: "",
type: "",
templateOptions: {
type: null,
label: null,
description: null,
parameterId: null,
maxLength: null,
minLength: null,
max: null,
min: null,
precision: null,
placeholder: null,
required: false,
tips: null,
pattern: null,
rows: 4,
hideSelect: null,
selectType: "single",
labelI18n: [],
tipsI18n: [],
},
fontProperty: {
fontSize: 14,
color: "#323232",
fontWeight: false,
fontStyle: false,
},
defaultValue: null,
editProperty: {
config: true,
},
show: true,
hide: false,
};
this.fontSizeList = [];
this.defaultList = [];
this.defaultValue = null;
this.hideSelect = [];
this._langConfig = [];
this.limit = {
maxLength: null,
minLength: null,
max: null,
min: null,
maxDate: null,
minDate: null,
};
this.modalType = "default";
this.form = new FormGroup({});
this.model = {};
// options = {};
this.formFildConfig = [];
// multiple = 'default'; // multiple
this.globalSubmit = new BehaviorSubject(String);
this.tmp = 0;
}
/**
* @param {?} value
* @return {?}
*/
set langConfig(value) {
this._langConfig = value;
}
/**
* @return {?}
*/
get langConfig() {
return this._langConfig;
}
/**
* @param {?} value
* @return {?}
*/
set field(value) {
_.assignIn(this.formField, _.cloneDeep(value));
if (this.formField.type === "textarea" && this.formField.templateOptions) {
if (this.formField.templateOptions.rows === undefined ||
this.formField.templateOptions.rows === null) {
this.formField.templateOptions.rows = 4;
}
}
if (this.formField.type === "datetime" &&
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).type === "time" &&
!!this.formField.defaultValue) {
this.formField.defaultValue = new Date(this.formField.defaultValue);
}
if (this.formField.type === "select") {
if (this.formField.templateOptions.selectType === "multiple") {
this.defaultValue = [];
if (!_.isEmpty(this.formField.defaultValue)) {
((/** @type {?} */ (this.formField.defaultValue))).forEach((/**
* @param {?} el
* @return {?}
*/
(el) => {
this.defaultValue.push(el.value);
}));
}
}
else {
this.defaultValue = null;
if (!_.isEmpty(this.formField.defaultValue)) {
this.defaultValue = this.formField.defaultValue[0].value;
}
}
}
if (this.formField.type === "select" &&
!_.isEmpty((/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).hideSelect)) {
((/** @type {?} */ ((/** @type {?} */ (this.formField.templateOptions)).hideSelect))).forEach((/**
* @param {?} el
* @return {?}
*/
(el) => {
this.hideSelect.push(el.value);
}));
}
this.formField.hide = !this.formField["show"];
this.newPrimitive(this.formField);
// if (!this.formField!.templateOptions!.labelI18n) {
// this.formField!.templateOptions!.labelI18n = this.langConfig;
// }
// if (!this.formField!.templateOptions!.tipsI18n) {
// this.formField!.templateOptions!.tipsI18n = this.langConfig;
// }
// if (
// !!this.formField!.templateOptions!.label &&
// !(this.formField!.templateOptions!.labelI18n as any[]).filter(
// (el) => el.language === "zh-cn"
// )[0].value
// ) {
// (this.formField!.templateOptions!.labelI18n as any[]).filter(
// (el) => el.language === "zh-cn"
// )[0].value = this.formField!.templateOptions!.label;
// }
this.limit.min = -999999;
if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).min ||
(/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).min === 0) {
this.limit.min = (/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).min;
}
this.limit.max = (/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).max || 999999;
this.limit.minLength = (/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).minLength || 0;
this.limit.maxLength = (/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).maxLength || 500;
this.limit.maxDate =
(/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).maxDate || "2050-12-31";
this.limit.minDate =
(/** @type {?} */ ((/** @type {?} */ (this.formField)).primitiveProperty)).minDate || "1900-01-01";
}
/**
* @param {?} value
* @return {?}
*/
newPrimitive(value) {
if (value.primitiveProperty === null ||
value.primitiveProperty === undefined) {
value.primitiveProperty = {};
}
/** @type {?} */
const list = [
"maxLength",
"minLength",
"max",
"min",
"precision",
"maxDate",
"minDate",
];
list.forEach((/**
* @param {?} key
* @return {?}
*/
(key) => {
if (value.primitiveProperty[key] === null ||
value.primitiveProperty[key] === undefined) {
value.primitiveProperty[key] = value.templateOptions[key];
}
}));
// if (
// value.primitiveProperty.maxLength === null ||
// value.primitiveProperty.maxLength === undefined
// ) {
// value.primitiveProperty.maxLength = value.templateOptions.maxLength;
// }
// if (
// value.primitiveProperty.minLength === null ||
// value.primitiveProperty.minLength === undefined
// ) {
// value.primitiveProperty.minLength = value.templateOptions.minLength;
// }
// if (
// value.primitiveProperty.max === null ||
// value.primitiveProperty.max === undefined
// ) {
// value.primitiveProperty.max = value.templateOptions.max;
// }
// if (
// value.primitiveProperty.min === null ||
// value.primitiveProperty.min === undefined
// ) {
// value.primitiveProperty.min = value.templateOptions.min;
// }
// if (
// value.primitiveProperty.precision === null ||
// value.primitiveProperty.precision === undefined
// ) {
// value.primitiveProperty.precision = value.templateOptions.precision;
// }
// if (
// value.primitiveProperty.maxDate === null ||
// value.primitiveProperty.maxDate === undefined
// ) {
// value.primitiveProperty.maxDate = value.templateOptions.maxDate;
// }
// if (
// value.primitiveProperty.minDate === null ||
// value.primitiveProperty.minDate === undefined
// ) {
// value.primitiveProperty.minDate = value.templateOptions.minDate;
// }
}
/**
* @param {?} value
* @return {?}
*/
set options(value) {
value.forEach((/**
* @param {?} el
* @return {?}
*/
(el) => {
if (el.parameterId === (/** @type {?} */ (this.formField.templateOptions)).parameterId) {
this.defaultList.push({
label: el.label,
value: el.value,
});
}
}));
}
/**
* @return {?}
*/
ngOnInit() {
for (let i = 12; i <= 20; i++) {
this.fontSizeList.push(i);
}
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) { }
/**
* @param {?} e
* @param {?} type
* @return {?}
*/
defaultValueChange(e, type) {
this.formField.defaultValue = [];
if (type === "multiple") {
if (!_.isEmpty((/** @type {?} */ (e)))) {
(/** @type {?} */ (e)).forEach((/**
* @param {?} el
* @return {?}
*/
(el) => {
this.formField.defaultValue.push({
label: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === el))[0]["label"],
value: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === el))[0]["value"],
});
}));
}
}
else {
this.formField.defaultValue.push({
label: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === e))[0]["label"],
value: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === e))[0]["value"],
});
}
}
/**
* @param {?} e
* @return {?}
*/
hideSelectChange(e) {
if (!_.isEmpty(e)) {
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).hideSelect = [];
e.forEach((/**
* @param {?} el
* @return {?}
*/
(el) => {
(/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).hideSelect)).push({
label: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === el))[0]["label"],
value: this.defaultList.filter((/**
* @param {?} ele
* @return {?}
*/
(ele) => ele.value === el))[0]["value"],
});
}));
}
else {
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).hideSelect = null;
}
}
/**
* @return {?}
*/
checkSave() {
/** @type {?} */
let type = this.formField.type;
if (type == "text" || type == "textarea") {
if (_.get(this.formField, "templateOptions.minLength") >=
_.get(this.formField, "templateOptions.maxLength")) {
this.message.error("最大长度必须大于最小长度");
return false;
}
}
if (type == "number") {
if (_.get(this.formField, "templateOptions.min") >=
_.get(this.formField, "templateOptions.max")) {
this.message.error("最大值必须大于最小值");
return false;
}
}
return true;
}
/**
* @param {?} caller
* @param {?} callback
* @return {?}
*/
initBehaviorSubject(caller, callback) {
this.globalSubmit = new BehaviorSubject(String);
if (callback != undefined && callback != null && callback != "") {
callback.call(caller);
}
}
/**
* @return {?}
*/
frmSubmit() {
this.el.nativeElement.querySelector("#btn-basic-save").click();
if (this.form) {
for (const i in this.form.controls) {
this.form.controls[i].markAsDirty();
this.form.controls[i].updateValueAndValidity();
}
if (this.form.valid) {
this.tmp = this.tmp + 1;
if (this.tmp == 1) {
this.globalSubmit.next("OK");
this.getFieldInfo(this.formField);
}
}
}
}
/**
* @return {?}
*/
ngOnDestroy() {
this.globalSubmit.unsubscribe();
}
/**
* @param {?} field
* @return {?}
*/
getFieldInfo(field) {
if (this.model["editor"] != undefined) {
field.editor = this.model["editor"];
}
if (!this.model.hasOwnProperty("hide")) {
field.hide = !this.model["show"];
}
console.log(field.hide);
if (this.model["hide"] != undefined && this.model["hide"] != null) {
field.hide = this.model["hide"];
field.show != this.model["hide"];
}
if (_.get(this.model, "templateOptions.description") != undefined) {
field["templateOptions"]["description"] = _.get(this.model, "templateOptions.description");
}
if (_.get(this.model, "templateOptions.maxLength") != undefined) {
field.templateOptions.maxLength = _.get(this.model, "templateOptions.maxLength");
}
if (_.get(this.model, "templateOptions.minLength") != undefined) {
field.templateOptions.minLength = _.get(this.model, "templateOptions.minLength");
}
if (_.get(this.model, "templateOptions.minLength") != undefined) {
field.templateOptions.max = _.get(this.model, "templateOptions.max");
}
if (_.get(this.model, "templateOptions.min")) {
field.templateOptions.min = _.get(this.model, "templateOptions.min");
}
if (_.get(this.model, "templateOptions.precision") != undefined) {
field.templateOptions.precision = _.get(this.model, "templateOptions.precision");
}
if (_.get(this.model, "templateOptions.placeholder") != undefined) {
field.templateOptions.placeholder = _.get(this.model, "templateOptions.placeholder");
}
if (_.get(this.model, "templateOptions.required") != undefined) {
field.templateOptions.required = _.get(this.model, "templateOptions.required");
}
if (_.get(this.model, "templateOptions.tips") != undefined) {
field.templateOptions.tips = _.get(this.model, "templateOptions.tips");
}
if (_.get(this.model, "templateOptions.pattern") != undefined) {
field.templateOptions.pattern = _.get(this.model, "templateOptions.pattern");
}
if (_.get(this.model, "templateOptions.rows") != undefined) {
field.templateOptions.rows = _.get(this.model, "templateOptions.rows");
}
}
/**
* @param {?} e
* @return {?}
*/
fieldHideChange(e) {
this.formField.show = !e;
}
/**
* @param {?} e
* @return {?}
*/
nameChange(e) {
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).labelI18n = e;
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).label = ((/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).labelI18n))).filter((/**
* @param {?} el
* @return {?}
*/
(el) => el.language === "zh-cn"))[0].value;
}
/**
* @param {?} e
* @return {?}
*/
tipsChange(e) {
(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions)).tipsI18n = e;
}
/**
* @param {?} time
* @param {?} type
* @return {?}
*/
dateTimeChange(time, type) {
if (time) {
switch (type) {
case "date":
time = moment(time).format("YYYY/MM/DD 00:00:00");
break;
case "year":
time = moment(time).format("YYYY/01/01 00:00:00");
break;
case "month":
time = moment(time).format("YYYY/MM/01 00:00:00");
break;
default:
break;
}
}
else {
time = "";
}
this.formField.defaultValue = time;
}
/**
* @return {?}
*/
nzDefaultValueMin() {
if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"]) {
return Math.max((/** @type {?} */ (this.limit))["min"], (/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"]);
}
else {
return (/** @type {?} */ (this.limit))["min"];
}
}
/**
* @return {?}
*/
nzDefaultValueMax() {
if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"]) {
return Math.min((/** @type {?} */ (this.limit))["max"], (/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"]);
}
else {
return (/** @type {?} */ (this.limit))["max"];
}
}
/**
* @return {?}
*/
nzMaxMin() {
/** @type {?} */
let min = (/** @type {?} */ (this.limit))["min"];
if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"] &&
!!this.formField.defaultValue) {
min = Math.max((/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"], this.formField.defaultValue);
}
else if (!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"] &&
!!this.formField.defaultValue) {
min = this.formField.defaultValue;
}
else if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"] &&
!this.formField.defaultValue) {
min = (/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["min"];
}
else {
min = (/** @type {?} */ (this.limit))["min"];
}
return min;
}
/**
* @return {?}
*/
nzMaxMax() {
/** @type {?} */
let max = (/** @type {?} */ (this.limit))["max"];
return max;
}
/**
* @return {?}
*/
nzMinMin() {
return (/** @type {?} */ (this.limit))["min"];
}
/**
* @return {?}
*/
nzMinMax() {
/** @type {?} */
let max = (/** @type {?} */ (this.limit))["max"];
if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"] &&
!!this.formField.defaultValue) {
max = Math.min((/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"], this.formField.defaultValue);
}
else if (!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"] &&
!!this.formField.defaultValue) {
max = this.formField.defaultValue;
}
else if (!!(/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"] &&
!this.formField.defaultValue) {
max = (/** @type {?} */ ((/** @type {?} */ (this.formField)).templateOptions))["max"];
}
else {
max = (/** @type {?} */ (this.limit))["max"];
}
return max;
}
}
KreFormDSField.decorators = [
{ type: Component, args: [{
selector: "kreform-ds_field",
template: "<div class=\"builder-content\">\n <div class=\"content\">\n <div class=\"label\">\u5B57\u6BB5\u540D\u79F0</div>\n <div class=\"control\">\n {{ formField.key }}\n </div>\n </div>\n <div\n class=\"content\"\n *ngIf=\"\n formField.type != 'repeat' &&\n formField.type != 'tabular' &&\n formField.type != 'line' &&\n formField.type != 'htmlcontent' &&\n formField.type != 'anchor'\n \"\n >\n <div class=\"label\">\u663E\u793A\u540D\u79F0</div>\n <div class=\"control\">\n <!-- {{ formField!.templateOptions!.label }} -->\n\n <input\n nz-input\n placeholder=\"\u663E\u793A\u540D\u79F0\"\n [(ngModel)]=\"formField!.templateOptions!.label\"\n />\n <!-- <demo-text-en\n [lang]=\"lang\"\n [labelI18n]=\"formField!.templateOptions!.labelI18n\"\n (inputChange)=\"nameChange($event)\"\n ></demo-text-en> -->\n </div>\n </div>\n <ng-container\n *ngIf=\"\n formField.type != 'repeat' &&\n formField.type != 'tabular' &&\n formField.type != 'line' &&\n formField.type != 'avatar' &&\n formField.type != 'button'\n \"\n >\n <div class=\"content\">\n <div class=\"label\">\u5B57\u4F53\u5927\u5C0F</div>\n <div class=\"control\">\n <nz-select\n [(ngModel)]=\"formField!.fontProperty!.fontSize\"\n nzPlaceHolder=\"\u8BF7\u9009\u62E9\u5B57\u4F53\u5927\u5C0F\"\n >\n <nz-option\n *ngFor=\"let i of fontSizeList\"\n [nzValue]=\"i\"\n [nzLabel]=\"i\"\n ></nz-option>\n </nz-select>\n </div>\n </div>\n\n <div class=\"content\">\n <div class=\"label\">\u5B57\u4F53\u989C\u8272</div>\n <div class=\"control\">\n <nz-input-group [nzSuffix]=\"topbarTemplate\">\n <input\n type=\"text\"\n [(colorPicker)]=\"formField!.fontProperty!.color\"\n [(ngModel)]=\"formField!.fontProperty!.color\"\n [ngModelOptions]=\"{ standalone: true }\"\n nz-input\n placeholder=\"\"\n />\n </nz-input-group>\n <ng-template #topbarTemplate>\n <div\n class=\"color-rect\"\n [ngStyle]=\"{ 'background-color': formField!.fontProperty!.color }\"\n ></div>\n </ng-template>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u52A0\u7C97</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField!.fontProperty!.fontWeight\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u503E\u659C</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField!.fontProperty!.fontStyle\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n </ng-container>\n\n <div class=\"content\" *ngIf=\"formField.type === 'textarea'\">\n <div class=\"label\">\u663E\u793A\u884C\u6570</div>\n <div class=\"control\">\n <nz-input-number\n [nzMin]=\"1\"\n [nzStep]=\"1\"\n [nzPrecision]=\"0\"\n [(ngModel)]=\"formField!.templateOptions!['rows']\"\n >\n </nz-input-number>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"\n formField.type === 'select' ||\n formField.type === 'text' ||\n formField.type === 'numbers' ||\n formField.type === 'textarea' ||\n formField.type === 'datetime'\n \"\n >\n <div class=\"content\" [class.textarea]=\"formField.type === 'textarea'\">\n <div class=\"label\">\u9ED8\u8BA4\u503C</div>\n <div class=\"control\" *ngIf=\"formField.type === 'text'\">\n <input\n nz-input\n placeholder=\"\u9ED8\u8BA4\u503C\"\n [(ngModel)]=\"formField.defaultValue\"\n />\n </div>\n <div class=\"control\" *ngIf=\"formField.type === 'textarea'\">\n <textarea\n [rows]=\"formField!.templateOptions!['rows']\"\n nz-input\n wrap=\"hard\"\n placeholder=\"\u9ED8\u8BA4\u503C\"\n [(ngModel)]=\"formField.defaultValue\"\n ></textarea>\n </div>\n\n <div class=\"control\" *ngIf=\"formField.type === 'numbers'\">\n <nz-input-number\n [(ngModel)]=\"formField.defaultValue\"\n [nzMin]=\"nzDefaultValueMin()\"\n [nzMax]=\"nzDefaultValueMax()\"\n [nzPrecision]=\"formField!.templateOptions!['precision']\"\n >\n </nz-input-number>\n </div>\n\n <div class=\"control\" *ngIf=\"formField.type === 'select'\">\n <nz-select\n [(ngModel)]=\"defaultValue\"\n (ngModelChange)=\"\n defaultValueChange($event, formField!.templateOptions!.selectType)\n \"\n nzAllowClear\n [nzMode]=\"\n formField!.templateOptions!.selectType === 'multiple'\n ? 'multiple'\n : 'default'\n \"\n [nzMaxTagCount]=\"3\"\n nzPlaceHolder=\"\u8BF7\u9009\u62E9\u9ED8\u8BA4\u503C\"\n >\n <nz-option\n *ngFor=\"let i of defaultList\"\n [nzValue]=\"i.value\"\n [nzLabel]=\"i.label\"\n ></nz-option>\n </nz-select>\n </div>\n\n <div class=\"control\" *ngIf=\"formField.type === 'datetime'\">\n <ng-container [ngSwitch]=\"formField!.templateOptions!.type\">\n <ng-container *ngSwitchCase=\"'datetime'\">\n <nz-date-picker\n nzShowTime\n [nzShowTime]=\"{ nzFormat: 'HH:mm' }\"\n nzFormat=\"yyyy/MM/dd HH:mm\"\n [(ngModel)]=\"formField.defaultValue\"\n (ngModelChange)=\"dateTimeChange($event, 'datetime')\"\n ></nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'date'\">\n <nz-date-picker\n nzFormat=\"yyyy/MM/dd\"\n [(ngModel)]=\"formField.defaultValue\"\n (ngModelChange)=\"dateTimeChange($event, 'date')\"\n ></nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'year'\">\n <nz-year-picker\n nzFormat=\"yyyy\"\n [(ngModel)]=\"formField.defaultValue\"\n (ngModelChange)=\"dateTimeChange($event, 'year')\"\n ></nz-year-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'month'\">\n <nz-month-picker\n nzFormat=\"yyyy/MM\"\n [(ngModel)]=\"formField.defaultValue\"\n (ngModelChange)=\"dateTimeChange($event, 'month')\"\n ></nz-month-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"'time'\">\n <nz-time-picker\n nzFormat=\"HH:mm\"\n [(ngModel)]=\"formField.defaultValue\"\n nzClearText=\"\"\n ></nz-time-picker>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <nz-date-picker\n nzShowTime\n [nzShowTime]=\"{ nzFormat: 'HH:mm' }\"\n nzFormat=\"yyyy/MM/dd HH:mm\"\n [(ngModel)]=\"formField.defaultValue\"\n ></nz-date-picker>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"content\" *ngIf=\"formField.type === 'select'\">\n <div class=\"label\">\u9690\u85CF\u9009\u9879\u503C</div>\n <div class=\"control\">\n <nz-select\n [(ngModel)]=\"hideSelect\"\n (ngModelChange)=\"hideSelectChange($event)\"\n nzAllowClear\n nzMode=\"multiple\"\n [nzMaxTagCount]=\"3\"\n nzPlaceHolder=\"\u8BF7\u9009\u62E9\u9690\u85CF\u9009\u9879\u503C\"\n >\n <nz-option\n *ngFor=\"let i of defaultList\"\n [nzValue]=\"i.value\"\n [nzLabel]=\"i.label\"\n ></nz-option>\n </nz-select>\n </div>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"formField.type === 'text' || formField.type === 'textarea'\"\n >\n <div class=\"content\">\n <div class=\"label\">\u6700\u5927\u957F\u5EA6</div>\n <div class=\"control\">\n <nz-input-number\n [nzMin]=\"limit!['minLength']\"\n [nzMax]=\"limit!['maxLength']\"\n [nzStep]=\"1\"\n [nzPrecision]=\"0\"\n [(ngModel)]=\"formField!.templateOptions!['maxLength']\"\n >\n </nz-input-number>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"label\">\u6700\u5C0F\u957F\u5EA6</div>\n <div class=\"control\">\n <nz-input-number\n [nzMin]=\"0\"\n [nzStep]=\"1\"\n [nzPrecision]=\"0\"\n [nzMin]=\"limit!['minLength']\"\n [nzMax]=\"limit!['maxLength']\"\n [(ngModel)]=\"formField!.templateOptions!['minLength']\"\n ></nz-input-number>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"formField.type === 'numbers'\">\n <div class=\"content\">\n <div class=\"label\">\u6700\u5927\u503C</div>\n <div class=\"control\">\n <nz-input-number\n [nzStep]=\"1\"\n [nzPrecision]=\"formField!.templateOptions!['precision']\"\n [nzMin]=\"nzMaxMin()\"\n [nzMax]=\"nzMaxMax()\"\n [(ngModel)]=\"formField!.templateOptions!['max']\"\n >\n </nz-input-number>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"label\">\u6700\u5C0F\u503C</div>\n <div class=\"control\">\n <nz-input-number\n [nzStep]=\"1\"\n [nzPrecision]=\"formField!.templateOptions!['precision']\"\n [nzMin]=\"nzMinMin()\"\n [nzMax]=\"nzMinMax()\"\n [(ngModel)]=\"formField!.templateOptions!['min']\"\n >\n </nz-input-number>\n </div>\n </div>\n <div\n class=\"content\"\n *ngIf=\"formField!.primitiveProperty!['precision'] != 0\"\n >\n <div class=\"label\">\u7CBE\u5EA6</div>\n <div class=\"control\">\n <nz-input-number\n [nzMin]=\"0\"\n [nzStep]=\"1\"\n [nzPrecision]=\"0\"\n [nzMax]=\"formField!.primitiveProperty!['precision']\"\n [(ngModel)]=\"formField!.templateOptions!['precision']\"\n >\n </nz-input-number>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"formField!.editProperty!.hide !== false\">\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u9690\u85CF</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField.hide\"\n (ngModelChange)=\"fieldHideChange($event)\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"formField.type === 'htmlcontent'\">\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u4F5C\u4E3A\u5BFC\u822A</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField!.templateOptions!.isNav\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n formField.type != 'repeat' &&\n formField.type != 'tabular' &&\n formField.type != 'line' &&\n formField.type != 'htmlcontent' &&\n formField.type != 'button' &&\n formField.type != 'anchor'\n \"\n >\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u5FC5\u586B</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField!.templateOptions!['required']\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n <div class=\"content\">\n <div class=\"label\">\u662F\u5426\u53EF\u7F16\u8F91</div>\n <div class=\"control\">\n <nz-switch\n [(ngModel)]=\"formField!.editor\"\n nzCheckedChildren=\"\u662F\"\n nzUnCheckedChildren=\"\u5426\"\n >\n </nz-switch>\n </div>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n formField.type != 'repeat' &&\n formField.type != 'tabular' &&\n formField.type != 'line' &&\n formField.type != 'htmlcontent' &&\n formField.type != 'button' &&\n formField.type != 'anchor'\n \"\n >\n <div class=\"content\">\n <div class=\"label\">\u8BF4\u660Etips</div>\n <div class=\"control\">\n <input\n nz-input\n placeholder=\"\u8BF4\u660Etips\"\n [(ngModel)]=\"formField!.templateOptions!.tips\"\n />\n <!-- <demo-text-en\n [langConfig]=\"langConfig\"\n [labelI18n]=\"formField!.templateOptions!.tipsI18n\"\n (inputChange)=\"tipsChange($event)\"\n ></demo-text-en> -->\n </div>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"formField.type == 'repeat' || formField.type == 'tabular'\"\n >\n <div class=\"content\">\n <div class=\"label\">\u6700\u591A\u6761\u6570</div>\n <div class=\"control\">\n <nz-input-number\n [nzMin]=\"0\"\n [nzStep]=\"1\"\n [nzPrecision]=\"0\"\n [(ngModel)]=\"formField!.templateOptions!['maxLength']\"\n >\n </nz-input-number>\n </div>\n </div>\n <div\n class=\"content\"\n *ngIf=\"formField.type == 'repeat' || formField.type == 'tabular'\"\n >\n <div class=\"label\">\u663E\u793A\u65B9\u5F0F</div>\n <div class=\"control\">\n <nz-select\n nzPlaceHolder=\"\u8BF7\u9009\u62E9\u663E\u793A\u65B9\u5F0F\"\n [(ngModel)]=\"formField!.templateOptions!['type']\"\n >\n <nz-option [nzLabel]=\"'\u5757\u72B6'\" [nzValue]=\"'card'\"></nz-option>\n <nz-option [nzLabel]=\"'\u5217\u8868'\" [nzValue]=\"'table'\"></nz-option>\n </nz-select>\n </div>\n </div>\n </ng-container>\n <!-- <div class=\"content\">\n <div class=\"label\">\n \u5360\u4F4D\u7B26\n </div>\n <div class=\"control\">\n <input nz-input [(ngModel)]=\"formField.templateOptions['placeholder']\" readonly disabled />\n </div>\n </div>\n <div class=\"content textarea\">\n <div class=\"label\">\n \u63D0\u793A\u4FE1\u606F\n </div>\n <div class=\"control\">\n <textarea nz-input rows=\"3\" [(ngModel)]=\"formField.templateOptions['tips']\" readonly disabled> </textarea>\n </div>\n </div> -->\n <ng-container\n *ngIf=\"formField.type == 'htmlcontent' || formField.type == 'anchor'\"\n >\n <div class=\"content textarea\">\n <div class=\"label\">\u6587\u672C\u63CF\u8FF0</div>\n <div class=\"control\">\n <textarea\n nz-input\n rows=\"3\"\n wrap=\"hard\"\n [(ngModel)]=\"formField!.templateOptions!['description']\"\n ></textarea>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"\n formField.type != 'repeat' &&\n formField.type != 'tabular' &&\n formField.type != 'line' &&\n formField.type != 'htmlcontent' &&\n formField.type != 'anchor' &&\n formField.type != 'upload'\n \"\n >\n <div class=\"content textarea\">\n <div class=\"label\">\u6B63\u5219\u8868\u8FBE\u5F0F</div>\n <div class=\"control\">\n <textarea\n nz-input\n rows=\"3\"\n [(ngModel)]=\"formField!.templateOptions!['pattern']\"\n >\n </textarea>\n </div>\n </div>\n </ng-container>\n</div>\n<div class=\"vxbutton\" style=\"display: none\">\n <button id=\"btn-basic-save\" form=\"kreform\">SAVE</button>\n</div>\n",
providers: [KreSetFormFieldService],
styles: [":host ::ng-deep .builder-content{width:100%;padding:18px 0 0 12px;display:inline-block}:host ::ng-deep .builder-content .content{width:50%;float:left;margin:0 0 15px;min-height:45px;display:flex}:host ::ng-deep .builder-content .content .label{width:120px;text-align:right;padding:5px 10px 0 0}:host ::ng-deep .builder-content .content .control{flex:1;padding:0 15px 0 0}:host ::ng-deep .builder-content .content .control .ant-input-number,:host ::ng-deep .builder-content .content .control nz-select{width:100%!important}:host ::ng-deep .builder-content .content .color-rect{width:20px;height:20px}:host ::ng-deep .builder-content .textarea{width:100%}"]
}] }
];
/** @nocollapse */
KreFormDSField.ctorParameters = () => [
{ type: NzMessageService },
{ type: FormBuilder },
{ type: KreFormCommonService },
{ type: KreSetFormFieldService },
{ type: ElementRef }
];
KreFormDSField.propDecorators = {
langConfig: [{ type: Input }],
field: [{ type: Input }],
modalType: [{ type: Input }],
options: [{ type: Input }]
};
if (false) {
/** @type {?} */
KreFormDSField.prototype.formField;
/** @type {?} */
KreFormDSField.prototype.fontSizeList;
/** @type {?} */
KreFormDSField.prototype.defaultList;
/** @type {?} */
KreFormDSField.prototype.defaultValue;
/** @type {?} */
KreFormDSField.prototype.hideSelect;
/** @type {?} */
KreFormDSField.prototype._langConfig;
/** @type {?} */
KreFormDSField.prototype.limit;
/** @type {?} */
KreFormDSField.prototype.modalType;
/** @type {?} */
KreFormDSField.prototype.form;
/** @type {?} */
KreFormDSField.prototype.model;
/** @type {?} */
KreFormDSField.prototype.formFildConfig;
/** @type {?} */
KreFormDSField.prototype.globalSubmit;
/** @type {?} */
KreFormDSField.prototype.tmp;
/** @type {?} */
KreFormDSField.prototype.message;
/**
* @type {?}
* @private
*/
KreFormDSField.prototype.fb;
/** @type {?} */
KreFormDSField.prototype.kreFormCommonService;
/** @type {?} */
KreFormDSField.prototype.kreSetFieldService;
/**
* @type {?}
* @private
*/
KreFormDSField.prototype.el;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi9kZXNpZ24vZmllbGQvaW5kZXguY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFLTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEdBSVosTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBT0wsb0JBQW9CLEdBR3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7TUFDNUIsTUFBTSxHQUFHLE9BQU87QUFPdEIsTUFBTSxPQUFPLGNBQWM7Ozs7Ozs7O0lBd096QixZQUNTLE9BQXlCLEVBQ3hCLEVBQWUsRUFDaEIsb0JBQTBDLEVBQzFDLGtCQUEwQyxFQUN6QyxFQUFjO1FBSmYsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBd0I7UUFDekMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTVPeEIsY0FBUyxHQUFRO1lBQ2YsR0FBRyxFQUFFLEVBQUU7WUFDUCxJQUFJLEVBQUUsRUFBRTtZQUNSLGVBQWUsRUFBRTtnQkFDZixJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVB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