UNPKG

@kre-form/ionic

Version:

1,666 lines (1,638 loc) 108 kB
import * as moment_ from 'moment'; import { __awaiter } from 'tslib'; import { CommonModule } from '@angular/common'; import { ReactiveFormsModule, FormsModule } from '@angular/forms'; import { FieldType, FieldWrapper, FormGlobalService, FieldArrayType, KreFormAttributes, KreFormModule } from '@kre-form/core'; import { cloneDeep, isNumber, round, isEmpty } from 'lodash'; import { Component, Input, Injectable, Directive, ContentChild, Renderer2, ElementRef, NgModule } from '@angular/core'; import { ModalController, ToastController, PopoverController, Platform, IonText, IonicModule } from '@ionic/angular'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonText extends FieldType { constructor() { super(); } /** * @return {?} */ ngOnInit() { //Called after the constructor, initializing input properties, and the first call to ngOnChanges. //Add 'implements OnInit' to the class. // console.log('this.text:', this.text); } } KreFormFieldIonText.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-text", template: ` <ng-container *ngIf="!!editor; else other"> <ion-input [maxlength]="to.maxLength || 200" [minlength]="to.minLength || 0" [formControl]="formControl" [ionKreFormAttributes]="field" ></ion-input> </ng-container> <ng-template #other> <div class="fieldtext">{{ text }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonText.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonTextArea extends FieldType { } KreFormFieldIonTextArea.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-textarea", template: ` <ng-container *ngIf="!!editor; else other"> <ion-textarea [formControl]="formControl" [ionKreFormAttributes]="field" [rows]="to.rows ? to.rows : 4" [maxlength]="to.maxLength || 500" [minlength]="to.minLength || 0" > </ion-textarea> </ng-container> <ng-template #other> <div class="fieldtext">{{ text }}</div> </ng-template> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonNumber extends FieldType { /** * @return {?} */ get value() { if (this.model && this.model[this.key] !== undefined && this.model[this.key] !== null && this.model[this.key] !== "") { return this.model[this.key]; } return null; } /** * @param {?} value * @return {?} */ set value(value) { this._value = value; } /** * @param {?} value * @return {?} */ changeValue(value) { this.model[this.key] = value; } /** * @param {?} e * @return {?} */ inputBlur(e) { if (e.target && e.target.value && this.model) { /** @type {?} */ let value = e.target.value; this.model[this.key] = value; this.formControl.patchValue(value); this.formControl.markAsTouched(); } else { if (e.target.value == null || e.target.value == "") { if (this.model[this.key] != undefined && this.model[this.key] != null) { this.model[this.key] = null; } } this.formControl.patchValue(null); this.formControl.markAsTouched(); } } /** * @return {?} */ get number() { /** @type {?} */ let result = this.text; if (this.to != undefined && this.to != null && this.to["precision"] != undefined && this.to["precision"] != null) { if (!!result || result === 0) { result = round(result, this.to["precision"]); if (!isEmpty(this.model) && ((/** @type {?} */ (this.model))).hasOwnProperty(this.key)) { this.model[this.key] = result; } } } return result; } } KreFormFieldIonNumber.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-number", template: ` <ng-container *ngIf="!!editor; else other"> <ion-input type="input" ionKreFormFloat [decimalNumber]="to.precision" [ionKreFormAttributes]="field" [max]="to.max || 999999" [min]="to.min || -999999" [(ngModel)]="value" (ngModelChange)="changeValue($event)" (ionBlur)="inputBlur($event)" ></ion-input> </ng-container> <ng-template #other> <div class="fieldtext">{{ number }}</div> </ng-template> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonRadio extends FieldType { } KreFormFieldIonRadio.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-radio", template: ` <ng-container> <ion-radio-group [formControl]="formControl" [ionKreFormAttributes]="field" > <ion-item> <ion-label [position]="to.labelPosition" class=""> <span *ngIf="to.required" class="required-icon">*</span >{{ to.label }} </ion-label ><ion-radio slot="end" [disabled]="!editor" [value]="to.value" mode="md" ></ion-radio ></ion-item> </ion-radio-group> </ng-container> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonSelectComponent { /** * @param {?} modalController */ constructor(modalController) { this.modalController = modalController; this.isAllChecked = false; // 缓存-当前选中 this.selectedNum = 0; // 可选项 this.selectType = "multiple"; //single } //single /** * @return {?} */ get options() { return this._options; } /** * @param {?} value * @return {?} */ set options(value) { this._options = cloneDeep(value); this._options_old = value; } //全选 /** * @param {?} e * @return {?} */ checkAll(e) { if (this.isAllChecked == true) { this.options.forEach((/** * @param {?} e * @return {?} */ (e) => { e.checked = true; })); } else { // 全选后取消某一项不清空选中效果判断 if (this.selectedNum === this.options.length) { this.options.forEach((/** * @param {?} e * @return {?} */ (e) => { e.checked = false; })); } } this.setSelectNum(); } //筛选选中 /** * @return {?} */ setSelectNum() { this.selectedNum = this.options.filter((/** * @param {?} item * @return {?} */ (item) => item.checked)).length; this.isAllChecked = this.options.length > 0 && this.selectedNum === this.options.length; } /** * @param {?} value * @return {?} */ singleCheck(value) { this.options.map((/** * @param {?} element * @return {?} */ (element) => { element.checked = element.value === value; return element; })); } // 0 取消 / 1 确定 /** * @param {?} type * @return {?} */ dismissModel(type) { /** @type {?} */ let selectOptions = []; if (type) { selectOptions = this.options .filter((/** * @param {?} item * @return {?} */ (item) => { return item.checked; })) .map((/** * @param {?} item * @return {?} */ (item) => { return { label: item.label, value: item.value }; })); this.modalController.dismiss(selectOptions); } else { this.modalController.dismiss(); } } /** * @return {?} */ ngOnInit() { } /** * @return {?} */ ngAfterViewInit() { } } KreFormFieldIonSelectComponent.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-select", template: ` <div class="multi"> <div class="multi_head"> <ng-container *ngIf="selectType == 'multiple'; else other"> <ion-item> <ion-checkbox [(ngModel)]="isAllChecked" (ionChange)="checkAll($event)" ></ion-checkbox> <ion-label> 全选 <span>({{ selectedNum }}/{{ options.length }})</span></ion-label > </ion-item> <div> <ion-button size="small" fill="clear" (click)="dismissModel(false)" >取消</ion-button > <ion-button size="small" fill="clear" (click)="dismissModel(true)" >确定</ion-button > </div> </ng-container> <ng-template #other> <ion-button size="small" fill="clear" (click)="dismissModel(false)" >取消</ion-button > <ion-button size="small" fill="clear" (click)="dismissModel(true)" >确定</ion-button > </ng-template> </div> <div class="multi_scroll"> <ion-item class="multi_scroll_item hairlines-bottom" *ngFor="let row of options" (click)="selectType == 'single' ? singleCheck(row.value) : ''" > <ion-checkbox [(ngModel)]="row.checked" (ionChange)="selectType == 'multiple' ? setSelectNum() : ''" ></ion-checkbox> <ion-label>{{ row.label }}</ion-label> </ion-item> </div> </div> ` }] } ]; /** @nocollapse */ KreFormFieldIonSelectComponent.ctorParameters = () => [ { type: ModalController } ]; KreFormFieldIonSelectComponent.propDecorators = { selectType: [{ type: Input }], options: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormIonDialogService { /** * @param {?} modalController */ constructor(modalController) { this.modalController = modalController; } /** * @param {?} modalOptions * @param {?} params * @param {?} callback * @return {?} */ CreateModelDialog(modalOptions, params, callback) { return __awaiter(this, void 0, void 0, function* () { /** @type {?} */ const modal = yield this.modalController.create({ component: modalOptions.content, cssClass: modalOptions.class, componentProps: Object.assign({}, params), mode: "ios", }); yield modal.present(); const { data } = yield modal.onDidDismiss(); callback(data, modal); }); } } KreFormIonDialogService.decorators = [ { type: Injectable } ]; /** @nocollapse */ KreFormIonDialogService.ctorParameters = () => [ { type: ModalController } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonRadioGroup extends FieldType { /** * @param {?} dialogService */ constructor(dialogService) { super(); this.dialogService = dialogService; } /** * @return {?} */ openPicker() { /** @type {?} */ let options = []; this.to.options.forEach((/** * @param {?} item * @return {?} */ (item) => { options.push({ value: item.value, label: item.label, checked: this.isOptionChecked(item.value), }); })); /** @type {?} */ let params = { options: options, selectType: "single", }; this.dialogService.CreateModelDialog({ content: KreFormFieldIonSelectComponent, class: "part-page", }, params, (/** * @param {?} instance * @return {?} */ (instance) => { if (instance) { this.formControl.patchValue(instance); this.formControl.markAsTouched(); } })); } } KreFormFieldIonRadioGroup.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-radiogroup", template: ` <ng-container *ngIf="!!editor; else other"> <ion-item detail="true" (click)="openPicker()"> <div>{{ textLookUp }}</div> </ion-item> </ng-container> <ng-template #other> <div class="fieldtext">{{ textLookUp }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonRadioGroup.ctorParameters = () => [ { type: KreFormIonDialogService } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonCheckbox extends FieldType { } KreFormFieldIonCheckbox.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-checkbox", template: ` <ion-item> <ion-label [position]="to.labelPosition"> <span *ngIf="to.required" class="required-icon">*</span>{{ to.label }} </ion-label> <ion-checkbox slot="end" mode="ios" [formControl]="formControl" [ionKreFormAttributes]="field" [disabled]="!editor" ></ion-checkbox> </ion-item> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonCheckboxGroup extends FieldType { /** * @param {?} dialogService */ constructor(dialogService) { super(); this.dialogService = dialogService; } /** * @return {?} */ openPicker() { /** @type {?} */ let options = []; this.to.options.forEach((/** * @param {?} item * @return {?} */ (item) => { options.push({ value: item.value, label: item.label, checked: this.isOptionChecked(item.value), }); })); /** @type {?} */ let params = { options: options, selectType: "multiple", }; this.dialogService.CreateModelDialog({ content: KreFormFieldIonSelectComponent, class: "part-page", }, params, (/** * @param {?} instance * @return {?} */ (instance) => { if (instance) { this.formControl.patchValue(instance); this.formControl.markAsTouched(); } })); } } KreFormFieldIonCheckboxGroup.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-checkboxgroup", template: ` <ng-container *ngIf="!!editor; else other"> <ion-item detail="true" (click)="openPicker()"> <div>{{ textLookUp }}</div> </ion-item> </ng-container> <ng-template #other> <div class="fieldtext">{{ textLookUp }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonCheckboxGroup.ctorParameters = () => [ { type: KreFormIonDialogService } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonImage extends FieldType { } KreFormFieldIonImage.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-image", template: ` <ion-thumbnail> <img [src]="formControl.value" [ionKreFormAttributes]="field" /> </ion-thumbnail> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const moment = moment_; class KreFormFieldIonDatetime extends FieldType { /** * @return {?} */ get maxDate() { /** @type {?} */ let time = this.to.maxDate ? moment(this.to.maxDate).format("YYYY-MM-DDTHH:mm") : "2050-12-31T23:59"; time = time.split("T")[1] ? time : time + "T23:59"; return time; // return this.to.maxDate; } /** * @return {?} */ get minDate() { /** @type {?} */ let time = this.to.minDate ? moment(this.to.minDate).format("YYYY-MM-DDTHH:mm") : moment() .subtract(100, "years") .startOf("year") .format("YYYY-MM-DDTHH:mm"); time = time.split("T")[1] ? time : time + "T00:00"; return time; // return this.to.minDate; } /** * @return {?} */ get format() { /** @type {?} */ let result = "YYYY/MM/DD HH:mm"; if (this.to.type !== undefined && this.to.type !== null) { switch (this.to.type.toLowerCase()) { case "datetime": break; case "date": result = "YYYY/MM/DD"; break; case "year": result = "YYYY"; break; case "month": result = "YYYY/MM"; break; case "time": result = "HH:mm"; break; default: break; } } return result; } /** * @return {?} */ get getText() { /** @type {?} */ let result = ""; if (this.to.type === undefined || this.to.type === null || this.to.type === "") { this.to.type = "datetime"; } if (this.model != undefined && this.model != null && this.field != undefined && this.field != null && this.field.key != undefined && this.field.key != null && this.model[this.field.key] != undefined && this.model[this.field.key] != null && this.model[this.field.key] != "") { if (moment(this.model[this.field.key]).isValid()) { switch (this.to.type) { case "datetime": result = moment(this.model[this.field.key]).format("YYYY/MM/DD HH:mm"); break; case "date": result = moment(this.model[this.field.key]).format("YYYY/MM/DD"); break; case "year": result = moment(this.model[this.field.key]).format("YYYY"); break; case "month": result = moment(this.model[this.field.key]).format("YYYY/MM"); break; case "time": result = moment(this.model[this.field.key]).format("HH:mm"); break; } } } return result; } } KreFormFieldIonDatetime.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-datetime", template: ` <ng-container *ngIf="!!editor; else other"> <ion-item detail="true"> <ion-datetime [displayFormat]="format" [pickerFormat]="format" [formControl]="formControl" [ionKreFormAttributes]="field" doneText="确认" cancelText="取消" mode="ios" [min]="minDate" [max]="maxDate" ></ion-datetime> </ion-item> </ng-container> <ng-template #other> <div class="fieldtext">{{ getText }}</div> </ng-template> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormIonToastService { /** * @param {?} toastCtrl */ constructor(toastCtrl) { this.toastCtrl = toastCtrl; } /** * 弹出信息 * * \@param: {string} message 信息提示 / {string} [position] 位置 / {number} [duration] 持续事件 * @param {?} msg * @param {?=} position * @param {?=} duration * @return {?} */ presentToast(msg, position, duration) { return __awaiter(this, void 0, void 0, function* () { position = position || "bottom"; duration = duration || 1500; /** @type {?} */ const toast = yield this.toastCtrl.create({ color: "dark", message: msg, position, duration, animated: true, }); toast.present(); }); } } KreFormIonToastService.decorators = [ { type: Injectable } ]; /** @nocollapse */ KreFormIonToastService.ctorParameters = () => [ { type: ToastController } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonTextI18Component { /** * @param {?} modalController * @param {?} toastService */ constructor(modalController, toastService) { this.modalController = modalController; this.toastService = toastService; this.editor = true; this.required = false; } /** * @return {?} */ get languageList() { return this._languageList; } /** * @param {?} value * @return {?} */ set languageList(value) { this._languageList = cloneDeep(value); this._languageList_old = value; } // 0 取消 / 1 确定 /** * @param {?} type * @return {?} */ dismissModel(type) { /** @type {?} */ let result; if (type) { result = this.languageList; if (this.required == true) { /** @type {?} */ let languageEmpty = result.filter((/** * @param {?} item * @return {?} */ (item) => { if (item.value == null || item.value == "") { return item; } })); if (languageEmpty != null && languageEmpty.length > 0) { this.toastService.presentToast("多语言字段不能为空!"); return; } } this.modalController.dismiss(result); } else { this.modalController.dismiss(); } } /** * @return {?} */ ngOnInit() { } /** * @return {?} */ ngAfterViewInit() { } } KreFormFieldIonTextI18Component.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-i18", template: ` <ion-header class="contactHeader"> <ion-toolbar> <ion-title> 多语言设置</ion-title> </ion-toolbar> </ion-header> <ion-content> <ng-container *ngIf="editor == true; else other"> <div *ngFor="let item of languageList"> <ion-label> <span *ngIf="required == true" class="required-icon">*</span> {{ item.label }}</ion-label > <ion-item> <ion-input [(ngModel)]="item.value"></ion-input> </ion-item> </div> </ng-container> <ng-template #other> <div class="fieldtext"> <div *ngFor="let item of languageList"> <ion-label>{{ item.label }}</ion-label> <ion-item> {{ item.value }} </ion-item> </div> </div> </ng-template> <div class="selection-buttons"> <div class="buttons-between"> <ion-button size="small" (click)="dismissModel(false)" >取消</ion-button > <ion-button [disabled]="!editor" size="small" (click)="dismissModel(true)" >确定</ion-button > </div> </div> </ion-content> ` }] } ]; /** @nocollapse */ KreFormFieldIonTextI18Component.ctorParameters = () => [ { type: ModalController }, { type: KreFormIonToastService } ]; KreFormFieldIonTextI18Component.propDecorators = { editor: [{ type: Input }], required: [{ type: Input }], languageList: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonTextI18n extends FieldType { /** * @param {?} dialogService */ constructor(dialogService) { super(); this.dialogService = dialogService; this.languageList = [ { language: "chinese", label: "中", value: "" }, { language: "english", label: "英", value: "" }, ]; } /** * @return {?} */ get textlanguage() { /** @type {?} */ let result = ""; if (this.model && this.model[this.key] && Array.isArray(this.model[this.key])) { this.model[this.key].forEach((/** * @param {?} element * @return {?} */ (element) => { if (element.language == "chinese") { result = element.value; } })); } return result; } /** * @return {?} */ openPicker() { /** @type {?} */ let languages = []; this.languageList.forEach((/** * @param {?} item * @return {?} */ (item) => { languages.push({ language: item.language, label: item.label, value: this.getLanguageValue(item.language), }); })); /** @type {?} */ let params = { languageList: languages, required: this.to.required != undefined ? this.to.required : false, editor: this.editor, }; this.dialogService.CreateModelDialog({ content: KreFormFieldIonTextI18Component, class: "full-page", }, params, (/** * @param {?} instance * @param {?} modal * @return {?} */ (instance, modal) => { if (instance) { this.formControl.patchValue(instance); this.formControl.markAsTouched(); } })); } } KreFormFieldIonTextI18n.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-texti18n", template: ` <ng-container> <ion-item detail="true" (click)="openPicker()"> <div>{{ textlanguage }}</div> </ion-item> </ng-container> ` }] } ]; /** @nocollapse */ KreFormFieldIonTextI18n.ctorParameters = () => [ { type: KreFormIonDialogService } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonSelect extends FieldType { /** * @param {?} dialogService */ constructor(dialogService) { super(); this.dialogService = dialogService; } /** * @return {?} */ get newTextLookUp() { /** @type {?} */ let result = []; if (this.model && this.model != null && this.model.hasOwnProperty(this.key)) { if (this.model[this.key] !== undefined && this.model[this.key] != null && this.model[this.key].length > 0) { if (this.to.options && ((/** @type {?} */ (this.to.options))).length > 0) { this.model[this.key].forEach((/** * @param {?} ele * @return {?} */ (ele) => { if (((/** @type {?} */ (this.to.options))).some((/** * @param {?} el * @return {?} */ (el) => el.value === ele.value))) { result.push(ele.label); } })); } // result = this.model[this.key].map((item: any) => { // return item.label; // }); } } return result.join("、"); } /** * @return {?} */ openPicker() { /** @type {?} */ let options = []; /** @type {?} */ let selectType = "single"; if (this.to.selectType && this.to.selectType == "multiple") { selectType = "multiple"; } this.to.options.forEach((/** * @param {?} item * @return {?} */ (item) => { options.push({ value: item.value, label: item.label, checked: this.isOptionChecked(item.value), }); })); /** @type {?} */ let params = { options: options, selectType: selectType, }; this.dialogService.CreateModelDialog({ content: KreFormFieldIonSelectComponent, class: "part-page", }, params, (/** * @param {?} instance * @param {?} modal * @return {?} */ (instance, modal) => { if (instance) { this.formControl.patchValue(instance); this.formControl.markAsTouched(); } })); } } KreFormFieldIonSelect.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-select", template: ` <ng-container *ngIf="!!editor; else other"> <ion-item detail="true" (click)="openPicker()"> <div>{{ newTextLookUp }}</div> </ion-item> </ng-container> <ng-template #other> <div class="fieldtext">{{ textLookUp }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonSelect.ctorParameters = () => [ { type: KreFormIonDialogService } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonLine extends FieldType { } KreFormFieldIonLine.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-line", template: ` <div><hr /></div>` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // <ion-icon name="eye-off-outline"></ion-icon> class KreFormFieldIonPassword extends FieldType { constructor() { super(); this.showPwd = false; } } KreFormFieldIonPassword.decorators = [ { type: Component, args: [{ selector: 'kreform-field-ion-password', template: ` <ng-container *ngIf="!!editor; else other"> <ion-input [type]="showPwd ? 'text' : 'password'" [formControl]="formControl" [ionKreFormAttributes]="field" > </ion-input> <ion-icon [name]="showPwd ? 'eye-outline' : 'eye-off-outline'" (click)="showPwd = !showPwd" ></ion-icon> </ng-container> <ng-template #other> <div class="fieldtext">{{ text }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonPassword.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // 添加管道/指令/service todo class KreFormFieldIonHtml extends FieldType { } KreFormFieldIonHtml.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-html", template: ` <div [ngStyle]="{ color: fontProperty.color, 'font-size': fontProperty.fontSize + 'px', 'font-style': fontProperty.fontStyle ? 'italic' : 'normal', 'font-weight': fontProperty.fontWeight ? 'bold' : 'normal' }" [innerHtml]="to.description | safeHtml"></div>` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonTable extends FieldType { } KreFormFieldIonTable.decorators = [ { type: Component, args: [{ selector: 'kreform-field-ion-table', template: ` <ng-container> <ion-item>table 暂不支持</ion-item> <!-- 不太确定展示哪些字段 <div *ngFor="let item of to.options"> <ion-label>{{ item.label }}</ion-label> <ion-item> <div>{{ item.value }}</div></ion-item > </div> --> </ng-container> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonEditor extends FieldType { } KreFormFieldIonEditor.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-editor", template: ` <ng-container> <ion-item>Editor 暂不支持</ion-item> </ng-container> ` }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonSwitch extends FieldType { constructor() { super(); } /** * @return {?} */ switchValue() { if (!!this.model[this.field.key]) { return "是"; } else { return "否"; } } } KreFormFieldIonSwitch.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-switch", template: ` <ng-container *ngIf="!!editor; else other"> <ion-toggle [formControl]="formControl" [ionKreFormAttributes]="field" ></ion-toggle> </ng-container> <ng-template #other> <div class="fieldtext">{{text }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldIonSwitch.ctorParameters = () => []; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldIonTagsComponent { /** * @param {?} modalController */ constructor(modalController) { this.modalController = modalController; } /** * @return {?} */ ngOnInit() { } /** * @return {?} */ ngAfterViewInit() { } } KreFormFieldIonTagsComponent.decorators = [ { type: Component, args: [{ selector: "kreform-field-ion-tags", template: ` <div [innerHtml]="content | safeHtml"></div> ` }] } ]; /** @nocollapse */ KreFormFieldIonTagsComponent.ctorParameters = () => [ { type: ModalController } ]; KreFormFieldIonTagsComponent.propDecorators = { content: [{ type: Input }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormWrapperFormField extends FieldWrapper { /** * @param {?} popoverController * @param {?} globalService */ constructor(popoverController, globalService) { super(); this.popoverController = popoverController; this.globalService = globalService; } /** * @param {?} tags * @return {?} */ onBadge(tags) { return __awaiter(this, void 0, void 0, function* () { /** @type {?} */ let result = ""; switch (tags.mark) { case "add": result = "新增"; break; case "modify": result = "修改"; break; case "remove": result = "删除"; break; default: break; } /** @type {?} */ const popover = yield this.popoverController.create({ component: KreFormFieldIonTagsComponent, cssClass: "field-popover", componentProps: { content: this.tags.content || `数据已被${result}`, }, translucent: true, mode: "ios", }); yield popover.present(); }); } /** * @return {?} */ buttonClick() { this.globalService.notifyDataChanged("FieldWrapperClick", { rdm: Math.random(), config: this.field, }); } } KreFormWrapperFormField.decorators = [ { type: Component, args: [{ selector: "kreform-wrapper-ion-form-field", template: ` <ng-container *ngIf="field.type != 'html'"> <div class="item-box"> <ng-container *ngIf=" field.type != 'line' && field.type != 'htmlcontent' && field.type != 'image' && field.type != 'label' && field.type != 'upload' && field.type != 'radio' && field.type != 'checkbox' " > <ion-label [position]="to.labelPosition" [ngStyle]="{ color: fontProperty.color, 'font-size': fontProperty.fontSize + 'px', 'font-style': fontProperty.fontStyle ? 'italic' : 'normal', 'font-weight': fontProperty.fontWeight ? 'bold' : 'normal' }" > <span *ngIf="to.required" class="required-icon">*</span >{{ to.label }} </ion-label> </ng-container> <div class="field-content-box"> <ng-template #fieldComponent></ng-template> <div class="field-unit" *ngIf="to.unit && to.unit != null && to.unit != ''" > <span [innerHtml]="to.unit | safeHtml"></span> </div> <div class="field-button" *ngIf="to.button && to.button != null && to.button?.show == true" > <span [innerHtml]="to.button.label | safeHtml" (click)="buttonClick()" ></span> </div> </div> </div> <div class="item-error" *ngIf="showError"> <kreform-validation-message [field]="field"> </kreform-validation-message> </div> <ng-container *ngIf="tags.mark"> <ion-badge class="field-tags" (click)="onBadge(tags)"> {{ tags.mark | tags }} </ion-badge> </ng-container> </ng-container> ` }] } ]; /** @nocollapse */ KreFormWrapperFormField.ctorParameters = () => [ { type: PopoverController }, { type: FormGlobalService } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldGroup extends FieldType { } KreFormFieldGroup.decorators = [ { type: Component, args: [{ selector: "group", template: ` <div [class]="'fieldGroup ' + field.className"> <kreform-field *ngFor="let f of field.fieldGroup" [field]="f" ></kreform-field> <ng-content></ng-content> </div> `, host: { "[class]": 'field.className || ""' } }] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class KreFormFieldRepeat extends FieldArrayType { /** * @param {?} globalService */ constructor(globalService) { super(); this.globalService = globalService; this.length = 0; } /** * @return {?} */ ngOnInit() { if (this.formControl) { this.formControl.valueChanges.subscribe((/** * @param {?} res * @return {?} */ (res) => { if (res.length !== this.length) { this.length = res.length; if ((/** @type {?} */ (this.to)).enableInterface) { this.globalService.notifyDataChanged("repeatLengthChange", { rdm: Math.random(), config: this.field, }); } } })); } this.length = (/** @type {?} */ ((/** @type {?} */ (this.field)).fieldGroup)).length; if (!!((/** @type {?} */ (this.field)))["repeatRole"]) { Object.keys(((/** @type {?} */ (this.field)))["repeatRole"]).forEach((/** * @param {?} key * @return {?} */ (key) => { /** @type {?} */ let index = Number(key.substr(key.lastIndexOf("$") + 1)); if (!!this.field.fieldGroup) { this.field.fieldGroup.forEach((/** * @param {?} ele * @param {?} ind * @return {?} */ (ele, ind) => { if (index === ind) { ele.fieldGroup.forEach((/** * @param {?} elem * @return {?} */ (elem) => { if (!!((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]) { if (elem.templateOptions === undefined || elem.templateOptions === null) { elem.templateOptions = {}; } if (elem.editProperty === undefined || elem.editProperty === null) { elem.editProperty = {}; } elem.templateOptions = Object.assign(elem.templateOptions, ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key] .templateOptions); if (((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["editor"] === false || ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["editor"] === true) { elem.editor = ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["editor"]; } if (((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["show"] === false || ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["show"] === true) { elem.show = ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key]["show"]; } elem.editProperty = Object.assign(elem.editProperty, ((/** @type {?} */ (this.field)))["repeatRole"][key][elem.key] .editProperty); } })); } })); } })); } if (!!this.field.fieldGroup) { this.field.fieldGroup.forEach((/** * @param {?} ele * @param {?} index * @return {?} */ (ele, index) => { ele.fieldGroup.forEach((/** * @param {?} elem * @return {?} */ (elem) => { elem.templateOptions["index"] = index; })); })); } } /** * @param {?} f * @return {?} */ isRemoved(f) { /** @type {?} */ let result = true; if (this.editor === false) { result = false; } if ((/** @type {?} */ ((/** @type {?} */ ((/** @type {?} */ (f)).fieldGroup)).filter((/** * @param {?} el * @return {?} */ (el) => el.type !== "line" && el.type !== "htmlcontent")))).every((/** * @param {?} el * @return {?} */ (el) => !!(/** @type {?} */ (el)).editProperty && !!(/** @type {?} */ ((/** @type {?} */ (el)).editProperty)).delete))) { result = false; } return result; } /** * @return {?} */ addIndex() { ((/** @type {?} */ (this.field.fieldGroup))).forEach((/** * @param {?} el * @param {?} index * @return {?} */ (el, index) => { el.fieldGroup.forEach((/** * @param {?} ele * @return {?} */ (ele) => { ele.templateOptions.index = index; if (this.field && this.field.templateOptions && (!!this.field.templateOptions.index || this.field.templateOptions.index === 0)) { ele.templateOptions.pIndex = this.field.templateOptions.index; } })); })); } /** * @param {?} i * @param {?} isRemove * @return {?} */ removed(i, isRemove) { this.remove(i); if (!!this.operationProperty && !!this.operationProperty.deleteEvent) { this.globalService.notifyDataChanged("FieldWrapperClick", { rdm: Math.random(), config: this.field, type: "repeat", }); } this.globalService.notifyDataChanged("repeatDelete", { rdm: Math.random(), index: i, config: this.field, }); this.addIndex(); } } KreFormFieldRepeat.decorators = [ { type: Component, args: [{ selector: "kreform-repeat", template: ` <ng-container *ngIf=" field.fieldGroup !== undefined && field.fieldGroup !== null && field.fieldGroup.length > 0; else cardEmpty " > <div *ngFor="let field of field.fieldGroup; let i = index" class="row"> <kreform-field class="col" [field]="field"></kreform-field> <div class="repeatDel" (click)="removed(i, isRemoved(field))" *ngIf="isRemoved(field)" > <span class="del">删除</span> </div> </div> </ng-container> <ng-template #cardEmpty> <div class="repeat-card-empty"> <div class="ant-empty-image"> <img alt="empty" class="ng-star-inserted" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVQAAADaCAYAAAD5X7qpAAAAAXNSR0IArs4c6QAAKNlJREFUeAHtnQmYFNW5999T3dM9O8M+bMMMqwjKIhDluoDgEtAorvkeb2LU3Bgxy71JvDEmn0Hj1ST3MWZRY5Kr3pvr8gUViEZcEUFkE2VVQYQZkB2GmWHWXqrqe0/1dFM9dM9MT3d1VXf/D09R1adOnfOe3+n599mLCA4EQAAEQAAEsoWAvlBXuspLd8J0FQfugwAIWEtAWBs9Yu+KwIanm8o9iqdCC5JvcknednGDUM3P6It016bGwATFTV6/5t83/Zbiw+b7uAYBEHAOgS5rRs4xNfsskbVORVeGU1Ar04X2pQ9P+i7XV+jucE7lteEntHNVVevtUT0VqKmG6eAMAs4jgBqqzWXy0ZP+iSym5yokevG5N+nikBbw/lGapeT57iChDxK6UqeRXs/n9VNu82yx2WQkDwIgEIdApDYU5z68LSYgm/mbT/qG