UNPKG

@lxlib/seed

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.

261 lines 19.3 kB
/** * @fileoverview added by tsickle * Generated from: range.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; import { Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { DomSanitizer } from '@angular/platform-browser'; import { deepMergeKey, fixEndTimeOfRange, InputBoolean } from '@lxlib/util'; import { NzRangePickerComponent } from 'ng-zorro-antd/date-picker'; import { DatePickerConfig, DateRangePickerConfig } from './date-picker.config'; export class RangePickerComponent { // #endregion /** * @param {?} cog * @param {?} dom */ constructor(cog, dom) { this.dom = dom; this.value = []; this.ngModelEndChange = new EventEmitter(); // #region Native properties this.nzAllowClear = true; this.nzAutoFocus = false; this.nzOnOpenChange = new EventEmitter(); this.nzShowToday = true; this.nzOnPanelChange = new EventEmitter(); this.nzOnOk = new EventEmitter(); this._cog = deepMergeKey(new DateRangePickerConfig(), true, cog && cog.range); Object.assign(this, this._cog); } /** * @param {?} val * @return {?} */ set shortcut(val) { /** @type {?} */ const item = (/** @type {?} */ (deepMergeKey({}, true, this._cog.shortcuts, val == null ? {} : val))); if (typeof val === 'boolean') { item.enabled = val; } (item.list || []).forEach((/** * @param {?} i * @return {?} */ i => { i._text = this.dom.bypassSecurityTrustHtml(i.text); })); this._shortcut = item; } /** * @return {?} */ get shortcut() { return this._shortcut; } /** * @param {?} e * @return {?} */ _nzOnOpenChange(e) { this.nzOnOpenChange.emit(e); } /** * @param {?} e * @return {?} */ _nzOnPanelChange(e) { this.nzOnPanelChange.emit(e); } /** * @param {?} e * @return {?} */ _nzOnOk(e) { this.nzOnOk.emit(e); } /** * @param {?} e * @return {?} */ valueChange(e) { e = fixEndTimeOfRange(e); this.onChangeFn(e[0]); this.ngModelEnd = e[1]; this.ngModelEndChange.emit(e[1]); } /** * @param {?} value * @return {?} */ writeValue(value) { this.value = value && this.ngModelEnd ? [value, this.ngModelEnd] : []; } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChangeFn = fn; } /** * @param {?} _fn * @return {?} */ registerOnTouched(_fn) { // this.onTouchedFn = fn; } /** * @param {?} disabled * @return {?} */ setDisabledState(disabled) { this.nzDisabled = disabled; } /** * @param {?} item * @return {?} */ clickShortcut(item) { this.value = item.fn((/** @type {?} */ (this.value))); this.valueChange((/** @type {?} */ (this.value))); if (this._shortcut.closed) { // tslint:disable-next-line:no-string-literal ((/** @type {?} */ (this.comp)))['picker'].hideOverlay(); } } } RangePickerComponent.decorators = [ { type: Component, args: [{ selector: 'range-picker', exportAs: 'rangePicker', template: "<nz-range-picker #comp\n [ngModel]=\"value\"\n (ngModelChange)=\"valueChange($event)\"\n [nzAllowClear]=\"nzAllowClear\"\n [nzAutoFocus]=\"nzAutoFocus\"\n [class]=\"nzClassName\"\n [nzDisabled]=\"nzDisabled\"\n [nzSize]=\"nzSize\"\n [nzDisabledDate]=\"nzDisabledDate\"\n [nzLocale]=\"nzLocale\"\n [nzPopupStyle]=\"nzPopupStyle\"\n [nzDropdownClassName]=\"nzDropdownClassName\"\n [style]=\"nzStyle\"\n [nzPlaceHolder]=\"nzPlaceHolder\"\n (nzOnOpenChange)=\"_nzOnOpenChange($event)\"\n [nzDateRender]=\"nzDateRender\"\n [nzDisabledTime]=\"nzDisabledTime\"\n [nzFormat]=\"nzFormat\"\n [nzRenderExtraFooter]=\"nzRenderExtraFooter || (shortcut?.enabled ? shortcutTpl : null)\"\n [nzShowTime]=\"nzShowTime\"\n [nzShowToday]=\"nzShowToday\"\n [nzMode]=\"nzMode\"\n [nzRanges]=\"nzRanges\"\n (nzOnPanelChange)=\"_nzOnPanelChange($event)\"\n (nzOnOk)=\"_nzOnOk($event)\"></nz-range-picker>\n<ng-template #shortcutTpl>\n <a *ngFor=\"let i of shortcut?.list;let first=first\"\n (click)=\"clickShortcut(i)\"\n [innerHTML]=\"i._text\"\n [ngClass]=\"{'ml-sm': !first}\"></a>\n</ng-template>\n", providers: [ { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef((/** * @return {?} */ () => RangePickerComponent)), }, ] }] } ]; /** @nocollapse */ RangePickerComponent.ctorParameters = () => [ { type: DatePickerConfig }, { type: DomSanitizer } ]; RangePickerComponent.propDecorators = { comp: [{ type: ViewChild, args: ['comp', { static: false },] }], ngModelEnd: [{ type: Input }], shortcut: [{ type: Input }], ngModelEndChange: [{ type: Output }], nzAllowClear: [{ type: Input }], nzAutoFocus: [{ type: Input }], nzClassName: [{ type: Input }], nzDisabled: [{ type: Input }], nzSize: [{ type: Input }], nzStyle: [{ type: Input }], nzDisabledDate: [{ type: Input }], nzLocale: [{ type: Input }], nzPopupStyle: [{ type: Input }], nzDropdownClassName: [{ type: Input }], nzPlaceHolder: [{ type: Input }], nzOnOpenChange: [{ type: Output }], nzDateRender: [{ type: Input }], nzFormat: [{ type: Input }], nzDisabledTime: [{ type: Input }], nzRenderExtraFooter: [{ type: Input }], nzShowTime: [{ type: Input }], nzShowToday: [{ type: Input }], nzMode: [{ type: Input }], nzRanges: [{ type: Input }], nzOnPanelChange: [{ type: Output }], nzOnOk: [{ type: Output }] }; __decorate([ InputBoolean(), __metadata("design:type", Boolean) ], RangePickerComponent.prototype, "nzShowToday", void 0); if (false) { /** * @type {?} * @private */ RangePickerComponent.prototype.onChangeFn; /** * @type {?} * @private */ RangePickerComponent.prototype._shortcut; /** * @type {?} * @private */ RangePickerComponent.prototype._cog; /** * @type {?} * @private */ RangePickerComponent.prototype.comp; /** @type {?} */ RangePickerComponent.prototype.value; /** @type {?} */ RangePickerComponent.prototype.ngModelEnd; /** @type {?} */ RangePickerComponent.prototype.ngModelEndChange; /** @type {?} */ RangePickerComponent.prototype.nzAllowClear; /** @type {?} */ RangePickerComponent.prototype.nzAutoFocus; /** @type {?} */ RangePickerComponent.prototype.nzClassName; /** @type {?} */ RangePickerComponent.prototype.nzDisabled; /** @type {?} */ RangePickerComponent.prototype.nzSize; /** @type {?} */ RangePickerComponent.prototype.nzStyle; /** @type {?} */ RangePickerComponent.prototype.nzDisabledDate; /** @type {?} */ RangePickerComponent.prototype.nzLocale; /** @type {?} */ RangePickerComponent.prototype.nzPopupStyle; /** @type {?} */ RangePickerComponent.prototype.nzDropdownClassName; /** @type {?} */ RangePickerComponent.prototype.nzPlaceHolder; /** @type {?} */ RangePickerComponent.prototype.nzOnOpenChange; /** @type {?} */ RangePickerComponent.prototype.nzDateRender; /** @type {?} */ RangePickerComponent.prototype.nzFormat; /** @type {?} */ RangePickerComponent.prototype.nzDisabledTime; /** @type {?} */ RangePickerComponent.prototype.nzRenderExtraFooter; /** @type {?} */ RangePickerComponent.prototype.nzShowTime; /** @type {?} */ RangePickerComponent.prototype.nzShowToday; /** @type {?} */ RangePickerComponent.prototype.nzMode; /** @type {?} */ RangePickerComponent.prototype.nzRanges; /** @type {?} */ RangePickerComponent.prototype.nzOnPanelChange; /** @type {?} */ RangePickerComponent.prototype.nzOnOk; /** * @type {?} * @private */ RangePickerComponent.prototype.dom; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGx4bGliL3NlZWQvZGF0ZS1waWNrZXIvIiwic291cmNlcyI6WyJyYW5nZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBY3JJLE1BQU0sT0FBTyxvQkFBb0I7Ozs7OztJQXFEL0IsWUFBWSxHQUFxQixFQUFVLEdBQWlCO1FBQWpCLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFoRDVELFVBQUssR0FBVyxFQUFFLENBQUM7UUFpQkEscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7UUFJdEQsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFVVixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFRdkMsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHbEMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBS2xELElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUkscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUs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NkNBQTBDOztJQUMxQyw4Q0FBZ0U7O0lBR2hFLDRDQUEyQjs7SUFDM0Isd0NBQXVCOztJQUN2Qiw4Q0FBNkI7O0lBQzdCLG1EQUF1RTs7SUFDdkUsMENBQXlCOztJQUN6QiwyQ0FBcUQ7O0lBQ3JELHNDQUFxQjs7SUFDckIsd0NBQXVCOztJQUN2QiwrQ0FBNkQ7O0lBQzdELHNDQUFvRDs7Ozs7SUFJakIsbUNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZGVlcE1lcmdlS2V5LCBmaXhFbmRUaW1lT2ZSYW5nZSwgSW5wdXRCb29sZWFuIH0gZnJvbSAnQGx4bGliL3V0aWwnO1xuaW1wb3J0IHsgRnVuY3Rpb25Qcm9wLCBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgTnpSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nLXpvcnJvLWFudGQvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbmZpZywgRGF0ZVJhbmdlUGlja2VyQ29uZmlnLCBEYXRlUmFuZ2VQaWNrZXJTaG9ydGN1dCwgRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXRJdGVtIH0gZnJvbSAnLi9kYXRlLXBpY2tlci5jb25maWcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyYW5nZS1waWNrZXInLFxuICBleHBvcnRBczogJ3JhbmdlUGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSBvbkNoYW5nZUZuOiAodmFsOiBEYXRlKSA9PiB2b2lkO1xuICBwcml2YXRlIF9zaG9ydGN1dDogRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXQ7XG4gIHByaXZhdGUgX2NvZzogRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBAVmlld0NoaWxkKCdjb21wJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgY29tcDogTnpSYW5nZVBpY2tlckNvbXBvbmVudDtcbiAgdmFsdWU6IERhdGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIG5nTW9kZWxFbmQ6IERhdGU7XG4gIEBJbnB1dCgpXG4gIHNldCBzaG9ydGN1dCh2YWw6IERhdGVSYW5nZVBpY2tlclNob3J0Y3V0IHwgbnVsbCkge1xuICAgIGNvbnN0IGl0ZW0gPSBkZWVwTWVyZ2VLZXkoe30sIHRydWUsIHRoaXMuX2NvZy5zaG9ydGN1dHMsIHZhbCA9PSBudWxsID8ge30gOiB2YWwpIGFzIERhdGVSYW5nZVBpY2tlclNob3J0Y3V0O1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGl0ZW0uZW5hYmxlZCA9IHZhbDtcbiAgICB9XG4gICAgKGl0ZW0ubGlzdCB8fCBbXSkuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuX3RleHQgPSB0aGlzLmRvbS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpLnRleHQpO1xuICAgIH0pO1xuICAgIHRoaXMuX3Nob3J0Y3V0ID0gaXRlbTtcbiAgfVxuICBnZXQgc2hvcnRjdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3J0Y3V0O1xuICB9XG4gIEBPdXRwdXQoKSByZWFkb25seSBuZ01vZGVsRW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIC8vICNyZWdpb24gTmF0aXZlIHByb3BlcnRpZXNcblxuICBASW5wdXQoKSBuekFsbG93Q2xlYXIgPSB0cnVlO1xuICBASW5wdXQoKSBuekF1dG9Gb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBuekNsYXNzTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBuekRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBuelNpemU6IHN0cmluZztcbiAgQElucHV0KCkgbnpTdHlsZTogc3RyaW5nO1xuICBASW5wdXQoKSBuekRpc2FibGVkRGF0ZTogKGQ6IERhdGUpID0+IGJvb2xlYW47XG4gIEBJbnB1dCgpIG56TG9jYWxlOiBvYmplY3Q7XG4gIEBJbnB1dCgpIG56UG9wdXBTdHlsZTogb2JqZWN0O1xuICBASW5wdXQoKSBuekRyb3Bkb3duQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG56UGxhY2VIb2xkZXI6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpPbk9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gcmFuZ2VcbiAgQElucHV0KCkgbnpEYXRlUmVuZGVyOiBhbnk7XG4gIEBJbnB1dCgpIG56Rm9ybWF0OiBhbnk7XG4gIEBJbnB1dCgpIG56RGlzYWJsZWRUaW1lOiBhbnk7XG4gIEBJbnB1dCgpIG56UmVuZGVyRXh0cmFGb290ZXI6IEZ1bmN0aW9uUHJvcDxUZW1wbGF0ZVJlZjx2b2lkPiB8IHN0cmluZz47XG4gIEBJbnB1dCgpIG56U2hvd1RpbWU6IGFueTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd1RvZGF5OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbnpNb2RlOiBhbnk7XG4gIEBJbnB1dCgpIG56UmFuZ2VzOiBhbnk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuek9uUGFuZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56T25PayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vICNlbmRyZWdpb25cblxuICBjb25zdHJ1Y3Rvcihjb2c6IERhdGVQaWNrZXJDb25maWcsIHByaXZhdGUgZG9tOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB0aGlzLl9jb2cgPSBkZWVwTWVyZ2VLZXkobmV3IERhdGVSYW5nZVBpY2tlckNvbmZpZygpLCB0cnVlLCBjb2cgJiYgY29nLnJhbmdlKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHRoaXMuX2NvZyk7XG4gIH1cblxuICBfbnpPbk9wZW5DaGFuZ2UoZTogYW55KSB7XG4gICAgdGhpcy5uek9uT3BlbkNoYW5nZS5lbWl0KGUpO1xuICB9XG5cbiAgX256T25QYW5lbENoYW5nZShlOiBhbnkpIHtcbiAgICB0aGlzLm56T25QYW5lbENoYW5nZS5lbWl0KGUpO1xuICB9XG5cbiAgX256T25PayhlOiBhbnkpIHtcbiAgICB0aGlzLm56T25Pay5lbWl0KGUpO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2UoZTogW0RhdGUsIERhdGVdKSB7XG4gICAgZSA9IGZpeEVuZFRpbWVPZlJhbmdlKGUpO1xuICAgIHRoaXMub25DaGFuZ2VGbihlWzBdKTtcbiAgICB0aGlzLm5nTW9kZWxFbmQgPSBlWzFdO1xuICAgIHRoaXMubmdNb2RlbEVuZENoYW5nZS5lbWl0KGVbMV0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSAmJiB0aGlzLm5nTW9kZWxFbmQgPyBbdmFsdWUsIHRoaXMubmdNb2RlbEVuZF0gOiBbXTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWw6IERhdGUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKF9mbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIC8vIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm56RGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIGNsaWNrU2hvcnRjdXQoaXRlbTogRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXRJdGVtKSB7XG4gICAgdGhpcy52YWx1ZSA9IGl0ZW0uZm4odGhpcy52YWx1ZSBhcyBhbnkpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UodGhpcy52YWx1ZSBhcyBbRGF0ZSwgRGF0ZV0pO1xuICAgIGlmICh0aGlzLl9zaG9ydGN1dC5jbG9zZWQpIHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgKHRoaXMuY29tcCBhcyBOelNhZmVBbnkpWydwaWNrZXInXS5oaWRlT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxufVxuIl19