UNPKG

@ydalvik/ionic4-datepicker

Version:

ionic4-datepicker inspired by rajeshwar patlolla ionic1 datepicker

197 lines 18.1 kB
/** * @fileoverview added by tsickle * Generated from: lib/li-ionic4-datepicker.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHlkYWx2aWsvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvbGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFO0lBYUUscUNBQ1UsU0FBMEIsRUFDM0IsT0FBZ0IsRUFDaEIsT0FBa0IsRUFDbEIsRUFBYyxFQUNkLFNBQW9CLEVBQ3BCLGlCQUEwQztRQUx6QyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQVRuRCxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFRLEtBQUssQ0FBQztJQVNyQixDQUFDOzs7O0lBRUwsOENBQVE7OztJQUFSO1FBQ0UsbUZBQW1GO1FBRHJGLGlCQXNEQztRQW5EQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENB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OztLQUNOOztnQkF4R0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDckI7Ozs7Z0JBWFEsZUFBZTtnQkFFZixPQUFPO2dCQUFFLFNBQVM7Z0JBSHNCLFVBQVU7Z0JBQUUsU0FBUztnQkFNN0QsdUJBQXVCOzs7a0NBUzdCLEtBQUssU0FBQyxvQkFBb0I7MEJBdUUxQixZQUFZLFNBQUMsVUFBVTs7SUEyQjFCLGtDQUFDO0NBQUEsQUF6R0QsSUF5R0M7U0FwR1ksMkJBQTJCOzs7SUFFdEMsc0RBQWtEOztJQUVsRCxnREFBVTs7SUFDVixtREFBdUI7O0lBQ3ZCLGtEQUF5Qjs7Ozs7SUFHdkIsZ0RBQWtDOztJQUNsQyw4Q0FBdUI7O0lBQ3ZCLDhDQUF5Qjs7SUFDekIseUNBQXFCOztJQUNyQixnREFBMkI7O0lBQzNCLHdEQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE5nTW9kZWwsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbGlJb25pYzREYXRlcGlja2VyXScsXG4gIGV4cG9ydEFzOiAnbGlJb25pYzREYXRlcGlja2VyJyxcbiAgcHJvdmlkZXJzOiBbTmdNb2RlbF0sXG59KVxuZXhwb3J0IGNsYXNzIExpSW9uaWM0RGF0ZXBpY2tlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCdsaUlvbmljNERhdGVwaWNrZXInKSBpbnB1dERhdGVDb25maWc6IGFueTtcblxuICBjbG9zZUljb247XG4gIHNlbGVjdGVkRGF0ZTogYW55ID0ge307XG4gIGlzTW9kYWxPcGVuOiBhbnkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxuICAgIHB1YmxpYyBuZ01vZGVsOiBOZ01vZGVsLFxuICAgIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyByZW5kZXJlcjI6IFJlbmRlcmVyMixcbiAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IElvbmljNERhdGVwaWNrZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2NvbmZpZy55ZWFySW5Bc2NlbmRpbmcgOiAnICsgdGhpcy5pbnB1dERhdGVDb25maWcueWVhckluQXNjZW5kaW5nKTtcblxuICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuY2xvc2VJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW9uLWljb24nKTtcbiAgICAgIHRoaXMuY2xvc2VJY29uLm5hbWUgPSAnY2xvc2UtY2lyY2xlJztcbiAgICAgIHRoaXMuY2xvc2VJY29uLmNsYXNzTmFtZSA9ICdjbGVhckJ1dHRvbic7XG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5yaWdodCA9ICc4cHgnO1xuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzMwJSc7XG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5mb250U2l6ZSA9ICcxOHB4JztcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmNvbG9yID0gJyNBOUE5QTknO1xuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuekluZGV4ID0gJzUnO1xuICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLm5vZGVOYW1lID09PSAnSU9OLUlURU0nKSB7XG4gICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmJvdHRvbSA9ICcxMnB4JztcbiAgICAgIH1cbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMuY2xvc2VJY29uKTtcbiAgICAgIHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLmNsb3NlSWNvbiwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIERvIHNvbWV0aGluZyB3aXRoICdldmVudCdcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2J1dHRvbiBjbGlja3MnKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5uZ01vZGVsLnVwZGF0ZS5lbWl0KCcnKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubmdNb2RlbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coJ25nTW9kZWwgdmFsdWUgPT4nLCB2YWx1ZSk7XG4gICAgICBzZWxmLnNlbGVjdGVkRGF0ZS5kYXRlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5pbnB1dERhdGVDb25maWcuY2xlYXJCdXR0b24gIT09IGZhbHNlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdmb3JtY29udHJvbCB2YWx1ZSA9PicsIHZhbHVlKTtcbiAgICAgIHNlbGYuc2VsZWN0ZWREYXRlLmRhdGUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSB0aGlzLmNvbnRyb2wuY29udHJvbC52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpb25Gb2N1cycpXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xuICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzTW9kYWxPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3BlbkRhdGVQaWNrZXIoKTtcbiAgfVxuXG4gIGFzeW5jIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdvcGVuRGF0ZVBpY2tlcicpO1xuXG4gICAgY29uc3QgZGF0ZVBpY2tlck1vZGFsID0gYXdhaXQgdGhpcy5tb2RhbEN0cmwuY3JlYXRlKHtcbiAgICAgIGNvbXBvbmVudDogSW9uaWM0RGF0ZXBpY2tlck1vZGFsQ29tcG9uZW50LFxuICAgICAgY3NzQ2xhc3M6ICdsaS1pb25pYzQtZGF0ZVBpY2tlcicsXG4gICAgICBjb21wb25lbnRQcm9wczogeyAnb2JqQ29uZmlnJzogdGhpcy5pbnB1dERhdGVDb25maWcsICdzZWxlY3RlZERhdGUnOiB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlIH1cbiAgICB9KTtcbiAgICBhd2FpdCBkYXRlUGlja2VyTW9kYWwucHJlc2VudCgpO1xuXG4gICAgZGF0ZVBpY2tlck1vZGFsLm9uRGlkRGlzbWlzcygpXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS5kYXRlICYmIGRhdGEuZGF0YS5kYXRlICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSBkYXRhLmRhdGEuZGF0ZTtcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShkYXRhLmRhdGEuZGF0ZSk7XG4gICAgICAgICAgdGhpcy5uZ01vZGVsLnVwZGF0ZS5lbWl0KGRhdGEuZGF0YS5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cblxuIl19