UNPKG

@jermeo/ionic4-datepicker

Version:

ionic4-datepicker inspired by rajeshwar patlolla ionic1 datepicker

197 lines 18 kB
/** * @fileoverview added by tsickle * Generated from: lib/li-ionic4-datepicker.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, Input, HostListener, ElementRef, Renderer2 } from '@angular/core'; import { ModalController } from '@ionic/angular'; import { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component'; import { NgModel, NgControl } from '@angular/forms'; import { Ionic4DatepickerService } from './ionic4-datepicker.service'; var LiIonic4DatepickerDirective = /** @class */ (function () { function LiIonic4DatepickerDirective(modalCtrl, ngModel, control, el, renderer2, datePickerService) { this.modalCtrl = modalCtrl; this.ngModel = ngModel; this.control = control; this.el = el; this.renderer2 = renderer2; this.datePickerService = datePickerService; this.selectedDate = {}; this.isModalOpen = false; } /** * @return {?} */ LiIonic4DatepickerDirective.prototype.ngOnInit = /** * @return {?} */ function () { // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending); var _this = this; if (this.inputDateConfig.clearButton !== false) { this.closeIcon = document.createElement('ion-icon'); this.closeIcon.name = 'close-circle'; this.closeIcon.className = 'clearButton'; this.closeIcon.style.position = 'absolute'; this.closeIcon.style.right = '8px'; this.closeIcon.style.bottom = '30%'; this.closeIcon.style.fontSize = '18px'; this.closeIcon.style.color = '#A9A9A9'; this.closeIcon.style.zIndex = '5'; if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') { this.closeIcon.style.bottom = '12px'; } this.el.nativeElement.parentNode.appendChild(this.closeIcon); this.renderer2.listen(this.closeIcon, 'click', (/** * @param {?} event * @return {?} */ function (event) { // Do something with 'event' // console.log('button clicks'); _this.selectedDate.date = new Date(); _this.control.control.setValue(''); _this.ngModel.update.emit(''); })); } /** @type {?} */ var self = this; this.ngModel.valueChanges.subscribe((/** * @param {?} value * @return {?} */ function (value) { // console.log('ngModel value =>', value); self.selectedDate.date = value; if (_this.inputDateConfig.clearButton !== false) { if (!value) { _this.closeIcon.style.visibility = 'hidden'; } else { _this.closeIcon.style.visibility = 'visible'; } } })); this.control.control.valueChanges.subscribe((/** * @param {?} value * @return {?} */ function (value) { // console.log('formcontrol value =>', value); self.selectedDate.date = value; if (_this.inputDateConfig.clearButton !== false) { if (!value) { _this.closeIcon.style.visibility = 'hidden'; } else { _this.closeIcon.style.visibility = 'visible'; } } })); if (this.control.control.value) { this.selectedDate.date = this.control.control.value; } }; /** * @return {?} */ LiIonic4DatepickerDirective.prototype.onFocus = /** * @return {?} */ function () { if (this.datePickerService.isModalOpen) { return; } this.openDatePicker(); }; /** * @return {?} */ LiIonic4DatepickerDirective.prototype.openDatePicker = /** * @return {?} */ function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var datePickerModal; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: // console.log('openDatePicker'); return [4 /*yield*/, this.modalCtrl.create({ component: Ionic4DatepickerModalComponent, cssClass: 'li-ionic4-datePicker', componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date } })]; case 1: datePickerModal = _a.sent(); return [4 /*yield*/, datePickerModal.present()]; case 2: _a.sent(); datePickerModal.onDidDismiss() .then((/** * @param {?} data * @return {?} */ function (data) { if (data.data && data.data.date && data.data.date !== 'Invalid date') { _this.selectedDate.date = data.data.date; _this.control.control.setValue(data.data.date); _this.ngModel.update.emit(data.data.date); } })); return [2 /*return*/]; } }); }); }; LiIonic4DatepickerDirective.decorators = [ { type: Directive, args: [{ selector: '[liIonic4Datepicker]', exportAs: 'liIonic4Datepicker', providers: [NgModel], },] } ]; /** @nocollapse */ LiIonic4DatepickerDirective.ctorParameters = function () { return [ { type: ModalController }, { type: NgModel }, { type: NgControl }, { type: ElementRef }, { type: Renderer2 }, { type: Ionic4DatepickerService } ]; }; LiIonic4DatepickerDirective.propDecorators = { inputDateConfig: [{ type: Input, args: ['liIonic4Datepicker',] }], onFocus: [{ type: HostListener, args: ['ionFocus',] }] }; return LiIonic4DatepickerDirective; }()); export { LiIonic4DatepickerDirective }; if (false) { /** @type {?} */ LiIonic4DatepickerDirective.prototype.inputDateConfig; /** @type {?} */ LiIonic4DatepickerDirective.prototype.closeIcon; /** @type {?} */ LiIonic4DatepickerDirective.prototype.selectedDate; /** @type {?} */ LiIonic4DatepickerDirective.prototype.isModalOpen; /** * @type {?} * @private */ LiIonic4DatepickerDirective.prototype.modalCtrl; /** @type {?} */ LiIonic4DatepickerDirective.prototype.ngModel; /** @type {?} */ LiIonic4DatepickerDirective.prototype.control; /** @type {?} */ LiIonic4DatepickerDirective.prototype.el; /** @type {?} */ LiIonic4DatepickerDirective.prototype.renderer2; /** @type {?} */ LiIonic4DatepickerDirective.prototype.datePickerService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGplcm1lby9pb25pYzQtZGF0ZXBpY2tlci8iLCJzb3VyY2VzIjpbImxpYi9saS1pb25pYzQtZGF0ZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEU7SUFhRSxxQ0FDVSxTQUEwQixFQUMzQixPQUFnQixFQUNoQixPQUFrQixFQUNsQixFQUFjLEVBQ2QsU0FBb0IsRUFDcEIsaUJBQTBDO1FBTHpDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBVztRQUNsQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXlCO1FBVG5ELGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQVEsS0FBSyxDQUFDO0lBU3JCLENBQUM7Ozs7SUFFTCw4Q0FBUTs7O0lBQVI7UUFDRSxtRkFBbUY7UUFEckYsaUJBc0RDO1FBbkRDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FB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O0tBQ047O2dCQXhHRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNyQjs7OztnQkFYUSxlQUFlO2dCQUVmLE9BQU87Z0JBQUUsU0FBUztnQkFIc0IsVUFBVTtnQkFBRSxTQUFTO2dCQU03RCx1QkFBdUI7OztrQ0FTN0IsS0FBSyxTQUFDLG9CQUFvQjswQkF1RTFCLFlBQVksU0FBQyxVQUFVOztJQTJCMUIsa0NBQUM7Q0FBQSxBQXpHRCxJQXlHQztTQXBHWSwyQkFBMkI7OztJQUV0QyxzREFBa0Q7O0lBRWxELGdEQUFVOztJQUNWLG1EQUF1Qjs7SUFDdkIsa0RBQXlCOzs7OztJQUd2QixnREFBa0M7O0lBQ2xDLDhDQUF1Qjs7SUFDdkIsOENBQXlCOztJQUN6Qix5Q0FBcUI7O0lBQ3JCLGdEQUEyQjs7SUFDM0Isd0RBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdNb2RlbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyU2VydmljZSB9IGZyb20gJy4vaW9uaWM0LWRhdGVwaWNrZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsaUlvbmljNERhdGVwaWNrZXJdJyxcbiAgZXhwb3J0QXM6ICdsaUlvbmljNERhdGVwaWNrZXInLFxuICBwcm92aWRlcnM6IFtOZ01vZGVsXSxcbn0pXG5leHBvcnQgY2xhc3MgTGlJb25pYzREYXRlcGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoJ2xpSW9uaWM0RGF0ZXBpY2tlcicpIGlucHV0RGF0ZUNvbmZpZzogYW55O1xuXG4gIGNsb3NlSWNvbjtcbiAgc2VsZWN0ZWREYXRlOiBhbnkgPSB7fTtcbiAgaXNNb2RhbE9wZW46IGFueSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXG4gICAgcHVibGljIG5nTW9kZWw6IE5nTW9kZWwsXG4gICAgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnY29uZmlnLnllYXJJbkFzY2VuZGluZyA6ICcgKyB0aGlzLmlucHV0RGF0ZUNvbmZpZy55ZWFySW5Bc2NlbmRpbmcpO1xuXG4gICAgaWYgKHRoaXMuaW5wdXREYXRlQ29uZmlnLmNsZWFyQnV0dG9uICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpb24taWNvbicpO1xuICAgICAgdGhpcy5jbG9zZUljb24ubmFtZSA9ICdjbG9zZS1jaXJjbGUnO1xuICAgICAgdGhpcy5jbG9zZUljb24uY2xhc3NOYW1lID0gJ2NsZWFyQnV0dG9uJztcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnJpZ2h0ID0gJzhweCc7XG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5ib3R0b20gPSAnMzAlJztcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmZvbnRTaXplID0gJzE4cHgnO1xuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuY29sb3IgPSAnI0E5QTlBOSc7XG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS56SW5kZXggPSAnNSc7XG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUubm9kZU5hbWUgPT09ICdJT04tSVRFTScpIHtcbiAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzEycHgnO1xuICAgICAgfVxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jbG9zZUljb24pO1xuICAgICAgdGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMuY2xvc2VJY29uLCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggJ2V2ZW50J1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnYnV0dG9uIGNsaWNrcycpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoJycpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5uZ01vZGVsLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnbmdNb2RlbCB2YWx1ZSA9PicsIHZhbHVlKTtcbiAgICAgIHNlbGYuc2VsZWN0ZWREYXRlLmRhdGUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbnRyb2wuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2Zvcm1jb250cm9sIHZhbHVlID0+JywgdmFsdWUpO1xuICAgICAgc2VsZi5zZWxlY3RlZERhdGUuZGF0ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMuaW5wdXREYXRlQ29uZmlnLmNsZWFyQnV0dG9uICE9PSBmYWxzZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IHRoaXMuY29udHJvbC5jb250cm9sLnZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lvbkZvY3VzJylcbiAgcHVibGljIG9uRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNNb2RhbE9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuRGF0ZVBpY2tlcigpO1xuICB9XG5cbiAgYXN5bmMgb3BlbkRhdGVQaWNrZXIoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ29wZW5EYXRlUGlja2VyJyk7XG5cbiAgICBjb25zdCBkYXRlUGlja2VyTW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQsXG4gICAgICBjc3NDbGFzczogJ2xpLWlvbmljNC1kYXRlUGlja2VyJyxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7ICdvYmpDb25maWcnOiB0aGlzLmlucHV0RGF0ZUNvbmZpZywgJ3NlbGVjdGVkRGF0ZSc6IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgfVxuICAgIH0pO1xuICAgIGF3YWl0IGRhdGVQaWNrZXJNb2RhbC5wcmVzZW50KCk7XG5cbiAgICBkYXRlUGlja2VyTW9kYWwub25EaWREaXNtaXNzKClcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhLmRhdGEgJiYgZGF0YS5kYXRhLmRhdGUgJiYgZGF0YS5kYXRhLmRhdGUgIT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IGRhdGEuZGF0YS5kYXRlO1xuICAgICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKGRhdGEuZGF0YS5kYXRlKTtcbiAgICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoZGF0YS5kYXRhLmRhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuXG4iXX0=