@kre-form/ant
Version:
217 lines (216 loc) • 16.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, } from "@angular/core";
import { FieldType } from "@kre-form/core";
export class KreFormFieldSelect extends FieldType {
constructor() {
super(...arguments);
this._defaultValue = "";
this._defaultValues = [];
this.selectType = "default";
}
/**
* @return {?}
*/
get getModelValue() {
if (this.to.selectType === "multiple") {
return this.defaultValues;
}
else {
return this.defaultValue;
}
}
/**
* @param {?} value
* @return {?}
*/
set getModelValue(value) { }
/**
* @return {?}
*/
get defaultValue() {
if (this.model &&
this.model[this.key] &&
Array.isArray(this.model[this.key]) &&
this.model[this.key].length > 0) {
this._defaultValue = this.model[this.key][0].value;
}
else {
return null;
}
return this._defaultValue;
}
/**
* @return {?}
*/
get defaultValues() {
if (this.model &&
this.model[this.key] &&
Array.isArray(this.model[this.key])) {
this._defaultValues.length = 0;
this.model[this.key].forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
this._defaultValues.push(item.value);
}));
}
else {
return null;
}
return this._defaultValues;
}
// get defaultValues() {
// if (!this._defaultValues) {
// this._defaultValues = [];
// } else {
// this._defaultValues.length = 0;
// }
// if (
// this.model &&
// this.model[this.key] &&
// Array.isArray(this.model[this.key]) &&
// !_.isEmpty(this.model[this.key])
// ) {
// if (!!this.model[this.key]) {
// this.model[this.key].forEach((item: any) => {
// this._defaultValues.push(item.value);
// });
// }
// } else {
// this._defaultValues = null;
// }
// return this._defaultValues;
// }
/**
* @return {?}
*/
getSelectText() {
/** @type {?} */
let result = "";
if (this.to && this.to.selectType) {
if (this.to.selectType === "multiple") {
result = this.textMultiple;
}
else {
result = this.textSingle;
}
}
else {
result = this.textSingle;
}
return result;
}
/**
* @param {?} e
* @return {?}
*/
selectedChange(e) {
/** @type {?} */
let values = [];
if (this.to.selectType && this.to.selectType == "multiple") {
if (e && Array.isArray(e)) {
e.forEach((/**
* @param {?} item
* @return {?}
*/
(item) => {
if (this.to.options && Array.isArray(this.to.options)) {
this.to.options.forEach((/**
* @param {?} options
* @return {?}
*/
(options) => {
if (options.value == item) {
values.push(options);
}
}));
}
}));
}
}
else {
if (this.to.options && Array.isArray(this.to.options)) {
this.to.options.forEach((/**
* @param {?} options
* @return {?}
*/
(options) => {
if (options.value == e) {
values = [options];
}
}));
}
}
this.formControl.patchValue(values);
this.formControl.markAsTouched();
}
/**
* @return {?}
*/
get clear() {
if (typeof this.to.clear === "undefined") {
return true;
}
return !!this.to.clear;
}
}
KreFormFieldSelect.decorators = [
{ type: Component, args: [{
selector: "krefield-select",
template: `
<ng-container *ngIf="formStatus !== 0; else other">
<div class="control-design">
<input nz-input disabled />
</div>
</ng-container>
<ng-template #other>
<ng-container *ngIf="editor === true">
<nz-select
[nzAllowClear]="!to.required && clear"
[nzMode]="to.selectType === 'multiple' ? 'multiple' : 'default'"
[kreFormAttributes]="field"
[class.is-invalid]="showError"
[nzPlaceHolder]="placeHolder"
[(ngModel)]="getModelValue"
nzShowSearch="true"
(ngModelChange)="selectedChange($event)"
>
<ng-container *ngFor="let item of to.options">
<nz-option
[nzLabel]="item.label"
[nzValue]="item.value"
></nz-option>
</ng-container>
</nz-select>
<!-- <div class="tips">
<i
class="icon-bangzhu"
[nzTooltipTitle]="tips"
nzTooltipPlacement="top"
nz-tooltip
*ngIf="tips != ''"
></i>
</div> -->
</ng-container>
<div class="fieldtext" *ngIf="editor === false">
{{ getSelectText() }}
</div>
</ng-template>
`
}] }
];
if (false) {
/** @type {?} */
KreFormFieldSelect.prototype._defaultValue;
/** @type {?} */
KreFormFieldSelect.prototype._defaultValues;
/** @type {?} */
KreFormFieldSelect.prototype.selectType;
/** @type {?} */
KreFormFieldSelect.prototype.listOfSelectedValue;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBK0MzQyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBUztJQTdDakQ7O1FBOENFLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFpSHpCLENBQUM7Ozs7SUE5R0MsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQzNCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7OztJQUVELElBQUksYUFBYSxDQUFDLEtBQVUsSUFBRyxDQUFDOzs7O0lBRWhDLElBQUksWUFBWTtRQUNkLElBQ0UsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMvQjtZQUNBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztT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Q1AsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQzs7O1lBaEtGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7YUFFRjs7OztJQUVDLDJDQUEyQjs7SUFDM0IsNENBQThCOztJQUM5Qix3Q0FBdUI7O0lBQ3ZCLGlEQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNQVRfSEFNTUVSX09QVElPTlMgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBrcmUtZm9ybS9jb3JlXCI7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrcmVmaWVsZC1zZWxlY3RcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybVN0YXR1cyAhPT0gMDsgZWxzZSBvdGhlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wtZGVzaWduXCI+XG4gICAgICAgIDxpbnB1dCBuei1pbnB1dCBkaXNhYmxlZCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI290aGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRvciA9PT0gdHJ1ZVwiPlxuICAgICAgICA8bnotc2VsZWN0XG4gICAgICAgICAgW256QWxsb3dDbGVhcl09XCIhdG8ucmVxdWlyZWQgJiYgY2xlYXJcIlxuICAgICAgICAgIFtuek1vZGVdPVwidG8uc2VsZWN0VHlwZSA9PT0gJ211bHRpcGxlJyA/ICdtdWx0aXBsZScgOiAnZGVmYXVsdCdcIlxuICAgICAgICAgIFtrcmVGb3JtQXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwic2hvd0Vycm9yXCJcbiAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09XCJwbGFjZUhvbGRlclwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJnZXRNb2RlbFZhbHVlXCJcbiAgICAgICAgICBuelNob3dTZWFyY2g9XCJ0cnVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdG8ub3B0aW9uc1wiPlxuICAgICAgICAgICAgPG56LW9wdGlvblxuICAgICAgICAgICAgICBbbnpMYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgW256VmFsdWVdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICA+PC9uei1vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbnotc2VsZWN0PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0aXBzXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1iYW5nemh1XCJcbiAgICAgICAgICAgIFtuelRvb2x0aXBUaXRsZV09XCJ0aXBzXCJcbiAgICAgICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICBuei10b29sdGlwXG4gICAgICAgICAgICAqbmdJZj1cInRpcHMgIT0gJydcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkdGV4dFwiICpuZ0lmPVwiZWRpdG9yID09PSBmYWxzZVwiPlxuICAgICAgICB7eyBnZXRTZWxlY3RUZXh0KCkgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIC8vY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEtyZUZvcm1GaWVsZFNlbGVjdCBleHRlbmRzIEZpZWxkVHlwZSB7XG4gIF9kZWZhdWx0VmFsdWU6IHN0cmluZyA9IFwiXCI7XG4gIF9kZWZhdWx0VmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzZWxlY3RUeXBlID0gXCJkZWZhdWx0XCI7XG4gIGxpc3RPZlNlbGVjdGVkVmFsdWU6IGFueTtcblxuICBnZXQgZ2V0TW9kZWxWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy50by5zZWxlY3RUeXBlID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBzZXQgZ2V0TW9kZWxWYWx1ZSh2YWx1ZTogYW55KSB7fVxuXG4gIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tb2RlbCAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gJiZcbiAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbFt0aGlzLmtleV0pICYmXG4gICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSB0aGlzLm1vZGVsW3RoaXMua2V5XVswXS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWU7XG4gIH1cbiAgZ2V0IGRlZmF1bHRWYWx1ZXMoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tb2RlbCAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gJiZcbiAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbFt0aGlzLmtleV0pXG4gICAgKSB7XG4gICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzLmxlbmd0aCA9IDA7XG4gICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcy5wdXNoKGl0ZW0udmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIC8vIGdldCBkZWZhdWx0VmFsdWVzKCkge1xuICAvLyAgIGlmICghdGhpcy5fZGVmYXVsdFZhbHVlcykge1xuICAvLyAgICAgdGhpcy5fZGVmYXVsdFZhbHVlcyA9IFtdO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLl9kZWZhdWx0VmFsdWVzLmxlbmd0aCA9IDA7XG4gIC8vICAgfVxuICAvLyAgIGlmIChcbiAgLy8gICAgIHRoaXMubW9kZWwgJiZcbiAgLy8gICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICYmXG4gIC8vICAgICBBcnJheS5pc0FycmF5KHRoaXMubW9kZWxbdGhpcy5rZXldKSAmJlxuICAvLyAgICAgIV8uaXNFbXB0eSh0aGlzLm1vZGVsW3RoaXMua2V5XSlcbiAgLy8gICApIHtcbiAgLy8gICAgIGlmICghIXRoaXMubW9kZWxbdGhpcy5rZXldKSB7XG4gIC8vICAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMucHVzaChpdGVtLnZhbHVlKTtcbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuX2RlZmF1bHRWYWx1ZXMgPSBudWxsO1xuICAvLyAgIH1cbiAgLy8gICByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlcztcbiAgLy8gfVxuXG4gIGdldFNlbGVjdFRleHQoKSB7XG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gXCJcIjtcbiAgICBpZiAodGhpcy50byAmJiB0aGlzLnRvLnNlbGVjdFR5cGUpIHtcbiAgICAgIGlmICh0aGlzLnRvLnNlbGVjdFR5cGUgPT09IFwibXVsdGlwbGVcIikge1xuICAgICAgICByZXN1bHQgPSB0aGlzLnRleHRNdWx0aXBsZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGV4dFNpbmdsZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy50ZXh0U2luZ2xlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2VsZWN0ZWRDaGFuZ2UoZTogYW55KSB7XG4gICAgbGV0IHZhbHVlczogYW55W10gPSBbXTtcbiAgICBpZiAodGhpcy50by5zZWxlY3RUeXBlICYmIHRoaXMudG8uc2VsZWN0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIGlmIChlICYmIEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgICAgZS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy50by5vcHRpb25zICYmIEFycmF5LmlzQXJyYXkodGhpcy50by5vcHRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy50by5vcHRpb25zLmZvckVhY2goKG9wdGlvbnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSA9PSBpdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLnB1c2gob3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnRvLm9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheSh0aGlzLnRvLm9wdGlvbnMpKSB7XG4gICAgICAgIHRoaXMudG8ub3B0aW9ucy5mb3JFYWNoKChvcHRpb25zOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9ucy52YWx1ZSA9PSBlKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSBbb3B0aW9uc107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlcyk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICBnZXQgY2xlYXIoKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnRvLmNsZWFyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISF0aGlzLnRvLmNsZWFyO1xuICB9XG59XG4iXX0=