UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

227 lines (226 loc) 15.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Input, Output, EventEmitter, HostListener, ViewContainerRef, ElementRef, Injector, ComponentFactoryResolver } from '@angular/core'; import { DatePickerComponent } from './date-picker.component'; import { DatePickerOptions } from './date-picker-options.provider'; var DatePickerDirective = /** @class */ (function () { function DatePickerDirective(_viewContainerRef, _elm, _defaultOptions, _cfr) { this._viewContainerRef = _viewContainerRef; this._elm = _elm; this._defaultOptions = _defaultOptions; this._cfr = _cfr; this._eventListeners = []; this.value = new Date(); this.onVisibleChange = new EventEmitter(true); this.onValueChange = new EventEmitter(); this.onOk = new EventEmitter(); this.onDismiss = new EventEmitter(); } /** * @return {?} */ DatePickerDirective.prototype.togglePicker = /** * @return {?} */ function () { if (!this.picker) { this.showPicker(); } else { this.hidePicker(); } }; /** * @return {?} */ DatePickerDirective.prototype.showPicker = /** * @return {?} */ function () { var _this = this; if (!this.picker) { setTimeout(function () { _this._eventListeners = []; }); /** @type {?} */ var options_1 = new DatePickerOptions(); Object.assign(options_1, this._defaultOptions, { hidePicker: function (event) { _this.hidePicker(); } }); /** @type {?} */ var optionalParams = [ 'mode', 'minDate', 'maxDate', 'value', 'mask', 'title', 'okText', 'dismissText', 'disabled', 'locale', 'appendToBody', 'onOk', 'onDismiss', 'onValueChange' ]; optionalParams.forEach(function (param) { if (typeof _this[param] !== 'undefined') { (/** @type {?} */ (options_1))[param] = _this[param]; } }); /** @type {?} */ var componentFactory = this._cfr.resolveComponentFactory(DatePickerComponent); /** @type {?} */ var childInjector = Injector.create([ { provide: DatePickerOptions, useValue: options_1 } ]); this.picker = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, childInjector); if (options_1.appendToBody) { document.body.appendChild(this.picker.location.nativeElement); } this.onVisibleChange.emit(true); } }; /** * @return {?} */ DatePickerDirective.prototype.hidePicker = /** * @return {?} */ function () { if (this.picker) { this.picker.destroy(); delete this.picker; this.onVisibleChange.emit(false); this._eventListeners.forEach(function (fn) { return fn(); }); this._eventListeners = []; } }; /** * @return {?} */ DatePickerDirective.prototype.ngOnInit = /** * @return {?} */ function () { this.onVisibleChange.emit(false); }; /** * @param {?} changes * @return {?} */ DatePickerDirective.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { if (changes["isOpen"]) { if (changes["isOpen"].currentValue === true) { this.showPicker(); } else { this.hidePicker(); } } }; /** * @return {?} */ DatePickerDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { this.hidePicker(); }; DatePickerDirective.decorators = [ { type: Directive, args: [{ selector: '[DatePicker]' },] } ]; /** @nocollapse */ DatePickerDirective.ctorParameters = function () { return [ { type: ViewContainerRef }, { type: ElementRef }, { type: DatePickerOptions }, { type: ComponentFactoryResolver } ]; }; DatePickerDirective.propDecorators = { isOpen: [{ type: Input }], mode: [{ type: Input }], minDate: [{ type: Input }], maxDate: [{ type: Input }], use12Hours: [{ type: Input }], value: [{ type: Input }], mask: [{ type: Input }], title: [{ type: Input }], okText: [{ type: Input }], dismissText: [{ type: Input }], disabled: [{ type: Input }], locale: [{ type: Input }], appendToBody: [{ type: Input }], onVisibleChange: [{ type: Output }], onValueChange: [{ type: Output }], onOk: [{ type: Output }], onDismiss: [{ type: Output }], togglePicker: [{ type: HostListener, args: ['click',] }] }; return DatePickerDirective; }()); export { DatePickerDirective }; if (false) { /** @type {?} */ DatePickerDirective.prototype.picker; /** @type {?} */ DatePickerDirective.prototype._eventListeners; /** @type {?} */ DatePickerDirective.prototype.isOpen; /** @type {?} */ DatePickerDirective.prototype.mode; /** @type {?} */ DatePickerDirective.prototype.minDate; /** @type {?} */ DatePickerDirective.prototype.maxDate; /** @type {?} */ DatePickerDirective.prototype.use12Hours; /** @type {?} */ DatePickerDirective.prototype.value; /** @type {?} */ DatePickerDirective.prototype.mask; /** @type {?} */ DatePickerDirective.prototype.title; /** @type {?} */ DatePickerDirective.prototype.okText; /** @type {?} */ DatePickerDirective.prototype.dismissText; /** @type {?} */ DatePickerDirective.prototype.disabled; /** @type {?} */ DatePickerDirective.prototype.locale; /** @type {?} */ DatePickerDirective.prototype.appendToBody; /** @type {?} */ DatePickerDirective.prototype.onVisibleChange; /** @type {?} */ DatePickerDirective.prototype.onValueChange; /** @type {?} */ DatePickerDirective.prototype.onOk; /** @type {?} */ DatePickerDirective.prototype.onDismiss; /** @type {?} */ DatePickerDirective.prototype._viewContainerRef; /** @type {?} */ DatePickerDirective.prototype._elm; /** @type {?} */ DatePickerDirective.prototype._defaultOptions; /** @type {?} */ DatePickerDirective.prototype._cfr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJkYXRlLXBpY2tlci9kYXRlLXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxFQUNaLGdCQUFnQixFQUdoQixVQUFVLEVBR1YsUUFBUSxFQUNSLHdCQUF3QixFQUd6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7SUFxRGpFLDZCQUNVLG1CQUNBLE1BQ0EsaUJBQ0E7UUFIQSxzQkFBaUIsR0FBakIsaUJBQWlCO1FBQ2pCLFNBQUksR0FBSixJQUFJO1FBQ0osb0JBQWUsR0FBZixlQUFlO1FBQ2YsU0FBSSxHQUFKLElBQUk7K0JBbEQrQixFQUFFO3FCQWFqQyxJQUFJLElBQUksRUFBRTsrQkFnQmlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQzs2QkFFNUIsSUFBSSxZQUFZLEVBQUU7b0JBRTNCLElBQUksWUFBWSxFQUFFO3lCQUViLElBQUksWUFBWSxFQUFFO0tBZ0I3Qzs7OztJQWJKLDBDQUFZOzs7SUFEWjtRQUVFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0tBQ0Y7Ozs7SUFTRCx3Q0FBVTs7O0lBQVY7UUFBQSxpQkFxREM7UUFwREMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFD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QUFLOzBCQUVMLEtBQUs7MEJBRUwsS0FBSzs2QkFFTCxLQUFLO3dCQUVMLEtBQUs7dUJBRUwsS0FBSzt3QkFFTCxLQUFLO3lCQUVMLEtBQUs7OEJBRUwsS0FBSzsyQkFFTCxLQUFLO3lCQUVMLEtBQUs7K0JBRUwsS0FBSztrQ0FFTCxNQUFNO2dDQUVOLE1BQU07dUJBRU4sTUFBTTs0QkFFTixNQUFNOytCQUdOLFlBQVksU0FBQyxPQUFPOzs4QkE5RHZCOztTQXVCYSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDb21wb25lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIEluamVjdG9yLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlck9wdGlvbnMgfSBmcm9tICcuL2RhdGUtcGlja2VyLW9wdGlvbnMucHJvdmlkZXInO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbRGF0ZVBpY2tlcl0nXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgcGlja2VyOiBDb21wb25lbnRSZWY8RGF0ZVBpY2tlckNvbXBvbmVudD47XG4gIHByaXZhdGUgX2V2ZW50TGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgbW9kZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBtaW5EYXRlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IHN0cmluZztcbiAgQElucHV0KClcbiAgdXNlMTJIb3VyczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgdmFsdWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKVxuICBtYXNrOiBib29sZWFuO1xuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBva1RleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgZGlzbWlzc1RleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIGxvY2FsZTogYW55O1xuICBASW5wdXQoKVxuICBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIEBPdXRwdXQoKVxuICBvblZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIodHJ1ZSk7XG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIG9uT2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgb25EaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZVBpY2tlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGlja2VyKSB7XG4gICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIF9lbG06IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnM6IERhdGVQaWNrZXJPcHRpb25zLFxuICAgIHByaXZhdGUgX2NmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICkge31cblxuICBzaG93UGlja2VyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5waWNrZXIpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycyA9IFtdO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ob3B0aW9ucywgdGhpcy5fZGVmYXVsdE9wdGlvbnMsIHtcbiAgICAgICAgaGlkZVBpY2tlcjogKGV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5oaWRlUGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBvcHRpb25hbFBhcmFtczogQXJyYXk8a2V5b2YgRGF0ZVBpY2tlckRpcmVjdGl2ZT4gPSBbXG4gICAgICAgICdtb2RlJyxcbiAgICAgICAgJ21pbkRhdGUnLFxuICAgICAgICAnbWF4RGF0ZScsXG4gICAgICAgICd2YWx1ZScsXG4gICAgICAgICdtYXNrJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ29rVGV4dCcsXG4gICAgICAgICdkaXNtaXNzVGV4dCcsXG4gICAgICAgICdkaXNhYmxlZCcsXG4gICAgICAgICdsb2NhbGUnLFxuICAgICAgICAnYXBwZW5kVG9Cb2R5JyxcbiAgICAgICAgJ29uT2snLFxuICAgICAgICAnb25EaXNtaXNzJyxcbiAgICAgICAgJ29uVmFsdWVDaGFuZ2UnXG4gICAgICBdO1xuICAgICAgb3B0aW9uYWxQYXJhbXMuZm9yRWFjaChwYXJhbSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpc1twYXJhbV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgKG9wdGlvbnMgYXMgYW55KVtwYXJhbV0gPSB0aGlzW3BhcmFtXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PERhdGVQaWNrZXJDb21wb25lbnQ+ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgICBEYXRlUGlja2VyQ29tcG9uZW50XG4gICAgICApO1xuICAgICAgY29uc3QgY2hpbGRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZShbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBEYXRlUGlja2VyT3B0aW9ucyxcbiAgICAgICAgICB1c2VWYWx1ZTogb3B0aW9uc1xuICAgICAgICB9XG4gICAgICBdKTtcbiAgICAgIHRoaXMucGlja2VyID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnksXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoLFxuICAgICAgICBjaGlsZEluamVjdG9yXG4gICAgICApO1xuICAgICAgaWYgKG9wdGlvbnMuYXBwZW5kVG9Cb2R5KSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5waWNrZXIubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyKSB7XG4gICAgICB0aGlzLnBpY2tlci5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5waWNrZXI7XG4gICAgICB0aGlzLm9uVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgICB0aGlzLl9ldmVudExpc3RlbmVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25WaXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmlzT3Blbikge1xuICAgICAgaWYgKGNoYW5nZXMuaXNPcGVuLmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaGlkZVBpY2tlcigpO1xuICB9XG59XG4iXX0=