@lxlib/seed
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.
188 lines • 12.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: error-collect.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __decorate, __metadata } from "tslib";
import { DOCUMENT } from '@angular/common';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, ViewEncapsulation, } from '@angular/core';
import { InputNumber } from '@lxlib/util';
import { ErrorCollectConfig } from './error-collect.config';
export class ErrorCollectComponent {
/**
* @param {?} cog
* @param {?} el
* @param {?} cdr
* @param {?} doc
*/
constructor(cog, el, cdr, doc) {
this.el = el;
this.cdr = cdr;
this.doc = doc;
this.$time = null;
this._hiden = true;
this.count = 0;
Object.assign(this, Object.assign(Object.assign({}, new ErrorCollectConfig()), cog));
}
/**
* @private
* @return {?}
*/
get errEls() {
return (/** @type {?} */ (this.formEl)).querySelectorAll('.ant-form-item-has-error');
}
/**
* @private
* @return {?}
*/
update() {
/** @type {?} */
const count = this.errEls.length;
if (count === this.count)
return;
this.count = count;
this._hiden = count === 0;
this.cdr.markForCheck();
}
/**
* @return {?}
*/
_click() {
if (this.count === 0)
return false;
// nz-form-control
/** @type {?} */
const els = this.errEls;
/** @type {?} */
const formItemEl = this.findParent(els[0], '[nz-form-control]') || els[0];
formItemEl.scrollIntoView(true);
// fix header height
this.doc.documentElement.scrollTop -= this.offsetTop;
return true;
}
/**
* @private
* @return {?}
*/
install() {
this.uninstall();
this.$time = setInterval((/**
* @return {?}
*/
() => this.update()), this.freq);
this.update();
}
/**
* @private
* @return {?}
*/
uninstall() {
clearInterval((/** @type {?} */ (this.$time)));
}
/**
* @private
* @param {?} el
* @param {?} selector
* @return {?}
*/
findParent(el, selector) {
/** @type {?} */
let retEl = null;
while (el) {
if (el.querySelector(selector)) {
retEl = (/** @type {?} */ (el));
break;
}
el = (/** @type {?} */ (el.parentElement));
}
return retEl;
}
/**
* @return {?}
*/
ngOnInit() {
this.formEl = this.findParent(this.el.nativeElement, 'form');
if (this.formEl === null)
throw new Error('No found form element');
this.install();
}
/**
* @return {?}
*/
ngOnDestroy() {
this.uninstall();
}
}
ErrorCollectComponent.decorators = [
{ type: Component, args: [{
selector: 'error-collect, [error-collect]',
exportAs: 'errorCollect',
template: `
<i nz-icon nzType="exclamation-circle"></i>
<span class="pl-sm">{{ count }}</span>
`,
host: {
'[class.error-collect]': 'true',
'[class.d-none]': '_hiden',
'(click)': '_click()',
},
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
ErrorCollectComponent.ctorParameters = () => [
{ type: ErrorCollectConfig },
{ type: ElementRef },
{ type: ChangeDetectorRef },
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
];
ErrorCollectComponent.propDecorators = {
freq: [{ type: Input }],
offsetTop: [{ type: Input }]
};
__decorate([
InputNumber(),
__metadata("design:type", Number)
], ErrorCollectComponent.prototype, "freq", void 0);
__decorate([
InputNumber(),
__metadata("design:type", Number)
], ErrorCollectComponent.prototype, "offsetTop", void 0);
if (false) {
/**
* @type {?}
* @private
*/
ErrorCollectComponent.prototype.$time;
/**
* @type {?}
* @private
*/
ErrorCollectComponent.prototype.formEl;
/** @type {?} */
ErrorCollectComponent.prototype.freq;
/** @type {?} */
ErrorCollectComponent.prototype.offsetTop;
/** @type {?} */
ErrorCollectComponent.prototype._hiden;
/** @type {?} */
ErrorCollectComponent.prototype.count;
/**
* @type {?}
* @private
*/
ErrorCollectComponent.prototype.el;
/**
* @type {?}
* @private
*/
ErrorCollectComponent.prototype.cdr;
/**
* @type {?}
* @private
*/
ErrorCollectComponent.prototype.doc;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29sbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbHhsaWIvc2VlZC9lcnJvci1jb2xsZWN0LyIsInNvdXJjZXMiOlsiZXJyb3ItY29sbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWtCNUQsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7OztJQVdoQyxZQUFZLEdBQXVCLEVBQVUsRUFBYyxFQUFVLEdBQXNCLEVBQTRCLEdBQVE7UUFBbEYsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQTRCLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFWdkgsVUFBSyxHQUFlLElBQUksQ0FBQztRQU1qQyxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBRWQsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxrQ0FBTyxJQUFJLGtCQUFrQixFQUFFLEdBQUssR0FBRyxFQUFHLENBQUM7SUFDL0QsQ0FBQzs7Ozs7SUFFRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxtQkFBQSxJQUFJLENBQUMsTUFBTSxFQUFDLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNuRSxDQUFDOzs7OztJQUVPLE1BQU07O2NBQ04sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtRQUNoQyxJQUFJLEtBQUssS0FBSyxJ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SUFFMUMsdUNBQWM7O0lBRWQsc0NBQVU7Ozs7O0lBRTJCLG1DQUFzQjs7Ozs7SUFBRSxvQ0FBOEI7Ozs7O0lBQUUsb0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dE51bWJlciB9IGZyb20gJ0BseGxpYi91dGlsJztcbmltcG9ydCB7IEVycm9yQ29sbGVjdENvbmZpZyB9IGZyb20gJy4vZXJyb3ItY29sbGVjdC5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlcnJvci1jb2xsZWN0LCBbZXJyb3ItY29sbGVjdF0nLFxuICBleHBvcnRBczogJ2Vycm9yQ29sbGVjdCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGkgbnotaWNvbiBuelR5cGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIj48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJwbC1zbVwiPnt7IGNvdW50IH19PC9zcGFuPlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5lcnJvci1jb2xsZWN0XSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmQtbm9uZV0nOiAnX2hpZGVuJyxcbiAgICAnKGNsaWNrKSc6ICdfY2xpY2soKScsXG4gIH0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXJyb3JDb2xsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlICR0aW1lOiBhbnkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBmb3JtRWw6IEhUTUxGb3JtRWxlbWVudCB8IG51bGw7XG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgZnJlcTogbnVtYmVyO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBvZmZzZXRUb3A6IG51bWJlcjtcblxuICBfaGlkZW4gPSB0cnVlO1xuXG4gIGNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3Rvcihjb2c6IEVycm9yQ29sbGVjdENvbmZpZywgcHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7IC4uLm5ldyBFcnJvckNvbGxlY3RDb25maWcoKSwgLi4uY29nIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZXJyRWxzKCk6IE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRWwhLnF1ZXJ5U2VsZWN0b3JBbGwoJy5hbnQtZm9ybS1pdGVtLWhhcy1lcnJvcicpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLmVyckVscy5sZW5ndGg7XG4gICAgaWYgKGNvdW50ID09PSB0aGlzLmNvdW50KSByZXR1cm47XG4gICAgdGhpcy5jb3VudCA9IGNvdW50O1xuICAgIHRoaXMuX2hpZGVuID0gY291bnQgPT09IDA7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBfY2xpY2soKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY291bnQgPT09IDApIHJldHVybiBmYWxzZTtcbiAgICAvLyBuei1mb3JtLWNvbnRyb2xcbiAgICBjb25zdCBlbHMgPSB0aGlzLmVyckVscztcbiAgICBjb25zdCBmb3JtSXRlbUVsID0gdGhpcy5maW5kUGFyZW50KGVsc1swXSwgJ1tuei1mb3JtLWNvbnRyb2xdJykgfHwgZWxzWzBdO1xuICAgIGZvcm1JdGVtRWwuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XG4gICAgLy8gZml4IGhlYWRlciBoZWlnaHRcbiAgICB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIC09IHRoaXMub2Zmc2V0VG9wO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsKCk6IHZvaWQge1xuICAgIHRoaXMudW5pbnN0YWxsKCk7XG4gICAgdGhpcy4kdGltZSA9IHNldEludGVydmFsKCgpID0+IHRoaXMudXBkYXRlKCksIHRoaXMuZnJlcSk7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5pbnN0YWxsKCk6IHZvaWQge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy4kdGltZSEpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50KGVsOiBFbGVtZW50LCBzZWxlY3Rvcjogc3RyaW5nKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB7XG4gICAgbGV0IHJldEVsOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICB3aGlsZSAoZWwpIHtcbiAgICAgIGlmIChlbC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSkge1xuICAgICAgICByZXRFbCA9IGVsIGFzIEhUTUxGb3JtRWxlbWVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQgYXMgSFRNTEZvcm1FbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmV0RWw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1FbCA9IHRoaXMuZmluZFBhcmVudCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdmb3JtJyk7XG4gICAgaWYgKHRoaXMuZm9ybUVsID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGZvdW5kIGZvcm0gZWxlbWVudCcpO1xuICAgIHRoaXMuaW5zdGFsbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bmluc3RhbGwoKTtcbiAgfVxufVxuIl19