@lxlib/form
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.
302 lines • 18.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: src/widget.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __extends } from "tslib";
import { ChangeDetectorRef, HostBinding, Inject, Injector } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { takeUntil } from 'rxjs/operators';
import { SFItemComponent } from './sf-item.component';
import { SFComponent } from './sf.component';
import { di } from './utils';
/**
* @abstract
* @template T, UIT
*/
var Widget = /** @class */ (function () {
function Widget(cd, injector, sfItemComp, sfComp) {
this.cd = cd;
this.injector = injector;
this.sfItemComp = sfItemComp;
this.sfComp = sfComp;
this.showError = false;
this.id = '';
this.firstVisual = false;
}
Object.defineProperty(Widget.prototype, "cls", {
get: /**
* @return {?}
*/
function () {
return this.ui.class || '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(Widget.prototype, "disabled", {
get: /**
* @return {?}
*/
function () {
if (this.schema.readOnly === true || (/** @type {?} */ (this.sfComp)).disabled) {
return true;
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Widget.prototype, "l", {
get: /**
* @return {?}
*/
function () {
return (/** @type {?} */ (this.formProperty.root.widget.sfComp)).locale;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Widget.prototype, "oh", {
get: /**
* @return {?}
*/
function () {
return (/** @type {?} */ (this.ui.optionalHelp));
},
enumerable: true,
configurable: true
});
Object.defineProperty(Widget.prototype, "dom", {
get: /**
* @return {?}
*/
function () {
return this.injector.get(DomSanitizer);
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
Widget.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
this.formProperty.errorsChanges.pipe(takeUntil((/** @type {?} */ (this.sfItemComp)).unsubscribe$)).subscribe((/**
* @param {?} errors
* @return {?}
*/
function (errors) {
if (errors == null)
return;
di(_this.ui, 'errorsChanges', _this.formProperty.path, errors);
// 不显示首次校验视觉
if (_this.firstVisual) {
_this.showError = errors.length > 0;
_this.error = _this.showError ? ((/** @type {?} */ (errors[0].message))) : '';
_this.cd.detectChanges();
}
_this.firstVisual = true;
}));
};
/**
* @param {?} value
* @return {?}
*/
Widget.prototype.setValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.formProperty.setValue(value, false);
di(this.ui, 'valueChanges', this.formProperty.path, this.formProperty);
};
Object.defineProperty(Widget.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this.formProperty.value;
},
enumerable: true,
configurable: true
});
/**
* @param {?=} onlySelf
* @return {?}
*/
Widget.prototype.detectChanges = /**
* @param {?=} onlySelf
* @return {?}
*/
function (onlySelf) {
if (onlySelf === void 0) { onlySelf = false; }
if (onlySelf) {
this.cd.markForCheck();
}
else {
this.formProperty.root.widget.cd.markForCheck();
}
};
/** @nocollapse */
Widget.ctorParameters = function () { return [
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
{ type: Injector, decorators: [{ type: Inject, args: [Injector,] }] },
{ type: SFItemComponent, decorators: [{ type: Inject, args: [SFItemComponent,] }] },
{ type: SFComponent, decorators: [{ type: Inject, args: [SFComponent,] }] }
]; };
Widget.propDecorators = {
cls: [{ type: HostBinding, args: ['class',] }]
};
return Widget;
}());
export { Widget };
if (false) {
/** @type {?} */
Widget.prototype.formProperty;
/** @type {?} */
Widget.prototype.error;
/** @type {?} */
Widget.prototype.showError;
/** @type {?} */
Widget.prototype.id;
/** @type {?} */
Widget.prototype.schema;
/** @type {?} */
Widget.prototype.ui;
/** @type {?} */
Widget.prototype.firstVisual;
/**
* @type {?}
* @protected
*/
Widget.prototype.cd;
/**
* @type {?}
* @protected
*/
Widget.prototype.injector;
/**
* @type {?}
* @protected
*/
Widget.prototype.sfItemComp;
/**
* @type {?}
* @protected
*/
Widget.prototype.sfComp;
/**
* @abstract
* @param {?} value
* @return {?}
*/
Widget.prototype.reset = function (value) { };
}
var ControlWidget = /** @class */ (function (_super) {
__extends(ControlWidget, _super);
function ControlWidget() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} _value
* @return {?}
*/
ControlWidget.prototype.reset = /**
* @param {?} _value
* @return {?}
*/
function (_value) { };
return ControlWidget;
}(Widget));
export { ControlWidget };
/**
* @template UIT
*/
var /**
* @template UIT
*/
ControlUIWidget = /** @class */ (function (_super) {
__extends(ControlUIWidget, _super);
function ControlUIWidget() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} _value
* @return {?}
*/
ControlUIWidget.prototype.reset = /**
* @param {?} _value
* @return {?}
*/
function (_value) { };
return ControlUIWidget;
}(Widget));
/**
* @template UIT
*/
export { ControlUIWidget };
var ArrayLayoutWidget = /** @class */ (function (_super) {
__extends(ArrayLayoutWidget, _super);
function ArrayLayoutWidget() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} _value
* @return {?}
*/
ArrayLayoutWidget.prototype.reset = /**
* @param {?} _value
* @return {?}
*/
function (_value) { };
/**
* @return {?}
*/
ArrayLayoutWidget.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
this.formProperty.errorsChanges.pipe(takeUntil((/** @type {?} */ (this.sfItemComp)).unsubscribe$)).subscribe((/**
* @return {?}
*/
function () { return _this.cd.detectChanges(); }));
};
return ArrayLayoutWidget;
}(Widget));
export { ArrayLayoutWidget };
var ObjectLayoutWidget = /** @class */ (function (_super) {
__extends(ObjectLayoutWidget, _super);
function ObjectLayoutWidget() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* @param {?} _value
* @return {?}
*/
ObjectLayoutWidget.prototype.reset = /**
* @param {?} _value
* @return {?}
*/
function (_value) { };
/**
* @return {?}
*/
ObjectLayoutWidget.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
this.formProperty.errorsChanges.pipe(takeUntil((/** @type {?} */ (this.sfItemComp)).unsubscribe$)).subscribe((/**
* @return {?}
*/
function () { return _this.cd.detectChanges(); }));
};
return ObjectLayoutWidget;
}(Widget));
export { ObjectLayoutWidget };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGx4bGliL2Zvcm0vIiwic291cmNlcyI6WyJzcmMvd2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVEzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBRzdCO0lBa0NFLGdCQUNnRCxFQUFxQixFQUM5QixRQUFrQixFQUNYLFVBQTRCLEVBQ2hDLE1BQW9CO1FBSGQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNYLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQ2hDLFdBQU0sR0FBTixNQUFNLENBQWM7UUFuQzlELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUdSLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBZ0NqQixDQUFDO0lBOUJKLHNCQUNJLHVCQUFHOzs7O1FBRFA7WUFFRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDRCQUFROzs7O1FBQVo7WUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxtQkFBQSxJQUFJLENBQUMsTUFBTSxFQUFDLENBQUMsUUFBUSxFQUFFO2dCQUMxRCxPQUFPLElBQUksQ0FBQzth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QUFDLENBQUMsQ0FBQyxTQUFTOzs7UUFBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBdkIsQ0FBdUIsRUFBQyxDQUFDO0lBQzFILENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUFORCxDQUF3QyxNQUFNLEdBTTdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IExvY2FsZURhdGEgfSBmcm9tICdAbHhsaWIvdGhlbWUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRXJyb3JEYXRhIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgU0ZWYWx1ZSB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IEFycmF5UHJvcGVydHkgfSBmcm9tICcuL21vZGVsL2FycmF5LnByb3BlcnR5JztcbmltcG9ydCB7IEZvcm1Qcm9wZXJ0eSB9IGZyb20gJy4vbW9kZWwvZm9ybS5wcm9wZXJ0eSc7XG5pbXBvcnQgeyBPYmplY3RQcm9wZXJ0eSB9IGZyb20gJy4vbW9kZWwvb2JqZWN0LnByb3BlcnR5JztcbmltcG9ydCB7IFNGU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgU0ZPcHRpb25hbEhlbHAsIFNGVUlTY2hlbWFJdGVtIH0gZnJvbSAnLi9zY2hlbWEvdWknO1xuaW1wb3J0IHsgU0ZJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zZi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTRkNvbXBvbmVudCB9IGZyb20gJy4vc2YuY29tcG9uZW50JztcbmltcG9ydCB7IGRpIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBTRkFycmF5V2lkZ2V0U2NoZW1hLCBTRk9iamVjdFdpZGdldFNjaGVtYSB9IGZyb20gJy4vd2lkZ2V0cyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXaWRnZXQ8VCBleHRlbmRzIEZvcm1Qcm9wZXJ0eSwgVUlUIGV4dGVuZHMgU0ZVSVNjaGVtYUl0ZW0+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGZvcm1Qcm9wZXJ0eTogVDtcbiAgZXJyb3I6IHN0cmluZztcbiAgc2hvd0Vycm9yID0gZmFsc2U7XG4gIGlkID0gJyc7XG4gIHNjaGVtYTogU0ZTY2hlbWE7XG4gIHVpOiBVSVQ7XG4gIGZpcnN0VmlzdWFsID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudWkuY2xhc3MgfHwgJyc7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIGlmICh0aGlzLnNjaGVtYS5yZWFkT25seSA9PT0gdHJ1ZSB8fCB0aGlzLnNmQ29tcCEuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGwoKTogTG9jYWxlRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVByb3BlcnR5LnJvb3Qud2lkZ2V0LnNmQ29tcCEubG9jYWxlO1xuICB9XG5cbiAgZ2V0IG9oKCkge1xuICAgIHJldHVybiB0aGlzLnVpLm9wdGlvbmFsSGVscCBhcyBTRk9wdGlvbmFsSGVscDtcbiAgfVxuXG4gIGdldCBkb20oKTogRG9tU2FuaXRpemVyIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoRG9tU2FuaXRpemVyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIHByb3RlY3RlZCByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChJbmplY3RvcikgcHJvdGVjdGVkIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFNGSXRlbUNvbXBvbmVudCkgcHJvdGVjdGVkIHJlYWRvbmx5IHNmSXRlbUNvbXA/OiBTRkl0ZW1Db21wb25lbnQsXG4gICAgQEluamVjdChTRkNvbXBvbmVudCkgcHJvdGVjdGVkIHJlYWRvbmx5IHNmQ29tcD86IFNGQ29tcG9uZW50LFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVByb3BlcnR5LmVycm9yc0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5zZkl0ZW1Db21wIS51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKGVycm9yczogRXJyb3JEYXRhW10gfCBudWxsKSA9PiB7XG4gICAgICBpZiAoZXJyb3JzID09IG51bGwpIHJldHVybjtcbiAgICAgIGRpKHRoaXMudWksICdlcnJvcnNDaGFuZ2VzJywgdGhpcy5mb3JtUHJvcGVydHkucGF0aCwgZXJyb3JzKTtcblxuICAgICAgLy8g5LiN5pi+56S66aaW5qyh5qCh6aqM6KeG6KeJXG4gICAgICBpZiAodGhpcy5maXJzdFZpc3VhbCkge1xuICAgICAgICB0aGlzLnNob3dFcnJvciA9IGVycm9ycy5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdGhpcy5zaG93RXJyb3IgPyAoZXJyb3JzWzBdLm1lc3NhZ2UgYXMgc3RyaW5nKSA6ICcnO1xuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5maXJzdFZpc3VhbCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogU0ZWYWx1ZSkge1xuICAgIHRoaXMuZm9ybVByb3BlcnR5LnNldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgZGkodGhpcy51aSwgJ3ZhbHVlQ2hhbmdlcycsIHRoaXMuZm9ybVByb3BlcnR5LnBhdGgsIHRoaXMuZm9ybVByb3BlcnR5KTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtUHJvcGVydHkudmFsdWU7XG4gIH1cblxuICBkZXRlY3RDaGFuZ2VzKG9ubHlTZWxmID0gZmFsc2UpIHtcbiAgICBpZiAob25seVNlbGYpIHtcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybVByb3BlcnR5LnJvb3Qud2lkZ2V0LmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIGFic3RyYWN0IHJlc2V0KHZhbHVlOiBTRlZhbHVlKTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnRyb2xXaWRnZXQgZXh0ZW5kcyBXaWRnZXQ8Rm9ybVByb3BlcnR5LCBTRlVJU2NoZW1hSXRlbT4ge1xuICByZXNldChfdmFsdWU6IFNGVmFsdWUpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBDb250cm9sVUlXaWRnZXQ8VUlUIGV4dGVuZHMgU0ZVSVNjaGVtYUl0ZW0+IGV4dGVuZHMgV2lkZ2V0PEZvcm1Qcm9wZXJ0eSwgVUlUPiB7XG4gIHJlc2V0KF92YWx1ZTogU0ZWYWx1ZSkge31cbn1cblxuZXhwb3J0IGNsYXNzIEFycmF5TGF5b3V0V2lkZ2V0IGV4dGVuZHMgV2lkZ2V0PEFycmF5UHJvcGVydHksIFNGQXJyYXlXaWRnZXRTY2hlbWE+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHJlc2V0KF92YWx1ZTogU0ZWYWx1ZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb3JtUHJvcGVydHkuZXJyb3JzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnNmSXRlbUNvbXAhLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9iamVjdExheW91dFdpZGdldCBleHRlbmRzIFdpZGdldDxPYmplY3RQcm9wZXJ0eSwgU0ZPYmplY3RXaWRnZXRTY2hlbWE+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHJlc2V0KF92YWx1ZTogU0ZWYWx1ZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5mb3JtUHJvcGVydHkuZXJyb3JzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnNmSXRlbUNvbXAhLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSk7XG4gIH1cbn1cbiJdfQ==