diff --git a/dist/ionic4-datepicker/LICENSE b/dist/ionic4-datepicker/LICENSE new file mode 100644 index 0000000..6089c93 --- /dev/null +++ b/dist/ionic4-datepicker/LICENSE @@ -0,0 +1,46 @@ +The MIT License + +Copyright Logistic Infotech + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/logisticinfotech/ionic4-datepicker + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/dist/ionic4-datepicker/README.md b/dist/ionic4-datepicker/README.md new file mode 100644 index 0000000..28641b5 --- /dev/null +++ b/dist/ionic4-datepicker/README.md @@ -0,0 +1,17 @@ + +# Ionic4 DatePicker + +Please check this blog for documentation [this link](https://www.logisticinfotech.com/blog/ionic4-datepicker-component) + +Here is how it looks + + + +# Breaking change in version 1.0.8 +Due to issue in date formate `dd-MM-yyyy`, we have used momentjs to solve it. +We are moving away from angular DatePipe so now only [momentjs date formates](https://momentjs.com/docs/) are valid. + +so people who are using `dd` will require change it to `DD` + +## Credits to +rajeshwar patlolla's Ionic1 Datepicker \ No newline at end of file diff --git a/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js new file mode 100644 index 0000000..8512809 --- /dev/null +++ b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js @@ -0,0 +1,1325 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('moment'), require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@ionic/angular')) : + typeof define === 'function' && define.amd ? define('@logisticinfotech/ionic4-datepicker', ['exports', 'moment', '@angular/common', '@angular/core', '@angular/forms', '@ionic/angular'], factory) : + (factory((global.logisticinfotech = global.logisticinfotech || {}, global.logisticinfotech['ionic4-datepicker'] = {}),global.moment_,global.ng.common,global.ng.core,global.ng.forms,global.angular)); +}(this, (function (exports,moment_,common,i0,forms,angular) { 'use strict'; + + /** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.service.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var Ionic4DatepickerService = /** @class */ (function () { + function Ionic4DatepickerService() { + this.isModalOpen = false; + } + Ionic4DatepickerService.decorators = [ + { type: i0.Injectable, args: [{ + providedIn: 'root' + },] } + ]; + /** @nocollapse */ + Ionic4DatepickerService.ctorParameters = function () { return []; }; + /** @nocollapse */ Ionic4DatepickerService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Ionic4DatepickerService_Factory() { return new Ionic4DatepickerService(); }, token: Ionic4DatepickerService, providedIn: "root" }); + return Ionic4DatepickerService; + }()); + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + function __awaiter(thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { + step(generator.next(value)); + } + catch (e) { + reject(e); + } } + function rejected(value) { try { + step(generator["throw"](value)); + } + catch (e) { + reject(e); + } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + function __generator(thisArg, body) { + var _ = { label: 0, sent: function () { if (t[0] & 1) + throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) + throw new TypeError("Generator is already executing."); + while (_) + try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) + return t; + if (y = 0, t) + op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) + _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } + catch (e) { + op = [6, e]; + y = 0; + } + finally { + f = t = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + } + function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) + return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) + ar.push(r.value); + } + catch (error) { + e = { error: error }; + } + finally { + try { + if (r && !r.done && (m = i["return"])) + m.call(i); + } + finally { + if (e) + throw e.error; + } + } + return ar; + } + function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + } + + /** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var moment = moment_; + var Ionic4DatepickerModalComponent = /** @class */ (function () { + function Ionic4DatepickerModalComponent(navParams, modalCtrl, datePickerService) { + this.navParams = navParams; + this.modalCtrl = modalCtrl; + this.datePickerService = datePickerService; + // inputs + this.mainObj = {}; + this.selectedDate = {}; + // component variables + this.selctedDateEpoch = 0; + this.disabledDates = []; + this.highlightedDates = {}; + this.disableWeekdays = []; + this.data = { + currentMonth: '', + currentYear: '', + currentMonthSelected: '' + }; + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; + this.weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S']; + this.yearsList = []; + this.daysList = []; + this.yearInAscending = false; + this.momentLocale = 'en-US'; + // month year scroll variables + this.isMonthYearSelectorOpen = false; + this.scrollingMonthOrYearArray = []; + this.isSelectedDateFound = false; + this.today = this.resetHMSM(new Date()).getTime(); + if (this.navParams.get('selectedDate')) { + // console.log('Selected date =>', this.navParams.get('selectedDate')); + this.selectedDate.date = this.navParams.get('selectedDate'); + this.isSelectedDateFound = true; + } + this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig')); + } + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = true; + this.initDatePicker(); + }; + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = false; + }; + // Reset the hours, minutes, seconds and milli seconds + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.resetHMSM = + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + currentDate.setMilliseconds(0); + return currentDate; + }; + // this method change month or year list to dateList + // this method change month or year list to dateList + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeToDateList = + // this method change month or year list to dateList + /** + * @return {?} + */ + function () { + // console.log('changeToDateList'); + this.isMonthYearSelectorOpen = false; + }; + // Virtual scroll create for select year and month + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.selectMonthYear = + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + function (isMonthSelect) { + // console.log('selectMonthYear', i); + this.isMonthYearSelectorOpen = true; + this.isMonthSelect = isMonthSelect; + this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList; + this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear; + /** @type {?} */ + var index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth); + /** @type {?} */ + var iditem = index + 'list'; + setTimeout(( /** + * @return {?} + */function () { + document.getElementById(iditem).scrollIntoView(); + }), 100); + }; + // select month or year + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.onChangeMonthYear = + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + function (monthYear) { + // console.log('onChangeMonthYear', monthYear); + if (monthYear) { + if (this.isMonthSelect) { + this.data.currentMonth = monthYear; + this.selectedYearOrMonth = this.data.currentMonth; + /** @type {?} */ + var monthNumber = this.monthsList.indexOf(this.data.currentMonth); + this.currentDate.setDate(1); + this.currentDate.setMonth(monthNumber); + } + else { + this.data.currentYear = monthYear; + this.selectedYearOrMonth = this.data.currentYear; + this.currentDate.setFullYear(this.data.currentYear); + this.refreshDateList(this.currentDate); + } + this.refreshDateList(this.currentDate); + } + this.isMonthYearSelectorOpen = false; + }; + // Previous month + // Previous month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.prevMonth = + // Previous month + /** + * @return {?} + */ + function () { + // console.log('prevNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) { + return; + } + if (currentMonth === 1) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setMonth(currentMonth - 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // Next month + // Next month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.nextMonth = + // Next month + /** + * @return {?} + */ + function () { + // console.log('nextNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear >= this.yearsList[0] && currentMonth === 11) { + return; + } + if (currentMonth === 11) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setDate(1); + this.currentDate.setMonth(currentMonth + 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // changeDaySelected ( day selection changes ) + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeDaySelected = + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + function () { + // console.log('changeDaySelected'); + /** @type {?} */ + var newSelectedDate = new Date(this.selctedDateEpoch); + newSelectedDate.setMonth(this.currentDate.getMonth()); + newSelectedDate.setYear(this.currentDate.getFullYear()); + this.selctedDateEpoch = newSelectedDate.getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Date selected + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.dateSelected = + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('dateSelected =>', selectedDate); + if (selectedDate && !selectedDate.disabled) { + if (!selectedDate || Object.keys(selectedDate).length === 0) { + return; + } + this.isSelectedDateFound = true; + this.selctedDateEpoch = selectedDate.epoch; + this.selectedDateString = this.formatDate(); + if (this.mainObj.closeOnSelect) { + this.closeModal(this.selctedDateEpoch); + } + } + }; + // Set today as date for the modal + // Set today as date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerTodayDate = + // Set today as date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerTodayDate'); + /** @type {?} */ + var today = new Date(this.today); + /** @type {?} */ + var today_obj = { + date: today.getDate(), + month: today.getMonth(), + year: today.getFullYear(), + day: today.getDay(), + epoch: today.getTime(), + disabled: false + }; + this.dateSelected(today_obj); + this.refreshDateList(new Date()); + this.selctedDateEpoch = this.resetHMSM(today).getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Set date for the modal + // Set date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerDate = + // Set date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerDate'); + this.closeModal(this.selctedDateEpoch); + }; + // Setting the disabled dates list. + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setDisabledDates = + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + // console.log('setDisabledDates =>', obj); + if (!obj.disabledDates || obj.disabledDates.length === 0) { + this.disabledDates = []; + } + else { + this.disabledDates = []; + for (var i = 0; i < obj.disabledDates.length; i++) { + // val = resetHMSM(new Date(val)); + this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime()); + } + } + }; + // Set hightlighted dates + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setHightlightedDates = + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + if (!obj.highlightedDates || obj.highlightedDates.length === 0) { + this.highlightedDates = {}; + } + else { + this.highlightedDates = {}; + for (var i = 0; i < obj.highlightedDates.length; i++) { + /** @type {?} */ + var hDate = obj.highlightedDates[i].date; + /** @type {?} */ + var hColor = obj.highlightedDates[i].color; + /** @type {?} */ + var hFontColor = obj.highlightedDates[i].fontColor; + /** @type {?} */ + var hDateTime = this.resetHMSM(new Date(hDate)).getTime(); + this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor }; + } + } + }; + // Refresh the list of the dates of a month + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.refreshDateList = + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + // console.log('refreshDateList =>', currentDate); + currentDate = this.resetHMSM(currentDate); + this.currentDate = currentDate; + /** @type {?} */ + var firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate(); + /** @type {?} */ + var lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate(); + this.monthsList = []; + if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) { + this.monthsList = this.mainObj.monthsList; + } + else { + this.monthsList = this.monthsList; + } + this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to); + this.daysList = []; + /** @type {?} */ + var tempDate; + /** @type {?} */ + var disabled; + this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime(); + this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime(); + for (var i = firstDay; i <= lastDay; i++) { + tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i); + disabled = false; + /** @type {?} */ + var day = tempDate.getDay(); + if (this.disableWeekdays.length > 0) { + if (this.disableWeekdays.indexOf(day) >= 0) { + disabled = this.disableWeekdays.indexOf(day) >= 0; + } + else { + disabled = false; + } + } + if (this.disabledDates.length > 0) { + if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) { + disabled = true; + } + } + if (this.fromDate && !disabled) { + disabled = (tempDate.getTime() < this.fromDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + if (this.toDate && !disabled) { + disabled = (tempDate.getTime() > this.toDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + /** @type {?} */ + var hightLightDate = this.highlightedDates[tempDate.getTime()]; + /** @type {?} */ + var fontColor = null; + if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) { + fontColor = this.mainObj.isSundayHighlighted.fontColor; + } + else if (hightLightDate && hightLightDate.fontColor) { + fontColor = hightLightDate.fontColor; + } + this.daysList.push({ + date: tempDate.getDate(), + month: tempDate.getMonth(), + year: tempDate.getFullYear(), + day: tempDate.getDay(), + epoch: tempDate.getTime(), + disabled: disabled, + color: hightLightDate && hightLightDate.color ? hightLightDate.color : null, + fontColor: fontColor + // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null + }); + } + // To set Monday as the first day of the week. + /** @type {?} */ + var firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst; + firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday; + for (var j = 0; j < firstDayMonday; j++) { + this.daysList.unshift({}); + } + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()]; + this.data.currentYear = currentDate.getFullYear(); + this.data.currentMonthSelected = this.data.currentMonth; + this.currentYearSelected = this.data.currentYear; + this.numColumns = 7; + }; + // Setting up the initial object + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setInitialObj = + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + function (ipObj) { + // console.log('setInitialObj =>', ipObj); + this.mainObj = ipObj; + if (this.isSelectedDateFound) { + this.isSelectedDateFound = true; + this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime(); + } + this.selectedDateString = this.formatDate(); + if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) { + this.weeksList = this.mainObj.weeksList; + } + if (this.mainObj.mondayFirst) { + this.weeksList.push(this.mainObj.weeksList.shift()); + } + if (this.mainObj.yearInAscending) { + this.yearInAscending = this.mainObj.yearInAscending; + } + if (this.mainObj.momentLocale) { + this.momentLocale = this.mainObj.momentLocale; + } + this.disableWeekdays = this.mainObj.disableWeekDays; + this.setDisabledDates(this.mainObj); + this.refreshDateList(this.mainObj.inputDate); + }; + // for dismiss modal + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeModal = + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('closeModal => ', selectedDate); + this.modalCtrl.getTop(); + /** @type {?} */ + var formattedDate = moment(selectedDate).format(this.mainObj.dateFormat); + this.modalCtrl.dismiss({ 'date': formattedDate }); + }; + // close modal button + // close modal button + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeIonicDatePickerModal = + // close modal button + /** + * @return {?} + */ + function () { + // console.log('closeIonicDatePickerModal'); + this.closeModal(null); + }; + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.getYearsList = + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + function (from, to) { + // console.log('getYearsList =>', from, to); + /** @type {?} */ + var yearsList = []; + /** @type {?} */ + var minYear = 1950; + /** @type {?} */ + var maxYear = new Date().getFullYear() + 1; + minYear = from ? new Date(from).getFullYear() : minYear; + maxYear = to ? new Date(to).getFullYear() : maxYear; + // console.log('getYearsList: ', this.yearInAscending); + if (this.yearInAscending) { + for (var i = minYear; i <= maxYear; i++) { + yearsList.push(i); + } + } + else { + for (var i = maxYear; i >= minYear; i--) { + yearsList.push(i); + } + } + return yearsList; + }; + // Init Date-Picker + // Init Date-Picker + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePicker = + // Init Date-Picker + /** + * @return {?} + */ + function () { + this.fromDate = ''; + this.toDate = ''; + // $scope.mainObj = angular.extend({}, config, ipObj); + if (this.mainObj.from) { + this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime(); + } + if (this.mainObj.to) { + this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime(); + } + // if (ipObj.disableWeekdays && this.config.disableWeekdays) { + // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays); + // } + this.setInitialObj(this.mainObj); + }; + // Init DatePicker Object + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePickerObj = + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + function (config) { + // const config = this.mainObj; + if (config.inputDate && !this.selectedDate.date) { + this.isSelectedDateFound = true; + this.selectedDate.date = config.inputDate; + } + /** @type {?} */ + var objConfig = {}; + objConfig.from = config.fromDate ? config.fromDate : ''; + objConfig.to = config.toDate ? config.toDate : ''; + objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton; + objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false; + objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : []; + objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false; + objConfig.setLabel = config.setLabel ? config.setLabel : 'Set'; + objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today'; + objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close'; + objConfig.disabledDates = config.disabledDates ? config.disabledDates : []; + objConfig.titleLabel = config.titleLabel ? config.titleLabel : null; + objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList; + objConfig.monthsList = __spread(objConfig.monthsList); + objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList; + objConfig.weeksList = __spread(objConfig.weeksList); + objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY'; + // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale()); + objConfig.clearButton = config.clearButton ? config.clearButton : false; + objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false; + objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US'; + moment.locale(objConfig.momentLocale); + objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date(); + objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false; + objConfig.btnProperties = {}; + if (config.btnProperties) { + /** @type {?} */ + var btnProperties = config.btnProperties; + objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block'; + objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid'; + objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default'; + objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : ''; + objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false; + objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false; + } + else { + objConfig.btnProperties.expand = 'block'; + objConfig.btnProperties.fill = 'solid'; + objConfig.btnProperties.size = 'default'; + objConfig.btnProperties.disabled = false; + objConfig.btnProperties.strong = false; + } + objConfig.arrowNextPrev = {}; + if (config.arrowNextPrev) { + /** @type {?} */ + var arrowNextPrev = config.arrowNextPrev; + objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false; + objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false; + } + objConfig.highlightedDates = []; + if (config.highlightedDates && config.highlightedDates.length > 0) { + objConfig.highlightedDates = config.highlightedDates; + this.setHightlightedDates(objConfig); + } + objConfig.isSundayHighlighted = {}; + if (config.isSundayHighlighted) { + /** @type {?} */ + var isSundayHighlighted = config.isSundayHighlighted; + objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null; + } + // console.log('config =>', objConfig); + return objConfig; + }; + // Format date + // Format date + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.formatDate = + // Format date + /** + * @return {?} + */ + function () { + // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch)); + return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat); + }; + Ionic4DatepickerModalComponent.decorators = [ + { type: i0.Component, args: [{ + selector: 'li-ionic4-datepicker-modal', + template: "\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n", + styles: [":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerModalComponent.ctorParameters = function () { + return [ + { type: angular.NavParams }, + { type: angular.ModalController }, + { type: Ionic4DatepickerService } + ]; + }; + Ionic4DatepickerModalComponent.propDecorators = { + content: [{ type: i0.ViewChild, args: [angular.IonContent, { static: false },] }] + }; + return Ionic4DatepickerModalComponent; + }()); + + /** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** @type {?} */ + var noop = ( /** + * @return {?} + */function () { + }); + /** @type {?} */ + var CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { + provide: forms.NG_VALUE_ACCESSOR, + useExisting: i0.forwardRef(( /** + * @return {?} + */function () { return Ionic4DatepickerComponent; })), + multi: true + }; + var Ionic4DatepickerComponent = /** @class */ (function () { + function Ionic4DatepickerComponent(modalCtrl, el, renderer2) { + this.modalCtrl = modalCtrl; + this.el = el; + this.renderer2 = renderer2; + this.selectedDate = {}; + this.innerValue = ''; + // Placeholders for the callbacks which are later provided + // by the Control Value Accessor + this.onTouchedCallback = noop; + this.onChangeCallback = noop; + } + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + 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 = '0px'; + 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 = '30%'; + } + this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;'); + this.el.nativeElement.appendChild(this.closeIcon); + this.renderer2.listen(this.closeIcon, 'click', ( /** + * @param {?} event + * @return {?} + */function (event) { + // Do something with 'event' + // console.log('button clicks'); + _this.selectedDate = new Date(); + _this.value = ''; + })); + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onChangeValue = /** + * @param {?} value + * @return {?} + */ + function (value) { + // console.log('onChangeValue =>' , value); + if (this.inputDateConfig.clearButton !== false) { + if (!value) { + this.closeIcon.style.visibility = 'hidden'; + } + else { + this.closeIcon.style.visibility = 'visible'; + } + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.openDatePicker = /** + * @param {?} value + * @return {?} + */ + function (value) { + return __awaiter(this, void 0, void 0, function () { + var datePickerModal; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // console.log('openDatePicker'); + if (value) { + this.selectedDate.date = value; + } + 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) { + // console.log(data); + if (data.data && data.data.date && data.data.date !== 'Invalid date') { + _this.selectedDate.date = data.data.date; + _this.value = data.data.date; + } + })); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(Ionic4DatepickerComponent.prototype, "value", { + // get accessor + get: + // get accessor + /** + * @return {?} + */ + function () { + return this.innerValue; + }, + // set accessor including call the onchange callback + set: + // set accessor including call the onchange callback + /** + * @param {?} v + * @return {?} + */ + function (v) { + if (v !== this.innerValue) { + this.innerValue = v; + this.onChangeCallback(v); + } + this.onChangeValue(v); + }, + enumerable: true, + configurable: true + }); + // Set touched on blur + // Set touched on blur + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onBlur = + // Set touched on blur + /** + * @return {?} + */ + function () { + this.onTouchedCallback(); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.writeValue = + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + function (value) { + if (value !== this.innerValue) { + this.innerValue = value; + } + this.onChangeValue(value); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnChange = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onChangeCallback = fn; + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnTouched = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onTouchedCallback = fn; + }; + Ionic4DatepickerComponent.decorators = [ + { type: i0.Component, args: [{ + selector: 'li-ionic4-datepicker', + template: "", + providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], + styles: [":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerComponent.ctorParameters = function () { + return [ + { type: angular.ModalController }, + { type: i0.ElementRef }, + { type: i0.Renderer2 } + ]; + }; + Ionic4DatepickerComponent.propDecorators = { + inputDateConfig: [{ type: i0.Input }] + }; + return Ionic4DatepickerComponent; + }()); + + /** + * @fileoverview added by tsickle + * Generated from: lib/li-ionic4-datepicker.directive.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + 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 __awaiter(this, void 0, void 0, function () { + var datePickerModal; + var _this = this; + return __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: i0.Directive, args: [{ + selector: '[liIonic4Datepicker]', + exportAs: 'liIonic4Datepicker', + providers: [forms.NgModel], + },] } + ]; + /** @nocollapse */ + LiIonic4DatepickerDirective.ctorParameters = function () { + return [ + { type: angular.ModalController }, + { type: forms.NgModel }, + { type: forms.NgControl }, + { type: i0.ElementRef }, + { type: i0.Renderer2 }, + { type: Ionic4DatepickerService } + ]; + }; + LiIonic4DatepickerDirective.propDecorators = { + inputDateConfig: [{ type: i0.Input, args: ['liIonic4Datepicker',] }], + onFocus: [{ type: i0.HostListener, args: ['ionFocus',] }] + }; + return LiIonic4DatepickerDirective; + }()); + + /** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.module.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + var Ionic4DatepickerModule = /** @class */ (function () { + function Ionic4DatepickerModule() { + } + Ionic4DatepickerModule.decorators = [ + { type: i0.NgModule, args: [{ + imports: [ + common.CommonModule, + forms.FormsModule, + angular.IonicModule + ], + declarations: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent + ], + exports: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent, + common.CommonModule, + forms.FormsModule + ], + entryComponents: [ + // Ionic4DatepickerComponent, + Ionic4DatepickerModalComponent + ], + providers: [] + },] } + ]; + return Ionic4DatepickerModule; + }()); + + /** + * @fileoverview added by tsickle + * Generated from: public_api.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + + /** + * @fileoverview added by tsickle + * Generated from: logisticinfotech-ionic4-datepicker.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + + exports.Ionic4DatepickerService = Ionic4DatepickerService; + exports.CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR; + exports.Ionic4DatepickerComponent = Ionic4DatepickerComponent; + exports.Ionic4DatepickerModule = Ionic4DatepickerModule; + exports.Ionic4DatepickerModalComponent = Ionic4DatepickerModalComponent; + exports.ɵa = LiIonic4DatepickerDirective; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + +//# sourceMappingURL=logisticinfotech-ionic4-datepicker.umd.js.map \ No newline at end of file diff --git a/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js.map b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js.map new file mode 100644 index 0000000..6427990 --- /dev/null +++ b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logisticinfotech-ionic4-datepicker.umd.js.map","sources":["ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.service.ts","node_modules/tslib/tslib.es6.js","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/li-ionic4-datepicker.directive.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Ionic4DatepickerService {\r\n\r\n isModalOpen = false;\r\n\r\n constructor() { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { NavParams, ModalController, IonContent } from '@ionic/angular';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from '../ionic4-datepicker.service';\r\nconst moment = moment_;\r\n\r\n@Component({\r\n selector: 'li-ionic4-datepicker-modal',\r\n templateUrl: './ionic4-datepicker-modal.component.html',\r\n styleUrls: ['./ionic4-datepicker-modal.component.scss']\r\n})\r\nexport class Ionic4DatepickerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(IonContent, {static: false}) content: IonContent;\r\n\r\n currentDate;\r\n today;\r\n\r\n // inputs\r\n mainObj: any = {};\r\n selectedDate: any = {};\r\n\r\n // component variables\r\n selctedDateEpoch = 0;\r\n firstDayEpoch;\r\n lastDayEpoch;\r\n\r\n disabledDates = [];\r\n highlightedDates: any = {};\r\n\r\n fromDate;\r\n toDate;\r\n disableWeekdays = [];\r\n data: any = {\r\n currentMonth: '',\r\n currentYear: '',\r\n currentMonthSelected: ''\r\n };\r\n currentYearSelected;\r\n numColumns;\r\n\r\n rows = [0, 7, 14, 21, 28, 35];\r\n cols = [0, 1, 2, 3, 4, 5, 6];\r\n monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\r\n weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n yearsList = [];\r\n daysList = [];\r\n yearInAscending = false;\r\n momentLocale = 'en-US';\r\n selectedDateString;\r\n\r\n // month year scroll variables\r\n isMonthYearSelectorOpen = false;\r\n selectedYearOrMonth;\r\n isMonthSelect;\r\n scrollingMonthOrYearArray: any = [];\r\n\r\n isSelectedDateFound = false;\r\n\r\n constructor(\r\n private navParams: NavParams,\r\n private modalCtrl: ModalController,\r\n public datePickerService: Ionic4DatepickerService\r\n ) {\r\n this.today = this.resetHMSM(new Date()).getTime();\r\n if (this.navParams.get('selectedDate')) {\r\n // console.log('Selected date =>', this.navParams.get('selectedDate'));\r\n this.selectedDate.date = this.navParams.get('selectedDate');\r\n this.isSelectedDateFound = true;\r\n }\r\n this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig'));\r\n }\r\n\r\n ngOnInit() {\r\n this.datePickerService.isModalOpen = true;\r\n this.initDatePicker();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.datePickerService.isModalOpen = false;\r\n }\r\n\r\n // Reset the hours, minutes, seconds and milli seconds\r\n resetHMSM(currentDate) {\r\n currentDate.setHours(0);\r\n currentDate.setMinutes(0);\r\n currentDate.setSeconds(0);\r\n currentDate.setMilliseconds(0);\r\n return currentDate;\r\n }\r\n\r\n // this method change month or year list to dateList\r\n changeToDateList() {\r\n // console.log('changeToDateList');\r\n this.isMonthYearSelectorOpen = false;\r\n }\r\n\r\n // Virtual scroll create for select year and month\r\n selectMonthYear(isMonthSelect) {\r\n // console.log('selectMonthYear', i);\r\n this.isMonthYearSelectorOpen = true;\r\n\r\n this.isMonthSelect = isMonthSelect;\r\n this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList;\r\n this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear;\r\n\r\n const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth);\r\n const iditem = index + 'list';\r\n\r\n setTimeout(() => {\r\n document.getElementById(iditem).scrollIntoView();\r\n }, 100);\r\n }\r\n\r\n // select month or year\r\n onChangeMonthYear(monthYear) {\r\n // console.log('onChangeMonthYear', monthYear);\r\n if (monthYear) {\r\n if (this.isMonthSelect) {\r\n this.data.currentMonth = monthYear;\r\n this.selectedYearOrMonth = this.data.currentMonth;\r\n const monthNumber = this.monthsList.indexOf(this.data.currentMonth);\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(monthNumber);\r\n } else {\r\n this.data.currentYear = monthYear;\r\n this.selectedYearOrMonth = this.data.currentYear;\r\n this.currentDate.setFullYear(this.data.currentYear);\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.isMonthYearSelectorOpen = false;\r\n\r\n }\r\n\r\n // Previous month\r\n prevMonth() {\r\n // console.log('prevNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) {\r\n return;\r\n }\r\n if (currentMonth === 1) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setMonth(currentMonth - 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // Next month\r\n nextMonth() {\r\n // console.log('nextNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear >= this.yearsList[0] && currentMonth === 11) {\r\n return;\r\n }\r\n if (currentMonth === 11) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(currentMonth + 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // changeDaySelected ( day selection changes )\r\n changeDaySelected() {\r\n // console.log('changeDaySelected');\r\n const newSelectedDate: any = new Date(this.selctedDateEpoch);\r\n newSelectedDate.setMonth(this.currentDate.getMonth());\r\n newSelectedDate.setYear(this.currentDate.getFullYear());\r\n this.selctedDateEpoch = newSelectedDate.getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Date selected\r\n dateSelected(selectedDate) {\r\n // console.log('dateSelected =>', selectedDate);\r\n if (selectedDate && !selectedDate.disabled) {\r\n if (!selectedDate || Object.keys(selectedDate).length === 0) { return; }\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = selectedDate.epoch;\r\n this.selectedDateString = this.formatDate();\r\n if (this.mainObj.closeOnSelect) {\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n }\r\n }\r\n\r\n // Set today as date for the modal\r\n setIonicDatePickerTodayDate() {\r\n // console.log('setIonicDatePickerTodayDate');\r\n const today = new Date(this.today);\r\n const today_obj = {\r\n date: today.getDate(),\r\n month: today.getMonth(),\r\n year: today.getFullYear(),\r\n day: today.getDay(),\r\n epoch: today.getTime(),\r\n disabled: false\r\n };\r\n this.dateSelected(today_obj);\r\n this.refreshDateList(new Date());\r\n this.selctedDateEpoch = this.resetHMSM(today).getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Set date for the modal\r\n setIonicDatePickerDate() {\r\n // console.log('setIonicDatePickerDate');\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Setting the disabled dates list.\r\n setDisabledDates(obj) {\r\n // console.log('setDisabledDates =>', obj);\r\n if (!obj.disabledDates || obj.disabledDates.length === 0) {\r\n this.disabledDates = [];\r\n } else {\r\n this.disabledDates = [];\r\n for (let i = 0; i < obj.disabledDates.length; i++) {\r\n // val = resetHMSM(new Date(val));\r\n this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime());\r\n }\r\n }\r\n }\r\n\r\n // Set hightlighted dates\r\n setHightlightedDates(obj) {\r\n if (!obj.highlightedDates || obj.highlightedDates.length === 0) {\r\n this.highlightedDates = {};\r\n } else {\r\n this.highlightedDates = {};\r\n for (let i = 0; i < obj.highlightedDates.length; i++) {\r\n const hDate = obj.highlightedDates[i].date;\r\n const hColor = obj.highlightedDates[i].color;\r\n const hFontColor = obj.highlightedDates[i].fontColor;\r\n const hDateTime = this.resetHMSM(new Date(hDate)).getTime();\r\n this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor };\r\n }\r\n }\r\n }\r\n\r\n // Refresh the list of the dates of a month\r\n refreshDateList(currentDate) {\r\n // console.log('refreshDateList =>', currentDate);\r\n currentDate = this.resetHMSM(currentDate);\r\n this.currentDate = currentDate;\r\n\r\n const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate();\r\n const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate();\r\n\r\n this.monthsList = [];\r\n if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) {\r\n this.monthsList = this.mainObj.monthsList;\r\n } else {\r\n this.monthsList = this.monthsList;\r\n }\r\n\r\n this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to);\r\n\r\n this.daysList = [];\r\n let tempDate, disabled;\r\n this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime();\r\n this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime();\r\n\r\n for (let i = firstDay; i <= lastDay; i++) {\r\n tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i);\r\n disabled = false;\r\n const day = tempDate.getDay();\r\n if (this.disableWeekdays.length > 0) {\r\n if (this.disableWeekdays.indexOf(day) >= 0) {\r\n disabled = this.disableWeekdays.indexOf(day) >= 0;\r\n } else {\r\n disabled = false;\r\n }\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) {\r\n disabled = true;\r\n }\r\n }\r\n\r\n if (this.fromDate && !disabled) {\r\n disabled = (tempDate.getTime() < this.fromDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n if (this.toDate && !disabled) {\r\n disabled = (tempDate.getTime() > this.toDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n\r\n const hightLightDate = this.highlightedDates[tempDate.getTime()];\r\n\r\n let fontColor = null;\r\n\r\n if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) {\r\n fontColor = this.mainObj.isSundayHighlighted.fontColor;\r\n } else if (hightLightDate && hightLightDate.fontColor) {\r\n fontColor = hightLightDate.fontColor;\r\n }\r\n\r\n this.daysList.push({\r\n date: tempDate.getDate(),\r\n month: tempDate.getMonth(),\r\n year: tempDate.getFullYear(),\r\n day: tempDate.getDay(),\r\n epoch: tempDate.getTime(),\r\n disabled: disabled,\r\n color: hightLightDate && hightLightDate.color ? hightLightDate.color : null,\r\n fontColor: fontColor\r\n // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null\r\n });\r\n }\r\n\r\n // To set Monday as the first day of the week.\r\n let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst;\r\n firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday;\r\n for (let j = 0; j < firstDayMonday; j++) {\r\n this.daysList.unshift({});\r\n }\r\n this.rows = [0, 7, 14, 21, 28, 35];\r\n this.cols = [0, 1, 2, 3, 4, 5, 6];\r\n this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()];\r\n this.data.currentYear = currentDate.getFullYear();\r\n this.data.currentMonthSelected = this.data.currentMonth;\r\n this.currentYearSelected = this.data.currentYear;\r\n this.numColumns = 7;\r\n }\r\n\r\n // Setting up the initial object\r\n setInitialObj(ipObj) {\r\n // console.log('setInitialObj =>', ipObj);\r\n this.mainObj = ipObj;\r\n if (this.isSelectedDateFound) {\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime();\r\n }\r\n\r\n this.selectedDateString = this.formatDate();\r\n\r\n if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) {\r\n this.weeksList = this.mainObj.weeksList;\r\n }\r\n if (this.mainObj.mondayFirst) {\r\n this.weeksList.push(this.mainObj.weeksList.shift());\r\n }\r\n if (this.mainObj.yearInAscending) {\r\n this.yearInAscending = this.mainObj.yearInAscending;\r\n }\r\n if (this.mainObj.momentLocale) {\r\n this.momentLocale = this.mainObj.momentLocale;\r\n }\r\n this.disableWeekdays = this.mainObj.disableWeekDays;\r\n this.setDisabledDates(this.mainObj);\r\n this.refreshDateList(this.mainObj.inputDate);\r\n }\r\n\r\n // for dismiss modal\r\n closeModal(selectedDate) {\r\n // console.log('closeModal => ', selectedDate);\r\n this.modalCtrl.getTop();\r\n const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat);\r\n this.modalCtrl.dismiss({ 'date': formattedDate });\r\n }\r\n\r\n // close modal button\r\n closeIonicDatePickerModal() {\r\n // console.log('closeIonicDatePickerModal');\r\n this.closeModal(null);\r\n }\r\n\r\n // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER )\r\n getYearsList(from, to) {\r\n // console.log('getYearsList =>', from, to);\r\n const yearsList = [];\r\n let minYear = 1950;\r\n let maxYear = new Date().getFullYear() + 1;\r\n minYear = from ? new Date(from).getFullYear() : minYear;\r\n maxYear = to ? new Date(to).getFullYear() : maxYear;\r\n // console.log('getYearsList: ', this.yearInAscending);\r\n if (this.yearInAscending) {\r\n for (let i = minYear; i <= maxYear; i++) {\r\n yearsList.push(i);\r\n }\r\n } else {\r\n for (let i = maxYear; i >= minYear; i--) {\r\n yearsList.push(i);\r\n }\r\n }\r\n return yearsList;\r\n }\r\n\r\n // Init Date-Picker\r\n initDatePicker() {\r\n this.fromDate = '';\r\n this.toDate = '';\r\n // $scope.mainObj = angular.extend({}, config, ipObj);\r\n if (this.mainObj.from) {\r\n this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime();\r\n }\r\n if (this.mainObj.to) {\r\n this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime();\r\n }\r\n // if (ipObj.disableWeekdays && this.config.disableWeekdays) {\r\n // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays);\r\n // }\r\n this.setInitialObj(this.mainObj);\r\n }\r\n\r\n // Init DatePicker Object\r\n initDatePickerObj(config) {\r\n // const config = this.mainObj;\r\n\r\n if (config.inputDate && !this.selectedDate.date) {\r\n this.isSelectedDateFound = true;\r\n this.selectedDate.date = config.inputDate;\r\n }\r\n\r\n const objConfig: any = {};\r\n objConfig.from = config.fromDate ? config.fromDate : '';\r\n objConfig.to = config.toDate ? config.toDate : '';\r\n objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton;\r\n objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false;\r\n objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : [];\r\n objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false;\r\n objConfig.setLabel = config.setLabel ? config.setLabel : 'Set';\r\n objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today';\r\n objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close';\r\n objConfig.disabledDates = config.disabledDates ? config.disabledDates : [];\r\n objConfig.titleLabel = config.titleLabel ? config.titleLabel : null;\r\n\r\n objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList;\r\n objConfig.monthsList = [...objConfig.monthsList];\r\n\r\n objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList;\r\n objConfig.weeksList = [...objConfig.weeksList];\r\n\r\n objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY';\r\n // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale());\r\n\r\n objConfig.clearButton = config.clearButton ? config.clearButton : false;\r\n\r\n objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false;\r\n objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US';\r\n\r\n moment.locale(objConfig.momentLocale);\r\n objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date();\r\n\r\n objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false;\r\n\r\n objConfig.btnProperties = {};\r\n if (config.btnProperties) {\r\n const btnProperties = config.btnProperties;\r\n objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block';\r\n objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid';\r\n objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default';\r\n objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : '';\r\n objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false;\r\n objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false;\r\n } else {\r\n objConfig.btnProperties.expand = 'block';\r\n objConfig.btnProperties.fill = 'solid';\r\n objConfig.btnProperties.size = 'default';\r\n objConfig.btnProperties.disabled = false;\r\n objConfig.btnProperties.strong = false;\r\n }\r\n\r\n objConfig.arrowNextPrev = {};\r\n if (config.arrowNextPrev) {\r\n const arrowNextPrev = config.arrowNextPrev;\r\n objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false;\r\n objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false;\r\n }\r\n\r\n objConfig.highlightedDates = [];\r\n if (config.highlightedDates && config.highlightedDates.length > 0) {\r\n objConfig.highlightedDates = config.highlightedDates;\r\n\r\n this.setHightlightedDates(objConfig);\r\n }\r\n\r\n objConfig.isSundayHighlighted = {};\r\n if (config.isSundayHighlighted) {\r\n const isSundayHighlighted = config.isSundayHighlighted;\r\n objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null;\r\n }\r\n\r\n // console.log('config =>', objConfig);\r\n return objConfig;\r\n }\r\n\r\n // Format date\r\n formatDate() {\r\n // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch));\r\n return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, NgModel } from '@angular/forms';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nconst noop = () => {\r\n};\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => Ionic4DatepickerComponent),\r\n multi: true\r\n};\r\n@Component({\r\n selector: 'li-ionic4-datepicker',\r\n templateUrl: './ionic4-datepicker.component.html',\r\n styleUrls: ['./ionic4-datepicker.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class Ionic4DatepickerComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n private innerValue: any = '';\r\n\r\n // Placeholders for the callbacks which are later provided\r\n // by the Control Value Accessor\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public el: ElementRef,\r\n public renderer2: Renderer2\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '0px';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '30%';\r\n }\r\n this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;');\r\n this.el.nativeElement.appendChild(this.closeIcon);\r\n\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate = new Date();\r\n this.value = '';\r\n });\r\n }\r\n }\r\n\r\n onChangeValue(value) {\r\n // console.log('onChangeValue =>' , value);\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n }\r\n\r\n async openDatePicker(value) {\r\n // console.log('openDatePicker');\r\n if (value) {\r\n this.selectedDate.date = value;\r\n }\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n // console.log(data);\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.value = data.data.date;\r\n }\r\n });\r\n }\r\n\r\n // get accessor\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n // set accessor including call the onchange callback\r\n set value(v: any) {\r\n if (v !== this.innerValue) {\r\n this.innerValue = v;\r\n this.onChangeCallback(v);\r\n }\r\n this.onChangeValue(v);\r\n }\r\n\r\n // Set touched on blur\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n writeValue(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n }\r\n this.onChangeValue(value);\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n}\r\n","import { Directive, Input, OnInit, HostListener, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { NgModel, NgControl } from '@angular/forms';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from './ionic4-datepicker.service';\r\n\r\n@Directive({\r\n selector: '[liIonic4Datepicker]',\r\n exportAs: 'liIonic4Datepicker',\r\n providers: [NgModel],\r\n})\r\nexport class LiIonic4DatepickerDirective implements OnInit {\r\n\r\n @Input('liIonic4Datepicker') inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n isModalOpen: any = false;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public ngModel: NgModel,\r\n public control: NgControl,\r\n public el: ElementRef,\r\n public renderer2: Renderer2,\r\n public datePickerService: Ionic4DatepickerService\r\n ) { }\r\n\r\n ngOnInit() {\r\n // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending);\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '30%';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '12px';\r\n }\r\n this.el.nativeElement.parentNode.appendChild(this.closeIcon);\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate.date = new Date();\r\n this.control.control.setValue('');\r\n this.ngModel.update.emit('');\r\n });\r\n }\r\n\r\n const self = this;\r\n this.ngModel.valueChanges.subscribe((value) => {\r\n // console.log('ngModel value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n this.control.control.valueChanges.subscribe((value) => {\r\n // console.log('formcontrol value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n if (this.control.control.value) {\r\n this.selectedDate.date = this.control.control.value;\r\n }\r\n }\r\n\r\n @HostListener('ionFocus')\r\n public onFocus() {\r\n if (this.datePickerService.isModalOpen) {\r\n return;\r\n }\r\n this.openDatePicker();\r\n }\r\n\r\n async openDatePicker() {\r\n // console.log('openDatePicker');\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.control.control.setValue(data.data.date);\r\n this.ngModel.update.emit(data.data.date);\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { Ionic4DatepickerComponent } from './ionic4-datepicker.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule\r\n ],\r\n declarations: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n exports: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent,\r\n CommonModule,\r\n FormsModule\r\n ],\r\n entryComponents: [\r\n // Ionic4DatepickerComponent,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n providers: [\r\n\r\n ]\r\n})\r\nexport class Ionic4DatepickerModule { }\r\n"],"names":["Injectable","Component","NavParams","ModalController","ViewChild","IonContent","NG_VALUE_ACCESSOR","forwardRef","ElementRef","Renderer2","Input","Directive","NgModel","NgControl","HostListener","NgModule","CommonModule","FormsModule","IonicModule"],"mappings":"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"} diff --git a/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js new file mode 100644 index 0000000..12e9870 --- /dev/null +++ b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("moment"),require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@ionic/angular")):"function"==typeof define&&define.amd?define("@logisticinfotech/ionic4-datepicker",["exports","moment","@angular/common","@angular/core","@angular/forms","@ionic/angular"],e):e((t.logisticinfotech=t.logisticinfotech||{},t.logisticinfotech["ionic4-datepicker"]={}),t.moment_,t.ng.common,t.ng.core,t.ng.forms,t.angular)}(this,function(t,e,n,o,i,r){"use strict";var a=(s.decorators=[{type:o.Injectable,args:[{providedIn:"root"}]}],s.ctorParameters=function(){return[]},s.ngInjectableDef=o.ɵɵdefineInjectable({factory:function(){return new s},token:s,providedIn:"root"}),s);function s(){this.isModalOpen=!1}function l(e,a,s,l){return new(s=s||Promise)(function(t,n){function o(t){try{r(l.next(t))}catch(e){n(e)}}function i(t){try{r(l["throw"](t))}catch(e){n(e)}}function r(e){e.done?t(e.value):new s(function(t){t(e.value)}).then(o,i)}r((l=l.apply(e,a||[])).next())})}function c(o,i){var r,a,s,t,l={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return t={next:e(0),"throw":e(1),"return":e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function n(t){if(r)throw new TypeError("Generator is already executing.");for(;l;)try{if(r=1,a&&(s=2&t[0]?a["return"]:t[0]?a["throw"]||((s=a["return"])&&s.call(a),0):a.next)&&!(s=s.call(a,t[1])).done)return s;switch(a=0,s&&(t=[2&t[0],s.value]),t[0]){case 0:case 1:s=t;break;case 4:return l.label++,{value:t[1],done:!1};case 5:l.label++,a=t[1],t=[0];continue;case 7:t=l.ops.pop(),l.trys.pop();continue;default:if(!(s=0<(s=l.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){l=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]=this.yearsList[0]&&11===t||(11===t&&this.currentDate.setFullYear(e),this.currentDate.setDate(1),this.currentDate.setMonth(t+1),this.data.currentMonth=this.mainObj.monthsList[t],this.data.currentYear=e,this.refreshDateList(this.currentDate))},m.prototype.changeDaySelected=function(){var t=new Date(this.selctedDateEpoch);t.setMonth(this.currentDate.getMonth()),t.setYear(this.currentDate.getFullYear()),this.selctedDateEpoch=t.getTime(),this.selectedDateString=this.formatDate()},m.prototype.dateSelected=function(t){if(t&&!t.disabled){if(!t||0===Object.keys(t).length)return;this.isSelectedDateFound=!0,this.selctedDateEpoch=t.epoch,this.selectedDateString=this.formatDate(),this.mainObj.closeOnSelect&&this.closeModal(this.selctedDateEpoch)}},m.prototype.setIonicDatePickerTodayDate=function(){var t=new Date(this.today),e={date:t.getDate(),month:t.getMonth(),year:t.getFullYear(),day:t.getDay(),epoch:t.getTime(),disabled:!1};this.dateSelected(e),this.refreshDateList(new Date),this.selctedDateEpoch=this.resetHMSM(t).getTime(),this.selectedDateString=this.formatDate()},m.prototype.setIonicDatePickerDate=function(){this.closeModal(this.selctedDateEpoch)},m.prototype.setDisabledDates=function(t){if(t.disabledDates&&0!==t.disabledDates.length){this.disabledDates=[];for(var e=0;ethis.toDate||0<=this.mainObj.disableWeekDays.indexOf(e.getDay()));var s=this.highlightedDates[e.getTime()],l=null;0===e.getDay()&&this.mainObj.isSundayHighlighted&&this.mainObj.isSundayHighlighted.fontColor?l=this.mainObj.isSundayHighlighted.fontColor:s&&s.fontColor&&(l=s.fontColor),this.daysList.push({date:e.getDate(),month:e.getMonth(),year:e.getFullYear(),day:e.getDay(),epoch:e.getTime(),disabled:n,color:s&&s.color?s.color:null,fontColor:l})}var c=this.daysList[0].day-this.mainObj.mondayFirst;c=c<0?6:c;for(var d=0;d\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \x3c!-- {{weekName}} {{i}} --\x3e\r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n',styles:[":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"]}]}],m.ctorParameters=function(){return[{type:r.NavParams},{type:r.ModalController},{type:a}]},m.propDecorators={content:[{type:o.ViewChild,args:[r.IonContent,{"static":!1}]}]},m);function m(t,e,n){this.navParams=t,this.modalCtrl=e,this.datePickerService=n,this.mainObj={},this.selectedDate={},this.selctedDateEpoch=0,this.disabledDates=[],this.highlightedDates={},this.disableWeekdays=[],this.data={currentMonth:"",currentYear:"",currentMonthSelected:""},this.rows=[0,7,14,21,28,35],this.cols=[0,1,2,3,4,5,6],this.monthsList=["Jan","Feb","March","April","May","June","July","Aug","Sept","Oct","Nov","Dec"],this.weeksList=["S","M","T","W","T","F","S"],this.yearsList=[],this.daysList=[],this.yearInAscending=!1,this.momentLocale="en-US",this.isMonthYearSelectorOpen=!1,this.scrollingMonthOrYearArray=[],this.isSelectedDateFound=!1,this.today=this.resetHMSM(new Date).getTime(),this.navParams.get("selectedDate")&&(this.selectedDate.date=this.navParams.get("selectedDate"),this.isSelectedDateFound=!0),this.mainObj=this.initDatePickerObj(this.navParams.get("objConfig"))}var g=function(){},b={provide:i.NG_VALUE_ACCESSOR,useExisting:o.forwardRef(function(){return f}),multi:!0},f=(y.prototype.ngOnInit=function(){var e=this;!1!==this.inputDateConfig.clearButton&&(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="0px",this.closeIcon.style.fontSize="18px",this.closeIcon.style.color="#A9A9A9",this.closeIcon.style.zIndex="5","ION-ITEM"===this.el.nativeElement.parentNode.nodeName&&(this.closeIcon.style.bottom="30%"),this.el.nativeElement.setAttribute("style","position: relative; width: 100%;"),this.el.nativeElement.appendChild(this.closeIcon),this.renderer2.listen(this.closeIcon,"click",function(t){e.selectedDate=new Date,e.value=""}))},y.prototype.onChangeValue=function(t){!1!==this.inputDateConfig.clearButton&&(this.closeIcon.style.visibility=t?"visible":"hidden")},y.prototype.openDatePicker=function(o){return l(this,void 0,void 0,function(){var e,n=this;return c(this,function(t){switch(t.label){case 0:return o&&(this.selectedDate.date=o),[4,this.modalCtrl.create({component:u,cssClass:"li-ionic4-datePicker",componentProps:{objConfig:this.inputDateConfig,selectedDate:this.selectedDate.date}})];case 1:return[4,(e=t.sent()).present()];case 2:return t.sent(),e.onDidDismiss().then(function(t){t.data&&t.data.date&&"Invalid date"!==t.data.date&&(n.selectedDate.date=t.data.date,n.value=t.data.date)}),[2]}})})},Object.defineProperty(y.prototype,"value",{get:function(){return this.innerValue},set:function(t){t!==this.innerValue&&(this.innerValue=t,this.onChangeCallback(t)),this.onChangeValue(t)},enumerable:!0,configurable:!0}),y.prototype.onBlur=function(){this.onTouchedCallback()},y.prototype.writeValue=function(t){t!==this.innerValue&&(this.innerValue=t),this.onChangeValue(t)},y.prototype.registerOnChange=function(t){this.onChangeCallback=t},y.prototype.registerOnTouched=function(t){this.onTouchedCallback=t},y.decorators=[{type:o.Component,args:[{selector:"li-ionic4-datepicker",template:'',providers:[b],styles:[":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"]}]}],y.ctorParameters=function(){return[{type:r.ModalController},{type:o.ElementRef},{type:o.Renderer2}]},y.propDecorators={inputDateConfig:[{type:o.Input}]},y);function y(t,e,n){this.modalCtrl=t,this.el=e,this.renderer2=n,this.selectedDate={},this.innerValue="",this.onTouchedCallback=g,this.onChangeCallback=g}var D=(v.prototype.ngOnInit=function(){var e=this;!1!==this.inputDateConfig.clearButton&&(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","ION-ITEM"===this.el.nativeElement.parentNode.nodeName&&(this.closeIcon.style.bottom="12px"),this.el.nativeElement.parentNode.appendChild(this.closeIcon),this.renderer2.listen(this.closeIcon,"click",function(t){e.selectedDate.date=new Date,e.control.control.setValue(""),e.ngModel.update.emit("")}));var n=this;this.ngModel.valueChanges.subscribe(function(t){n.selectedDate.date=t,!1!==e.inputDateConfig.clearButton&&(e.closeIcon.style.visibility=t?"visible":"hidden")}),this.control.control.valueChanges.subscribe(function(t){n.selectedDate.date=t,!1!==e.inputDateConfig.clearButton&&(e.closeIcon.style.visibility=t?"visible":"hidden")}),this.control.control.value&&(this.selectedDate.date=this.control.control.value)},v.prototype.onFocus=function(){this.datePickerService.isModalOpen||this.openDatePicker()},v.prototype.openDatePicker=function(){return l(this,void 0,void 0,function(){var e,n=this;return c(this,function(t){switch(t.label){case 0:return[4,this.modalCtrl.create({component:u,cssClass:"li-ionic4-datePicker",componentProps:{objConfig:this.inputDateConfig,selectedDate:this.selectedDate.date}})];case 1:return[4,(e=t.sent()).present()];case 2:return t.sent(),e.onDidDismiss().then(function(t){t.data&&t.data.date&&"Invalid date"!==t.data.date&&(n.selectedDate.date=t.data.date,n.control.control.setValue(t.data.date),n.ngModel.update.emit(t.data.date))}),[2]}})})},v.decorators=[{type:o.Directive,args:[{selector:"[liIonic4Datepicker]",exportAs:"liIonic4Datepicker",providers:[i.NgModel]}]}],v.ctorParameters=function(){return[{type:r.ModalController},{type:i.NgModel},{type:i.NgControl},{type:o.ElementRef},{type:o.Renderer2},{type:a}]},v.propDecorators={inputDateConfig:[{type:o.Input,args:["liIonic4Datepicker"]}],onFocus:[{type:o.HostListener,args:["ionFocus"]}]},v);function v(t,e,n,o,i,r){this.modalCtrl=t,this.ngModel=e,this.control=n,this.el=o,this.renderer2=i,this.datePickerService=r,this.selectedDate={},this.isModalOpen=!1}var w=(O.decorators=[{type:o.NgModule,args:[{imports:[n.CommonModule,i.FormsModule,r.IonicModule],declarations:[f,D,u],exports:[f,D,u,n.CommonModule,i.FormsModule],entryComponents:[u],providers:[]}]}],O);function O(){}t.Ionic4DatepickerService=a,t.CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR=b,t.Ionic4DatepickerComponent=f,t.Ionic4DatepickerModule=w,t.Ionic4DatepickerModalComponent=u,t.ɵa=D,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=logisticinfotech-ionic4-datepicker.umd.min.js.map \ No newline at end of file diff --git a/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js.map b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js.map new file mode 100644 index 0000000..29a4859 --- /dev/null +++ b/dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.service.ts","node_modules/tslib/tslib.es6.js","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/li-ionic4-datepicker.directive.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.module.ts"],"names":["Ionic4DatepickerService","Injectable","args","providedIn","this","isModalOpen","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__read","o","m","r","i","ar","error","__spread","arguments","concat","moment","moment_","Ionic4DatepickerModalComponent","prototype","ngOnInit","datePickerService","initDatePicker","ngOnDestroy","resetHMSM","currentDate","setHours","setMinutes","setSeconds","setMilliseconds","changeToDateList","isMonthYearSelectorOpen","selectMonthYear","isMonthSelect","scrollingMonthOrYearArray","mainObj","monthsList","yearsList","selectedYearOrMonth","data","currentMonth","currentYear","iditem","indexOf","setTimeout","document","getElementById","scrollIntoView","onChangeMonthYear","monthYear","monthNumber","setDate","setMonth","setFullYear","refreshDateList","prevMonth","getMonth","getFullYear","nextMonth","changeDaySelected","newSelectedDate","Date","selctedDateEpoch","setYear","getTime","selectedDateString","formatDate","dateSelected","selectedDate","disabled","Object","keys","isSelectedDateFound","epoch","closeOnSelect","closeModal","setIonicDatePickerTodayDate","today","today_obj","date","getDate","month","year","day","getDay","setIonicDatePickerDate","setDisabledDates","obj","disabledDates","setHightlightedDates","highlightedDates","hDate","hColor","color","hFontColor","fontColor","hDateTime","tempDate","firstDay","lastDay","getYearsList","from","to","daysList","firstDayEpoch","lastDayEpoch","disableWeekdays","fromDate","disableWeekDays","toDate","hightLightDate","isSundayHighlighted","firstDayMonday","mondayFirst","j","unshift","rows","cols","currentMonthSelected","currentYearSelected","numColumns","setInitialObj","ipObj","inputDate","weeksList","shift","yearInAscending","momentLocale","modalCtrl","getTop","formattedDate","format","dateFormat","dismiss","closeIonicDatePickerModal","minYear","maxYear","initDatePickerObj","config","objConfig","showTodayButton","undefined","setLabel","todayLabel","closeLabel","titleLabel","clearButton","locale","btnCloseSetInReverse","btnProperties","expand","fill","size","strong","arrowNextPrev","nextArrowSrc","prevArrowSrc","Component","selector","template","NavParams","ModalController","ViewChild","IonContent","static","navParams","get","noop","CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","Ionic4DatepickerComponent","multi","_this","inputDateConfig","closeIcon","createElement","name","className","style","position","right","bottom","fontSize","zIndex","el","nativeElement","parentNode","nodeName","setAttribute","appendChild","renderer2","listen","event","onChangeValue","visibility","openDatePicker","create","component","cssClass","componentProps","datePickerModal","_a","present","onDidDismiss","defineProperty","innerValue","onChangeCallback","onBlur","onTouchedCallback","writeValue","registerOnChange","fn","registerOnTouched","providers","ElementRef","Renderer2","Input","LiIonic4DatepickerDirective","control","setValue","ngModel","update","emit","self","valueChanges","subscribe","onFocus","Directive","exportAs","NgModel","NgControl","HostListener","Ionic4DatepickerModule","NgModule","imports","CommonModule","FormsModule","IonicModule","declarations","exports","entryComponents"],"mappings":"gjBAAA,IAAAA,uBAECC,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,yJAMZ,SAAAH,IAFAI,KAAAC,aAAc,ECOhB,SAqDgBC,EAAUC,EAASC,EAAYC,EAAGC,GAC9C,OAAO,IAAWD,EAANA,GAAUE,SAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,SAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOT,EAAQQ,EAAOL,OAAS,IAAIN,EAAE,SAAUG,GAAWA,EAAQQ,EAAOL,SAAWO,KAAKR,EAAWK,GACnIH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,UAItE,SAAgBO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,QAASD,EAAK,GAAIE,SAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOnC,OAAUyB,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAASzB,EAAK0B,GACV,GAAIhB,EAAG,MAAM,IAAIiB,UAAU,mCAC3B,KAAOb,GAAG,IACN,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARc,EAAG,GAASf,EAAU,UAAIe,EAAG,GAAKf,EAAS,YAAOC,EAAID,EAAU,YAAMC,EAAEgB,KAAKjB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEgB,KAAKjB,EAAGe,EAAG,KAAKrB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGc,EAAK,CAAS,EAARA,EAAG,GAAQd,EAAEb,QACzB2B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGd,EAAIc,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEhB,MAAO2B,EAAG,GAAIrB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIe,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIW,MAAOf,EAAEG,KAAKY,MAAO,SACxC,QACI,KAAkBjB,EAAe,GAA3BA,EAAIE,EAAEG,MAAYa,QAAclB,EAAEA,EAAEkB,OAAS,MAAkB,IAAVJ,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcd,GAAMc,EAAG,GAAKd,EAAE,IAAMc,EAAG,GAAKd,EAAE,IAAM,CAAEE,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIc,EAAI,MAC7D,GAAId,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIa,KAAKL,GAAK,MACvDd,EAAE,IAAIE,EAAEI,IAAIW,MAChBf,EAAEG,KAAKY,MAAO,SAEtBH,EAAKjB,EAAKmB,KAAKrC,EAASuB,GAC1B,MAAOZ,GAAKwB,EAAK,CAAC,EAAGxB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARc,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3B,MAAO2B,EAAG,GAAKA,EAAG,QAAK,EAAQrB,MAAM,GArB9BL,CAAK,CAACwB,EAAGC,MAyB7D,SAegBO,EAAOC,EAAGT,GACtB,IAAIU,EAAsB,mBAAXZ,QAAyBW,EAAEX,OAAOC,UACjD,IAAKW,EAAG,OAAOD,EACf,IAAmBE,EAAYjC,EAA3BkC,EAAIF,EAAEN,KAAKK,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANb,GAAsB,EAANA,QAAcW,EAAIC,EAAEnC,QAAQI,MAAMgC,EAAGN,KAAKI,EAAEpC,OAExE,MAAOuC,GAASpC,EAAI,CAAEoC,MAAOA,WAEzB,IACQH,IAAMA,EAAE9B,OAAS6B,EAAIE,EAAU,YAAIF,EAAEN,KAAKQ,WAExC,GAAIlC,EAAG,MAAMA,EAAEoC,OAE7B,OAAOD,EAGX,SAAgBE,IACZ,IAAK,IAAIF,EAAK,GAAID,EAAI,EAAGA,EAAII,UAAUV,OAAQM,IAC3CC,EAAKA,EAAGI,OAAOT,EAAOQ,UAAUJ,KACpC,OAAOC,MCtILK,EAASC,EAEfC,GAmEEA,EAAAC,UAAAC,SAAA,WACE1D,KAAK2D,kBAAkB1D,aAAc,EACrCD,KAAK4D,kBAGPJ,EAAAC,UAAAI,YAAA,WACE7D,KAAK2D,kBAAkB1D,aAAc,GAIvCuD,EAAAC,UAAAK,UAAA,SAAUC,GAKR,OAJAA,EAAYC,SAAS,GACrBD,EAAYE,WAAW,GACvBF,EAAYG,WAAW,GACvBH,EAAYI,gBAAgB,GACrBJ,GAITP,EAAAC,UAAAW,iBAAA,WAEEpE,KAAKqE,yBAA0B,GAIjCb,EAAAC,UAAAa,gBAAA,SAAgBC,GAEdvE,KAAKqE,yBAA0B,EAE/BrE,KAAKuE,cAAgBA,EACrBvE,KAAKwE,0BAA4BD,EAAgBvE,KAAKyE,QAAQC,WAAa1E,KAAK2E,UAChF3E,KAAK4E,oBAAsBL,EAAgBvE,KAAK6E,KAAKC,aAAe9E,KAAK6E,KAAKE,gBAGxEC,EADQhF,KAAKwE,0BAA0BS,QAAQjF,KAAK4E,qBACnC,OAEvBM,WAAU,WACRC,SAASC,eAAeJ,GAAQK,kBAC/B,MAIL7B,EAAAC,UAAA6B,kBAAA,SAAkBC,GAEhB,GAAIA,EAAW,CACb,GAAIvF,KAAKuE,cAAe,CACtBvE,KAAK6E,KAAKC,aAAeS,EACzBvF,KAAK4E,oBAAsB5E,KAAK6E,KAAKC,iBAC/BU,EAAcxF,KAAK0E,WAAWO,QAAQjF,KAAK6E,KAAKC,cACtD9E,KAAK+D,YAAY0B,QAAQ,GACzBzF,KAAK+D,YAAY2B,SAASF,QAE1BxF,KAAK6E,KAAKE,YAAcQ,EACxBvF,KAAK4E,oBAAsB5E,KAAK6E,KAAKE,YACrC/E,KAAK+D,YAAY4B,YAAY3F,KAAK6E,KAAKE,aACvC/E,KAAK4F,gBAAgB5F,KAAK+D,aAE5B/D,KAAK4F,gBAAgB5F,KAAK+D,aAE5B/D,KAAKqE,yBAA0B,GAKjCb,EAAAC,UAAAoC,UAAA,eAEQf,EAAe9E,KAAK+D,YAAY+B,WAChCf,EAAc/E,KAAK+D,YAAYgC,cACjChB,GAAe/E,KAAK2E,UAAW3E,KAAK2E,UAAUjC,OAAS,IAAwB,IAAjBoC,IAG7C,IAAjBA,GACF9E,KAAK+D,YAAY4B,YAAYZ,GAE/B/E,KAAK+D,YAAY2B,SAASZ,EAAe,GACzC9E,KAAK6E,KAAKC,aAAe9E,KAAKyE,QAAQC,WAAWI,GACjD9E,KAAK6E,KAAKE,YAAcA,EACxB/E,KAAK4F,gBAAgB5F,KAAK+D,eAK5BP,EAAAC,UAAAuC,UAAA,eAEQlB,EAAe9E,KAAK+D,YAAY+B,WAChCf,EAAc/E,KAAK+D,YAAYgC,cACjChB,GAAe/E,KAAK2E,UAAU,IAAuB,KAAjBG,IAGnB,KAAjBA,GACF9E,KAAK+D,YAAY4B,YAAYZ,GAE/B/E,KAAK+D,YAAY0B,QAAQ,GACzBzF,KAAK+D,YAAY2B,SAASZ,EAAe,GACzC9E,KAAK6E,KAAKC,aAAe9E,KAAKyE,QAAQC,WAAWI,GACjD9E,KAAK6E,KAAKE,YAAcA,EACxB/E,KAAK4F,gBAAgB5F,KAAK+D,eAK5BP,EAAAC,UAAAwC,kBAAA,eAEQC,EAAuB,IAAIC,KAAKnG,KAAKoG,kBAC3CF,EAAgBR,SAAS1F,KAAK+D,YAAY+B,YAC1CI,EAAgBG,QAAQrG,KAAK+D,YAAYgC,eACzC/F,KAAKoG,iBAAmBF,EAAgBI,UACxCtG,KAAKuG,mBAAqBvG,KAAKwG,cAKjChD,EAAAC,UAAAgD,aAAA,SAAaC,GAEX,GAAIA,IAAiBA,EAAaC,SAAU,CAC1C,IAAKD,GAAqD,IAArCE,OAAOC,KAAKH,GAAchE,OAAgB,OAC/D1C,KAAK8G,qBAAsB,EAC3B9G,KAAKoG,iBAAmBM,EAAaK,MACrC/G,KAAKuG,mBAAqBvG,KAAKwG,aAC3BxG,KAAKyE,QAAQuC,eACfhH,KAAKiH,WAAWjH,KAAKoG,oBAM3B5C,EAAAC,UAAAyD,4BAAA,eAEQC,EAAQ,IAAIhB,KAAKnG,KAAKmH,OACtBC,EAAY,CAChBC,KAAMF,EAAMG,UACZC,MAAOJ,EAAMrB,WACb0B,KAAML,EAAMpB,cACZ0B,IAAKN,EAAMO,SACXX,MAAOI,EAAMb,UACbK,UAAU,GAEZ3G,KAAKyG,aAAaW,GAClBpH,KAAK4F,gBAAgB,IAAIO,MACzBnG,KAAKoG,iBAAmBpG,KAAK8D,UAAUqD,GAAOb,UAC9CtG,KAAKuG,mBAAqBvG,KAAKwG,cAKjChD,EAAAC,UAAAkE,uBAAA,WAEE3H,KAAKiH,WAAWjH,KAAKoG,mBAIvB5C,EAAAC,UAAAmE,iBAAA,SAAiBC,GAEf,GAAKA,EAAIC,eAA8C,IAA7BD,EAAIC,cAAcpF,OAErC,CACL1C,KAAK8H,cAAgB,GACrB,IAAK,IAAI9E,EAAI,EAAGA,EAAI6E,EAAIC,cAAcpF,OAAQM,IAE5ChD,KAAK8H,cAAcnF,KAAK3C,KAAK8D,UAAU,IAAIqC,KAAK0B,EAAIC,cAAc9E,KAAKsD,gBALzEtG,KAAK8H,cAAgB,IAWzBtE,EAAAC,UAAAsE,qBAAA,SAAqBF,GACnB,GAAKA,EAAIG,kBAAoD,IAAhCH,EAAIG,iBAAiBtF,OAE3C,CACL1C,KAAKgI,iBAAmB,GACxB,IAAK,IAAIhF,EAAI,EAAGA,EAAI6E,EAAIG,iBAAiBtF,OAAQM,IAAK,KAC9CiF,EAAQJ,EAAIG,iBAAiBhF,GAAGqE,KAChCa,EAASL,EAAIG,iBAAiBhF,GAAGmF,MACjCC,EAAaP,EAAIG,iBAAiBhF,GAAGqF,UACrCC,EAAYtI,KAAK8D,UAAU,IAAIqC,KAAK8B,IAAQ3B,UAClDtG,KAAKgI,iBAAiBM,GAAa,CAAEH,MAAOD,EAAQG,UAAWD,SARjEpI,KAAKgI,iBAAmB,IAc5BxE,EAAAC,UAAAmC,gBAAA,SAAgB7B,GAEdA,EAAc/D,KAAK8D,UAAUC,GAC7B/D,KAAK+D,YAAcA,MAefwE,EAAU5B,EAbR6B,EAAW,IAAIrC,KAAKpC,EAAYgC,cAAehC,EAAY+B,WAAY,GAAGwB,UAC1EmB,EAAU,IAAItC,KAAKpC,EAAYgC,cAAehC,EAAY+B,WAAa,EAAG,GAAGwB,UAEnFtH,KAAK0E,WAAa,GACd1E,KAAKyE,QAAQC,YAAiD,KAAnC1E,KAAKyE,QAAQC,WAAWhC,OACrD1C,KAAK0E,WAAa1E,KAAKyE,QAAQC,WAE/B1E,KAAK0E,WAAa1E,KAAK0E,WAGzB1E,KAAK2E,UAAY3E,KAAK0I,aAAa1I,KAAKyE,QAAQkE,KAAM3I,KAAKyE,QAAQmE,IAEnE5I,KAAK6I,SAAW,GAEhB7I,KAAK8I,cAAgB9I,KAAK8D,UAAU,IAAIqC,KAAKpC,EAAYgC,cAAehC,EAAY+B,WAAY0C,IAAWlC,UAC3GtG,KAAK+I,aAAe/I,KAAK8D,UAAU,IAAIqC,KAAKpC,EAAYgC,cAAehC,EAAY+B,WAAY2C,IAAUnC,UAEzG,IAAK,IAAItD,EAAIwF,EAAUxF,GAAKyF,EAASzF,IAAK,CAExC2D,GAAW,MACLc,GAFNc,EAAW,IAAIpC,KAAKpC,EAAYgC,cAAehC,EAAY+B,WAAY9C,IAElD0E,SACa,EAA9B1H,KAAKgJ,gBAAgBtG,SAErBiE,EADuC,GAArC3G,KAAKgJ,gBAAgB/D,QAAQwC,IACiB,GAArCzH,KAAKgJ,gBAAgB/D,QAAQwC,IAMZ,EAA5BzH,KAAK8H,cAAcpF,QACiC,GAAlD1C,KAAK8H,cAAc7C,QAAQsD,EAASjC,aACtCK,GAAW,GAIX3G,KAAKiJ,WAAatC,IACpBA,EAAY4B,EAASjC,UAAYtG,KAAKiJ,UAC0B,GAA3DjJ,KAAKyE,QAAQyE,gBAAgBjE,QAAQsD,EAASb,WAEjD1H,KAAKmJ,SAAWxC,IAClBA,EAAY4B,EAASjC,UAAYtG,KAAKmJ,QAC0B,GAA3DnJ,KAAKyE,QAAQyE,gBAAgBjE,QAAQsD,EAASb,eAG/C0B,EAAiBpJ,KAAKgI,iBAAiBO,EAASjC,WAElD+B,EAAY,KAEU,IAAtBE,EAASb,UAAkB1H,KAAKyE,QAAQ4E,qBAAuBrJ,KAAKyE,QAAQ4E,oBAAoBhB,UAClGA,EAAYrI,KAAKyE,QAAQ4E,oBAAoBhB,UACpCe,GAAkBA,EAAef,YAC1CA,EAAYe,EAAef,WAG7BrI,KAAK6I,SAASlG,KAAK,CACjB0E,KAAMkB,EAASjB,UACfC,MAAOgB,EAASzC,WAChB0B,KAAMe,EAASxC,cACf0B,IAAKc,EAASb,SACdX,MAAOwB,EAASjC,UAChBK,SAAUA,EACVwB,MAAOiB,GAAkBA,EAAejB,MAAQiB,EAAejB,MAAQ,KACvEE,UAAWA,QAMXiB,EAAiBtJ,KAAK6I,SAAS,GAAGpB,IAAMzH,KAAKyE,QAAQ8E,YACzDD,EAAkBA,EAAiB,EAAK,EAAIA,EAC5C,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAgBE,IAClCxJ,KAAK6I,SAASY,QAAQ,IAExBzJ,KAAK0J,KAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAC/B1J,KAAK2J,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/B3J,KAAK6E,KAAKC,aAAe9E,KAAKyE,QAAQC,WAAWX,EAAY+B,YAC7D9F,KAAK6E,KAAKE,YAAchB,EAAYgC,cACpC/F,KAAK6E,KAAK+E,qBAAuB5J,KAAK6E,KAAKC,aAC3C9E,KAAK6J,oBAAsB7J,KAAK6E,KAAKE,YACrC/E,KAAK8J,WAAa,GAIpBtG,EAAAC,UAAAsG,cAAA,SAAcC,GAEZhK,KAAKyE,QAAUuF,EACXhK,KAAK8G,sBACP9G,KAAK8G,qBAAsB,EAC3B9G,KAAKoG,iBAAmBpG,KAAK8D,UAAU9D,KAAKyE,QAAQwF,WAAW3D,WAGjEtG,KAAKuG,mBAAqBvG,KAAKwG,aAE3BxG,KAAKyE,QAAQyF,WAA+C,IAAlClK,KAAKyE,QAAQyF,UAAUxH,SACnD1C,KAAKkK,UAAYlK,KAAKyE,QAAQyF,WAE5BlK,KAAKyE,QAAQ8E,aACfvJ,KAAKkK,UAAUvH,KAAK3C,KAAKyE,QAAQyF,UAAUC,SAEzCnK,KAAKyE,QAAQ2F,kBACfpK,KAAKoK,gBAAkBpK,KAAKyE,QAAQ2F,iBAElCpK,KAAKyE,QAAQ4F,eACfrK,KAAKqK,aAAerK,KAAKyE,QAAQ4F,cAEnCrK,KAAKgJ,gBAAkBhJ,KAAKyE,QAAQyE,gBACpClJ,KAAK4H,iBAAiB5H,KAAKyE,SAC3BzE,KAAK4F,gBAAgB5F,KAAKyE,QAAQwF,YAIpCzG,EAAAC,UAAAwD,WAAA,SAAWP,GAET1G,KAAKsK,UAAUC,aACTC,EAAgBlH,EAAOoD,GAAc+D,OAAOzK,KAAKyE,QAAQiG,YAC/D1K,KAAKsK,UAAUK,QAAQ,CAAEtD,KAAQmD,KAInChH,EAAAC,UAAAmH,0BAAA,WAEE5K,KAAKiH,WAAW,OAIlBzD,EAAAC,UAAAiF,aAAA,SAAaC,EAAMC,OAEXjE,EAAY,GACdkG,EAAU,KACVC,GAAU,IAAI3E,MAAOJ,cAAgB,EAIzC,GAHA8E,EAAUlC,EAAO,IAAIxC,KAAKwC,GAAM5C,cAAgB8E,EAChDC,EAAUlC,EAAK,IAAIzC,KAAKyC,GAAI7C,cAAgB+E,EAExC9K,KAAKoK,gBACP,IAAK,IAAIpH,EAAI6H,EAAS7H,GAAK8H,EAAS9H,IAClC2B,EAAUhC,KAAKK,QAGjB,IAASA,EAAI8H,EAAcD,GAAL7H,EAAcA,IAClC2B,EAAUhC,KAAKK,GAGnB,OAAO2B,GAITnB,EAAAC,UAAAG,eAAA,WACE5D,KAAKiJ,SAAW,GAChBjJ,KAAKmJ,OAAS,GAEVnJ,KAAKyE,QAAQkE,OACf3I,KAAKiJ,SAAWjJ,KAAK8D,UAAU,IAAIqC,KAAKnG,KAAKyE,QAAQkE,OAAOrC,WAE1DtG,KAAKyE,QAAQmE,KACf5I,KAAKmJ,OAASnJ,KAAK8D,UAAU,IAAIqC,KAAKnG,KAAKyE,QAAQmE,KAAKtC,WAK1DtG,KAAK+J,cAAc/J,KAAKyE,UAI1BjB,EAAAC,UAAAsH,kBAAA,SAAkBC,GAGZA,EAAOf,YAAcjK,KAAK0G,aAAaW,OACzCrH,KAAK8G,qBAAsB,EAC3B9G,KAAK0G,aAAaW,KAAO2D,EAAOf,eAG5BgB,EAAiB,GAiCvB,GAhCAA,EAAUtC,KAAOqC,EAAO/B,SAAW+B,EAAO/B,SAAW,GACrDgC,EAAUrC,GAAKoC,EAAO7B,OAAS6B,EAAO7B,OAAS,GAC/C8B,EAAUC,gBAAkBF,EAAOE,kBAAoBC,WAAmBH,EAAOE,gBACjFD,EAAUjE,gBAAgBgE,EAAOhE,eAAgBgE,EAAOhE,cACxDiE,EAAU/B,gBAAkB8B,EAAO9B,gBAAkB8B,EAAO9B,gBAAkB,GAC9E+B,EAAU1B,cAAcyB,EAAOzB,aAAcyB,EAAOzB,YACpD0B,EAAUG,SAAWJ,EAAOI,SAAWJ,EAAOI,SAAW,MACzDH,EAAUI,WAAaL,EAAOK,WAAaL,EAAOK,WAAa,QAC/DJ,EAAUK,WAAaN,EAAOM,WAAaN,EAAOM,WAAa,QAC/DL,EAAUnD,cAAgBkD,EAAOlD,cAAgBkD,EAAOlD,cAAgB,GACxEmD,EAAUM,WAAaP,EAAOO,WAAaP,EAAOO,WAAa,KAE/DN,EAAUvG,WAAasG,EAAOtG,WAAasG,EAAOtG,WAAa1E,KAAK0E,WACpEuG,EAAUvG,WAAUvB,EAAO8H,EAAUvG,YAErCuG,EAAUf,UAAYc,EAAOd,UAAYc,EAAOd,UAAYlK,KAAKkK,UACjEe,EAAUf,UAAS/G,EAAO8H,EAAUf,WAEpCe,EAAUP,WAAaM,EAAON,WAAaM,EAAON,WAAa,cAG/DO,EAAUO,cAAcR,EAAOQ,aAAcR,EAAOQ,YAEpDP,EAAUb,kBAAkBY,EAAOZ,iBAAkBY,EAAOZ,gBAC5Da,EAAUZ,aAAeW,EAAOX,aAAeW,EAAOX,aAAe,QAErE/G,EAAOmI,OAAOR,EAAUZ,cACxBY,EAAUhB,UAAYjK,KAAK0G,aAAaW,KAAO/D,EAAOtD,KAAK0G,aAAaW,KAAM4D,EAAUP,YAAYvB,SAAW,IAAIhD,KAEnH8E,EAAUS,uBAAuBV,EAAOU,sBAAuBV,EAAOU,qBAEtET,EAAUU,cAAgB,GACtBX,EAAOW,cAAe,KAClBA,EAAgBX,EAAOW,cAC7BV,EAAUU,cAAcC,OAASD,EAAcC,OAASD,EAAcC,OAAS,QAC/EX,EAAUU,cAAcE,KAAOF,EAAcE,KAAOF,EAAcE,KAAO,QACzEZ,EAAUU,cAAcG,KAAOH,EAAcG,KAAOH,EAAcG,KAAO,UACzEb,EAAUU,cAAcxD,MAAQwD,EAAcxD,MAAQwD,EAAcxD,MAAQ,GAC5E8C,EAAUU,cAAchF,WAAWgF,EAAchF,UAAWgF,EAAchF,SAC1EsE,EAAUU,cAAcI,SAASJ,EAAcI,QAASJ,EAAcI,YAEtEd,EAAUU,cAAcC,OAAS,QACjCX,EAAUU,cAAcE,KAAO,QAC/BZ,EAAUU,cAAcG,KAAO,UAC/Bb,EAAUU,cAAchF,UAAW,EACnCsE,EAAUU,cAAcI,QAAS,EAInC,GADAd,EAAUe,cAAgB,GACtBhB,EAAOgB,cAAe,KAClBA,EAAgBhB,EAAOgB,cAC7Bf,EAAUe,cAAcC,eAAeD,EAAcC,cAAeD,EAAcC,aAClFhB,EAAUe,cAAcE,eAAeF,EAAcE,cAAeF,EAAcE,aAWpF,GARAjB,EAAUjD,iBAAmB,GACzBgD,EAAOhD,kBAAqD,EAAjCgD,EAAOhD,iBAAiBtF,SACrDuI,EAAUjD,iBAAmBgD,EAAOhD,iBAEpChI,KAAK+H,qBAAqBkD,IAG5BA,EAAU5B,oBAAsB,GAC5B2B,EAAO3B,oBAAqB,KACxBA,EAAsB2B,EAAO3B,oBACnC4B,EAAU5B,oBAAoBhB,UAAYgB,EAAoBhB,UAAYgB,EAAoBhB,UAAY,KAI5G,OAAO4C,GAITzH,EAAAC,UAAA+C,WAAA,WAEE,OAAOlD,EAAOtD,KAAKoG,kBAAkBqE,OAAOzK,KAAKyE,QAAQiG,iCApf5DyB,EAAAA,UAASrM,KAAA,CAAC,CACTsM,SAAU,6BACVC,SAAA,ylYAROC,EAAAA,iBAAWC,EAAAA,uBAGX3M,sCAUN4M,EAAAA,UAAS1M,KAAA,CAAC2M,EAAAA,WAAY,CAACC,UAAQ,OA+elClJ,GAjcE,SAAAA,EACUmJ,EACArC,EACD3G,GAFC3D,KAAA2M,UAAAA,EACA3M,KAAAsK,UAAAA,EACDtK,KAAA2D,kBAAAA,EA3CT3D,KAAAyE,QAAe,GACfzE,KAAA0G,aAAoB,GAGpB1G,KAAAoG,iBAAmB,EAInBpG,KAAA8H,cAAgB,GAChB9H,KAAAgI,iBAAwB,GAIxBhI,KAAAgJ,gBAAkB,GAClBhJ,KAAA6E,KAAY,CACVC,aAAc,GACdC,YAAa,GACb6E,qBAAsB,IAKxB5J,KAAA0J,KAAO,CAAC,EAAG,EAAG,GAAI,GAAI,GAAI,IAC1B1J,KAAA2J,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B3J,KAAA0E,WAAa,CAAC,MAAO,MAAO,QAAS,QAAS,MAAO,OAAQ,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAClG1E,KAAAkK,UAAY,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3ClK,KAAA2E,UAAY,GACZ3E,KAAA6I,SAAW,GACX7I,KAAAoK,iBAAkB,EAClBpK,KAAAqK,aAAe,QAIfrK,KAAAqE,yBAA0B,EAG1BrE,KAAAwE,0BAAiC,GAEjCxE,KAAA8G,qBAAsB,EAOpB9G,KAAKmH,MAAQnH,KAAK8D,UAAU,IAAIqC,MAAQG,UACpCtG,KAAK2M,UAAUC,IAAI,kBAErB5M,KAAK0G,aAAaW,KAAOrH,KAAK2M,UAAUC,IAAI,gBAC5C5M,KAAK8G,qBAAsB,GAE7B9G,KAAKyE,QAAUzE,KAAK+K,kBAAkB/K,KAAK2M,UAAUC,IAAI,kBC/DvDC,EAAI,aAGGC,EAA2C,CACtDC,QAASC,EAAAA,kBACTC,YAAaC,EAAAA,WAAU,WAAO,OAAAC,IAC9BC,OAAO,GAETD,GAyBEA,EAAA1J,UAAAC,SAAA,WAAA,IAAA2J,EAAArN,MAE2C,IAArCA,KAAKsN,gBAAgB9B,cAEvBxL,KAAKuN,UAAYpI,SAASqI,cAAc,YACxCxN,KAAKuN,UAAUE,KAAO,eACtBzN,KAAKuN,UAAUG,UAAY,cAC3B1N,KAAKuN,UAAUI,MAAMC,SAAW,WAChC5N,KAAKuN,UAAUI,MAAME,MAAQ,MAC7B7N,KAAKuN,UAAUI,MAAMG,OAAS,MAC9B9N,KAAKuN,UAAUI,MAAMI,SAAW,OAChC/N,KAAKuN,UAAUI,MAAMxF,MAAQ,UAC7BnI,KAAKuN,UAAUI,MAAMK,OAAS,IAEoB,aAA9ChO,KAAKiO,GAAGC,cAAcC,WAAWC,WACnCpO,KAAKuN,UAAUI,MAAMG,OAAS,OAEhC9N,KAAKiO,GAAGC,cAAcG,aAAa,QAAS,oCAC5CrO,KAAKiO,GAAGC,cAAcI,YAAYtO,KAAKuN,WAEvCvN,KAAKuO,UAAUC,OAAOxO,KAAKuN,UAAW,QAAO,SAAGkB,GAG9CpB,EAAK3G,aAAe,IAAIP,KACxBkH,EAAK1M,MAAQ,OAKnBwM,EAAA1J,UAAAiL,cAAA,SAAc/N,IAE6B,IAArCX,KAAKsN,gBAAgB9B,cAIrBxL,KAAKuN,UAAUI,MAAMgB,WAHlBhO,EAG+B,UAFA,WAOlCwM,EAAA1J,UAAAmL,eAAN,SAAqBjO,wGAMK,OAJpBA,IACFX,KAAK0G,aAAaW,KAAO1G,GAGH,CAAA,EAAMX,KAAKsK,UAAUuE,OAAO,CAClDC,UAAWtL,EACXuL,SAAU,uBACVC,eAAgB,CAAE/D,UAAajL,KAAKsN,gBAAiB5G,aAAgB1G,KAAK0G,aAAaW,gBAEzF,MAAA,CAAA,GALM4H,EAAkBC,EAAAtN,QAKFuN,yBAAtBD,EAAAtN,OAEAqN,EAAgBG,eACblO,KAAI,SAAE2D,GAEDA,EAAKA,MAAQA,EAAKA,KAAKwC,MAA2B,iBAAnBxC,EAAKA,KAAKwC,OAC3CgG,EAAK3G,aAAaW,KAAOxC,EAAKA,KAAKwC,KACnCgG,EAAK1M,MAAQkE,EAAKA,KAAKwC,kBAM/BT,OAAAyI,eAAIlC,EAAA1J,UAAA,QAAK,KAAT,WACE,OAAOzD,KAAKsP,gBAId,SAAUjN,GACJA,IAAMrC,KAAKsP,aACbtP,KAAKsP,WAAajN,EAClBrC,KAAKuP,iBAAiBlN,IAExBrC,KAAK0O,cAAcrM,oCAIrB8K,EAAA1J,UAAA+L,OAAA,WACExP,KAAKyP,qBAIPtC,EAAA1J,UAAAiM,WAAA,SAAW/O,GACLA,IAAUX,KAAKsP,aACjBtP,KAAKsP,WAAa3O,GAEpBX,KAAK0O,cAAc/N,IAIrBwM,EAAA1J,UAAAkM,iBAAA,SAAiBC,GACf5P,KAAKuP,iBAAmBK,GAI1BzC,EAAA1J,UAAAoM,kBAAA,SAAkBD,GAChB5P,KAAKyP,kBAAoBG,uBA1H5BzD,EAAAA,UAASrM,KAAA,CAAC,CACTsM,SAAU,uBACVC,SAAA,wJAEAyD,UAAW,CAAChD,0RAlBLP,EAAAA,uBAFsCwD,EAAAA,kBAAYC,EAAAA,sDAwBxDC,EAAAA,SAoHH9C,GAzGE,SAAAA,EACU7C,EACD2D,EACAM,GAFCvO,KAAAsK,UAAAA,EACDtK,KAAAiO,GAAAA,EACAjO,KAAAuO,UAAAA,EAXTvO,KAAA0G,aAAoB,GACZ1G,KAAAsP,WAAkB,GAIlBtP,KAAAyP,kBAAgC5C,EAChC7M,KAAAuP,iBAAqC1C,SCH7CqD,EAAAzM,UAAAC,SAAA,WAAA,IAAA2J,EAAArN,MAG2C,IAArCA,KAAKsN,gBAAgB9B,cACvBxL,KAAKuN,UAAYpI,SAASqI,cAAc,YACxCxN,KAAKuN,UAAUE,KAAO,eACtBzN,KAAKuN,UAAUG,UAAY,cAC3B1N,KAAKuN,UAAUI,MAAMC,SAAW,WAChC5N,KAAKuN,UAAUI,MAAME,MAAQ,MAC7B7N,KAAKuN,UAAUI,MAAMG,OAAS,MAC9B9N,KAAKuN,UAAUI,MAAMI,SAAW,OAChC/N,KAAKuN,UAAUI,MAAMxF,MAAQ,UAC7BnI,KAAKuN,UAAUI,MAAMK,OAAS,IACoB,aAA9ChO,KAAKiO,GAAGC,cAAcC,WAAWC,WACnCpO,KAAKuN,UAAUI,MAAMG,OAAS,QAEhC9N,KAAKiO,GAAGC,cAAcC,WAAWG,YAAYtO,KAAKuN,WAClDvN,KAAKuO,UAAUC,OAAOxO,KAAKuN,UAAW,QAAO,SAAGkB,GAG9CpB,EAAK3G,aAAaW,KAAO,IAAIlB,KAC7BkH,EAAK8C,QAAQA,QAAQC,SAAS,IAC9B/C,EAAKgD,QAAQC,OAAOC,KAAK,WAIvBC,EAAOxQ,KACbA,KAAKqQ,QAAQI,aAAaC,UAAS,SAAE/P,GAEnC6P,EAAK9J,aAAaW,KAAO1G,GACgB,IAArC0M,EAAKC,gBAAgB9B,cAIrB6B,EAAKE,UAAUI,MAAMgB,WAHlBhO,EAG+B,UAFA,YAOxCX,KAAKmQ,QAAQA,QAAQM,aAAaC,UAAS,SAAE/P,GAE3C6P,EAAK9J,aAAaW,KAAO1G,GACgB,IAArC0M,EAAKC,gBAAgB9B,cAIrB6B,EAAKE,UAAUI,MAAMgB,WAHlBhO,EAG+B,UAFA,YAOpCX,KAAKmQ,QAAQA,QAAQxP,QACvBX,KAAK0G,aAAaW,KAAOrH,KAAKmQ,QAAQA,QAAQxP,QAK3CuP,EAAAzM,UAAAkN,QADP,WAEM3Q,KAAK2D,kBAAkB1D,aAG3BD,KAAK4O,kBAGDsB,EAAAzM,UAAAmL,eAAN,gHAG0B,MAAA,CAAA,EAAM5O,KAAKsK,UAAUuE,OAAO,CAClDC,UAAWtL,EACXuL,SAAU,uBACVC,eAAgB,CAAE/D,UAAajL,KAAKsN,gBAAiB5G,aAAgB1G,KAAK0G,aAAaW,gBAEzF,MAAA,CAAA,GALM4H,EAAkBC,EAAAtN,QAKFuN,yBAAtBD,EAAAtN,OAEAqN,EAAgBG,eACblO,KAAI,SAAE2D,GACDA,EAAKA,MAAQA,EAAKA,KAAKwC,MAA2B,iBAAnBxC,EAAKA,KAAKwC,OAC3CgG,EAAK3G,aAAaW,KAAOxC,EAAKA,KAAKwC,KACnCgG,EAAK8C,QAAQA,QAAQC,SAASvL,EAAKA,KAAKwC,MACxCgG,EAAKgD,QAAQC,OAAOC,KAAK1L,EAAKA,KAAKwC,uCArG5CuJ,EAAAA,UAAS9Q,KAAA,CAAC,CACTsM,SAAU,uBACVyE,SAAU,qBACVf,UAAW,CAACgB,EAAAA,sDAVLvE,EAAAA,uBAEAuE,EAAAA,eAASC,EAAAA,iBAH+BhB,EAAAA,kBAAYC,EAAAA,iBAMpDpQ,8CASNqQ,EAAAA,MAAKnQ,KAAA,CAAC,uCAuENkR,EAAAA,aAAYlR,KAAA,CAAC,eA2BhBoQ,GA5FE,SAAAA,EACU5F,EACD+F,EACAF,EACAlC,EACAM,EACA5K,GALC3D,KAAAsK,UAAAA,EACDtK,KAAAqQ,QAAAA,EACArQ,KAAAmQ,QAAAA,EACAnQ,KAAAiO,GAAAA,EACAjO,KAAAuO,UAAAA,EACAvO,KAAA2D,kBAAAA,EATT3D,KAAA0G,aAAoB,GACpB1G,KAAAC,aAAmB,ECnBrB,IAAAgR,uBAQCC,EAAAA,SAAQpR,KAAA,CAAC,CACRqR,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,aAEFC,aAAc,CACZpE,EACA+C,EACA1M,GAEFgO,QAAS,CACPrE,EACA+C,EACA1M,EACA4N,EAAAA,aACAC,EAAAA,aAEFI,gBAAiB,CAEfjO,GAEFsM,UAAW,OAIyBmB,GA1BtC,SAAAA","sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Ionic4DatepickerService {\r\n\r\n isModalOpen = false;\r\n\r\n constructor() { }\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { NavParams, ModalController, IonContent } from '@ionic/angular';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from '../ionic4-datepicker.service';\r\nconst moment = moment_;\r\n\r\n@Component({\r\n selector: 'li-ionic4-datepicker-modal',\r\n templateUrl: './ionic4-datepicker-modal.component.html',\r\n styleUrls: ['./ionic4-datepicker-modal.component.scss']\r\n})\r\nexport class Ionic4DatepickerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(IonContent, {static: false}) content: IonContent;\r\n\r\n currentDate;\r\n today;\r\n\r\n // inputs\r\n mainObj: any = {};\r\n selectedDate: any = {};\r\n\r\n // component variables\r\n selctedDateEpoch = 0;\r\n firstDayEpoch;\r\n lastDayEpoch;\r\n\r\n disabledDates = [];\r\n highlightedDates: any = {};\r\n\r\n fromDate;\r\n toDate;\r\n disableWeekdays = [];\r\n data: any = {\r\n currentMonth: '',\r\n currentYear: '',\r\n currentMonthSelected: ''\r\n };\r\n currentYearSelected;\r\n numColumns;\r\n\r\n rows = [0, 7, 14, 21, 28, 35];\r\n cols = [0, 1, 2, 3, 4, 5, 6];\r\n monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\r\n weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n yearsList = [];\r\n daysList = [];\r\n yearInAscending = false;\r\n momentLocale = 'en-US';\r\n selectedDateString;\r\n\r\n // month year scroll variables\r\n isMonthYearSelectorOpen = false;\r\n selectedYearOrMonth;\r\n isMonthSelect;\r\n scrollingMonthOrYearArray: any = [];\r\n\r\n isSelectedDateFound = false;\r\n\r\n constructor(\r\n private navParams: NavParams,\r\n private modalCtrl: ModalController,\r\n public datePickerService: Ionic4DatepickerService\r\n ) {\r\n this.today = this.resetHMSM(new Date()).getTime();\r\n if (this.navParams.get('selectedDate')) {\r\n // console.log('Selected date =>', this.navParams.get('selectedDate'));\r\n this.selectedDate.date = this.navParams.get('selectedDate');\r\n this.isSelectedDateFound = true;\r\n }\r\n this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig'));\r\n }\r\n\r\n ngOnInit() {\r\n this.datePickerService.isModalOpen = true;\r\n this.initDatePicker();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.datePickerService.isModalOpen = false;\r\n }\r\n\r\n // Reset the hours, minutes, seconds and milli seconds\r\n resetHMSM(currentDate) {\r\n currentDate.setHours(0);\r\n currentDate.setMinutes(0);\r\n currentDate.setSeconds(0);\r\n currentDate.setMilliseconds(0);\r\n return currentDate;\r\n }\r\n\r\n // this method change month or year list to dateList\r\n changeToDateList() {\r\n // console.log('changeToDateList');\r\n this.isMonthYearSelectorOpen = false;\r\n }\r\n\r\n // Virtual scroll create for select year and month\r\n selectMonthYear(isMonthSelect) {\r\n // console.log('selectMonthYear', i);\r\n this.isMonthYearSelectorOpen = true;\r\n\r\n this.isMonthSelect = isMonthSelect;\r\n this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList;\r\n this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear;\r\n\r\n const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth);\r\n const iditem = index + 'list';\r\n\r\n setTimeout(() => {\r\n document.getElementById(iditem).scrollIntoView();\r\n }, 100);\r\n }\r\n\r\n // select month or year\r\n onChangeMonthYear(monthYear) {\r\n // console.log('onChangeMonthYear', monthYear);\r\n if (monthYear) {\r\n if (this.isMonthSelect) {\r\n this.data.currentMonth = monthYear;\r\n this.selectedYearOrMonth = this.data.currentMonth;\r\n const monthNumber = this.monthsList.indexOf(this.data.currentMonth);\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(monthNumber);\r\n } else {\r\n this.data.currentYear = monthYear;\r\n this.selectedYearOrMonth = this.data.currentYear;\r\n this.currentDate.setFullYear(this.data.currentYear);\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.isMonthYearSelectorOpen = false;\r\n\r\n }\r\n\r\n // Previous month\r\n prevMonth() {\r\n // console.log('prevNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) {\r\n return;\r\n }\r\n if (currentMonth === 1) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setMonth(currentMonth - 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // Next month\r\n nextMonth() {\r\n // console.log('nextNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear >= this.yearsList[0] && currentMonth === 11) {\r\n return;\r\n }\r\n if (currentMonth === 11) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(currentMonth + 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // changeDaySelected ( day selection changes )\r\n changeDaySelected() {\r\n // console.log('changeDaySelected');\r\n const newSelectedDate: any = new Date(this.selctedDateEpoch);\r\n newSelectedDate.setMonth(this.currentDate.getMonth());\r\n newSelectedDate.setYear(this.currentDate.getFullYear());\r\n this.selctedDateEpoch = newSelectedDate.getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Date selected\r\n dateSelected(selectedDate) {\r\n // console.log('dateSelected =>', selectedDate);\r\n if (selectedDate && !selectedDate.disabled) {\r\n if (!selectedDate || Object.keys(selectedDate).length === 0) { return; }\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = selectedDate.epoch;\r\n this.selectedDateString = this.formatDate();\r\n if (this.mainObj.closeOnSelect) {\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n }\r\n }\r\n\r\n // Set today as date for the modal\r\n setIonicDatePickerTodayDate() {\r\n // console.log('setIonicDatePickerTodayDate');\r\n const today = new Date(this.today);\r\n const today_obj = {\r\n date: today.getDate(),\r\n month: today.getMonth(),\r\n year: today.getFullYear(),\r\n day: today.getDay(),\r\n epoch: today.getTime(),\r\n disabled: false\r\n };\r\n this.dateSelected(today_obj);\r\n this.refreshDateList(new Date());\r\n this.selctedDateEpoch = this.resetHMSM(today).getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Set date for the modal\r\n setIonicDatePickerDate() {\r\n // console.log('setIonicDatePickerDate');\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Setting the disabled dates list.\r\n setDisabledDates(obj) {\r\n // console.log('setDisabledDates =>', obj);\r\n if (!obj.disabledDates || obj.disabledDates.length === 0) {\r\n this.disabledDates = [];\r\n } else {\r\n this.disabledDates = [];\r\n for (let i = 0; i < obj.disabledDates.length; i++) {\r\n // val = resetHMSM(new Date(val));\r\n this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime());\r\n }\r\n }\r\n }\r\n\r\n // Set hightlighted dates\r\n setHightlightedDates(obj) {\r\n if (!obj.highlightedDates || obj.highlightedDates.length === 0) {\r\n this.highlightedDates = {};\r\n } else {\r\n this.highlightedDates = {};\r\n for (let i = 0; i < obj.highlightedDates.length; i++) {\r\n const hDate = obj.highlightedDates[i].date;\r\n const hColor = obj.highlightedDates[i].color;\r\n const hFontColor = obj.highlightedDates[i].fontColor;\r\n const hDateTime = this.resetHMSM(new Date(hDate)).getTime();\r\n this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor };\r\n }\r\n }\r\n }\r\n\r\n // Refresh the list of the dates of a month\r\n refreshDateList(currentDate) {\r\n // console.log('refreshDateList =>', currentDate);\r\n currentDate = this.resetHMSM(currentDate);\r\n this.currentDate = currentDate;\r\n\r\n const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate();\r\n const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate();\r\n\r\n this.monthsList = [];\r\n if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) {\r\n this.monthsList = this.mainObj.monthsList;\r\n } else {\r\n this.monthsList = this.monthsList;\r\n }\r\n\r\n this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to);\r\n\r\n this.daysList = [];\r\n let tempDate, disabled;\r\n this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime();\r\n this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime();\r\n\r\n for (let i = firstDay; i <= lastDay; i++) {\r\n tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i);\r\n disabled = false;\r\n const day = tempDate.getDay();\r\n if (this.disableWeekdays.length > 0) {\r\n if (this.disableWeekdays.indexOf(day) >= 0) {\r\n disabled = this.disableWeekdays.indexOf(day) >= 0;\r\n } else {\r\n disabled = false;\r\n }\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) {\r\n disabled = true;\r\n }\r\n }\r\n\r\n if (this.fromDate && !disabled) {\r\n disabled = (tempDate.getTime() < this.fromDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n if (this.toDate && !disabled) {\r\n disabled = (tempDate.getTime() > this.toDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n\r\n const hightLightDate = this.highlightedDates[tempDate.getTime()];\r\n\r\n let fontColor = null;\r\n\r\n if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) {\r\n fontColor = this.mainObj.isSundayHighlighted.fontColor;\r\n } else if (hightLightDate && hightLightDate.fontColor) {\r\n fontColor = hightLightDate.fontColor;\r\n }\r\n\r\n this.daysList.push({\r\n date: tempDate.getDate(),\r\n month: tempDate.getMonth(),\r\n year: tempDate.getFullYear(),\r\n day: tempDate.getDay(),\r\n epoch: tempDate.getTime(),\r\n disabled: disabled,\r\n color: hightLightDate && hightLightDate.color ? hightLightDate.color : null,\r\n fontColor: fontColor\r\n // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null\r\n });\r\n }\r\n\r\n // To set Monday as the first day of the week.\r\n let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst;\r\n firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday;\r\n for (let j = 0; j < firstDayMonday; j++) {\r\n this.daysList.unshift({});\r\n }\r\n this.rows = [0, 7, 14, 21, 28, 35];\r\n this.cols = [0, 1, 2, 3, 4, 5, 6];\r\n this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()];\r\n this.data.currentYear = currentDate.getFullYear();\r\n this.data.currentMonthSelected = this.data.currentMonth;\r\n this.currentYearSelected = this.data.currentYear;\r\n this.numColumns = 7;\r\n }\r\n\r\n // Setting up the initial object\r\n setInitialObj(ipObj) {\r\n // console.log('setInitialObj =>', ipObj);\r\n this.mainObj = ipObj;\r\n if (this.isSelectedDateFound) {\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime();\r\n }\r\n\r\n this.selectedDateString = this.formatDate();\r\n\r\n if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) {\r\n this.weeksList = this.mainObj.weeksList;\r\n }\r\n if (this.mainObj.mondayFirst) {\r\n this.weeksList.push(this.mainObj.weeksList.shift());\r\n }\r\n if (this.mainObj.yearInAscending) {\r\n this.yearInAscending = this.mainObj.yearInAscending;\r\n }\r\n if (this.mainObj.momentLocale) {\r\n this.momentLocale = this.mainObj.momentLocale;\r\n }\r\n this.disableWeekdays = this.mainObj.disableWeekDays;\r\n this.setDisabledDates(this.mainObj);\r\n this.refreshDateList(this.mainObj.inputDate);\r\n }\r\n\r\n // for dismiss modal\r\n closeModal(selectedDate) {\r\n // console.log('closeModal => ', selectedDate);\r\n this.modalCtrl.getTop();\r\n const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat);\r\n this.modalCtrl.dismiss({ 'date': formattedDate });\r\n }\r\n\r\n // close modal button\r\n closeIonicDatePickerModal() {\r\n // console.log('closeIonicDatePickerModal');\r\n this.closeModal(null);\r\n }\r\n\r\n // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER )\r\n getYearsList(from, to) {\r\n // console.log('getYearsList =>', from, to);\r\n const yearsList = [];\r\n let minYear = 1950;\r\n let maxYear = new Date().getFullYear() + 1;\r\n minYear = from ? new Date(from).getFullYear() : minYear;\r\n maxYear = to ? new Date(to).getFullYear() : maxYear;\r\n // console.log('getYearsList: ', this.yearInAscending);\r\n if (this.yearInAscending) {\r\n for (let i = minYear; i <= maxYear; i++) {\r\n yearsList.push(i);\r\n }\r\n } else {\r\n for (let i = maxYear; i >= minYear; i--) {\r\n yearsList.push(i);\r\n }\r\n }\r\n return yearsList;\r\n }\r\n\r\n // Init Date-Picker\r\n initDatePicker() {\r\n this.fromDate = '';\r\n this.toDate = '';\r\n // $scope.mainObj = angular.extend({}, config, ipObj);\r\n if (this.mainObj.from) {\r\n this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime();\r\n }\r\n if (this.mainObj.to) {\r\n this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime();\r\n }\r\n // if (ipObj.disableWeekdays && this.config.disableWeekdays) {\r\n // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays);\r\n // }\r\n this.setInitialObj(this.mainObj);\r\n }\r\n\r\n // Init DatePicker Object\r\n initDatePickerObj(config) {\r\n // const config = this.mainObj;\r\n\r\n if (config.inputDate && !this.selectedDate.date) {\r\n this.isSelectedDateFound = true;\r\n this.selectedDate.date = config.inputDate;\r\n }\r\n\r\n const objConfig: any = {};\r\n objConfig.from = config.fromDate ? config.fromDate : '';\r\n objConfig.to = config.toDate ? config.toDate : '';\r\n objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton;\r\n objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false;\r\n objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : [];\r\n objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false;\r\n objConfig.setLabel = config.setLabel ? config.setLabel : 'Set';\r\n objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today';\r\n objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close';\r\n objConfig.disabledDates = config.disabledDates ? config.disabledDates : [];\r\n objConfig.titleLabel = config.titleLabel ? config.titleLabel : null;\r\n\r\n objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList;\r\n objConfig.monthsList = [...objConfig.monthsList];\r\n\r\n objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList;\r\n objConfig.weeksList = [...objConfig.weeksList];\r\n\r\n objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY';\r\n // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale());\r\n\r\n objConfig.clearButton = config.clearButton ? config.clearButton : false;\r\n\r\n objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false;\r\n objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US';\r\n\r\n moment.locale(objConfig.momentLocale);\r\n objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date();\r\n\r\n objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false;\r\n\r\n objConfig.btnProperties = {};\r\n if (config.btnProperties) {\r\n const btnProperties = config.btnProperties;\r\n objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block';\r\n objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid';\r\n objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default';\r\n objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : '';\r\n objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false;\r\n objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false;\r\n } else {\r\n objConfig.btnProperties.expand = 'block';\r\n objConfig.btnProperties.fill = 'solid';\r\n objConfig.btnProperties.size = 'default';\r\n objConfig.btnProperties.disabled = false;\r\n objConfig.btnProperties.strong = false;\r\n }\r\n\r\n objConfig.arrowNextPrev = {};\r\n if (config.arrowNextPrev) {\r\n const arrowNextPrev = config.arrowNextPrev;\r\n objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false;\r\n objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false;\r\n }\r\n\r\n objConfig.highlightedDates = [];\r\n if (config.highlightedDates && config.highlightedDates.length > 0) {\r\n objConfig.highlightedDates = config.highlightedDates;\r\n\r\n this.setHightlightedDates(objConfig);\r\n }\r\n\r\n objConfig.isSundayHighlighted = {};\r\n if (config.isSundayHighlighted) {\r\n const isSundayHighlighted = config.isSundayHighlighted;\r\n objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null;\r\n }\r\n\r\n // console.log('config =>', objConfig);\r\n return objConfig;\r\n }\r\n\r\n // Format date\r\n formatDate() {\r\n // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch));\r\n return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, NgModel } from '@angular/forms';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nconst noop = () => {\r\n};\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => Ionic4DatepickerComponent),\r\n multi: true\r\n};\r\n@Component({\r\n selector: 'li-ionic4-datepicker',\r\n templateUrl: './ionic4-datepicker.component.html',\r\n styleUrls: ['./ionic4-datepicker.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class Ionic4DatepickerComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n private innerValue: any = '';\r\n\r\n // Placeholders for the callbacks which are later provided\r\n // by the Control Value Accessor\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public el: ElementRef,\r\n public renderer2: Renderer2\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '0px';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '30%';\r\n }\r\n this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;');\r\n this.el.nativeElement.appendChild(this.closeIcon);\r\n\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate = new Date();\r\n this.value = '';\r\n });\r\n }\r\n }\r\n\r\n onChangeValue(value) {\r\n // console.log('onChangeValue =>' , value);\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n }\r\n\r\n async openDatePicker(value) {\r\n // console.log('openDatePicker');\r\n if (value) {\r\n this.selectedDate.date = value;\r\n }\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n // console.log(data);\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.value = data.data.date;\r\n }\r\n });\r\n }\r\n\r\n // get accessor\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n // set accessor including call the onchange callback\r\n set value(v: any) {\r\n if (v !== this.innerValue) {\r\n this.innerValue = v;\r\n this.onChangeCallback(v);\r\n }\r\n this.onChangeValue(v);\r\n }\r\n\r\n // Set touched on blur\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n writeValue(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n }\r\n this.onChangeValue(value);\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n}\r\n","import { Directive, Input, OnInit, HostListener, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { NgModel, NgControl } from '@angular/forms';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from './ionic4-datepicker.service';\r\n\r\n@Directive({\r\n selector: '[liIonic4Datepicker]',\r\n exportAs: 'liIonic4Datepicker',\r\n providers: [NgModel],\r\n})\r\nexport class LiIonic4DatepickerDirective implements OnInit {\r\n\r\n @Input('liIonic4Datepicker') inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n isModalOpen: any = false;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public ngModel: NgModel,\r\n public control: NgControl,\r\n public el: ElementRef,\r\n public renderer2: Renderer2,\r\n public datePickerService: Ionic4DatepickerService\r\n ) { }\r\n\r\n ngOnInit() {\r\n // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending);\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '30%';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '12px';\r\n }\r\n this.el.nativeElement.parentNode.appendChild(this.closeIcon);\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate.date = new Date();\r\n this.control.control.setValue('');\r\n this.ngModel.update.emit('');\r\n });\r\n }\r\n\r\n const self = this;\r\n this.ngModel.valueChanges.subscribe((value) => {\r\n // console.log('ngModel value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n this.control.control.valueChanges.subscribe((value) => {\r\n // console.log('formcontrol value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n if (this.control.control.value) {\r\n this.selectedDate.date = this.control.control.value;\r\n }\r\n }\r\n\r\n @HostListener('ionFocus')\r\n public onFocus() {\r\n if (this.datePickerService.isModalOpen) {\r\n return;\r\n }\r\n this.openDatePicker();\r\n }\r\n\r\n async openDatePicker() {\r\n // console.log('openDatePicker');\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.control.control.setValue(data.data.date);\r\n this.ngModel.update.emit(data.data.date);\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { Ionic4DatepickerComponent } from './ionic4-datepicker.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule\r\n ],\r\n declarations: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n exports: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent,\r\n CommonModule,\r\n FormsModule\r\n ],\r\n entryComponents: [\r\n // Ionic4DatepickerComponent,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n providers: [\r\n\r\n ]\r\n})\r\nexport class Ionic4DatepickerModule { }\r\n"]} \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js new file mode 100644 index 0000000..9d85151 --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js @@ -0,0 +1,649 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Component, ViewChild } from '@angular/core'; +import { NavParams, ModalController, IonContent } from '@ionic/angular'; +import * as moment_ from 'moment'; +import { Ionic4DatepickerService } from '../ionic4-datepicker.service'; +/** @type {?} */ +const moment = moment_; +export class Ionic4DatepickerModalComponent { + /** + * @param {?} navParams + * @param {?} modalCtrl + * @param {?} datePickerService + */ + constructor(navParams, modalCtrl, datePickerService) { + this.navParams = navParams; + this.modalCtrl = modalCtrl; + this.datePickerService = datePickerService; + // inputs + this.mainObj = {}; + this.selectedDate = {}; + // component variables + this.selctedDateEpoch = 0; + this.disabledDates = []; + this.highlightedDates = {}; + this.disableWeekdays = []; + this.data = { + currentMonth: '', + currentYear: '', + currentMonthSelected: '' + }; + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; + this.weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S']; + this.yearsList = []; + this.daysList = []; + this.yearInAscending = false; + this.momentLocale = 'en-US'; + // month year scroll variables + this.isMonthYearSelectorOpen = false; + this.scrollingMonthOrYearArray = []; + this.isSelectedDateFound = false; + this.today = this.resetHMSM(new Date()).getTime(); + if (this.navParams.get('selectedDate')) { + // console.log('Selected date =>', this.navParams.get('selectedDate')); + this.selectedDate.date = this.navParams.get('selectedDate'); + this.isSelectedDateFound = true; + } + this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig')); + } + /** + * @return {?} + */ + ngOnInit() { + this.datePickerService.isModalOpen = true; + this.initDatePicker(); + } + /** + * @return {?} + */ + ngOnDestroy() { + this.datePickerService.isModalOpen = false; + } + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + resetHMSM(currentDate) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + currentDate.setMilliseconds(0); + return currentDate; + } + // this method change month or year list to dateList + /** + * @return {?} + */ + changeToDateList() { + // console.log('changeToDateList'); + this.isMonthYearSelectorOpen = false; + } + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + selectMonthYear(isMonthSelect) { + // console.log('selectMonthYear', i); + this.isMonthYearSelectorOpen = true; + this.isMonthSelect = isMonthSelect; + this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList; + this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear; + /** @type {?} */ + const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth); + /** @type {?} */ + const iditem = index + 'list'; + setTimeout((/** + * @return {?} + */ + () => { + document.getElementById(iditem).scrollIntoView(); + }), 100); + } + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + onChangeMonthYear(monthYear) { + // console.log('onChangeMonthYear', monthYear); + if (monthYear) { + if (this.isMonthSelect) { + this.data.currentMonth = monthYear; + this.selectedYearOrMonth = this.data.currentMonth; + /** @type {?} */ + const monthNumber = this.monthsList.indexOf(this.data.currentMonth); + this.currentDate.setDate(1); + this.currentDate.setMonth(monthNumber); + } + else { + this.data.currentYear = monthYear; + this.selectedYearOrMonth = this.data.currentYear; + this.currentDate.setFullYear(this.data.currentYear); + this.refreshDateList(this.currentDate); + } + this.refreshDateList(this.currentDate); + } + this.isMonthYearSelectorOpen = false; + } + // Previous month + /** + * @return {?} + */ + prevMonth() { + // console.log('prevNext', this.currentDate); + /** @type {?} */ + const currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + const currentYear = this.currentDate.getFullYear(); + if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) { + return; + } + if (currentMonth === 1) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setMonth(currentMonth - 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + } + // Next month + /** + * @return {?} + */ + nextMonth() { + // console.log('nextNext', this.currentDate); + /** @type {?} */ + const currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + const currentYear = this.currentDate.getFullYear(); + if (currentYear >= this.yearsList[0] && currentMonth === 11) { + return; + } + if (currentMonth === 11) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setDate(1); + this.currentDate.setMonth(currentMonth + 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + } + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + changeDaySelected() { + // console.log('changeDaySelected'); + /** @type {?} */ + const newSelectedDate = new Date(this.selctedDateEpoch); + newSelectedDate.setMonth(this.currentDate.getMonth()); + newSelectedDate.setYear(this.currentDate.getFullYear()); + this.selctedDateEpoch = newSelectedDate.getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + } + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + dateSelected(selectedDate) { + // console.log('dateSelected =>', selectedDate); + if (selectedDate && !selectedDate.disabled) { + if (!selectedDate || Object.keys(selectedDate).length === 0) { + return; + } + this.isSelectedDateFound = true; + this.selctedDateEpoch = selectedDate.epoch; + this.selectedDateString = this.formatDate(); + if (this.mainObj.closeOnSelect) { + this.closeModal(this.selctedDateEpoch); + } + } + } + // Set today as date for the modal + /** + * @return {?} + */ + setIonicDatePickerTodayDate() { + // console.log('setIonicDatePickerTodayDate'); + /** @type {?} */ + const today = new Date(this.today); + /** @type {?} */ + const today_obj = { + date: today.getDate(), + month: today.getMonth(), + year: today.getFullYear(), + day: today.getDay(), + epoch: today.getTime(), + disabled: false + }; + this.dateSelected(today_obj); + this.refreshDateList(new Date()); + this.selctedDateEpoch = this.resetHMSM(today).getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + } + // Set date for the modal + /** + * @return {?} + */ + setIonicDatePickerDate() { + // console.log('setIonicDatePickerDate'); + this.closeModal(this.selctedDateEpoch); + } + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + setDisabledDates(obj) { + // console.log('setDisabledDates =>', obj); + if (!obj.disabledDates || obj.disabledDates.length === 0) { + this.disabledDates = []; + } + else { + this.disabledDates = []; + for (let i = 0; i < obj.disabledDates.length; i++) { + // val = resetHMSM(new Date(val)); + this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime()); + } + } + } + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + setHightlightedDates(obj) { + if (!obj.highlightedDates || obj.highlightedDates.length === 0) { + this.highlightedDates = {}; + } + else { + this.highlightedDates = {}; + for (let i = 0; i < obj.highlightedDates.length; i++) { + /** @type {?} */ + const hDate = obj.highlightedDates[i].date; + /** @type {?} */ + const hColor = obj.highlightedDates[i].color; + /** @type {?} */ + const hFontColor = obj.highlightedDates[i].fontColor; + /** @type {?} */ + const hDateTime = this.resetHMSM(new Date(hDate)).getTime(); + this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor }; + } + } + } + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + refreshDateList(currentDate) { + // console.log('refreshDateList =>', currentDate); + currentDate = this.resetHMSM(currentDate); + this.currentDate = currentDate; + /** @type {?} */ + const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate(); + /** @type {?} */ + const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate(); + this.monthsList = []; + if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) { + this.monthsList = this.mainObj.monthsList; + } + else { + this.monthsList = this.monthsList; + } + this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to); + this.daysList = []; + /** @type {?} */ + let tempDate; + /** @type {?} */ + let disabled; + this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime(); + this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime(); + for (let i = firstDay; i <= lastDay; i++) { + tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i); + disabled = false; + /** @type {?} */ + const day = tempDate.getDay(); + if (this.disableWeekdays.length > 0) { + if (this.disableWeekdays.indexOf(day) >= 0) { + disabled = this.disableWeekdays.indexOf(day) >= 0; + } + else { + disabled = false; + } + } + if (this.disabledDates.length > 0) { + if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) { + disabled = true; + } + } + if (this.fromDate && !disabled) { + disabled = (tempDate.getTime() < this.fromDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + if (this.toDate && !disabled) { + disabled = (tempDate.getTime() > this.toDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + /** @type {?} */ + const hightLightDate = this.highlightedDates[tempDate.getTime()]; + /** @type {?} */ + let fontColor = null; + if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) { + fontColor = this.mainObj.isSundayHighlighted.fontColor; + } + else if (hightLightDate && hightLightDate.fontColor) { + fontColor = hightLightDate.fontColor; + } + this.daysList.push({ + date: tempDate.getDate(), + month: tempDate.getMonth(), + year: tempDate.getFullYear(), + day: tempDate.getDay(), + epoch: tempDate.getTime(), + disabled: disabled, + color: hightLightDate && hightLightDate.color ? hightLightDate.color : null, + fontColor: fontColor + // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null + }); + } + // To set Monday as the first day of the week. + /** @type {?} */ + let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst; + firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday; + for (let j = 0; j < firstDayMonday; j++) { + this.daysList.unshift({}); + } + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()]; + this.data.currentYear = currentDate.getFullYear(); + this.data.currentMonthSelected = this.data.currentMonth; + this.currentYearSelected = this.data.currentYear; + this.numColumns = 7; + } + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + setInitialObj(ipObj) { + // console.log('setInitialObj =>', ipObj); + this.mainObj = ipObj; + if (this.isSelectedDateFound) { + this.isSelectedDateFound = true; + this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime(); + } + this.selectedDateString = this.formatDate(); + if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) { + this.weeksList = this.mainObj.weeksList; + } + if (this.mainObj.mondayFirst) { + this.weeksList.push(this.mainObj.weeksList.shift()); + } + if (this.mainObj.yearInAscending) { + this.yearInAscending = this.mainObj.yearInAscending; + } + if (this.mainObj.momentLocale) { + this.momentLocale = this.mainObj.momentLocale; + } + this.disableWeekdays = this.mainObj.disableWeekDays; + this.setDisabledDates(this.mainObj); + this.refreshDateList(this.mainObj.inputDate); + } + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + closeModal(selectedDate) { + // console.log('closeModal => ', selectedDate); + this.modalCtrl.getTop(); + /** @type {?} */ + const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat); + this.modalCtrl.dismiss({ 'date': formattedDate }); + } + // close modal button + /** + * @return {?} + */ + closeIonicDatePickerModal() { + // console.log('closeIonicDatePickerModal'); + this.closeModal(null); + } + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + getYearsList(from, to) { + // console.log('getYearsList =>', from, to); + /** @type {?} */ + const yearsList = []; + /** @type {?} */ + let minYear = 1950; + /** @type {?} */ + let maxYear = new Date().getFullYear() + 1; + minYear = from ? new Date(from).getFullYear() : minYear; + maxYear = to ? new Date(to).getFullYear() : maxYear; + // console.log('getYearsList: ', this.yearInAscending); + if (this.yearInAscending) { + for (let i = minYear; i <= maxYear; i++) { + yearsList.push(i); + } + } + else { + for (let i = maxYear; i >= minYear; i--) { + yearsList.push(i); + } + } + return yearsList; + } + // Init Date-Picker + /** + * @return {?} + */ + initDatePicker() { + this.fromDate = ''; + this.toDate = ''; + // $scope.mainObj = angular.extend({}, config, ipObj); + if (this.mainObj.from) { + this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime(); + } + if (this.mainObj.to) { + this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime(); + } + // if (ipObj.disableWeekdays && this.config.disableWeekdays) { + // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays); + // } + this.setInitialObj(this.mainObj); + } + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + initDatePickerObj(config) { + // const config = this.mainObj; + if (config.inputDate && !this.selectedDate.date) { + this.isSelectedDateFound = true; + this.selectedDate.date = config.inputDate; + } + /** @type {?} */ + const objConfig = {}; + objConfig.from = config.fromDate ? config.fromDate : ''; + objConfig.to = config.toDate ? config.toDate : ''; + objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton; + objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false; + objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : []; + objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false; + objConfig.setLabel = config.setLabel ? config.setLabel : 'Set'; + objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today'; + objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close'; + objConfig.disabledDates = config.disabledDates ? config.disabledDates : []; + objConfig.titleLabel = config.titleLabel ? config.titleLabel : null; + objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList; + objConfig.monthsList = [...objConfig.monthsList]; + objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList; + objConfig.weeksList = [...objConfig.weeksList]; + objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY'; + // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale()); + objConfig.clearButton = config.clearButton ? config.clearButton : false; + objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false; + objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US'; + moment.locale(objConfig.momentLocale); + objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date(); + objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false; + objConfig.btnProperties = {}; + if (config.btnProperties) { + /** @type {?} */ + const btnProperties = config.btnProperties; + objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block'; + objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid'; + objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default'; + objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : ''; + objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false; + objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false; + } + else { + objConfig.btnProperties.expand = 'block'; + objConfig.btnProperties.fill = 'solid'; + objConfig.btnProperties.size = 'default'; + objConfig.btnProperties.disabled = false; + objConfig.btnProperties.strong = false; + } + objConfig.arrowNextPrev = {}; + if (config.arrowNextPrev) { + /** @type {?} */ + const arrowNextPrev = config.arrowNextPrev; + objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false; + objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false; + } + objConfig.highlightedDates = []; + if (config.highlightedDates && config.highlightedDates.length > 0) { + objConfig.highlightedDates = config.highlightedDates; + this.setHightlightedDates(objConfig); + } + objConfig.isSundayHighlighted = {}; + if (config.isSundayHighlighted) { + /** @type {?} */ + const isSundayHighlighted = config.isSundayHighlighted; + objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null; + } + // console.log('config =>', objConfig); + return objConfig; + } + // Format date + /** + * @return {?} + */ + formatDate() { + // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch)); + return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat); + } +} +Ionic4DatepickerModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker-modal', + template: "\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n", + styles: [":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"] + }] } +]; +/** @nocollapse */ +Ionic4DatepickerModalComponent.ctorParameters = () => [ + { type: NavParams }, + { type: ModalController }, + { type: Ionic4DatepickerService } +]; +Ionic4DatepickerModalComponent.propDecorators = { + content: [{ type: ViewChild, args: [IonContent, { static: false },] }] +}; +if (false) { + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.content; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.currentDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.today; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.mainObj; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selctedDateEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.firstDayEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.lastDayEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.disabledDates; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.highlightedDates; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.fromDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.toDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.disableWeekdays; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.data; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.currentYearSelected; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.numColumns; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.rows; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.cols; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.monthsList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.weeksList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.yearsList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.daysList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.yearInAscending; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.momentLocale; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedDateString; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isMonthYearSelectorOpen; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedYearOrMonth; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isMonthSelect; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.scrollingMonthOrYearArray; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isSelectedDateFound; + /** + * @type {?} + * @private + */ + Ionic4DatepickerModalComponent.prototype.navParams; + /** + * @type {?} + * @private + */ + Ionic4DatepickerModalComponent.prototype.modalCtrl; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.datePickerService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEUsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7O01BQ2pFLE1BQU0sR0FBRyxPQUFPO0FBT3RCLE1BQU0sT0FBTyw4QkFBOEI7Ozs7OztJQWdEekMsWUFDVSxTQUFvQixFQUNwQixTQUEwQixFQUMzQixpQkFBMEM7UUFGekMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXlCOztRQTNDbkQsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixpQkFBWSxHQUFRLEVBQUUsQ0FBQzs7UUFHdkIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBSXJCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUkzQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQVE7WUFDVixZQUFZLEVBQUUsRUFBRTtZQUNoQixXQUFXLEVBQUUsRUFBRTtZQUNmLG9CQUFvQixFQUFFLEVBQUU7U0FDekIsQ0FBQztRQUlGLFNBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFF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QUFDO1FBQy9ELFNBQVMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZFLFNBQVMsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXBFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMvRSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakQsU0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzNFLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUvQyxTQUFTLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUM3RSw4RUFBOEU7UUFFOUUsU0FBUyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FB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REFBYzs7SUFDZCxzREFBYTs7SUFFYix1REFBbUI7O0lBQ25CLDBEQUEyQjs7SUFFM0Isa0RBQVM7O0lBQ1QsZ0RBQU87O0lBQ1AseURBQXFCOztJQUNyQiw4Q0FJRTs7SUFDRiw2REFBb0I7O0lBQ3BCLG9EQUFXOztJQUVYLDhDQUE4Qjs7SUFDOUIsOENBQTZCOztJQUM3QixvREFBeUc7O0lBQ3pHLG1EQUFnRDs7SUFDaEQsbURBQWU7O0lBQ2Ysa0RBQWM7O0lBQ2QseURBQXdCOztJQUN4QixzREFBdUI7O0lBQ3ZCLDREQUFtQjs7SUFHbkIsaUVBQWdDOztJQUNoQyw2REFBb0I7O0lBQ3BCLHVEQUFjOztJQUNkLG1FQUFvQzs7SUFFcEMsNkRBQTRCOzs7OztJQUcxQixtREFBNEI7Ozs7O0lBQzVCLG1EQUFrQzs7SUFDbEMsMkRBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdlBhcmFtcywgTW9kYWxDb250cm9sbGVyLCBJb25Db250ZW50IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyU2VydmljZSB9IGZyb20gJy4uL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaS1pb25pYzQtZGF0ZXBpY2tlci1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwge3N0YXRpYzogZmFsc2V9KSBjb250ZW50OiBJb25Db250ZW50O1xyXG5cclxuICBjdXJyZW50RGF0ZTtcclxuICB0b2RheTtcclxuXHJcbiAgLy8gaW5wdXRzXHJcbiAgbWFpbk9iajogYW55ID0ge307XHJcbiAgc2VsZWN0ZWREYXRlOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gY29tcG9uZW50IHZhcmlhYmxlc1xyXG4gIHNlbGN0ZWREYXRlRXBvY2ggPSAwO1xyXG4gIGZpcnN0RGF5RXBvY2g7XHJcbiAgbGFzdERheUVwb2NoO1xyXG5cclxuICBkaXNhYmxlZERhdGVzID0gW107XHJcbiAgaGlnaGxpZ2h0ZWREYXRlczogYW55ID0ge307XHJcblxyXG4gIGZyb21EYXRlO1xyXG4gIHRvRGF0ZTtcclxuICBkaXNhYmxlV2Vla2RheXMgPSBbXTtcclxuICBkYXRhOiBhbnkgPSB7XHJcbiAgICBjdXJyZW50TW9udGg6ICcnLFxyXG4gICAgY3VycmVudFllYXI6ICcnLFxyXG4gICAgY3VycmVudE1vbnRoU2VsZWN0ZWQ6ICcnXHJcbiAgfTtcclxuICBjdXJyZW50WWVhclNlbGVjdGVkO1xyXG4gIG51bUNvbHVtbnM7XHJcblxyXG4gIHJvd3MgPSBbMCwgNywgMTQsIDIxLCAyOCwgMzVdO1xyXG4gIGNvbHMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl07XHJcbiAgbW9udGhzTGlzdCA9IFsnSmFuJywgJ0ZlYicsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1ZycsICdTZXB0JywgJ09jdCcsICdOb3YnLCAnRGVjJ107XHJcbiAgd2Vla3NMaXN0ID0gWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ107XHJcbiAgeWVhcnNMaXN0ID0gW107XHJcbiAgZGF5c0xpc3QgPSBbXTtcclxuICB5ZWFySW5Bc2NlbmRpbmcgPSBmYWxzZTtcclxuICBtb21lbnRMb2NhbGUgPSAnZW4tVVMnO1xyXG4gIHNlbGVjdGVkRGF0ZVN0cmluZztcclxuXHJcbiAgLy8gbW9udGggeWVhciBzY3JvbGwgdmFyaWFibGVzXHJcbiAgaXNNb250aFllYXJTZWxlY3Rvck9wZW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFllYXJPck1vbnRoO1xyXG4gIGlzTW9udGhTZWxlY3Q7XHJcbiAgc2Nyb2xsaW5nTW9udGhPclllYXJBcnJheTogYW55ID0gW107XHJcblxyXG4gIGlzU2VsZWN0ZWREYXRlRm91bmQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdlBhcmFtczogTmF2UGFyYW1zLFxyXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcclxuICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudG9kYXkgPSB0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAodGhpcy5uYXZQYXJhbXMuZ2V0KCdzZWxlY3RlZERhdGUnKSkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnU2VsZWN0ZWQgZGF0ZSA9PicsIHRoaXMubmF2UGFyYW1zLmdldCgnc2VsZWN0ZWREYXRlJykpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gdGhpcy5uYXZQYXJhbXMuZ2V0KCdzZWxlY3RlZERhdGUnKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdGVkRGF0ZUZvdW5kID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubWFpbk9iaiA9IHRoaXMuaW5pdERhdGVQaWNrZXJPYmoodGhpcy5uYXZQYXJhbXMuZ2V0KCdvYmpDb25maWcnKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0RGF0ZVBpY2tlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCB0aGUgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgYW5kIG1pbGxpIHNlY29uZHNcclxuICByZXNldEhNU00oY3VycmVudERhdGUpIHtcclxuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDApO1xyXG4gICAgY3VycmVudERhdGUuc2V0TWludXRlcygwKTtcclxuICAgIGN1cnJlbnREYXRlLnNldFNlY29uZHMoMCk7XHJcbiAgICBjdXJyZW50RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XHJcbiAgICByZXR1cm4gY3VycmVudERhdGU7XHJcbiAgfVxyXG5cclxuICAvLyB0aGlzIG1ldGhvZCBjaGFuZ2UgbW9udGggb3IgeWVhciBsaXN0IHRvIGRhdGVMaXN0XHJcbiAgY2hhbmdlVG9EYXRlTGlzdCgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VUb0RhdGVMaXN0Jyk7XHJcbiAgICB0aGlzLmlzTW9udGhZZWFyU2VsZWN0b3JPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBWaXJ0dWFsIHNjcm9sbCBjcmVhdGUgZm9yIHNlbGVjdCB5ZWFyIGFuZCBtb250aFxyXG4gIHNlbGVjdE1vbnRoWWVhcihpc01vbnRoU2VsZWN0KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnc2VsZWN0TW9udGhZZWFyJywgaSk7XHJcbiAgICB0aGlzLmlzTW9udGhZZWFyU2VsZWN0b3JPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmlzTW9udGhTZWxlY3QgPSBpc01vbnRoU2VsZWN0O1xyXG4gICAgdGhpcy5zY3JvbGxpbmdNb250aE9yWWVhckFycmF5ID0gaXNNb250aFNlbGVjdCA/IHRoaXMubWFpbk9iai5tb250aHNMaXN0IDogdGhpcy55ZWFyc0xpc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSBpc01vbnRoU2VsZWN0ID8gdGhpcy5kYXRhLmN1cnJlbnRNb250aCA6IHRoaXMuZGF0YS5jdXJyZW50WWVhcjtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2Nyb2xsaW5nTW9udGhPclllYXJBcnJheS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRZZWFyT3JNb250aCk7XHJcbiAgICBjb25zdCBpZGl0ZW0gPSBpbmRleCArICdsaXN0JztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRpdGVtKS5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBtb250aCBvciB5ZWFyXHJcbiAgb25DaGFuZ2VNb250aFllYXIobW9udGhZZWFyKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb25DaGFuZ2VNb250aFllYXInLCBtb250aFllYXIpO1xyXG4gICAgaWYgKG1vbnRoWWVhcikge1xyXG4gICAgICBpZiAodGhpcy5pc01vbnRoU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IG1vbnRoWWVhcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSB0aGlzLmRhdGEuY3VycmVudE1vbnRoO1xyXG4gICAgICAgIGNvbnN0IG1vbnRoTnVtYmVyID0gdGhpcy5tb250aHNMaXN0LmluZGV4T2YodGhpcy5kYXRhLmN1cnJlbnRNb250aCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXREYXRlKDEpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgobW9udGhOdW1iZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YS5jdXJyZW50WWVhciA9IG1vbnRoWWVhcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSB0aGlzLmRhdGEuY3VycmVudFllYXI7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRGdWxsWWVhcih0aGlzLmRhdGEuY3VycmVudFllYXIpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc01vbnRoWWVhclNlbGVjdG9yT3BlbiA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIC8vIFByZXZpb3VzIG1vbnRoXHJcbiAgcHJldk1vbnRoKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3ByZXZOZXh0JywgdGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGlmIChjdXJyZW50WWVhciA8PSB0aGlzLnllYXJzTGlzdFsodGhpcy55ZWFyc0xpc3QubGVuZ3RoIC0gMSldICYmIGN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudE1vbnRoID09PSAxKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc2V0RnVsbFllYXIoY3VycmVudFllYXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aChjdXJyZW50TW9udGggLSAxKTtcclxuICAgIHRoaXMuZGF0YS5jdXJyZW50TW9udGggPSB0aGlzLm1haW5PYmoubW9udGhzTGlzdFtjdXJyZW50TW9udGhdO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRZZWFyID0gY3VycmVudFllYXI7XHJcbiAgICB0aGlzLnJlZnJlc2hEYXRlTGlzdCh0aGlzLmN1cnJlbnREYXRlKTtcclxuICAgIC8vIHRoaXMuY2hhbmdlRGF5U2VsZWN0ZWQoKTtcclxuICB9XHJcblxyXG4gIC8vIE5leHQgbW9udGhcclxuICBuZXh0TW9udGgoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbmV4dE5leHQnLCB0aGlzLmN1cnJlbnREYXRlKTtcclxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgaWYgKGN1cnJlbnRZZWFyID49IHRoaXMueWVhcnNMaXN0WzBdICYmIGN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRGdWxsWWVhcihjdXJyZW50WWVhcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldERhdGUoMSk7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKGN1cnJlbnRNb250aCArIDEpO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IHRoaXMubWFpbk9iai5tb250aHNMaXN0W2N1cnJlbnRNb250aF07XHJcbiAgICB0aGlzLmRhdGEuY3VycmVudFllYXIgPSBjdXJyZW50WWVhcjtcclxuICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgLy8gdGhpcy5jaGFuZ2VEYXlTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2hhbmdlRGF5U2VsZWN0ZWQgKCBkYXkgc2VsZWN0aW9uIGNoYW5nZXMgKVxyXG4gIGNoYW5nZURheVNlbGVjdGVkKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2NoYW5nZURheVNlbGVjdGVkJyk7XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGU6IGFueSA9IG5ldyBEYXRlKHRoaXMuc2VsY3RlZERhdGVFcG9jaCk7XHJcbiAgICBuZXdTZWxlY3RlZERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpKTtcclxuICAgIG5ld1NlbGVjdGVkRGF0ZS5zZXRZZWFyKHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSk7XHJcbiAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSBuZXdTZWxlY3RlZERhdGUuZ2V0VGltZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIC8vIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gIH1cclxuXHJcbiAgLy8gRGF0ZSBzZWxlY3RlZFxyXG4gIGRhdGVTZWxlY3RlZChzZWxlY3RlZERhdGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdkYXRlU2VsZWN0ZWQgPT4nLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgaWYgKHNlbGVjdGVkRGF0ZSAmJiAhc2VsZWN0ZWREYXRlLmRpc2FibGVkKSB7XHJcbiAgICAgIGlmICghc2VsZWN0ZWREYXRlIHx8IE9iamVjdC5rZXlzKHNlbGVjdGVkRGF0ZSkubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSBzZWxlY3RlZERhdGUuZXBvY2g7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RyaW5nID0gdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICAgIGlmICh0aGlzLm1haW5PYmouY2xvc2VPblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTZXQgdG9kYXkgYXMgZGF0ZSBmb3IgdGhlIG1vZGFsXHJcbiAgc2V0SW9uaWNEYXRlUGlja2VyVG9kYXlEYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldElvbmljRGF0ZVBpY2tlclRvZGF5RGF0ZScpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSh0aGlzLnRvZGF5KTtcclxuICAgIGNvbnN0IHRvZGF5X29iaiA9IHtcclxuICAgICAgZGF0ZTogdG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBtb250aDogdG9kYXkuZ2V0TW9udGgoKSxcclxuICAgICAgeWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF5OiB0b2RheS5nZXREYXkoKSxcclxuICAgICAgZXBvY2g6IHRvZGF5LmdldFRpbWUoKSxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQodG9kYXlfb2JqKTtcclxuICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KG5ldyBEYXRlKCkpO1xyXG4gICAgdGhpcy5zZWxjdGVkRGF0ZUVwb2NoID0gdGhpcy5yZXNldEhNU00odG9kYXkpLmdldFRpbWUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RyaW5nID0gdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICAvLyB0aGlzLmNsb3NlTW9kYWwodGhpcy5zZWxjdGVkRGF0ZUVwb2NoKTtcclxuICB9XHJcblxyXG4gIC8vIFNldCBkYXRlIGZvciB0aGUgbW9kYWxcclxuICBzZXRJb25pY0RhdGVQaWNrZXJEYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldElvbmljRGF0ZVBpY2tlckRhdGUnKTtcclxuICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0dGluZyB0aGUgZGlzYWJsZWQgZGF0ZXMgbGlzdC5cclxuICBzZXREaXNhYmxlZERhdGVzKG9iaikge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldERpc2FibGVkRGF0ZXMgPT4nLCBvYmopO1xyXG4gICAgaWYgKCFvYmouZGlzYWJsZWREYXRlcyB8fCBvYmouZGlzYWJsZWREYXRlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZERhdGVzID0gW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRGF0ZXMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmouZGlzYWJsZWREYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIHZhbCA9IHJlc2V0SE1TTShuZXcgRGF0ZSh2YWwpKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVkRGF0ZXMucHVzaCh0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZShvYmouZGlzYWJsZWREYXRlc1tpXSkpLmdldFRpbWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFNldCBoaWdodGxpZ2h0ZWQgZGF0ZXNcclxuICBzZXRIaWdodGxpZ2h0ZWREYXRlcyhvYmopIHtcclxuICAgIGlmICghb2JqLmhpZ2hsaWdodGVkRGF0ZXMgfHwgb2JqLmhpZ2hsaWdodGVkRGF0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWREYXRlcyA9IHt9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZERhdGVzID0ge307XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmhpZ2hsaWdodGVkRGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBoRGF0ZSA9IG9iai5oaWdobGlnaHRlZERhdGVzW2ldLmRhdGU7XHJcbiAgICAgICAgY29uc3QgaENvbG9yID0gb2JqLmhpZ2hsaWdodGVkRGF0ZXNbaV0uY29sb3I7XHJcbiAgICAgICAgY29uc3QgaEZvbnRDb2xvciA9IG9iai5oaWdobGlnaHRlZERhdGVzW2ldLmZvbnRDb2xvcjtcclxuICAgICAgICBjb25zdCBoRGF0ZVRpbWUgPSB0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZShoRGF0ZSkpLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkRGF0ZXNbaERhdGVUaW1lXSA9IHsgY29sb3I6IGhDb2xvciwgZm9udENvbG9yOiBoRm9udENvbG9yIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlZnJlc2ggdGhlIGxpc3Qgb2YgdGhlIGRhdGVzIG9mIGEgbW9udGhcclxuICByZWZyZXNoRGF0ZUxpc3QoY3VycmVudERhdGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdyZWZyZXNoRGF0ZUxpc3QgPT4nLCBjdXJyZW50RGF0ZSk7XHJcbiAgICBjdXJyZW50RGF0ZSA9IHRoaXMucmVzZXRITVNNKGN1cnJlbnREYXRlKTtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZTtcclxuXHJcbiAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIDEpLmdldERhdGUoKTtcclxuICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG5cclxuICAgIHRoaXMubW9udGhzTGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMubWFpbk9iai5tb250aHNMaXN0ICYmIHRoaXMubWFpbk9iai5tb250aHNMaXN0Lmxlbmd0aCA9PT0gMTIpIHtcclxuICAgICAgdGhpcy5tb250aHNMaXN0ID0gdGhpcy5tYWluT2JqLm1vbnRoc0xpc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vbnRoc0xpc3QgPSB0aGlzLm1vbnRoc0xpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmdldFllYXJzTGlzdCh0aGlzLm1haW5PYmouZnJvbSwgdGhpcy5tYWluT2JqLnRvKTtcclxuXHJcbiAgICB0aGlzLmRheXNMaXN0ID0gW107XHJcbiAgICBsZXQgdGVtcERhdGUsIGRpc2FibGVkO1xyXG4gICAgdGhpcy5maXJzdERheUVwb2NoID0gdGhpcy5yZXNldEhNU00obmV3IERhdGUoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudERhdGUuZ2V0TW9udGgoKSwgZmlyc3REYXkpKS5nZXRUaW1lKCk7XHJcbiAgICB0aGlzLmxhc3REYXlFcG9jaCA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIGxhc3REYXkpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGZpcnN0RGF5OyBpIDw9IGxhc3REYXk7IGkrKykge1xyXG4gICAgICB0ZW1wRGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIGkpO1xyXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBkYXkgPSB0ZW1wRGF0ZS5nZXREYXkoKTtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVdlZWtkYXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlV2Vla2RheXMuaW5kZXhPZihkYXkpID49IDApIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdGhpcy5kaXNhYmxlV2Vla2RheXMuaW5kZXhPZihkYXkpID49IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmluZGV4T2YodGVtcERhdGUuZ2V0VGltZSgpKSA+PSAwKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5mcm9tRGF0ZSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICBkaXNhYmxlZCA9ICh0ZW1wRGF0ZS5nZXRUaW1lKCkgPCB0aGlzLmZyb21EYXRlKVxyXG4gICAgICAgICAgfHwgdGhpcy5tYWluT2JqLmRpc2FibGVXZWVrRGF5cy5pbmRleE9mKHRlbXBEYXRlLmdldERheSgpKSA+PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRvRGF0ZSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICBkaXNhYmxlZCA9ICh0ZW1wRGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnRvRGF0ZSlcclxuICAgICAgICAgIHx8IHRoaXMubWFpbk9iai5kaXNhYmxlV2Vla0RheXMuaW5kZXhPZih0ZW1wRGF0ZS5nZXREYXkoKSkgPj0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGlnaHRMaWdodERhdGUgPSB0aGlzLmhpZ2hsaWdodGVkRGF0ZXNbdGVtcERhdGUuZ2V0VGltZSgpXTtcclxuXHJcbiAgICAgIGxldCBmb250Q29sb3IgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRlbXBEYXRlLmdldERheSgpID09PSAwICYmIHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkICYmIHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvcikge1xyXG4gICAgICAgIGZvbnRDb2xvciA9IHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvcjtcclxuICAgICAgfSBlbHNlIGlmIChoaWdodExpZ2h0RGF0ZSAmJiBoaWdodExpZ2h0RGF0ZS5mb250Q29sb3IpIHtcclxuICAgICAgICBmb250Q29sb3IgPSBoaWdodExpZ2h0RGF0ZS5mb250Q29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF5c0xpc3QucHVzaCh7XHJcbiAgICAgICAgZGF0ZTogdGVtcERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIG1vbnRoOiB0ZW1wRGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIHllYXI6IHRlbXBEYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgZGF5OiB0ZW1wRGF0ZS5nZXREYXkoKSxcclxuICAgICAgICBlcG9jaDogdGVtcERhdGUuZ2V0VGltZSgpLFxyXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICBjb2xvcjogaGlnaHRMaWdodERhdGUgJiYgaGlnaHRMaWdodERhdGUuY29sb3IgPyBoaWdodExpZ2h0RGF0ZS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgZm9udENvbG9yOiBmb250Q29sb3JcclxuICAgICAgICAvLyBmb250Q29sb3I6IGhpZ2h0TGlnaHREYXRlICYmIGhpZ2h0TGlnaHREYXRlLmZvbnRDb2xvciA/IGhpZ2h0TGlnaHREYXRlLmZvbnRDb2xvciA6IG51bGxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVG8gc2V0IE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxyXG4gICAgbGV0IGZpcnN0RGF5TW9uZGF5ID0gdGhpcy5kYXlzTGlzdFswXS5kYXkgLSB0aGlzLm1haW5PYmoubW9uZGF5Rmlyc3Q7XHJcbiAgICBmaXJzdERheU1vbmRheSA9IChmaXJzdERheU1vbmRheSA8IDApID8gNiA6IGZpcnN0RGF5TW9uZGF5O1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBmaXJzdERheU1vbmRheTsgaisrKSB7XHJcbiAgICAgIHRoaXMuZGF5c0xpc3QudW5zaGlmdCh7fSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd3MgPSBbMCwgNywgMTQsIDIxLCAyOCwgMzVdO1xyXG4gICAgdGhpcy5jb2xzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IHRoaXMubWFpbk9iai5tb250aHNMaXN0W2N1cnJlbnREYXRlLmdldE1vbnRoKCldO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRZZWFyID0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMuZGF0YS5jdXJyZW50TW9udGhTZWxlY3RlZCA9IHRoaXMuZGF0YS5jdXJyZW50TW9udGg7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyU2VsZWN0ZWQgPSB0aGlzLmRhdGEuY3VycmVudFllYXI7XHJcbiAgICB0aGlzLm51bUNvbHVtbnMgPSA3O1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0dGluZyB1cCB0aGUgaW5pdGlhbCBvYmplY3RcclxuICBzZXRJbml0aWFsT2JqKGlwT2JqKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnc2V0SW5pdGlhbE9iaiA9PicsIGlwT2JqKTtcclxuICAgIHRoaXMubWFpbk9iaiA9IGlwT2JqO1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZERhdGVGb3VuZCkge1xyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSB0aGlzLnJlc2V0SE1TTSh0aGlzLm1haW5PYmouaW5wdXREYXRlKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5tYWluT2JqLndlZWtzTGlzdCAmJiB0aGlzLm1haW5PYmoud2Vla3NMaXN0Lmxlbmd0aCA9PT0gNykge1xyXG4gICAgICB0aGlzLndlZWtzTGlzdCA9IHRoaXMubWFpbk9iai53ZWVrc0xpc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYWluT2JqLm1vbmRheUZpcnN0KSB7XHJcbiAgICAgIHRoaXMud2Vla3NMaXN0LnB1c2godGhpcy5tYWluT2JqLndlZWtzTGlzdC5zaGlmdCgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1haW5PYmoueWVhckluQXNjZW5kaW5nKSB7XHJcbiAgICAgIHRoaXMueWVhckluQXNjZW5kaW5nID0gdGhpcy5tYWluT2JqLnllYXJJbkFzY2VuZGluZztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1haW5PYmoubW9tZW50TG9jYWxlKSB7XHJcbiAgICAgIHRoaXMubW9tZW50TG9jYWxlID0gdGhpcy5tYWluT2JqLm1vbWVudExvY2FsZTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzYWJsZVdlZWtkYXlzID0gdGhpcy5tYWluT2JqLmRpc2FibGVXZWVrRGF5cztcclxuICAgIHRoaXMuc2V0RGlzYWJsZWREYXRlcyh0aGlzLm1haW5PYmopO1xyXG4gICAgdGhpcy5yZWZyZXNoRGF0ZUxpc3QodGhpcy5tYWluT2JqLmlucHV0RGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgZGlzbWlzcyBtb2RhbFxyXG4gIGNsb3NlTW9kYWwoc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2xvc2VNb2RhbCA9PiAnLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgdGhpcy5tb2RhbEN0cmwuZ2V0VG9wKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbW9tZW50KHNlbGVjdGVkRGF0ZSkuZm9ybWF0KHRoaXMubWFpbk9iai5kYXRlRm9ybWF0KTtcclxuICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoeyAnZGF0ZSc6IGZvcm1hdHRlZERhdGUgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBjbG9zZSBtb2RhbCBidXR0b25cclxuICBjbG9zZUlvbmljRGF0ZVBpY2tlck1vZGFsKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2Nsb3NlSW9uaWNEYXRlUGlja2VyTW9kYWwnKTtcclxuICAgIHRoaXMuY2xvc2VNb2RhbChudWxsKTtcclxuICB9XHJcblxyXG4gIC8vIGdldCB5ZWFycyBsaXN0ICAoIEdJVkUgSEVSRSBNSU4gT1IgTUFYIFlFQVIgSU4gREFURV9QSUNLRVIgKVxyXG4gIGdldFllYXJzTGlzdChmcm9tLCB0bykge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dldFllYXJzTGlzdCA9PicsIGZyb20sIHRvKTtcclxuICAgIGNvbnN0IHllYXJzTGlzdCA9IFtdO1xyXG4gICAgbGV0IG1pblllYXIgPSAxOTUwO1xyXG4gICAgbGV0IG1heFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxO1xyXG4gICAgbWluWWVhciA9IGZyb20gPyBuZXcgRGF0ZShmcm9tKS5nZXRGdWxsWWVhcigpIDogbWluWWVhcjtcclxuICAgIG1heFllYXIgPSB0byA/IG5ldyBEYXRlKHRvKS5nZXRGdWxsWWVhcigpIDogbWF4WWVhcjtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdnZXRZZWFyc0xpc3Q6ICcsIHRoaXMueWVhckluQXNjZW5kaW5nKTtcclxuICAgIGlmICh0aGlzLnllYXJJbkFzY2VuZGluZykge1xyXG4gICAgICBmb3IgKGxldCBpID0gbWluWWVhcjsgaSA8PSBtYXhZZWFyOyBpKyspIHtcclxuICAgICAgICB5ZWFyc0xpc3QucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IG1heFllYXI7IGkgPj0gbWluWWVhcjsgaS0tKSB7XHJcbiAgICAgICAgeWVhcnNMaXN0LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB5ZWFyc0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyBJbml0IERhdGUtUGlja2VyXHJcbiAgaW5pdERhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gJyc7XHJcbiAgICB0aGlzLnRvRGF0ZSA9ICcnO1xyXG4gICAgLy8gJHNjb3BlLm1haW5PYmogPSBhbmd1bGFyLmV4dGVuZCh7fSwgY29uZmlnLCBpcE9iaik7XHJcbiAgICBpZiAodGhpcy5tYWluT2JqLmZyb20pIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKHRoaXMubWFpbk9iai5mcm9tKSkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWFpbk9iai50bykge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKHRoaXMubWFpbk9iai50bykpLmdldFRpbWUoKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChpcE9iai5kaXNhYmxlV2Vla2RheXMgJiYgdGhpcy5jb25maWcuZGlzYWJsZVdlZWtkYXlzKSB7XHJcbiAgICAvLyAgIHRoaXMubWFpbk9iai5kaXNhYmxlV2Vla0RheXMgPSBpcE9iai5kaXNhYmxlV2Vla2RheXMuY29uY2F0KHRoaXMuY29uZmlnLmRpc2FibGVXZWVrZGF5cyk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLnNldEluaXRpYWxPYmoodGhpcy5tYWluT2JqKTtcclxuICB9XHJcblxyXG4gIC8vIEluaXQgRGF0ZVBpY2tlciBPYmplY3RcclxuICBpbml0RGF0ZVBpY2tlck9iaihjb25maWcpIHtcclxuICAgIC8vIGNvbnN0IGNvbmZpZyA9IHRoaXMubWFpbk9iajtcclxuXHJcbiAgICBpZiAoY29uZmlnLmlucHV0RGF0ZSAmJiAhdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSkge1xyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gY29uZmlnLmlucHV0RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvYmpDb25maWc6IGFueSA9IHt9O1xyXG4gICAgb2JqQ29uZmlnLmZyb20gPSBjb25maWcuZnJvbURhdGUgPyBjb25maWcuZnJvbURhdGUgOiAnJztcclxuICAgIG9iakNvbmZpZy50byA9IGNvbmZpZy50b0RhdGUgPyBjb25maWcudG9EYXRlIDogJyc7XHJcbiAgICBvYmpDb25maWcuc2hvd1RvZGF5QnV0dG9uID0gY29uZmlnLnNob3dUb2RheUJ1dHRvbiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGNvbmZpZy5zaG93VG9kYXlCdXR0b247XHJcbiAgICBvYmpDb25maWcuY2xvc2VPblNlbGVjdCA9IGNvbmZpZy5jbG9zZU9uU2VsZWN0ID8gY29uZmlnLmNsb3NlT25TZWxlY3QgOiBmYWxzZTtcclxuICAgIG9iakNvbmZpZy5kaXNhYmxlV2Vla0RheXMgPSBjb25maWcuZGlzYWJsZVdlZWtEYXlzID8gY29uZmlnLmRpc2FibGVXZWVrRGF5cyA6IFtdO1xyXG4gICAgb2JqQ29uZmlnLm1vbmRheUZpcnN0ID0gY29uZmlnLm1vbmRheUZpcnN0ID8gY29uZmlnLm1vbmRheUZpcnN0IDogZmFsc2U7XHJcbiAgICBvYmpDb25maWcuc2V0TGFiZWwgPSBjb25maWcuc2V0TGFiZWwgPyBjb25maWcuc2V0TGFiZWwgOiAnU2V0JztcclxuICAgIG9iakNvbmZpZy50b2RheUxhYmVsID0gY29uZmlnLnRvZGF5TGFiZWwgPyBjb25maWcudG9kYXlMYWJlbCA6ICdUb2RheSc7XHJcbiAgICBvYmpDb25maWcuY2xvc2VMYWJlbCA9IGNvbmZpZy5jbG9zZUxhYmVsID8gY29uZmlnLmNsb3NlTGFiZWwgOiAnQ2xvc2UnO1xyXG4gICAgb2JqQ29uZmlnLmRpc2FibGVkRGF0ZXMgPSBjb25maWcuZGlzYWJsZWREYXRlcyA/IGNvbmZpZy5kaXNhYmxlZERhdGVzIDogW107XHJcbiAgICBvYmpDb25maWcudGl0bGVMYWJlbCA9IGNvbmZpZy50aXRsZUxhYmVsID8gY29uZmlnLnRpdGxlTGFiZWwgOiBudWxsO1xyXG5cclxuICAgIG9iakNvbmZpZy5tb250aHNMaXN0ID0gY29uZmlnLm1vbnRoc0xpc3QgPyBjb25maWcubW9udGhzTGlzdCA6IHRoaXMubW9udGhzTGlzdDtcclxuICAgIG9iakNvbmZpZy5tb250aHNMaXN0ID0gWy4uLm9iakNvbmZpZy5tb250aHNMaXN0XTtcclxuXHJcbiAgICBvYmpDb25maWcud2Vla3NMaXN0ID0gY29uZmlnLndlZWtzTGlzdCA/IGNvbmZpZy53ZWVrc0xpc3QgOiB0aGlzLndlZWtzTGlzdDtcclxuICAgIG9iakNvbmZpZy53ZWVrc0xpc3QgPSBbLi4ub2JqQ29uZmlnLndlZWtzTGlzdF07XHJcblxyXG4gICAgb2JqQ29uZmlnLmRhdGVGb3JtYXQgPSBjb25maWcuZGF0ZUZvcm1hdCA/IGNvbmZpZy5kYXRlRm9ybWF0IDogJ0REIE1NTSBZWVlZJztcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUsIG9iakNvbmZpZy5kYXRlRm9ybWF0LCBtb21lbnQubG9jYWxlKCkpO1xyXG5cclxuICAgIG9iakNvbmZpZy5jbGVhckJ1dHRvbiA9IGNvbmZpZy5jbGVhckJ1dHRvbiA/IGNvbmZpZy5jbGVhckJ1dHRvbiA6IGZhbHNlO1xyXG5cclxuICAgIG9iakNvbmZpZy55ZWFySW5Bc2NlbmRpbmcgPSBjb25maWcueWVhckluQXNjZW5kaW5nID8gY29uZmlnLnllYXJJbkFzY2VuZGluZyA6IGZhbHNlO1xyXG4gICAgb2JqQ29uZmlnLm1vbWVudExvY2FsZSA9IGNvbmZpZy5tb21lbnRMb2NhbGUgPyBjb25maWcubW9tZW50TG9jYWxlIDogJ2VuLVVTJztcclxuXHJcbiAgICBtb21lbnQubG9jYWxlKG9iakNvbmZpZy5tb21lbnRMb2NhbGUpO1xyXG4gICAgb2JqQ29uZmlnLmlucHV0RGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPyBtb21lbnQodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSwgb2JqQ29uZmlnLmRhdGVGb3JtYXQpLnRvRGF0ZSgpIDogbmV3IERhdGUoKTtcclxuXHJcbiAgICBvYmpDb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgPSBjb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgPyBjb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgOiBmYWxzZTtcclxuXHJcbiAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcyA9IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5idG5Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGNvbnN0IGJ0blByb3BlcnRpZXMgPSBjb25maWcuYnRuUHJvcGVydGllcztcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZXhwYW5kID0gYnRuUHJvcGVydGllcy5leHBhbmQgPyBidG5Qcm9wZXJ0aWVzLmV4cGFuZCA6ICdibG9jayc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmZpbGwgPSBidG5Qcm9wZXJ0aWVzLmZpbGwgPyBidG5Qcm9wZXJ0aWVzLmZpbGwgOiAnc29saWQnO1xyXG4gICAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcy5zaXplID0gYnRuUHJvcGVydGllcy5zaXplID8gYnRuUHJvcGVydGllcy5zaXplIDogJ2RlZmF1bHQnO1xyXG4gICAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcy5jb2xvciA9IGJ0blByb3BlcnRpZXMuY29sb3IgPyBidG5Qcm9wZXJ0aWVzLmNvbG9yIDogJyc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmRpc2FibGVkID0gYnRuUHJvcGVydGllcy5kaXNhYmxlZCA/IGJ0blByb3BlcnRpZXMuZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuc3Ryb25nID0gYnRuUHJvcGVydGllcy5zdHJvbmcgPyBidG5Qcm9wZXJ0aWVzLnN0cm9uZyA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZXhwYW5kID0gJ2Jsb2NrJztcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZmlsbCA9ICdzb2xpZCc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLnNpemUgPSAnZGVmYXVsdCc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLnN0cm9uZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9iakNvbmZpZy5hcnJvd05leHRQcmV2ID0ge307XHJcbiAgICBpZiAoY29uZmlnLmFycm93TmV4dFByZXYpIHtcclxuICAgICAgY29uc3QgYXJyb3dOZXh0UHJldiA9IGNvbmZpZy5hcnJvd05leHRQcmV2O1xyXG4gICAgICBvYmpDb25maWcuYXJyb3dOZXh0UHJldi5uZXh0QXJyb3dTcmMgPSBhcnJvd05leHRQcmV2Lm5leHRBcnJvd1NyYyA/IGFycm93TmV4dFByZXYubmV4dEFycm93U3JjIDogZmFsc2U7XHJcbiAgICAgIG9iakNvbmZpZy5hcnJvd05leHRQcmV2LnByZXZBcnJvd1NyYyA9IGFycm93TmV4dFByZXYucHJldkFycm93U3JjID8gYXJyb3dOZXh0UHJldi5wcmV2QXJyb3dTcmMgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvYmpDb25maWcuaGlnaGxpZ2h0ZWREYXRlcyA9IFtdO1xyXG4gICAgaWYgKGNvbmZpZy5oaWdobGlnaHRlZERhdGVzICYmIGNvbmZpZy5oaWdobGlnaHRlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgb2JqQ29uZmlnLmhpZ2hsaWdodGVkRGF0ZXMgPSBjb25maWcuaGlnaGxpZ2h0ZWREYXRlcztcclxuXHJcbiAgICAgIHRoaXMuc2V0SGlnaHRsaWdodGVkRGF0ZXMob2JqQ29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBvYmpDb25maWcuaXNTdW5kYXlIaWdobGlnaHRlZCA9IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5pc1N1bmRheUhpZ2hsaWdodGVkKSB7XHJcbiAgICAgIGNvbnN0IGlzU3VuZGF5SGlnaGxpZ2h0ZWQgPSBjb25maWcuaXNTdW5kYXlIaWdobGlnaHRlZDtcclxuICAgICAgb2JqQ29uZmlnLmlzU3VuZGF5SGlnaGxpZ2h0ZWQuZm9udENvbG9yID0gaXNTdW5kYXlIaWdobGlnaHRlZC5mb250Q29sb3IgPyBpc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvciA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ2NvbmZpZyA9PicsIG9iakNvbmZpZyk7XHJcbiAgICByZXR1cm4gb2JqQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9ybWF0IGRhdGVcclxuICBmb3JtYXREYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2Zvcm1hdERhdGU6ICcsIHRoaXMuc2VsY3RlZERhdGVFcG9jaCwgbmV3IERhdGUodGhpcy5zZWxjdGVkRGF0ZUVwb2NoKSk7XHJcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuc2VsY3RlZERhdGVFcG9jaCkuZm9ybWF0KHRoaXMubWFpbk9iai5kYXRlRm9ybWF0KTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.component.js b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.component.js new file mode 100644 index 0000000..f72352d --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.component.js @@ -0,0 +1,228 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; +import { ModalController } from '@ionic/angular'; +import { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +import * as moment_ from 'moment'; +/** @type {?} */ +const moment = moment_; +/** @type {?} */ +const noop = (/** + * @return {?} + */ +() => { +}); +const ɵ0 = noop; +/** @type {?} */ +export const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef((/** + * @return {?} + */ + () => Ionic4DatepickerComponent)), + multi: true +}; +export class Ionic4DatepickerComponent { + /** + * @param {?} modalCtrl + * @param {?} el + * @param {?} renderer2 + */ + constructor(modalCtrl, el, renderer2) { + this.modalCtrl = modalCtrl; + this.el = el; + this.renderer2 = renderer2; + this.selectedDate = {}; + this.innerValue = ''; + // Placeholders for the callbacks which are later provided + // by the Control Value Accessor + this.onTouchedCallback = noop; + this.onChangeCallback = noop; + } + /** + * @return {?} + */ + ngOnInit() { + 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 = '0px'; + 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 = '30%'; + } + this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;'); + this.el.nativeElement.appendChild(this.closeIcon); + this.renderer2.listen(this.closeIcon, 'click', (/** + * @param {?} event + * @return {?} + */ + (event) => { + // Do something with 'event' + // console.log('button clicks'); + this.selectedDate = new Date(); + this.value = ''; + })); + } + } + /** + * @param {?} value + * @return {?} + */ + onChangeValue(value) { + // console.log('onChangeValue =>' , value); + if (this.inputDateConfig.clearButton !== false) { + if (!value) { + this.closeIcon.style.visibility = 'hidden'; + } + else { + this.closeIcon.style.visibility = 'visible'; + } + } + } + /** + * @param {?} value + * @return {?} + */ + openDatePicker(value) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // console.log('openDatePicker'); + if (value) { + this.selectedDate.date = value; + } + /** @type {?} */ + const datePickerModal = yield this.modalCtrl.create({ + component: Ionic4DatepickerModalComponent, + cssClass: 'li-ionic4-datePicker', + componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date } + }); + yield datePickerModal.present(); + datePickerModal.onDidDismiss() + .then((/** + * @param {?} data + * @return {?} + */ + (data) => { + // console.log(data); + if (data.data && data.data.date && data.data.date !== 'Invalid date') { + this.selectedDate.date = data.data.date; + this.value = data.data.date; + } + })); + }); + } + // get accessor + /** + * @return {?} + */ + get value() { + return this.innerValue; + } + // set accessor including call the onchange callback + /** + * @param {?} v + * @return {?} + */ + set value(v) { + if (v !== this.innerValue) { + this.innerValue = v; + this.onChangeCallback(v); + } + this.onChangeValue(v); + } + // Set touched on blur + /** + * @return {?} + */ + onBlur() { + this.onTouchedCallback(); + } + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + writeValue(value) { + if (value !== this.innerValue) { + this.innerValue = value; + } + this.onChangeValue(value); + } + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + registerOnChange(fn) { + this.onChangeCallback = fn; + } + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + registerOnTouched(fn) { + this.onTouchedCallback = fn; + } +} +Ionic4DatepickerComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker', + template: "", + providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], + styles: [":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"] + }] } +]; +/** @nocollapse */ +Ionic4DatepickerComponent.ctorParameters = () => [ + { type: ModalController }, + { type: ElementRef }, + { type: Renderer2 } +]; +Ionic4DatepickerComponent.propDecorators = { + inputDateConfig: [{ type: Input }] +}; +if (false) { + /** @type {?} */ + Ionic4DatepickerComponent.prototype.inputDateConfig; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.closeIcon; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.selectedDate; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.innerValue; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.onTouchedCallback; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.onChangeCallback; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.modalCtrl; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.el; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.renderer2; +} +export { ɵ0 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O01BRTVCLE1BQU0sR0FBRyxPQUFPOztNQUVoQixJQUFJOzs7QUFBRyxHQUFHLEVBQUU7QUFDbEIsQ0FBQyxDQUFBOzs7QUFFRCxNQUFNLE9BQU8sbUNBQW1DLEdBQVE7SUFDdEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVTs7O0lBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLEVBQUM7SUFDeEQsS0FBSyxFQUFFLElBQUk7Q0FDWjtBQU9ELE1BQU0sT0FBTyx5QkFBeUI7Ozs7OztJQWFwQyxZQUNVLFNBQTBCLEVBQzNCLEVBQWMsRUFDZCxTQUFvQjtRQUZuQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMzQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBVztRQVg3QixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBUSxFQUFFLENBQUM7OztRQUlyQixzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMscUJBQWdCLEdBQXFCLElBQUksQ0FBQztJQU05QyxD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Z0JBQ2hDLDJLQUFpRDtnQkFFakQsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7O2FBQ2pEOzs7O1lBbkJRLGVBQWU7WUFGdUIsVUFBVTtZQUFFLFNBQVM7Ozs4QkF3QmpFLEtBQUs7Ozs7SUFBTixvREFBOEI7O0lBRTlCLDhDQUFVOztJQUNWLGlEQUF1Qjs7Ozs7SUFDdkIsK0NBQTZCOzs7OztJQUk3QixzREFBNkM7Ozs7O0lBQzdDLHFEQUFrRDs7Ozs7SUFHaEQsOENBQWtDOztJQUNsQyx1Q0FBcUI7O0lBQ3JCLDhDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBmb3J3YXJkUmVmLCBJbnB1dCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuXHJcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4ge1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaS1pb25pYzQtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lvbmljNC1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pb25pYzQtZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0NVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBASW5wdXQoKSBpbnB1dERhdGVDb25maWc6IGFueTtcclxuXHJcbiAgY2xvc2VJY29uO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55ID0ge307XHJcbiAgcHJpdmF0ZSBpbm5lclZhbHVlOiBhbnkgPSAnJztcclxuXHJcbiAgLy8gUGxhY2Vob2xkZXJzIGZvciB0aGUgY2FsbGJhY2tzIHdoaWNoIGFyZSBsYXRlciBwcm92aWRlZFxyXG4gIC8vIGJ5IHRoZSBDb250cm9sIFZhbHVlIEFjY2Vzc29yXHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxyXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIHJlbmRlcmVyMjogUmVuZGVyZXIyXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXREYXRlQ29uZmlnLmNsZWFyQnV0dG9uICE9PSBmYWxzZSkge1xyXG5cclxuICAgICAgdGhpcy5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpb24taWNvbicpO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5uYW1lID0gJ2Nsb3NlLWNpcmNsZSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLmNsYXNzTmFtZSA9ICdjbGVhckJ1dHRvbic7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUucmlnaHQgPSAnOHB4JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzBweCc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmZvbnRTaXplID0gJzE4cHgnO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5jb2xvciA9ICcjQTlBOUE5JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuekluZGV4ID0gJzUnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLm5vZGVOYW1lID09PSAnSU9OLUlURU0nKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzMwJSc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTAwJTsnKTtcclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2xvc2VJY29uKTtcclxuXHJcbiAgICAgIHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLmNsb3NlSWNvbiwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgLy8gRG8gc29tZXRoaW5nIHdpdGggJ2V2ZW50J1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdidXR0b24gY2xpY2tzJyk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVZhbHVlKHZhbHVlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb25DaGFuZ2VWYWx1ZSA9PicgLCB2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGVDb25maWcuY2xlYXJCdXR0b24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGVQaWNrZXIodmFsdWUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdvcGVuRGF0ZVBpY2tlcicpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRlUGlja2VyTW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCxcclxuICAgICAgY3NzQ2xhc3M6ICdsaS1pb25pYzQtZGF0ZVBpY2tlcicsXHJcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7ICdvYmpDb25maWcnOiB0aGlzLmlucHV0RGF0ZUNvbmZpZywgJ3NlbGVjdGVkRGF0ZSc6IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgIH1cclxuICAgIH0pO1xyXG4gICAgYXdhaXQgZGF0ZVBpY2tlck1vZGFsLnByZXNlbnQoKTtcclxuXHJcbiAgICBkYXRlUGlja2VyTW9kYWwub25EaWREaXNtaXNzKClcclxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS5kYXRlICYmIGRhdGEuZGF0YS5kYXRlICE9PSAnSW52YWxpZCBkYXRlJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IGRhdGEuZGF0YS5kYXRlO1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGEuZGF0YS5kYXRlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBnZXQgYWNjZXNzb3JcclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmlubmVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBzZXQgYWNjZXNzb3IgaW5jbHVkaW5nIGNhbGwgdGhlIG9uY2hhbmdlIGNhbGxiYWNrXHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgaWYgKHYgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2O1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICAvLyBTZXQgdG91Y2hlZCBvbiBibHVyXHJcbiAgb25CbHVyKCkge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.module.js b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.module.js new file mode 100644 index 0000000..4bec70c --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.module.js @@ -0,0 +1,41 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.module.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive'; +import { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +import { IonicModule } from '@ionic/angular'; +import { Ionic4DatepickerComponent } from './ionic4-datepicker.component'; +export class Ionic4DatepickerModule { +} +Ionic4DatepickerModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CommonModule, + FormsModule, + IonicModule + ], + declarations: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent + ], + exports: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent, + CommonModule, + FormsModule + ], + entryComponents: [ + // Ionic4DatepickerComponent, + Ionic4DatepickerModalComponent + ], + providers: [] + },] } +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQTRCMUUsTUFBTSxPQUFPLHNCQUFzQjs7O1lBMUJsQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxXQUFXO2lCQUNaO2dCQUNELFlBQVksRUFBRTtvQkFDWix5QkFBeUI7b0JBQ3pCLDJCQUEyQjtvQkFDM0IsOEJBQThCO2lCQUMvQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AseUJBQXlCO29CQUN6QiwyQkFBMkI7b0JBQzNCLDhCQUE4QjtvQkFDOUIsWUFBWTtvQkFDWixXQUFXO2lCQUNaO2dCQUNELGVBQWUsRUFBRTtvQkFDZiw2QkFBNkI7b0JBQzdCLDhCQUE4QjtpQkFDL0I7Z0JBQ0QsU0FBUyxFQUFFLEVBRVY7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMaUlvbmljNERhdGVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL2xpLWlvbmljNC1kYXRlcGlja2VyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IElvbmljNERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIExpSW9uaWM0RGF0ZXBpY2tlckRpcmVjdGl2ZSxcclxuICAgIElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIExpSW9uaWM0RGF0ZXBpY2tlckRpcmVjdGl2ZSxcclxuICAgIElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBlbnRyeUNvbXBvbmVudHM6IFtcclxuICAgIC8vIElvbmljNERhdGVwaWNrZXJDb21wb25lbnQsXHJcbiAgICBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG5cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJb25pYzREYXRlcGlja2VyTW9kdWxlIHsgfVxyXG4iXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.service.js b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.service.js new file mode 100644 index 0000000..504f000 --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.service.js @@ -0,0 +1,25 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.service.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import * as i0 from "@angular/core"; +export class Ionic4DatepickerService { + constructor() { + this.isModalOpen = false; + } +} +Ionic4DatepickerService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root' + },] } +]; +/** @nocollapse */ +Ionic4DatepickerService.ctorParameters = () => []; +/** @nocollapse */ Ionic4DatepickerService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Ionic4DatepickerService_Factory() { return new Ionic4DatepickerService(); }, token: Ionic4DatepickerService, providedIn: "root" }); +if (false) { + /** @type {?} */ + Ionic4DatepickerService.prototype.isModalOpen; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibGliL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDO1FBRkEsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFSixDQUFDOzs7WUFQbEIsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7Ozs7O0lBR0MsOENBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2Uge1xyXG5cclxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/lib/li-ionic4-datepicker.directive.js b/dist/ionic4-datepicker/esm2015/lib/li-ionic4-datepicker.directive.js new file mode 100644 index 0000000..37c8a1f --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/lib/li-ionic4-datepicker.directive.js @@ -0,0 +1,183 @@ +/** + * @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'; +export class LiIonic4DatepickerDirective { + /** + * @param {?} modalCtrl + * @param {?} ngModel + * @param {?} control + * @param {?} el + * @param {?} renderer2 + * @param {?} datePickerService + */ + constructor(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 {?} + */ + ngOnInit() { + // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending); + 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 {?} + */ + (event) => { + // Do something with 'event' + // console.log('button clicks'); + this.selectedDate.date = new Date(); + this.control.control.setValue(''); + this.ngModel.update.emit(''); + })); + } + /** @type {?} */ + const self = this; + this.ngModel.valueChanges.subscribe((/** + * @param {?} value + * @return {?} + */ + (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 {?} + */ + (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 {?} + */ + onFocus() { + if (this.datePickerService.isModalOpen) { + return; + } + this.openDatePicker(); + } + /** + * @return {?} + */ + openDatePicker() { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // console.log('openDatePicker'); + // console.log('openDatePicker'); + /** @type {?} */ + const datePickerModal = yield this.modalCtrl.create({ + component: Ionic4DatepickerModalComponent, + cssClass: 'li-ionic4-datePicker', + componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date } + }); + yield datePickerModal.present(); + datePickerModal.onDidDismiss() + .then((/** + * @param {?} data + * @return {?} + */ + (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); + } + })); + }); + } +} +LiIonic4DatepickerDirective.decorators = [ + { type: Directive, args: [{ + selector: '[liIonic4Datepicker]', + exportAs: 'liIonic4Datepicker', + providers: [NgModel], + },] } +]; +/** @nocollapse */ +LiIonic4DatepickerDirective.ctorParameters = () => [ + { type: ModalController }, + { type: NgModel }, + { type: NgControl }, + { type: ElementRef }, + { type: Renderer2 }, + { type: Ionic4DatepickerService } +]; +LiIonic4DatepickerDirective.propDecorators = { + inputDateConfig: [{ type: Input, args: ['liIonic4Datepicker',] }], + onFocus: [{ type: HostListener, args: ['ionFocus',] }] +}; +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvbGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBT3RFLE1BQU0sT0FBTywyQkFBMkI7Ozs7Ozs7OztJQVF0QyxZQUNVLFNBQTBCLEVBQzNCLE9BQWdCLEVBQ2hCLE9BQWtCLEVBQ2xCLEVBQWMsRUFDZCxTQUFvQixFQUNwQixpQkFBMEM7UUFMekMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBeUI7UUFUbkQsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBUSxLQUFLLENBQUM7SUFTckIsQ0FBQzs7OztJQUVMLFFBQVE7UUFDTixtRkFBbUY7UUFFbkYsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFR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QUNQLENBQUM7S0FBQTs7O1lBeEdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUM7YUFDckI7Ozs7WUFYUSxlQUFlO1lBRWYsT0FBTztZQUFFLFNBQVM7WUFIc0IsVUFBVTtZQUFFLFNBQVM7WUFNN0QsdUJBQXVCOzs7OEJBUzdCLEtBQUssU0FBQyxvQkFBb0I7c0JBdUUxQixZQUFZLFNBQUMsVUFBVTs7OztJQXZFeEIsc0RBQWtEOztJQUVsRCxnREFBVTs7SUFDVixtREFBdUI7O0lBQ3ZCLGtEQUF5Qjs7Ozs7SUFHdkIsZ0RBQWtDOztJQUNsQyw4Q0FBdUI7O0lBQ3ZCLDhDQUF5Qjs7SUFDekIseUNBQXFCOztJQUNyQixnREFBMkI7O0lBQzNCLHdEQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nTW9kZWwsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbGlJb25pYzREYXRlcGlja2VyXScsXHJcbiAgZXhwb3J0QXM6ICdsaUlvbmljNERhdGVwaWNrZXInLFxyXG4gIHByb3ZpZGVyczogW05nTW9kZWxdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlJb25pYzREYXRlcGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCdsaUlvbmljNERhdGVwaWNrZXInKSBpbnB1dERhdGVDb25maWc6IGFueTtcclxuXHJcbiAgY2xvc2VJY29uO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55ID0ge307XHJcbiAgaXNNb2RhbE9wZW46IGFueSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXHJcbiAgICBwdWJsaWMgbmdNb2RlbDogTmdNb2RlbCxcclxuICAgIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgcmVuZGVyZXIyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IElvbmljNERhdGVwaWNrZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY29uZmlnLnllYXJJbkFzY2VuZGluZyA6ICcgKyB0aGlzLmlucHV0RGF0ZUNvbmZpZy55ZWFySW5Bc2NlbmRpbmcpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpb24taWNvbicpO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5uYW1lID0gJ2Nsb3NlLWNpcmNsZSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLmNsYXNzTmFtZSA9ICdjbGVhckJ1dHRvbic7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUucmlnaHQgPSAnOHB4JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzMwJSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmZvbnRTaXplID0gJzE4cHgnO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5jb2xvciA9ICcjQTlBOUE5JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuekluZGV4ID0gJzUnO1xyXG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUubm9kZU5hbWUgPT09ICdJT04tSVRFTScpIHtcclxuICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5ib3R0b20gPSAnMTJweCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jbG9zZUljb24pO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5jbG9zZUljb24sICdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgIC8vIERvIHNvbWV0aGluZyB3aXRoICdldmVudCdcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnYnV0dG9uIGNsaWNrcycpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoJycpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIHRoaXMubmdNb2RlbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnbmdNb2RlbCB2YWx1ZSA9PicsIHZhbHVlKTtcclxuICAgICAgc2VsZi5zZWxlY3RlZERhdGUuZGF0ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pbnB1dERhdGVDb25maWcuY2xlYXJCdXR0b24gIT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ2Zvcm1jb250cm9sIHZhbHVlID0+JywgdmFsdWUpO1xyXG4gICAgICBzZWxmLnNlbGVjdGVkRGF0ZS5kYXRlID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IHRoaXMuY29udHJvbC5jb250cm9sLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW9uRm9jdXMnKVxyXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNNb2RhbE9wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuRGF0ZVBpY2tlcigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlbkRhdGVQaWNrZXInKTtcclxuXHJcbiAgICBjb25zdCBkYXRlUGlja2VyTW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCxcclxuICAgICAgY3NzQ2xhc3M6ICdsaS1pb25pYzQtZGF0ZVBpY2tlcicsXHJcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7ICdvYmpDb25maWcnOiB0aGlzLmlucHV0RGF0ZUNvbmZpZywgJ3NlbGVjdGVkRGF0ZSc6IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgfVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBkYXRlUGlja2VyTW9kYWwucHJlc2VudCgpO1xyXG5cclxuICAgIGRhdGVQaWNrZXJNb2RhbC5vbkRpZERpc21pc3MoKVxyXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmRhdGEgJiYgZGF0YS5kYXRhLmRhdGUgJiYgZGF0YS5kYXRhLmRhdGUgIT09ICdJbnZhbGlkIGRhdGUnKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gZGF0YS5kYXRhLmRhdGU7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShkYXRhLmRhdGEuZGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoZGF0YS5kYXRhLmRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/logisticinfotech-ionic4-datepicker.js b/dist/ionic4-datepicker/esm2015/logisticinfotech-ionic4-datepicker.js new file mode 100644 index 0000000..b735673 --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/logisticinfotech-ionic4-datepicker.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * Generated from: logisticinfotech-ionic4-datepicker.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { Ionic4DatepickerService, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent, Ionic4DatepickerModule, Ionic4DatepickerModalComponent } from './public_api'; +export { LiIonic4DatepickerDirective as ɵa } from './lib/li-ionic4-datepicker.directive'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naXN0aWNpbmZvdGVjaC1pb25pYzQtZGF0ZXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibG9naXN0aWNpbmZvdGVjaC1pb25pYzQtZGF0ZXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLGdLQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7TGlJb25pYzREYXRlcGlja2VyRGlyZWN0aXZlIGFzIMm1YX0gZnJvbSAnLi9saWIvbGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlJzsiXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm2015/public_api.js b/dist/ionic4-datepicker/esm2015/public_api.js new file mode 100644 index 0000000..6dfc745 --- /dev/null +++ b/dist/ionic4-datepicker/esm2015/public_api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * Generated from: public_api.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of ionic4-datepicker + */ +export { Ionic4DatepickerService } from './lib/ionic4-datepicker.service'; +export { CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent } from './lib/ionic4-datepicker.component'; +export { Ionic4DatepickerModule } from './lib/ionic4-datepicker.module'; +export { Ionic4DatepickerModalComponent } from './lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLHdDQUFjLGlDQUFpQyxDQUFDO0FBQ2hELCtFQUFjLG1DQUFtQyxDQUFDO0FBQ2xELHVDQUFjLGdDQUFnQyxDQUFDO0FBQy9DLCtDQUFjLGlFQUFpRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGlvbmljNC1kYXRlcGlja2VyXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW9uaWM0LWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js new file mode 100644 index 0000000..e67132f --- /dev/null +++ b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js @@ -0,0 +1,785 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, ViewChild } from '@angular/core'; +import { NavParams, ModalController, IonContent } from '@ionic/angular'; +import * as moment_ from 'moment'; +import { Ionic4DatepickerService } from '../ionic4-datepicker.service'; +/** @type {?} */ +var moment = moment_; +var Ionic4DatepickerModalComponent = /** @class */ (function () { + function Ionic4DatepickerModalComponent(navParams, modalCtrl, datePickerService) { + this.navParams = navParams; + this.modalCtrl = modalCtrl; + this.datePickerService = datePickerService; + // inputs + this.mainObj = {}; + this.selectedDate = {}; + // component variables + this.selctedDateEpoch = 0; + this.disabledDates = []; + this.highlightedDates = {}; + this.disableWeekdays = []; + this.data = { + currentMonth: '', + currentYear: '', + currentMonthSelected: '' + }; + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; + this.weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S']; + this.yearsList = []; + this.daysList = []; + this.yearInAscending = false; + this.momentLocale = 'en-US'; + // month year scroll variables + this.isMonthYearSelectorOpen = false; + this.scrollingMonthOrYearArray = []; + this.isSelectedDateFound = false; + this.today = this.resetHMSM(new Date()).getTime(); + if (this.navParams.get('selectedDate')) { + // console.log('Selected date =>', this.navParams.get('selectedDate')); + this.selectedDate.date = this.navParams.get('selectedDate'); + this.isSelectedDateFound = true; + } + this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig')); + } + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = true; + this.initDatePicker(); + }; + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = false; + }; + // Reset the hours, minutes, seconds and milli seconds + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.resetHMSM = + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + currentDate.setMilliseconds(0); + return currentDate; + }; + // this method change month or year list to dateList + // this method change month or year list to dateList + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeToDateList = + // this method change month or year list to dateList + /** + * @return {?} + */ + function () { + // console.log('changeToDateList'); + this.isMonthYearSelectorOpen = false; + }; + // Virtual scroll create for select year and month + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.selectMonthYear = + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + function (isMonthSelect) { + // console.log('selectMonthYear', i); + this.isMonthYearSelectorOpen = true; + this.isMonthSelect = isMonthSelect; + this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList; + this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear; + /** @type {?} */ + var index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth); + /** @type {?} */ + var iditem = index + 'list'; + setTimeout((/** + * @return {?} + */ + function () { + document.getElementById(iditem).scrollIntoView(); + }), 100); + }; + // select month or year + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.onChangeMonthYear = + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + function (monthYear) { + // console.log('onChangeMonthYear', monthYear); + if (monthYear) { + if (this.isMonthSelect) { + this.data.currentMonth = monthYear; + this.selectedYearOrMonth = this.data.currentMonth; + /** @type {?} */ + var monthNumber = this.monthsList.indexOf(this.data.currentMonth); + this.currentDate.setDate(1); + this.currentDate.setMonth(monthNumber); + } + else { + this.data.currentYear = monthYear; + this.selectedYearOrMonth = this.data.currentYear; + this.currentDate.setFullYear(this.data.currentYear); + this.refreshDateList(this.currentDate); + } + this.refreshDateList(this.currentDate); + } + this.isMonthYearSelectorOpen = false; + }; + // Previous month + // Previous month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.prevMonth = + // Previous month + /** + * @return {?} + */ + function () { + // console.log('prevNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) { + return; + } + if (currentMonth === 1) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setMonth(currentMonth - 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // Next month + // Next month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.nextMonth = + // Next month + /** + * @return {?} + */ + function () { + // console.log('nextNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear >= this.yearsList[0] && currentMonth === 11) { + return; + } + if (currentMonth === 11) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setDate(1); + this.currentDate.setMonth(currentMonth + 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // changeDaySelected ( day selection changes ) + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeDaySelected = + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + function () { + // console.log('changeDaySelected'); + /** @type {?} */ + var newSelectedDate = new Date(this.selctedDateEpoch); + newSelectedDate.setMonth(this.currentDate.getMonth()); + newSelectedDate.setYear(this.currentDate.getFullYear()); + this.selctedDateEpoch = newSelectedDate.getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Date selected + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.dateSelected = + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('dateSelected =>', selectedDate); + if (selectedDate && !selectedDate.disabled) { + if (!selectedDate || Object.keys(selectedDate).length === 0) { + return; + } + this.isSelectedDateFound = true; + this.selctedDateEpoch = selectedDate.epoch; + this.selectedDateString = this.formatDate(); + if (this.mainObj.closeOnSelect) { + this.closeModal(this.selctedDateEpoch); + } + } + }; + // Set today as date for the modal + // Set today as date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerTodayDate = + // Set today as date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerTodayDate'); + /** @type {?} */ + var today = new Date(this.today); + /** @type {?} */ + var today_obj = { + date: today.getDate(), + month: today.getMonth(), + year: today.getFullYear(), + day: today.getDay(), + epoch: today.getTime(), + disabled: false + }; + this.dateSelected(today_obj); + this.refreshDateList(new Date()); + this.selctedDateEpoch = this.resetHMSM(today).getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Set date for the modal + // Set date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerDate = + // Set date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerDate'); + this.closeModal(this.selctedDateEpoch); + }; + // Setting the disabled dates list. + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setDisabledDates = + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + // console.log('setDisabledDates =>', obj); + if (!obj.disabledDates || obj.disabledDates.length === 0) { + this.disabledDates = []; + } + else { + this.disabledDates = []; + for (var i = 0; i < obj.disabledDates.length; i++) { + // val = resetHMSM(new Date(val)); + this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime()); + } + } + }; + // Set hightlighted dates + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setHightlightedDates = + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + if (!obj.highlightedDates || obj.highlightedDates.length === 0) { + this.highlightedDates = {}; + } + else { + this.highlightedDates = {}; + for (var i = 0; i < obj.highlightedDates.length; i++) { + /** @type {?} */ + var hDate = obj.highlightedDates[i].date; + /** @type {?} */ + var hColor = obj.highlightedDates[i].color; + /** @type {?} */ + var hFontColor = obj.highlightedDates[i].fontColor; + /** @type {?} */ + var hDateTime = this.resetHMSM(new Date(hDate)).getTime(); + this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor }; + } + } + }; + // Refresh the list of the dates of a month + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.refreshDateList = + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + // console.log('refreshDateList =>', currentDate); + currentDate = this.resetHMSM(currentDate); + this.currentDate = currentDate; + /** @type {?} */ + var firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate(); + /** @type {?} */ + var lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate(); + this.monthsList = []; + if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) { + this.monthsList = this.mainObj.monthsList; + } + else { + this.monthsList = this.monthsList; + } + this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to); + this.daysList = []; + /** @type {?} */ + var tempDate; + /** @type {?} */ + var disabled; + this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime(); + this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime(); + for (var i = firstDay; i <= lastDay; i++) { + tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i); + disabled = false; + /** @type {?} */ + var day = tempDate.getDay(); + if (this.disableWeekdays.length > 0) { + if (this.disableWeekdays.indexOf(day) >= 0) { + disabled = this.disableWeekdays.indexOf(day) >= 0; + } + else { + disabled = false; + } + } + if (this.disabledDates.length > 0) { + if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) { + disabled = true; + } + } + if (this.fromDate && !disabled) { + disabled = (tempDate.getTime() < this.fromDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + if (this.toDate && !disabled) { + disabled = (tempDate.getTime() > this.toDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + /** @type {?} */ + var hightLightDate = this.highlightedDates[tempDate.getTime()]; + /** @type {?} */ + var fontColor = null; + if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) { + fontColor = this.mainObj.isSundayHighlighted.fontColor; + } + else if (hightLightDate && hightLightDate.fontColor) { + fontColor = hightLightDate.fontColor; + } + this.daysList.push({ + date: tempDate.getDate(), + month: tempDate.getMonth(), + year: tempDate.getFullYear(), + day: tempDate.getDay(), + epoch: tempDate.getTime(), + disabled: disabled, + color: hightLightDate && hightLightDate.color ? hightLightDate.color : null, + fontColor: fontColor + // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null + }); + } + // To set Monday as the first day of the week. + /** @type {?} */ + var firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst; + firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday; + for (var j = 0; j < firstDayMonday; j++) { + this.daysList.unshift({}); + } + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()]; + this.data.currentYear = currentDate.getFullYear(); + this.data.currentMonthSelected = this.data.currentMonth; + this.currentYearSelected = this.data.currentYear; + this.numColumns = 7; + }; + // Setting up the initial object + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setInitialObj = + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + function (ipObj) { + // console.log('setInitialObj =>', ipObj); + this.mainObj = ipObj; + if (this.isSelectedDateFound) { + this.isSelectedDateFound = true; + this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime(); + } + this.selectedDateString = this.formatDate(); + if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) { + this.weeksList = this.mainObj.weeksList; + } + if (this.mainObj.mondayFirst) { + this.weeksList.push(this.mainObj.weeksList.shift()); + } + if (this.mainObj.yearInAscending) { + this.yearInAscending = this.mainObj.yearInAscending; + } + if (this.mainObj.momentLocale) { + this.momentLocale = this.mainObj.momentLocale; + } + this.disableWeekdays = this.mainObj.disableWeekDays; + this.setDisabledDates(this.mainObj); + this.refreshDateList(this.mainObj.inputDate); + }; + // for dismiss modal + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeModal = + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('closeModal => ', selectedDate); + this.modalCtrl.getTop(); + /** @type {?} */ + var formattedDate = moment(selectedDate).format(this.mainObj.dateFormat); + this.modalCtrl.dismiss({ 'date': formattedDate }); + }; + // close modal button + // close modal button + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeIonicDatePickerModal = + // close modal button + /** + * @return {?} + */ + function () { + // console.log('closeIonicDatePickerModal'); + this.closeModal(null); + }; + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.getYearsList = + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + function (from, to) { + // console.log('getYearsList =>', from, to); + /** @type {?} */ + var yearsList = []; + /** @type {?} */ + var minYear = 1950; + /** @type {?} */ + var maxYear = new Date().getFullYear() + 1; + minYear = from ? new Date(from).getFullYear() : minYear; + maxYear = to ? new Date(to).getFullYear() : maxYear; + // console.log('getYearsList: ', this.yearInAscending); + if (this.yearInAscending) { + for (var i = minYear; i <= maxYear; i++) { + yearsList.push(i); + } + } + else { + for (var i = maxYear; i >= minYear; i--) { + yearsList.push(i); + } + } + return yearsList; + }; + // Init Date-Picker + // Init Date-Picker + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePicker = + // Init Date-Picker + /** + * @return {?} + */ + function () { + this.fromDate = ''; + this.toDate = ''; + // $scope.mainObj = angular.extend({}, config, ipObj); + if (this.mainObj.from) { + this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime(); + } + if (this.mainObj.to) { + this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime(); + } + // if (ipObj.disableWeekdays && this.config.disableWeekdays) { + // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays); + // } + this.setInitialObj(this.mainObj); + }; + // Init DatePicker Object + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePickerObj = + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + function (config) { + // const config = this.mainObj; + if (config.inputDate && !this.selectedDate.date) { + this.isSelectedDateFound = true; + this.selectedDate.date = config.inputDate; + } + /** @type {?} */ + var objConfig = {}; + objConfig.from = config.fromDate ? config.fromDate : ''; + objConfig.to = config.toDate ? config.toDate : ''; + objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton; + objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false; + objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : []; + objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false; + objConfig.setLabel = config.setLabel ? config.setLabel : 'Set'; + objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today'; + objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close'; + objConfig.disabledDates = config.disabledDates ? config.disabledDates : []; + objConfig.titleLabel = config.titleLabel ? config.titleLabel : null; + objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList; + objConfig.monthsList = tslib_1.__spread(objConfig.monthsList); + objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList; + objConfig.weeksList = tslib_1.__spread(objConfig.weeksList); + objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY'; + // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale()); + objConfig.clearButton = config.clearButton ? config.clearButton : false; + objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false; + objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US'; + moment.locale(objConfig.momentLocale); + objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date(); + objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false; + objConfig.btnProperties = {}; + if (config.btnProperties) { + /** @type {?} */ + var btnProperties = config.btnProperties; + objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block'; + objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid'; + objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default'; + objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : ''; + objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false; + objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false; + } + else { + objConfig.btnProperties.expand = 'block'; + objConfig.btnProperties.fill = 'solid'; + objConfig.btnProperties.size = 'default'; + objConfig.btnProperties.disabled = false; + objConfig.btnProperties.strong = false; + } + objConfig.arrowNextPrev = {}; + if (config.arrowNextPrev) { + /** @type {?} */ + var arrowNextPrev = config.arrowNextPrev; + objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false; + objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false; + } + objConfig.highlightedDates = []; + if (config.highlightedDates && config.highlightedDates.length > 0) { + objConfig.highlightedDates = config.highlightedDates; + this.setHightlightedDates(objConfig); + } + objConfig.isSundayHighlighted = {}; + if (config.isSundayHighlighted) { + /** @type {?} */ + var isSundayHighlighted = config.isSundayHighlighted; + objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null; + } + // console.log('config =>', objConfig); + return objConfig; + }; + // Format date + // Format date + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.formatDate = + // Format date + /** + * @return {?} + */ + function () { + // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch)); + return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat); + }; + Ionic4DatepickerModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker-modal', + template: "\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n", + styles: [":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerModalComponent.ctorParameters = function () { return [ + { type: NavParams }, + { type: ModalController }, + { type: Ionic4DatepickerService } + ]; }; + Ionic4DatepickerModalComponent.propDecorators = { + content: [{ type: ViewChild, args: [IonContent, { static: false },] }] + }; + return Ionic4DatepickerModalComponent; +}()); +export { Ionic4DatepickerModalComponent }; +if (false) { + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.content; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.currentDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.today; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.mainObj; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selctedDateEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.firstDayEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.lastDayEpoch; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.disabledDates; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.highlightedDates; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.fromDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.toDate; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.disableWeekdays; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.data; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.currentYearSelected; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.numColumns; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.rows; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.cols; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.monthsList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.weeksList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.yearsList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.daysList; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.yearInAscending; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.momentLocale; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedDateString; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isMonthYearSelectorOpen; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.selectedYearOrMonth; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isMonthSelect; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.scrollingMonthOrYearArray; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.isSelectedDateFound; + /** + * @type {?} + * @private + */ + Ionic4DatepickerModalComponent.prototype.navParams; + /** + * @type {?} + * @private + */ + Ionic4DatepickerModalComponent.prototype.modalCtrl; + /** @type {?} */ + Ionic4DatepickerModalComponent.prototype.datePickerService; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztJQUNqRSxNQUFNLEdBQUcsT0FBTztBQUV0QjtJQXFERSx3Q0FDVSxTQUFvQixFQUNwQixTQUEwQixFQUMzQixpQkFBMEM7UUFGekMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMzQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXlCOztRQTNDbkQsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixpQkFBWSxHQUFRLEVBQUUsQ0FBQzs7UUFHdkIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBSXJCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLHFCQUFnQixHQUFRLEVBQUUsQ0FBQztRQUkzQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixTQUFJLEdBQVE7WUFDVixZQUFZLEVBQUUsRUFBRTtZQUNoQixXQUFXLEVBQUUsRUFBRTtZQUNmLG9CQUFvQixFQUFFLEVBQUU7U0FDekIsQ0FBQztRQUlGLFNBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUs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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDakcsU0FBUyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUUsU0FBUyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakYsU0FBUyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEUsU0FBUyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDL0QsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdkUsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdkUsU0FBUyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0UsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFcEUsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENB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T25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdlBhcmFtcywgTW9kYWxDb250cm9sbGVyLCBJb25Db250ZW50IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyU2VydmljZSB9IGZyb20gJy4uL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaS1pb25pYzQtZGF0ZXBpY2tlci1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwge3N0YXRpYzogZmFsc2V9KSBjb250ZW50OiBJb25Db250ZW50O1xyXG5cclxuICBjdXJyZW50RGF0ZTtcclxuICB0b2RheTtcclxuXHJcbiAgLy8gaW5wdXRzXHJcbiAgbWFpbk9iajogYW55ID0ge307XHJcbiAgc2VsZWN0ZWREYXRlOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8gY29tcG9uZW50IHZhcmlhYmxlc1xyXG4gIHNlbGN0ZWREYXRlRXBvY2ggPSAwO1xyXG4gIGZpcnN0RGF5RXBvY2g7XHJcbiAgbGFzdERheUVwb2NoO1xyXG5cclxuICBkaXNhYmxlZERhdGVzID0gW107XHJcbiAgaGlnaGxpZ2h0ZWREYXRlczogYW55ID0ge307XHJcblxyXG4gIGZyb21EYXRlO1xyXG4gIHRvRGF0ZTtcclxuICBkaXNhYmxlV2Vla2RheXMgPSBbXTtcclxuICBkYXRhOiBhbnkgPSB7XHJcbiAgICBjdXJyZW50TW9udGg6ICcnLFxyXG4gICAgY3VycmVudFllYXI6ICcnLFxyXG4gICAgY3VycmVudE1vbnRoU2VsZWN0ZWQ6ICcnXHJcbiAgfTtcclxuICBjdXJyZW50WWVhclNlbGVjdGVkO1xyXG4gIG51bUNvbHVtbnM7XHJcblxyXG4gIHJvd3MgPSBbMCwgNywgMTQsIDIxLCAyOCwgMzVdO1xyXG4gIGNvbHMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl07XHJcbiAgbW9udGhzTGlzdCA9IFsnSmFuJywgJ0ZlYicsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1ZycsICdTZXB0JywgJ09jdCcsICdOb3YnLCAnRGVjJ107XHJcbiAgd2Vla3NMaXN0ID0gWydTJywgJ00nLCAnVCcsICdXJywgJ1QnLCAnRicsICdTJ107XHJcbiAgeWVhcnNMaXN0ID0gW107XHJcbiAgZGF5c0xpc3QgPSBbXTtcclxuICB5ZWFySW5Bc2NlbmRpbmcgPSBmYWxzZTtcclxuICBtb21lbnRMb2NhbGUgPSAnZW4tVVMnO1xyXG4gIHNlbGVjdGVkRGF0ZVN0cmluZztcclxuXHJcbiAgLy8gbW9udGggeWVhciBzY3JvbGwgdmFyaWFibGVzXHJcbiAgaXNNb250aFllYXJTZWxlY3Rvck9wZW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZFllYXJPck1vbnRoO1xyXG4gIGlzTW9udGhTZWxlY3Q7XHJcbiAgc2Nyb2xsaW5nTW9udGhPclllYXJBcnJheTogYW55ID0gW107XHJcblxyXG4gIGlzU2VsZWN0ZWREYXRlRm91bmQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdlBhcmFtczogTmF2UGFyYW1zLFxyXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcclxuICAgIHB1YmxpYyBkYXRlUGlja2VyU2VydmljZTogSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudG9kYXkgPSB0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcbiAgICBpZiAodGhpcy5uYXZQYXJhbXMuZ2V0KCdzZWxlY3RlZERhdGUnKSkge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnU2VsZWN0ZWQgZGF0ZSA9PicsIHRoaXMubmF2UGFyYW1zLmdldCgnc2VsZWN0ZWREYXRlJykpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gdGhpcy5uYXZQYXJhbXMuZ2V0KCdzZWxlY3RlZERhdGUnKTtcclxuICAgICAgdGhpcy5pc1NlbGVjdGVkRGF0ZUZvdW5kID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubWFpbk9iaiA9IHRoaXMuaW5pdERhdGVQaWNrZXJPYmoodGhpcy5uYXZQYXJhbXMuZ2V0KCdvYmpDb25maWcnKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNNb2RhbE9wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0RGF0ZVBpY2tlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzTW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBSZXNldCB0aGUgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgYW5kIG1pbGxpIHNlY29uZHNcclxuICByZXNldEhNU00oY3VycmVudERhdGUpIHtcclxuICAgIGN1cnJlbnREYXRlLnNldEhvdXJzKDApO1xyXG4gICAgY3VycmVudERhdGUuc2V0TWludXRlcygwKTtcclxuICAgIGN1cnJlbnREYXRlLnNldFNlY29uZHMoMCk7XHJcbiAgICBjdXJyZW50RGF0ZS5zZXRNaWxsaXNlY29uZHMoMCk7XHJcbiAgICByZXR1cm4gY3VycmVudERhdGU7XHJcbiAgfVxyXG5cclxuICAvLyB0aGlzIG1ldGhvZCBjaGFuZ2UgbW9udGggb3IgeWVhciBsaXN0IHRvIGRhdGVMaXN0XHJcbiAgY2hhbmdlVG9EYXRlTGlzdCgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdjaGFuZ2VUb0RhdGVMaXN0Jyk7XHJcbiAgICB0aGlzLmlzTW9udGhZZWFyU2VsZWN0b3JPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyBWaXJ0dWFsIHNjcm9sbCBjcmVhdGUgZm9yIHNlbGVjdCB5ZWFyIGFuZCBtb250aFxyXG4gIHNlbGVjdE1vbnRoWWVhcihpc01vbnRoU2VsZWN0KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnc2VsZWN0TW9udGhZZWFyJywgaSk7XHJcbiAgICB0aGlzLmlzTW9udGhZZWFyU2VsZWN0b3JPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmlzTW9udGhTZWxlY3QgPSBpc01vbnRoU2VsZWN0O1xyXG4gICAgdGhpcy5zY3JvbGxpbmdNb250aE9yWWVhckFycmF5ID0gaXNNb250aFNlbGVjdCA/IHRoaXMubWFpbk9iai5tb250aHNMaXN0IDogdGhpcy55ZWFyc0xpc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSBpc01vbnRoU2VsZWN0ID8gdGhpcy5kYXRhLmN1cnJlbnRNb250aCA6IHRoaXMuZGF0YS5jdXJyZW50WWVhcjtcclxuXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2Nyb2xsaW5nTW9udGhPclllYXJBcnJheS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRZZWFyT3JNb250aCk7XHJcbiAgICBjb25zdCBpZGl0ZW0gPSBpbmRleCArICdsaXN0JztcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRpdGVtKS5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCBtb250aCBvciB5ZWFyXHJcbiAgb25DaGFuZ2VNb250aFllYXIobW9udGhZZWFyKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb25DaGFuZ2VNb250aFllYXInLCBtb250aFllYXIpO1xyXG4gICAgaWYgKG1vbnRoWWVhcikge1xyXG4gICAgICBpZiAodGhpcy5pc01vbnRoU2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IG1vbnRoWWVhcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSB0aGlzLmRhdGEuY3VycmVudE1vbnRoO1xyXG4gICAgICAgIGNvbnN0IG1vbnRoTnVtYmVyID0gdGhpcy5tb250aHNMaXN0LmluZGV4T2YodGhpcy5kYXRhLmN1cnJlbnRNb250aCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXREYXRlKDEpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgobW9udGhOdW1iZXIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YS5jdXJyZW50WWVhciA9IG1vbnRoWWVhcjtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkWWVhck9yTW9udGggPSB0aGlzLmRhdGEuY3VycmVudFllYXI7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRGdWxsWWVhcih0aGlzLmRhdGEuY3VycmVudFllYXIpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc01vbnRoWWVhclNlbGVjdG9yT3BlbiA9IGZhbHNlO1xyXG5cclxuICB9XHJcblxyXG4gIC8vIFByZXZpb3VzIG1vbnRoXHJcbiAgcHJldk1vbnRoKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3ByZXZOZXh0JywgdGhpcy5jdXJyZW50RGF0ZSk7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIGlmIChjdXJyZW50WWVhciA8PSB0aGlzLnllYXJzTGlzdFsodGhpcy55ZWFyc0xpc3QubGVuZ3RoIC0gMSldICYmIGN1cnJlbnRNb250aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudE1vbnRoID09PSAxKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGUuc2V0RnVsbFllYXIoY3VycmVudFllYXIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aChjdXJyZW50TW9udGggLSAxKTtcclxuICAgIHRoaXMuZGF0YS5jdXJyZW50TW9udGggPSB0aGlzLm1haW5PYmoubW9udGhzTGlzdFtjdXJyZW50TW9udGhdO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRZZWFyID0gY3VycmVudFllYXI7XHJcbiAgICB0aGlzLnJlZnJlc2hEYXRlTGlzdCh0aGlzLmN1cnJlbnREYXRlKTtcclxuICAgIC8vIHRoaXMuY2hhbmdlRGF5U2VsZWN0ZWQoKTtcclxuICB9XHJcblxyXG4gIC8vIE5leHQgbW9udGhcclxuICBuZXh0TW9udGgoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbmV4dE5leHQnLCB0aGlzLmN1cnJlbnREYXRlKTtcclxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgaWYgKGN1cnJlbnRZZWFyID49IHRoaXMueWVhcnNMaXN0WzBdICYmIGN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnRNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRGdWxsWWVhcihjdXJyZW50WWVhcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldERhdGUoMSk7XHJcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKGN1cnJlbnRNb250aCArIDEpO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IHRoaXMubWFpbk9iai5tb250aHNMaXN0W2N1cnJlbnRNb250aF07XHJcbiAgICB0aGlzLmRhdGEuY3VycmVudFllYXIgPSBjdXJyZW50WWVhcjtcclxuICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KHRoaXMuY3VycmVudERhdGUpO1xyXG4gICAgLy8gdGhpcy5jaGFuZ2VEYXlTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2hhbmdlRGF5U2VsZWN0ZWQgKCBkYXkgc2VsZWN0aW9uIGNoYW5nZXMgKVxyXG4gIGNoYW5nZURheVNlbGVjdGVkKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2NoYW5nZURheVNlbGVjdGVkJyk7XHJcbiAgICBjb25zdCBuZXdTZWxlY3RlZERhdGU6IGFueSA9IG5ldyBEYXRlKHRoaXMuc2VsY3RlZERhdGVFcG9jaCk7XHJcbiAgICBuZXdTZWxlY3RlZERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpKTtcclxuICAgIG5ld1NlbGVjdGVkRGF0ZS5zZXRZZWFyKHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSk7XHJcbiAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSBuZXdTZWxlY3RlZERhdGUuZ2V0VGltZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIC8vIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gIH1cclxuXHJcbiAgLy8gRGF0ZSBzZWxlY3RlZFxyXG4gIGRhdGVTZWxlY3RlZChzZWxlY3RlZERhdGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdkYXRlU2VsZWN0ZWQgPT4nLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgaWYgKHNlbGVjdGVkRGF0ZSAmJiAhc2VsZWN0ZWREYXRlLmRpc2FibGVkKSB7XHJcbiAgICAgIGlmICghc2VsZWN0ZWREYXRlIHx8IE9iamVjdC5rZXlzKHNlbGVjdGVkRGF0ZSkubGVuZ3RoID09PSAwKSB7IHJldHVybjsgfVxyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSBzZWxlY3RlZERhdGUuZXBvY2g7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RyaW5nID0gdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICAgIGlmICh0aGlzLm1haW5PYmouY2xvc2VPblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBTZXQgdG9kYXkgYXMgZGF0ZSBmb3IgdGhlIG1vZGFsXHJcbiAgc2V0SW9uaWNEYXRlUGlja2VyVG9kYXlEYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldElvbmljRGF0ZVBpY2tlclRvZGF5RGF0ZScpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSh0aGlzLnRvZGF5KTtcclxuICAgIGNvbnN0IHRvZGF5X29iaiA9IHtcclxuICAgICAgZGF0ZTogdG9kYXkuZ2V0RGF0ZSgpLFxyXG4gICAgICBtb250aDogdG9kYXkuZ2V0TW9udGgoKSxcclxuICAgICAgeWVhcjogdG9kYXkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgZGF5OiB0b2RheS5nZXREYXkoKSxcclxuICAgICAgZXBvY2g6IHRvZGF5LmdldFRpbWUoKSxcclxuICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQodG9kYXlfb2JqKTtcclxuICAgIHRoaXMucmVmcmVzaERhdGVMaXN0KG5ldyBEYXRlKCkpO1xyXG4gICAgdGhpcy5zZWxjdGVkRGF0ZUVwb2NoID0gdGhpcy5yZXNldEhNU00odG9kYXkpLmdldFRpbWUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RyaW5nID0gdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICAvLyB0aGlzLmNsb3NlTW9kYWwodGhpcy5zZWxjdGVkRGF0ZUVwb2NoKTtcclxuICB9XHJcblxyXG4gIC8vIFNldCBkYXRlIGZvciB0aGUgbW9kYWxcclxuICBzZXRJb25pY0RhdGVQaWNrZXJEYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldElvbmljRGF0ZVBpY2tlckRhdGUnKTtcclxuICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLnNlbGN0ZWREYXRlRXBvY2gpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0dGluZyB0aGUgZGlzYWJsZWQgZGF0ZXMgbGlzdC5cclxuICBzZXREaXNhYmxlZERhdGVzKG9iaikge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3NldERpc2FibGVkRGF0ZXMgPT4nLCBvYmopO1xyXG4gICAgaWYgKCFvYmouZGlzYWJsZWREYXRlcyB8fCBvYmouZGlzYWJsZWREYXRlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZERhdGVzID0gW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVkRGF0ZXMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmouZGlzYWJsZWREYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIC8vIHZhbCA9IHJlc2V0SE1TTShuZXcgRGF0ZSh2YWwpKTtcclxuICAgICAgICB0aGlzLmRpc2FibGVkRGF0ZXMucHVzaCh0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZShvYmouZGlzYWJsZWREYXRlc1tpXSkpLmdldFRpbWUoKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFNldCBoaWdodGxpZ2h0ZWQgZGF0ZXNcclxuICBzZXRIaWdodGxpZ2h0ZWREYXRlcyhvYmopIHtcclxuICAgIGlmICghb2JqLmhpZ2hsaWdodGVkRGF0ZXMgfHwgb2JqLmhpZ2hsaWdodGVkRGF0ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWREYXRlcyA9IHt9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZERhdGVzID0ge307XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmhpZ2hsaWdodGVkRGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBoRGF0ZSA9IG9iai5oaWdobGlnaHRlZERhdGVzW2ldLmRhdGU7XHJcbiAgICAgICAgY29uc3QgaENvbG9yID0gb2JqLmhpZ2hsaWdodGVkRGF0ZXNbaV0uY29sb3I7XHJcbiAgICAgICAgY29uc3QgaEZvbnRDb2xvciA9IG9iai5oaWdobGlnaHRlZERhdGVzW2ldLmZvbnRDb2xvcjtcclxuICAgICAgICBjb25zdCBoRGF0ZVRpbWUgPSB0aGlzLnJlc2V0SE1TTShuZXcgRGF0ZShoRGF0ZSkpLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkRGF0ZXNbaERhdGVUaW1lXSA9IHsgY29sb3I6IGhDb2xvciwgZm9udENvbG9yOiBoRm9udENvbG9yIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlZnJlc2ggdGhlIGxpc3Qgb2YgdGhlIGRhdGVzIG9mIGEgbW9udGhcclxuICByZWZyZXNoRGF0ZUxpc3QoY3VycmVudERhdGUpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdyZWZyZXNoRGF0ZUxpc3QgPT4nLCBjdXJyZW50RGF0ZSk7XHJcbiAgICBjdXJyZW50RGF0ZSA9IHRoaXMucmVzZXRITVNNKGN1cnJlbnREYXRlKTtcclxuICAgIHRoaXMuY3VycmVudERhdGUgPSBjdXJyZW50RGF0ZTtcclxuXHJcbiAgICBjb25zdCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIDEpLmdldERhdGUoKTtcclxuICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCBjdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSwgMCkuZ2V0RGF0ZSgpO1xyXG5cclxuICAgIHRoaXMubW9udGhzTGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMubWFpbk9iai5tb250aHNMaXN0ICYmIHRoaXMubWFpbk9iai5tb250aHNMaXN0Lmxlbmd0aCA9PT0gMTIpIHtcclxuICAgICAgdGhpcy5tb250aHNMaXN0ID0gdGhpcy5tYWluT2JqLm1vbnRoc0xpc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm1vbnRoc0xpc3QgPSB0aGlzLm1vbnRoc0xpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy55ZWFyc0xpc3QgPSB0aGlzLmdldFllYXJzTGlzdCh0aGlzLm1haW5PYmouZnJvbSwgdGhpcy5tYWluT2JqLnRvKTtcclxuXHJcbiAgICB0aGlzLmRheXNMaXN0ID0gW107XHJcbiAgICBsZXQgdGVtcERhdGUsIGRpc2FibGVkO1xyXG4gICAgdGhpcy5maXJzdERheUVwb2NoID0gdGhpcy5yZXNldEhNU00obmV3IERhdGUoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudERhdGUuZ2V0TW9udGgoKSwgZmlyc3REYXkpKS5nZXRUaW1lKCk7XHJcbiAgICB0aGlzLmxhc3REYXlFcG9jaCA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIGxhc3REYXkpKS5nZXRUaW1lKCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IGZpcnN0RGF5OyBpIDw9IGxhc3REYXk7IGkrKykge1xyXG4gICAgICB0ZW1wRGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksIGN1cnJlbnREYXRlLmdldE1vbnRoKCksIGkpO1xyXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBkYXkgPSB0ZW1wRGF0ZS5nZXREYXkoKTtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZVdlZWtkYXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlV2Vla2RheXMuaW5kZXhPZihkYXkpID49IDApIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdGhpcy5kaXNhYmxlV2Vla2RheXMuaW5kZXhPZihkYXkpID49IDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZERhdGVzLmluZGV4T2YodGVtcERhdGUuZ2V0VGltZSgpKSA+PSAwKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5mcm9tRGF0ZSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICBkaXNhYmxlZCA9ICh0ZW1wRGF0ZS5nZXRUaW1lKCkgPCB0aGlzLmZyb21EYXRlKVxyXG4gICAgICAgICAgfHwgdGhpcy5tYWluT2JqLmRpc2FibGVXZWVrRGF5cy5pbmRleE9mKHRlbXBEYXRlLmdldERheSgpKSA+PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRvRGF0ZSAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgICBkaXNhYmxlZCA9ICh0ZW1wRGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnRvRGF0ZSlcclxuICAgICAgICAgIHx8IHRoaXMubWFpbk9iai5kaXNhYmxlV2Vla0RheXMuaW5kZXhPZih0ZW1wRGF0ZS5nZXREYXkoKSkgPj0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaGlnaHRMaWdodERhdGUgPSB0aGlzLmhpZ2hsaWdodGVkRGF0ZXNbdGVtcERhdGUuZ2V0VGltZSgpXTtcclxuXHJcbiAgICAgIGxldCBmb250Q29sb3IgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRlbXBEYXRlLmdldERheSgpID09PSAwICYmIHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkICYmIHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvcikge1xyXG4gICAgICAgIGZvbnRDb2xvciA9IHRoaXMubWFpbk9iai5pc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvcjtcclxuICAgICAgfSBlbHNlIGlmIChoaWdodExpZ2h0RGF0ZSAmJiBoaWdodExpZ2h0RGF0ZS5mb250Q29sb3IpIHtcclxuICAgICAgICBmb250Q29sb3IgPSBoaWdodExpZ2h0RGF0ZS5mb250Q29sb3I7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF5c0xpc3QucHVzaCh7XHJcbiAgICAgICAgZGF0ZTogdGVtcERhdGUuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIG1vbnRoOiB0ZW1wRGF0ZS5nZXRNb250aCgpLFxyXG4gICAgICAgIHllYXI6IHRlbXBEYXRlLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgZGF5OiB0ZW1wRGF0ZS5nZXREYXkoKSxcclxuICAgICAgICBlcG9jaDogdGVtcERhdGUuZ2V0VGltZSgpLFxyXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICBjb2xvcjogaGlnaHRMaWdodERhdGUgJiYgaGlnaHRMaWdodERhdGUuY29sb3IgPyBoaWdodExpZ2h0RGF0ZS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgZm9udENvbG9yOiBmb250Q29sb3JcclxuICAgICAgICAvLyBmb250Q29sb3I6IGhpZ2h0TGlnaHREYXRlICYmIGhpZ2h0TGlnaHREYXRlLmZvbnRDb2xvciA/IGhpZ2h0TGlnaHREYXRlLmZvbnRDb2xvciA6IG51bGxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVG8gc2V0IE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxyXG4gICAgbGV0IGZpcnN0RGF5TW9uZGF5ID0gdGhpcy5kYXlzTGlzdFswXS5kYXkgLSB0aGlzLm1haW5PYmoubW9uZGF5Rmlyc3Q7XHJcbiAgICBmaXJzdERheU1vbmRheSA9IChmaXJzdERheU1vbmRheSA8IDApID8gNiA6IGZpcnN0RGF5TW9uZGF5O1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBmaXJzdERheU1vbmRheTsgaisrKSB7XHJcbiAgICAgIHRoaXMuZGF5c0xpc3QudW5zaGlmdCh7fSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd3MgPSBbMCwgNywgMTQsIDIxLCAyOCwgMzVdO1xyXG4gICAgdGhpcy5jb2xzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRNb250aCA9IHRoaXMubWFpbk9iai5tb250aHNMaXN0W2N1cnJlbnREYXRlLmdldE1vbnRoKCldO1xyXG4gICAgdGhpcy5kYXRhLmN1cnJlbnRZZWFyID0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHRoaXMuZGF0YS5jdXJyZW50TW9udGhTZWxlY3RlZCA9IHRoaXMuZGF0YS5jdXJyZW50TW9udGg7XHJcbiAgICB0aGlzLmN1cnJlbnRZZWFyU2VsZWN0ZWQgPSB0aGlzLmRhdGEuY3VycmVudFllYXI7XHJcbiAgICB0aGlzLm51bUNvbHVtbnMgPSA3O1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0dGluZyB1cCB0aGUgaW5pdGlhbCBvYmplY3RcclxuICBzZXRJbml0aWFsT2JqKGlwT2JqKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnc2V0SW5pdGlhbE9iaiA9PicsIGlwT2JqKTtcclxuICAgIHRoaXMubWFpbk9iaiA9IGlwT2JqO1xyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZERhdGVGb3VuZCkge1xyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGN0ZWREYXRlRXBvY2ggPSB0aGlzLnJlc2V0SE1TTSh0aGlzLm1haW5PYmouaW5wdXREYXRlKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVTdHJpbmcgPSB0aGlzLmZvcm1hdERhdGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5tYWluT2JqLndlZWtzTGlzdCAmJiB0aGlzLm1haW5PYmoud2Vla3NMaXN0Lmxlbmd0aCA9PT0gNykge1xyXG4gICAgICB0aGlzLndlZWtzTGlzdCA9IHRoaXMubWFpbk9iai53ZWVrc0xpc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYWluT2JqLm1vbmRheUZpcnN0KSB7XHJcbiAgICAgIHRoaXMud2Vla3NMaXN0LnB1c2godGhpcy5tYWluT2JqLndlZWtzTGlzdC5zaGlmdCgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1haW5PYmoueWVhckluQXNjZW5kaW5nKSB7XHJcbiAgICAgIHRoaXMueWVhckluQXNjZW5kaW5nID0gdGhpcy5tYWluT2JqLnllYXJJbkFzY2VuZGluZztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1haW5PYmoubW9tZW50TG9jYWxlKSB7XHJcbiAgICAgIHRoaXMubW9tZW50TG9jYWxlID0gdGhpcy5tYWluT2JqLm1vbWVudExvY2FsZTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzYWJsZVdlZWtkYXlzID0gdGhpcy5tYWluT2JqLmRpc2FibGVXZWVrRGF5cztcclxuICAgIHRoaXMuc2V0RGlzYWJsZWREYXRlcyh0aGlzLm1haW5PYmopO1xyXG4gICAgdGhpcy5yZWZyZXNoRGF0ZUxpc3QodGhpcy5tYWluT2JqLmlucHV0RGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgZGlzbWlzcyBtb2RhbFxyXG4gIGNsb3NlTW9kYWwoc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY2xvc2VNb2RhbCA9PiAnLCBzZWxlY3RlZERhdGUpO1xyXG4gICAgdGhpcy5tb2RhbEN0cmwuZ2V0VG9wKCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbW9tZW50KHNlbGVjdGVkRGF0ZSkuZm9ybWF0KHRoaXMubWFpbk9iai5kYXRlRm9ybWF0KTtcclxuICAgIHRoaXMubW9kYWxDdHJsLmRpc21pc3MoeyAnZGF0ZSc6IGZvcm1hdHRlZERhdGUgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBjbG9zZSBtb2RhbCBidXR0b25cclxuICBjbG9zZUlvbmljRGF0ZVBpY2tlck1vZGFsKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2Nsb3NlSW9uaWNEYXRlUGlja2VyTW9kYWwnKTtcclxuICAgIHRoaXMuY2xvc2VNb2RhbChudWxsKTtcclxuICB9XHJcblxyXG4gIC8vIGdldCB5ZWFycyBsaXN0ICAoIEdJVkUgSEVSRSBNSU4gT1IgTUFYIFlFQVIgSU4gREFURV9QSUNLRVIgKVxyXG4gIGdldFllYXJzTGlzdChmcm9tLCB0bykge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2dldFllYXJzTGlzdCA9PicsIGZyb20sIHRvKTtcclxuICAgIGNvbnN0IHllYXJzTGlzdCA9IFtdO1xyXG4gICAgbGV0IG1pblllYXIgPSAxOTUwO1xyXG4gICAgbGV0IG1heFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxO1xyXG4gICAgbWluWWVhciA9IGZyb20gPyBuZXcgRGF0ZShmcm9tKS5nZXRGdWxsWWVhcigpIDogbWluWWVhcjtcclxuICAgIG1heFllYXIgPSB0byA/IG5ldyBEYXRlKHRvKS5nZXRGdWxsWWVhcigpIDogbWF4WWVhcjtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdnZXRZZWFyc0xpc3Q6ICcsIHRoaXMueWVhckluQXNjZW5kaW5nKTtcclxuICAgIGlmICh0aGlzLnllYXJJbkFzY2VuZGluZykge1xyXG4gICAgICBmb3IgKGxldCBpID0gbWluWWVhcjsgaSA8PSBtYXhZZWFyOyBpKyspIHtcclxuICAgICAgICB5ZWFyc0xpc3QucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IG1heFllYXI7IGkgPj0gbWluWWVhcjsgaS0tKSB7XHJcbiAgICAgICAgeWVhcnNMaXN0LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB5ZWFyc0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyBJbml0IERhdGUtUGlja2VyXHJcbiAgaW5pdERhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gJyc7XHJcbiAgICB0aGlzLnRvRGF0ZSA9ICcnO1xyXG4gICAgLy8gJHNjb3BlLm1haW5PYmogPSBhbmd1bGFyLmV4dGVuZCh7fSwgY29uZmlnLCBpcE9iaik7XHJcbiAgICBpZiAodGhpcy5tYWluT2JqLmZyb20pIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKHRoaXMubWFpbk9iai5mcm9tKSkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWFpbk9iai50bykge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IHRoaXMucmVzZXRITVNNKG5ldyBEYXRlKHRoaXMubWFpbk9iai50bykpLmdldFRpbWUoKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChpcE9iai5kaXNhYmxlV2Vla2RheXMgJiYgdGhpcy5jb25maWcuZGlzYWJsZVdlZWtkYXlzKSB7XHJcbiAgICAvLyAgIHRoaXMubWFpbk9iai5kaXNhYmxlV2Vla0RheXMgPSBpcE9iai5kaXNhYmxlV2Vla2RheXMuY29uY2F0KHRoaXMuY29uZmlnLmRpc2FibGVXZWVrZGF5cyk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLnNldEluaXRpYWxPYmoodGhpcy5tYWluT2JqKTtcclxuICB9XHJcblxyXG4gIC8vIEluaXQgRGF0ZVBpY2tlciBPYmplY3RcclxuICBpbml0RGF0ZVBpY2tlck9iaihjb25maWcpIHtcclxuICAgIC8vIGNvbnN0IGNvbmZpZyA9IHRoaXMubWFpbk9iajtcclxuXHJcbiAgICBpZiAoY29uZmlnLmlucHV0RGF0ZSAmJiAhdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSkge1xyXG4gICAgICB0aGlzLmlzU2VsZWN0ZWREYXRlRm91bmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gY29uZmlnLmlucHV0RGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvYmpDb25maWc6IGFueSA9IHt9O1xyXG4gICAgb2JqQ29uZmlnLmZyb20gPSBjb25maWcuZnJvbURhdGUgPyBjb25maWcuZnJvbURhdGUgOiAnJztcclxuICAgIG9iakNvbmZpZy50byA9IGNvbmZpZy50b0RhdGUgPyBjb25maWcudG9EYXRlIDogJyc7XHJcbiAgICBvYmpDb25maWcuc2hvd1RvZGF5QnV0dG9uID0gY29uZmlnLnNob3dUb2RheUJ1dHRvbiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGNvbmZpZy5zaG93VG9kYXlCdXR0b247XHJcbiAgICBvYmpDb25maWcuY2xvc2VPblNlbGVjdCA9IGNvbmZpZy5jbG9zZU9uU2VsZWN0ID8gY29uZmlnLmNsb3NlT25TZWxlY3QgOiBmYWxzZTtcclxuICAgIG9iakNvbmZpZy5kaXNhYmxlV2Vla0RheXMgPSBjb25maWcuZGlzYWJsZVdlZWtEYXlzID8gY29uZmlnLmRpc2FibGVXZWVrRGF5cyA6IFtdO1xyXG4gICAgb2JqQ29uZmlnLm1vbmRheUZpcnN0ID0gY29uZmlnLm1vbmRheUZpcnN0ID8gY29uZmlnLm1vbmRheUZpcnN0IDogZmFsc2U7XHJcbiAgICBvYmpDb25maWcuc2V0TGFiZWwgPSBjb25maWcuc2V0TGFiZWwgPyBjb25maWcuc2V0TGFiZWwgOiAnU2V0JztcclxuICAgIG9iakNvbmZpZy50b2RheUxhYmVsID0gY29uZmlnLnRvZGF5TGFiZWwgPyBjb25maWcudG9kYXlMYWJlbCA6ICdUb2RheSc7XHJcbiAgICBvYmpDb25maWcuY2xvc2VMYWJlbCA9IGNvbmZpZy5jbG9zZUxhYmVsID8gY29uZmlnLmNsb3NlTGFiZWwgOiAnQ2xvc2UnO1xyXG4gICAgb2JqQ29uZmlnLmRpc2FibGVkRGF0ZXMgPSBjb25maWcuZGlzYWJsZWREYXRlcyA/IGNvbmZpZy5kaXNhYmxlZERhdGVzIDogW107XHJcbiAgICBvYmpDb25maWcudGl0bGVMYWJlbCA9IGNvbmZpZy50aXRsZUxhYmVsID8gY29uZmlnLnRpdGxlTGFiZWwgOiBudWxsO1xyXG5cclxuICAgIG9iakNvbmZpZy5tb250aHNMaXN0ID0gY29uZmlnLm1vbnRoc0xpc3QgPyBjb25maWcubW9udGhzTGlzdCA6IHRoaXMubW9udGhzTGlzdDtcclxuICAgIG9iakNvbmZpZy5tb250aHNMaXN0ID0gWy4uLm9iakNvbmZpZy5tb250aHNMaXN0XTtcclxuXHJcbiAgICBvYmpDb25maWcud2Vla3NMaXN0ID0gY29uZmlnLndlZWtzTGlzdCA/IGNvbmZpZy53ZWVrc0xpc3QgOiB0aGlzLndlZWtzTGlzdDtcclxuICAgIG9iakNvbmZpZy53ZWVrc0xpc3QgPSBbLi4ub2JqQ29uZmlnLndlZWtzTGlzdF07XHJcblxyXG4gICAgb2JqQ29uZmlnLmRhdGVGb3JtYXQgPSBjb25maWcuZGF0ZUZvcm1hdCA/IGNvbmZpZy5kYXRlRm9ybWF0IDogJ0REIE1NTSBZWVlZJztcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUsIG9iakNvbmZpZy5kYXRlRm9ybWF0LCBtb21lbnQubG9jYWxlKCkpO1xyXG5cclxuICAgIG9iakNvbmZpZy5jbGVhckJ1dHRvbiA9IGNvbmZpZy5jbGVhckJ1dHRvbiA/IGNvbmZpZy5jbGVhckJ1dHRvbiA6IGZhbHNlO1xyXG5cclxuICAgIG9iakNvbmZpZy55ZWFySW5Bc2NlbmRpbmcgPSBjb25maWcueWVhckluQXNjZW5kaW5nID8gY29uZmlnLnllYXJJbkFzY2VuZGluZyA6IGZhbHNlO1xyXG4gICAgb2JqQ29uZmlnLm1vbWVudExvY2FsZSA9IGNvbmZpZy5tb21lbnRMb2NhbGUgPyBjb25maWcubW9tZW50TG9jYWxlIDogJ2VuLVVTJztcclxuXHJcbiAgICBtb21lbnQubG9jYWxlKG9iakNvbmZpZy5tb21lbnRMb2NhbGUpO1xyXG4gICAgb2JqQ29uZmlnLmlucHV0RGF0ZSA9IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPyBtb21lbnQodGhpcy5zZWxlY3RlZERhdGUuZGF0ZSwgb2JqQ29uZmlnLmRhdGVGb3JtYXQpLnRvRGF0ZSgpIDogbmV3IERhdGUoKTtcclxuXHJcbiAgICBvYmpDb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgPSBjb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgPyBjb25maWcuYnRuQ2xvc2VTZXRJblJldmVyc2UgOiBmYWxzZTtcclxuXHJcbiAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcyA9IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5idG5Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGNvbnN0IGJ0blByb3BlcnRpZXMgPSBjb25maWcuYnRuUHJvcGVydGllcztcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZXhwYW5kID0gYnRuUHJvcGVydGllcy5leHBhbmQgPyBidG5Qcm9wZXJ0aWVzLmV4cGFuZCA6ICdibG9jayc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmZpbGwgPSBidG5Qcm9wZXJ0aWVzLmZpbGwgPyBidG5Qcm9wZXJ0aWVzLmZpbGwgOiAnc29saWQnO1xyXG4gICAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcy5zaXplID0gYnRuUHJvcGVydGllcy5zaXplID8gYnRuUHJvcGVydGllcy5zaXplIDogJ2RlZmF1bHQnO1xyXG4gICAgICBvYmpDb25maWcuYnRuUHJvcGVydGllcy5jb2xvciA9IGJ0blByb3BlcnRpZXMuY29sb3IgPyBidG5Qcm9wZXJ0aWVzLmNvbG9yIDogJyc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmRpc2FibGVkID0gYnRuUHJvcGVydGllcy5kaXNhYmxlZCA/IGJ0blByb3BlcnRpZXMuZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuc3Ryb25nID0gYnRuUHJvcGVydGllcy5zdHJvbmcgPyBidG5Qcm9wZXJ0aWVzLnN0cm9uZyA6IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZXhwYW5kID0gJ2Jsb2NrJztcclxuICAgICAgb2JqQ29uZmlnLmJ0blByb3BlcnRpZXMuZmlsbCA9ICdzb2xpZCc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLnNpemUgPSAnZGVmYXVsdCc7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIG9iakNvbmZpZy5idG5Qcm9wZXJ0aWVzLnN0cm9uZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9iakNvbmZpZy5hcnJvd05leHRQcmV2ID0ge307XHJcbiAgICBpZiAoY29uZmlnLmFycm93TmV4dFByZXYpIHtcclxuICAgICAgY29uc3QgYXJyb3dOZXh0UHJldiA9IGNvbmZpZy5hcnJvd05leHRQcmV2O1xyXG4gICAgICBvYmpDb25maWcuYXJyb3dOZXh0UHJldi5uZXh0QXJyb3dTcmMgPSBhcnJvd05leHRQcmV2Lm5leHRBcnJvd1NyYyA/IGFycm93TmV4dFByZXYubmV4dEFycm93U3JjIDogZmFsc2U7XHJcbiAgICAgIG9iakNvbmZpZy5hcnJvd05leHRQcmV2LnByZXZBcnJvd1NyYyA9IGFycm93TmV4dFByZXYucHJldkFycm93U3JjID8gYXJyb3dOZXh0UHJldi5wcmV2QXJyb3dTcmMgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBvYmpDb25maWcuaGlnaGxpZ2h0ZWREYXRlcyA9IFtdO1xyXG4gICAgaWYgKGNvbmZpZy5oaWdobGlnaHRlZERhdGVzICYmIGNvbmZpZy5oaWdobGlnaHRlZERhdGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgb2JqQ29uZmlnLmhpZ2hsaWdodGVkRGF0ZXMgPSBjb25maWcuaGlnaGxpZ2h0ZWREYXRlcztcclxuXHJcbiAgICAgIHRoaXMuc2V0SGlnaHRsaWdodGVkRGF0ZXMob2JqQ29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBvYmpDb25maWcuaXNTdW5kYXlIaWdobGlnaHRlZCA9IHt9O1xyXG4gICAgaWYgKGNvbmZpZy5pc1N1bmRheUhpZ2hsaWdodGVkKSB7XHJcbiAgICAgIGNvbnN0IGlzU3VuZGF5SGlnaGxpZ2h0ZWQgPSBjb25maWcuaXNTdW5kYXlIaWdobGlnaHRlZDtcclxuICAgICAgb2JqQ29uZmlnLmlzU3VuZGF5SGlnaGxpZ2h0ZWQuZm9udENvbG9yID0gaXNTdW5kYXlIaWdobGlnaHRlZC5mb250Q29sb3IgPyBpc1N1bmRheUhpZ2hsaWdodGVkLmZvbnRDb2xvciA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ2NvbmZpZyA9PicsIG9iakNvbmZpZyk7XHJcbiAgICByZXR1cm4gb2JqQ29uZmlnO1xyXG4gIH1cclxuXHJcbiAgLy8gRm9ybWF0IGRhdGVcclxuICBmb3JtYXREYXRlKCkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2Zvcm1hdERhdGU6ICcsIHRoaXMuc2VsY3RlZERhdGVFcG9jaCwgbmV3IERhdGUodGhpcy5zZWxjdGVkRGF0ZUVwb2NoKSk7XHJcbiAgICByZXR1cm4gbW9tZW50KHRoaXMuc2VsY3RlZERhdGVFcG9jaCkuZm9ybWF0KHRoaXMubWFpbk9iai5kYXRlRm9ybWF0KTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ== \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.component.js b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.component.js new file mode 100644 index 0000000..5adb803 --- /dev/null +++ b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.component.js @@ -0,0 +1,283 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import * as tslib_1 from "tslib"; +import { Component, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core'; +import { NG_VALUE_ACCESSOR } from '@angular/forms'; +import { ModalController } from '@ionic/angular'; +import { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +import * as moment_ from 'moment'; +/** @type {?} */ +var moment = moment_; +/** @type {?} */ +var noop = (/** + * @return {?} + */ +function () { +}); +var ɵ0 = noop; +/** @type {?} */ +export var CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef((/** + * @return {?} + */ + function () { return Ionic4DatepickerComponent; })), + multi: true +}; +var Ionic4DatepickerComponent = /** @class */ (function () { + function Ionic4DatepickerComponent(modalCtrl, el, renderer2) { + this.modalCtrl = modalCtrl; + this.el = el; + this.renderer2 = renderer2; + this.selectedDate = {}; + this.innerValue = ''; + // Placeholders for the callbacks which are later provided + // by the Control Value Accessor + this.onTouchedCallback = noop; + this.onChangeCallback = noop; + } + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + 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 = '0px'; + 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 = '30%'; + } + this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;'); + this.el.nativeElement.appendChild(this.closeIcon); + this.renderer2.listen(this.closeIcon, 'click', (/** + * @param {?} event + * @return {?} + */ + function (event) { + // Do something with 'event' + // console.log('button clicks'); + _this.selectedDate = new Date(); + _this.value = ''; + })); + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onChangeValue = /** + * @param {?} value + * @return {?} + */ + function (value) { + // console.log('onChangeValue =>' , value); + if (this.inputDateConfig.clearButton !== false) { + if (!value) { + this.closeIcon.style.visibility = 'hidden'; + } + else { + this.closeIcon.style.visibility = 'visible'; + } + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.openDatePicker = /** + * @param {?} value + * @return {?} + */ + function (value) { + 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'); + if (value) { + this.selectedDate.date = value; + } + 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) { + // console.log(data); + if (data.data && data.data.date && data.data.date !== 'Invalid date') { + _this.selectedDate.date = data.data.date; + _this.value = data.data.date; + } + })); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(Ionic4DatepickerComponent.prototype, "value", { + // get accessor + get: + // get accessor + /** + * @return {?} + */ + function () { + return this.innerValue; + }, + // set accessor including call the onchange callback + set: + // set accessor including call the onchange callback + /** + * @param {?} v + * @return {?} + */ + function (v) { + if (v !== this.innerValue) { + this.innerValue = v; + this.onChangeCallback(v); + } + this.onChangeValue(v); + }, + enumerable: true, + configurable: true + }); + // Set touched on blur + // Set touched on blur + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onBlur = + // Set touched on blur + /** + * @return {?} + */ + function () { + this.onTouchedCallback(); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.writeValue = + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + function (value) { + if (value !== this.innerValue) { + this.innerValue = value; + } + this.onChangeValue(value); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnChange = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onChangeCallback = fn; + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnTouched = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onTouchedCallback = fn; + }; + Ionic4DatepickerComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker', + template: "", + providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], + styles: [":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerComponent.ctorParameters = function () { return [ + { type: ModalController }, + { type: ElementRef }, + { type: Renderer2 } + ]; }; + Ionic4DatepickerComponent.propDecorators = { + inputDateConfig: [{ type: Input }] + }; + return Ionic4DatepickerComponent; +}()); +export { Ionic4DatepickerComponent }; +if (false) { + /** @type {?} */ + Ionic4DatepickerComponent.prototype.inputDateConfig; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.closeIcon; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.selectedDate; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.innerValue; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.onTouchedCallback; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.onChangeCallback; + /** + * @type {?} + * @private + */ + Ionic4DatepickerComponent.prototype.modalCtrl; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.el; + /** @type {?} */ + Ionic4DatepickerComponent.prototype.renderer2; +} +export { ɵ0 }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O0lBRTVCLE1BQU0sR0FBRyxPQUFPOztJQUVoQixJQUFJOzs7QUFBRztBQUNiLENBQUMsQ0FBQTs7O0FBRUQsTUFBTSxLQUFPLG1DQUFtQyxHQUFRO0lBQ3RELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVU7OztJQUFDLGNBQU0sT0FBQSx5QkFBeUIsRUFBekIsQ0FBeUIsRUFBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaO0FBQ0Q7SUFtQkUsbUNBQ1UsU0FBMEIsRUFDM0IsRUFBYyxFQUNkLFNBQW9CO1FBRm5CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBWDdCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBQ2YsZUFBVSxHQUFRLEVBQUUsQ0FBQzs7O1FBSXJCLHNCQUFpQixHQUFlLElBQUksQ0FBQztRQUNyQyxxQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO0lBTTlDLENBQUM7Ozs7SUFFTCw0Q0FBUTs7O0lBQVI7UUFBQSxpQkEyQkM7UUF6QkMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUU7WUFFOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFFbEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUNyQztZQUNELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTzs7OztZQUFFLFVBQUMsS0FBSztnQkFDbkQsNEJBQTRCO2dCQUM1QixnQ0FBZ0M7Z0JBQ2hDLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsS0FBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsQ0FBQyxFQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7O0lBRUQsaURBQWE7Ozs7SUFBYixVQUFjLEtBQUs7UUFDakIsMkNBQTJDO1FBQzNDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO2FBQzdDO1NBQ0Y7SUFDSCxDQUFDOzs7OztJQUVLLGtEQUFjOzs7O0lBQXBCLFVBQXFCLEtBQUs7Ozs7Ozs7d0JBQ3hCLGlDQUFpQzt3QkFDakMsSUFBSSxLQUFLLEVBQUU7NEJBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO3lCQUNoQzt3QkFFdUIscUJBQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0NBQ2xELFNBQVMsRUFBRSw4QkFBOEI7Z0NBQ3pDLFFBQVEsRUFBRSxzQkFBc0I7Z0NBQ2hDLGNBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRzs2QkFDL0YsQ0FBQyxFQUFBOzt3QkFKSSxlQUFlLEdBQUcsU0FJdEI7d0JBQ0YscUJBQU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFBOzt3QkFBL0IsU0FBK0IsQ0FBQzt3QkFFaEMsZUFBZSxDQUFDLFlBQVksRUFBRTs2QkFDM0IsSUFBSTs7Ozt3QkFBQyxVQUFDLElBQUk7NEJBQ1QscUJBQXFCOzRCQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO2dDQUNwRSxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQ0FDeEMsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs2QkFDN0I7d0JBQ0gsQ0FBQyxFQUFDLENBQUM7Ozs7O0tBQ047SUFHRCxzQkFBSSw0Q0FBSztRQURULGVBQWU7Ozs7OztRQUNmO1lBQ0UsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxvREFBb0Q7Ozs7Ozs7UUFDcEQsVUFBVSxDQUFNO1lBQ2QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQjtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsQ0FBQzs7O09BVEE7SUFXRCxzQkFBc0I7Ozs7O0lBQ3RCLDBDQUFNOzs7OztJQUFOO1FBQ0UsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNDQUFzQzs7Ozs7O0lBQ3RDLDhDQUFVOzs7Ozs7SUFBVixVQUFXLEtBQVU7UUFDbkIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHNDQUFzQzs7Ozs7O0lBQ3RDLG9EQUFnQjs7Ozs7O0lBQWhCLFVBQWlCLEVBQU87UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0NBQXNDOzs7Ozs7SUFDdEMscURBQWlCOzs7Ozs7SUFBakIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7O2dCQTNIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsMktBQWlEO29CQUVqRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQzs7aUJBQ2pEOzs7O2dCQW5CUSxlQUFlO2dCQUZ1QixVQUFVO2dCQUFFLFNBQVM7OztrQ0F3QmpFLEtBQUs7O0lBb0hSLGdDQUFDO0NBQUEsQUE1SEQsSUE0SEM7U0F0SFkseUJBQXlCOzs7SUFFcEMsb0RBQThCOztJQUU5Qiw4Q0FBVTs7SUFDVixpREFBdUI7Ozs7O0lBQ3ZCLCtDQUE2Qjs7Ozs7SUFJN0Isc0RBQTZDOzs7OztJQUM3QyxxREFBa0Q7Ozs7O0lBR2hELDhDQUFrQzs7SUFDbEMsdUNBQXFCOztJQUNyQiw4Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgZm9yd2FyZFJlZiwgSW5wdXQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcblxyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xyXG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElvbmljNERhdGVwaWNrZXJDb21wb25lbnQpLFxyXG4gIG11bHRpOiB0cnVlXHJcbn07XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGktaW9uaWM0LWRhdGVwaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pb25pYzQtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cclxufSlcclxuZXhwb3J0IGNsYXNzIElvbmljNERhdGVwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgaW5wdXREYXRlQ29uZmlnOiBhbnk7XHJcblxyXG4gIGNsb3NlSWNvbjtcclxuICBzZWxlY3RlZERhdGU6IGFueSA9IHt9O1xyXG4gIHByaXZhdGUgaW5uZXJWYWx1ZTogYW55ID0gJyc7XHJcblxyXG4gIC8vIFBsYWNlaG9sZGVycyBmb3IgdGhlIGNhbGxiYWNrcyB3aGljaCBhcmUgbGF0ZXIgcHJvdmlkZWRcclxuICAvLyBieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG4gIHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcclxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyByZW5kZXJlcjI6IFJlbmRlcmVyMlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcclxuXHJcbiAgICAgIHRoaXMuY2xvc2VJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW9uLWljb24nKTtcclxuICAgICAgdGhpcy5jbG9zZUljb24ubmFtZSA9ICdjbG9zZS1jaXJjbGUnO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5jbGFzc05hbWUgPSAnY2xlYXJCdXR0b24nO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnJpZ2h0ID0gJzhweCc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmJvdHRvbSA9ICcwcHgnO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5mb250U2l6ZSA9ICcxOHB4JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuY29sb3IgPSAnI0E5QTlBOSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnpJbmRleCA9ICc1JztcclxuXHJcbiAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5ub2RlTmFtZSA9PT0gJ0lPTi1JVEVNJykge1xyXG4gICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmJvdHRvbSA9ICczMCUnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3Bvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDEwMCU7Jyk7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNsb3NlSWNvbik7XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5jbG9zZUljb24sICdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgIC8vIERvIHNvbWV0aGluZyB3aXRoICdldmVudCdcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnYnV0dG9uIGNsaWNrcycpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLnZhbHVlID0gJyc7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VWYWx1ZSh2YWx1ZSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ29uQ2hhbmdlVmFsdWUgPT4nICwgdmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuaW5wdXREYXRlQ29uZmlnLmNsZWFyQnV0dG9uICE9PSBmYWxzZSkge1xyXG4gICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW5EYXRlUGlja2VyKHZhbHVlKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlbkRhdGVQaWNrZXInKTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0ZVBpY2tlck1vZGFsID0gYXdhaXQgdGhpcy5tb2RhbEN0cmwuY3JlYXRlKHtcclxuICAgICAgY29tcG9uZW50OiBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQsXHJcbiAgICAgIGNzc0NsYXNzOiAnbGktaW9uaWM0LWRhdGVQaWNrZXInLFxyXG4gICAgICBjb21wb25lbnRQcm9wczogeyAnb2JqQ29uZmlnJzogdGhpcy5pbnB1dERhdGVDb25maWcsICdzZWxlY3RlZERhdGUnOiB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlICB9XHJcbiAgICB9KTtcclxuICAgIGF3YWl0IGRhdGVQaWNrZXJNb2RhbC5wcmVzZW50KCk7XHJcblxyXG4gICAgZGF0ZVBpY2tlck1vZGFsLm9uRGlkRGlzbWlzcygpXHJcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgaWYgKGRhdGEuZGF0YSAmJiBkYXRhLmRhdGEuZGF0ZSAmJiBkYXRhLmRhdGEuZGF0ZSAhPT0gJ0ludmFsaWQgZGF0ZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSBkYXRhLmRhdGEuZGF0ZTtcclxuICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRhLmRhdGEuZGF0ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0IGFjY2Vzc29yXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8gc2V0IGFjY2Vzc29yIGluY2x1ZGluZyBjYWxsIHRoZSBvbmNoYW5nZSBjYWxsYmFja1xyXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgIGlmICh2ICE9PSB0aGlzLmlubmVyVmFsdWUpIHtcclxuICAgICAgdGhpcy5pbm5lclZhbHVlID0gdjtcclxuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNoYW5nZVZhbHVlKHYpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2V0IHRvdWNoZWQgb24gYmx1clxyXG4gIG9uQmx1cigpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcclxuICB9XHJcblxyXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuaW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMub25DaGFuZ2VWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.module.js b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.module.js new file mode 100644 index 0000000..13c11d0 --- /dev/null +++ b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.module.js @@ -0,0 +1,45 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.module.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive'; +import { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +import { IonicModule } from '@ionic/angular'; +import { Ionic4DatepickerComponent } from './ionic4-datepicker.component'; +var Ionic4DatepickerModule = /** @class */ (function () { + function Ionic4DatepickerModule() { + } + Ionic4DatepickerModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CommonModule, + FormsModule, + IonicModule + ], + declarations: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent + ], + exports: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent, + CommonModule, + FormsModule + ], + entryComponents: [ + // Ionic4DatepickerComponent, + Ionic4DatepickerModalComponent + ], + providers: [] + },] } + ]; + return Ionic4DatepickerModule; +}()); +export { Ionic4DatepickerModule }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRTtJQUFBO0lBMEJzQyxDQUFDOztnQkExQnRDLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFdBQVc7cUJBQ1o7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3dCQUMzQiw4QkFBOEI7cUJBQy9CO29CQUNELE9BQU8sRUFBRTt3QkFDUCx5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3dCQUM5QixZQUFZO3dCQUNaLFdBQVc7cUJBQ1o7b0JBQ0QsZUFBZSxFQUFFO3dCQUNmLDZCQUE2Qjt3QkFDN0IsOEJBQThCO3FCQUMvQjtvQkFDRCxTQUFTLEVBQUUsRUFFVjtpQkFDRjs7SUFDcUMsNkJBQUM7Q0FBQSxBQTFCdkMsSUEwQnVDO1NBQTFCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBMaUlvbmljNERhdGVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL2xpLWlvbmljNC1kYXRlcGlja2VyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwvaW9uaWM0LWRhdGVwaWNrZXItbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IElvbmljNERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgSW9uaWNNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIExpSW9uaWM0RGF0ZXBpY2tlckRpcmVjdGl2ZSxcclxuICAgIElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgSW9uaWM0RGF0ZXBpY2tlckNvbXBvbmVudCxcclxuICAgIExpSW9uaWM0RGF0ZXBpY2tlckRpcmVjdGl2ZSxcclxuICAgIElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBlbnRyeUNvbXBvbmVudHM6IFtcclxuICAgIC8vIElvbmljNERhdGVwaWNrZXJDb21wb25lbnQsXHJcbiAgICBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG5cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJb25pYzREYXRlcGlja2VyTW9kdWxlIHsgfVxyXG4iXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.service.js b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.service.js new file mode 100644 index 0000000..b53d0cf --- /dev/null +++ b/dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.service.js @@ -0,0 +1,27 @@ +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.service.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +import { Injectable } from '@angular/core'; +import * as i0 from "@angular/core"; +var Ionic4DatepickerService = /** @class */ (function () { + function Ionic4DatepickerService() { + this.isModalOpen = false; + } + Ionic4DatepickerService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root' + },] } + ]; + /** @nocollapse */ + Ionic4DatepickerService.ctorParameters = function () { return []; }; + /** @nocollapse */ Ionic4DatepickerService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Ionic4DatepickerService_Factory() { return new Ionic4DatepickerService(); }, token: Ionic4DatepickerService, providedIn: "root" }); + return Ionic4DatepickerService; +}()); +export { Ionic4DatepickerService }; +if (false) { + /** @type {?} */ + Ionic4DatepickerService.prototype.isModalOpen; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibGliL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQztJQU9FO1FBRkEsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFSixDQUFDOztnQkFQbEIsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7Ozs7a0NBSkQ7Q0FVQyxBQVJELElBUUM7U0FMWSx1QkFBdUI7OztJQUVsQyw4Q0FBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJb25pYzREYXRlcGlja2VyU2VydmljZSB7XHJcblxyXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/lib/li-ionic4-datepicker.directive.js b/dist/ionic4-datepicker/esm5/lib/li-ionic4-datepicker.directive.js new file mode 100644 index 0000000..cec3690 --- /dev/null +++ b/dist/ionic4-datepicker/esm5/lib/li-ionic4-datepicker.directive.js @@ -0,0 +1,197 @@ +/** + * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvbGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFlBQVksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXRFO0lBYUUscUNBQ1UsU0FBMEIsRUFDM0IsT0FBZ0IsRUFDaEIsT0FBa0IsRUFDbEIsRUFBYyxFQUNkLFNBQW9CLEVBQ3BCLGlCQUEwQztRQUx6QyxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFDbEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF5QjtRQVRuRCxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixnQkFBVyxHQUFRLEtBQUssQ0FBQztJQVNyQixDQUFDOzs7O0lBRUwsOENBQVE7OztJQUFSO1FBQ0UsbUZBQW1GO1FBRHJGLGlCQXNEQztRQW5EQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtZQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FB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QyxDQUFDOzs7OztLQUNOOztnQkF4R0YsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDckI7Ozs7Z0JBWFEsZUFBZTtnQkFFZixPQUFPO2dCQUFFLFNBQVM7Z0JBSHNCLFVBQVU7Z0JBQUUsU0FBUztnQkFNN0QsdUJBQXVCOzs7a0NBUzdCLEtBQUssU0FBQyxvQkFBb0I7MEJBdUUxQixZQUFZLFNBQUMsVUFBVTs7SUEyQjFCLGtDQUFDO0NBQUEsQUF6R0QsSUF5R0M7U0FwR1ksMkJBQTJCOzs7SUFFdEMsc0RBQWtEOztJQUVsRCxnREFBVTs7SUFDVixtREFBdUI7O0lBQ3ZCLGtEQUF5Qjs7Ozs7SUFHdkIsZ0RBQWtDOztJQUNsQyw4Q0FBdUI7O0lBQ3ZCLDhDQUF5Qjs7SUFDekIseUNBQXFCOztJQUNyQixnREFBMkI7O0lBQzNCLHdEQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBJb25pYzREYXRlcGlja2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nTW9kZWwsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2lvbmljNC1kYXRlcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbGlJb25pYzREYXRlcGlja2VyXScsXHJcbiAgZXhwb3J0QXM6ICdsaUlvbmljNERhdGVwaWNrZXInLFxyXG4gIHByb3ZpZGVyczogW05nTW9kZWxdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGlJb25pYzREYXRlcGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCdsaUlvbmljNERhdGVwaWNrZXInKSBpbnB1dERhdGVDb25maWc6IGFueTtcclxuXHJcbiAgY2xvc2VJY29uO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55ID0ge307XHJcbiAgaXNNb2RhbE9wZW46IGFueSA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXHJcbiAgICBwdWJsaWMgbmdNb2RlbDogTmdNb2RlbCxcclxuICAgIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgcmVuZGVyZXIyOiBSZW5kZXJlcjIsXHJcbiAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IElvbmljNERhdGVwaWNrZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnY29uZmlnLnllYXJJbkFzY2VuZGluZyA6ICcgKyB0aGlzLmlucHV0RGF0ZUNvbmZpZy55ZWFySW5Bc2NlbmRpbmcpO1xyXG5cclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5jbG9zZUljb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpb24taWNvbicpO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5uYW1lID0gJ2Nsb3NlLWNpcmNsZSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLmNsYXNzTmFtZSA9ICdjbGVhckJ1dHRvbic7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUucmlnaHQgPSAnOHB4JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuYm90dG9tID0gJzMwJSc7XHJcbiAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLmZvbnRTaXplID0gJzE4cHgnO1xyXG4gICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5jb2xvciA9ICcjQTlBOUE5JztcclxuICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUuekluZGV4ID0gJzUnO1xyXG4gICAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUubm9kZU5hbWUgPT09ICdJT04tSVRFTScpIHtcclxuICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS5ib3R0b20gPSAnMTJweCc7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5jbG9zZUljb24pO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5jbG9zZUljb24sICdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgIC8vIERvIHNvbWV0aGluZyB3aXRoICdldmVudCdcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnYnV0dG9uIGNsaWNrcycpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5jb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoJycpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIHRoaXMubmdNb2RlbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnbmdNb2RlbCB2YWx1ZSA9PicsIHZhbHVlKTtcclxuICAgICAgc2VsZi5zZWxlY3RlZERhdGUuZGF0ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pbnB1dERhdGVDb25maWcuY2xlYXJCdXR0b24gIT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUljb24uc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ2Zvcm1jb250cm9sIHZhbHVlID0+JywgdmFsdWUpO1xyXG4gICAgICBzZWxmLnNlbGVjdGVkRGF0ZS5kYXRlID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0RGF0ZUNvbmZpZy5jbGVhckJ1dHRvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VJY29uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSA9IHRoaXMuY29udHJvbC5jb250cm9sLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW9uRm9jdXMnKVxyXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNNb2RhbE9wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuRGF0ZVBpY2tlcigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb3BlbkRhdGVQaWNrZXInKTtcclxuXHJcbiAgICBjb25zdCBkYXRlUGlja2VyTW9kYWwgPSBhd2FpdCB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IElvbmljNERhdGVwaWNrZXJNb2RhbENvbXBvbmVudCxcclxuICAgICAgY3NzQ2xhc3M6ICdsaS1pb25pYzQtZGF0ZVBpY2tlcicsXHJcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7ICdvYmpDb25maWcnOiB0aGlzLmlucHV0RGF0ZUNvbmZpZywgJ3NlbGVjdGVkRGF0ZSc6IHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUgfVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBkYXRlUGlja2VyTW9kYWwucHJlc2VudCgpO1xyXG5cclxuICAgIGRhdGVQaWNrZXJNb2RhbC5vbkRpZERpc21pc3MoKVxyXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmRhdGEgJiYgZGF0YS5kYXRhLmRhdGUgJiYgZGF0YS5kYXRhLmRhdGUgIT09ICdJbnZhbGlkIGRhdGUnKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5kYXRlID0gZGF0YS5kYXRhLmRhdGU7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShkYXRhLmRhdGEuZGF0ZSk7XHJcbiAgICAgICAgICB0aGlzLm5nTW9kZWwudXBkYXRlLmVtaXQoZGF0YS5kYXRhLmRhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/logisticinfotech-ionic4-datepicker.js b/dist/ionic4-datepicker/esm5/logisticinfotech-ionic4-datepicker.js new file mode 100644 index 0000000..b735673 --- /dev/null +++ b/dist/ionic4-datepicker/esm5/logisticinfotech-ionic4-datepicker.js @@ -0,0 +1,11 @@ +/** + * @fileoverview added by tsickle + * Generated from: logisticinfotech-ionic4-datepicker.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Generated bundle index. Do not edit. + */ +export { Ionic4DatepickerService, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent, Ionic4DatepickerModule, Ionic4DatepickerModalComponent } from './public_api'; +export { LiIonic4DatepickerDirective as ɵa } from './lib/li-ionic4-datepicker.directive'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naXN0aWNpbmZvdGVjaC1pb25pYzQtZGF0ZXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibG9naXN0aWNpbmZvdGVjaC1pb25pYzQtZGF0ZXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLGdLQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMkJBQTJCLElBQUksRUFBRSxFQUFDLE1BQU0sc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7TGlJb25pYzREYXRlcGlja2VyRGlyZWN0aXZlIGFzIMm1YX0gZnJvbSAnLi9saWIvbGktaW9uaWM0LWRhdGVwaWNrZXIuZGlyZWN0aXZlJzsiXX0= \ No newline at end of file diff --git a/dist/ionic4-datepicker/esm5/public_api.js b/dist/ionic4-datepicker/esm5/public_api.js new file mode 100644 index 0000000..6dfc745 --- /dev/null +++ b/dist/ionic4-datepicker/esm5/public_api.js @@ -0,0 +1,13 @@ +/** + * @fileoverview added by tsickle + * Generated from: public_api.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/* + * Public API Surface of ionic4-datepicker + */ +export { Ionic4DatepickerService } from './lib/ionic4-datepicker.service'; +export { CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent } from './lib/ionic4-datepicker.component'; +export { Ionic4DatepickerModule } from './lib/ionic4-datepicker.module'; +export { Ionic4DatepickerModalComponent } from './lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bsb2dpc3RpY2luZm90ZWNoL2lvbmljNC1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUlBLHdDQUFjLGlDQUFpQyxDQUFDO0FBQ2hELCtFQUFjLG1DQUFtQyxDQUFDO0FBQ2xELHVDQUFjLGdDQUFnQyxDQUFDO0FBQy9DLCtDQUFjLGlFQUFpRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGlvbmljNC1kYXRlcGlja2VyXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW9uaWM0LWRhdGVwaWNrZXIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsL2lvbmljNC1kYXRlcGlja2VyLW1vZGFsLmNvbXBvbmVudCc7XHJcbiJdfQ== \ No newline at end of file diff --git a/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js b/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js new file mode 100644 index 0000000..12697ba --- /dev/null +++ b/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js @@ -0,0 +1,984 @@ +import * as moment_ from 'moment'; +import { CommonModule } from '@angular/common'; +import { __awaiter } from 'tslib'; +import { Injectable, Component, ViewChild, Directive, ElementRef, Renderer2, Input, HostListener, ɵɵdefineInjectable, NgModule, forwardRef } from '@angular/core'; +import { NG_VALUE_ACCESSOR, NgModel, NgControl, FormsModule } from '@angular/forms'; +import { NavParams, ModalController, IonContent, IonicModule } from '@ionic/angular'; + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.service.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class Ionic4DatepickerService { + constructor() { + this.isModalOpen = false; + } +} +Ionic4DatepickerService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root' + },] } +]; +/** @nocollapse */ +Ionic4DatepickerService.ctorParameters = () => []; +/** @nocollapse */ Ionic4DatepickerService.ngInjectableDef = ɵɵdefineInjectable({ factory: function Ionic4DatepickerService_Factory() { return new Ionic4DatepickerService(); }, token: Ionic4DatepickerService, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const moment = moment_; +class Ionic4DatepickerModalComponent { + /** + * @param {?} navParams + * @param {?} modalCtrl + * @param {?} datePickerService + */ + constructor(navParams, modalCtrl, datePickerService) { + this.navParams = navParams; + this.modalCtrl = modalCtrl; + this.datePickerService = datePickerService; + // inputs + this.mainObj = {}; + this.selectedDate = {}; + // component variables + this.selctedDateEpoch = 0; + this.disabledDates = []; + this.highlightedDates = {}; + this.disableWeekdays = []; + this.data = { + currentMonth: '', + currentYear: '', + currentMonthSelected: '' + }; + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; + this.weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S']; + this.yearsList = []; + this.daysList = []; + this.yearInAscending = false; + this.momentLocale = 'en-US'; + // month year scroll variables + this.isMonthYearSelectorOpen = false; + this.scrollingMonthOrYearArray = []; + this.isSelectedDateFound = false; + this.today = this.resetHMSM(new Date()).getTime(); + if (this.navParams.get('selectedDate')) { + // console.log('Selected date =>', this.navParams.get('selectedDate')); + this.selectedDate.date = this.navParams.get('selectedDate'); + this.isSelectedDateFound = true; + } + this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig')); + } + /** + * @return {?} + */ + ngOnInit() { + this.datePickerService.isModalOpen = true; + this.initDatePicker(); + } + /** + * @return {?} + */ + ngOnDestroy() { + this.datePickerService.isModalOpen = false; + } + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + resetHMSM(currentDate) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + currentDate.setMilliseconds(0); + return currentDate; + } + // this method change month or year list to dateList + /** + * @return {?} + */ + changeToDateList() { + // console.log('changeToDateList'); + this.isMonthYearSelectorOpen = false; + } + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + selectMonthYear(isMonthSelect) { + // console.log('selectMonthYear', i); + this.isMonthYearSelectorOpen = true; + this.isMonthSelect = isMonthSelect; + this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList; + this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear; + /** @type {?} */ + const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth); + /** @type {?} */ + const iditem = index + 'list'; + setTimeout((/** + * @return {?} + */ + () => { + document.getElementById(iditem).scrollIntoView(); + }), 100); + } + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + onChangeMonthYear(monthYear) { + // console.log('onChangeMonthYear', monthYear); + if (monthYear) { + if (this.isMonthSelect) { + this.data.currentMonth = monthYear; + this.selectedYearOrMonth = this.data.currentMonth; + /** @type {?} */ + const monthNumber = this.monthsList.indexOf(this.data.currentMonth); + this.currentDate.setDate(1); + this.currentDate.setMonth(monthNumber); + } + else { + this.data.currentYear = monthYear; + this.selectedYearOrMonth = this.data.currentYear; + this.currentDate.setFullYear(this.data.currentYear); + this.refreshDateList(this.currentDate); + } + this.refreshDateList(this.currentDate); + } + this.isMonthYearSelectorOpen = false; + } + // Previous month + /** + * @return {?} + */ + prevMonth() { + // console.log('prevNext', this.currentDate); + /** @type {?} */ + const currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + const currentYear = this.currentDate.getFullYear(); + if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) { + return; + } + if (currentMonth === 1) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setMonth(currentMonth - 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + } + // Next month + /** + * @return {?} + */ + nextMonth() { + // console.log('nextNext', this.currentDate); + /** @type {?} */ + const currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + const currentYear = this.currentDate.getFullYear(); + if (currentYear >= this.yearsList[0] && currentMonth === 11) { + return; + } + if (currentMonth === 11) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setDate(1); + this.currentDate.setMonth(currentMonth + 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + } + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + changeDaySelected() { + // console.log('changeDaySelected'); + /** @type {?} */ + const newSelectedDate = new Date(this.selctedDateEpoch); + newSelectedDate.setMonth(this.currentDate.getMonth()); + newSelectedDate.setYear(this.currentDate.getFullYear()); + this.selctedDateEpoch = newSelectedDate.getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + } + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + dateSelected(selectedDate) { + // console.log('dateSelected =>', selectedDate); + if (selectedDate && !selectedDate.disabled) { + if (!selectedDate || Object.keys(selectedDate).length === 0) { + return; + } + this.isSelectedDateFound = true; + this.selctedDateEpoch = selectedDate.epoch; + this.selectedDateString = this.formatDate(); + if (this.mainObj.closeOnSelect) { + this.closeModal(this.selctedDateEpoch); + } + } + } + // Set today as date for the modal + /** + * @return {?} + */ + setIonicDatePickerTodayDate() { + // console.log('setIonicDatePickerTodayDate'); + /** @type {?} */ + const today = new Date(this.today); + /** @type {?} */ + const today_obj = { + date: today.getDate(), + month: today.getMonth(), + year: today.getFullYear(), + day: today.getDay(), + epoch: today.getTime(), + disabled: false + }; + this.dateSelected(today_obj); + this.refreshDateList(new Date()); + this.selctedDateEpoch = this.resetHMSM(today).getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + } + // Set date for the modal + /** + * @return {?} + */ + setIonicDatePickerDate() { + // console.log('setIonicDatePickerDate'); + this.closeModal(this.selctedDateEpoch); + } + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + setDisabledDates(obj) { + // console.log('setDisabledDates =>', obj); + if (!obj.disabledDates || obj.disabledDates.length === 0) { + this.disabledDates = []; + } + else { + this.disabledDates = []; + for (let i = 0; i < obj.disabledDates.length; i++) { + // val = resetHMSM(new Date(val)); + this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime()); + } + } + } + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + setHightlightedDates(obj) { + if (!obj.highlightedDates || obj.highlightedDates.length === 0) { + this.highlightedDates = {}; + } + else { + this.highlightedDates = {}; + for (let i = 0; i < obj.highlightedDates.length; i++) { + /** @type {?} */ + const hDate = obj.highlightedDates[i].date; + /** @type {?} */ + const hColor = obj.highlightedDates[i].color; + /** @type {?} */ + const hFontColor = obj.highlightedDates[i].fontColor; + /** @type {?} */ + const hDateTime = this.resetHMSM(new Date(hDate)).getTime(); + this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor }; + } + } + } + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + refreshDateList(currentDate) { + // console.log('refreshDateList =>', currentDate); + currentDate = this.resetHMSM(currentDate); + this.currentDate = currentDate; + /** @type {?} */ + const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate(); + /** @type {?} */ + const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate(); + this.monthsList = []; + if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) { + this.monthsList = this.mainObj.monthsList; + } + else { + this.monthsList = this.monthsList; + } + this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to); + this.daysList = []; + /** @type {?} */ + let tempDate; + /** @type {?} */ + let disabled; + this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime(); + this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime(); + for (let i = firstDay; i <= lastDay; i++) { + tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i); + disabled = false; + /** @type {?} */ + const day = tempDate.getDay(); + if (this.disableWeekdays.length > 0) { + if (this.disableWeekdays.indexOf(day) >= 0) { + disabled = this.disableWeekdays.indexOf(day) >= 0; + } + else { + disabled = false; + } + } + if (this.disabledDates.length > 0) { + if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) { + disabled = true; + } + } + if (this.fromDate && !disabled) { + disabled = (tempDate.getTime() < this.fromDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + if (this.toDate && !disabled) { + disabled = (tempDate.getTime() > this.toDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + /** @type {?} */ + const hightLightDate = this.highlightedDates[tempDate.getTime()]; + /** @type {?} */ + let fontColor = null; + if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) { + fontColor = this.mainObj.isSundayHighlighted.fontColor; + } + else if (hightLightDate && hightLightDate.fontColor) { + fontColor = hightLightDate.fontColor; + } + this.daysList.push({ + date: tempDate.getDate(), + month: tempDate.getMonth(), + year: tempDate.getFullYear(), + day: tempDate.getDay(), + epoch: tempDate.getTime(), + disabled: disabled, + color: hightLightDate && hightLightDate.color ? hightLightDate.color : null, + fontColor: fontColor + // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null + }); + } + // To set Monday as the first day of the week. + /** @type {?} */ + let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst; + firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday; + for (let j = 0; j < firstDayMonday; j++) { + this.daysList.unshift({}); + } + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()]; + this.data.currentYear = currentDate.getFullYear(); + this.data.currentMonthSelected = this.data.currentMonth; + this.currentYearSelected = this.data.currentYear; + this.numColumns = 7; + } + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + setInitialObj(ipObj) { + // console.log('setInitialObj =>', ipObj); + this.mainObj = ipObj; + if (this.isSelectedDateFound) { + this.isSelectedDateFound = true; + this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime(); + } + this.selectedDateString = this.formatDate(); + if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) { + this.weeksList = this.mainObj.weeksList; + } + if (this.mainObj.mondayFirst) { + this.weeksList.push(this.mainObj.weeksList.shift()); + } + if (this.mainObj.yearInAscending) { + this.yearInAscending = this.mainObj.yearInAscending; + } + if (this.mainObj.momentLocale) { + this.momentLocale = this.mainObj.momentLocale; + } + this.disableWeekdays = this.mainObj.disableWeekDays; + this.setDisabledDates(this.mainObj); + this.refreshDateList(this.mainObj.inputDate); + } + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + closeModal(selectedDate) { + // console.log('closeModal => ', selectedDate); + this.modalCtrl.getTop(); + /** @type {?} */ + const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat); + this.modalCtrl.dismiss({ 'date': formattedDate }); + } + // close modal button + /** + * @return {?} + */ + closeIonicDatePickerModal() { + // console.log('closeIonicDatePickerModal'); + this.closeModal(null); + } + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + getYearsList(from, to) { + // console.log('getYearsList =>', from, to); + /** @type {?} */ + const yearsList = []; + /** @type {?} */ + let minYear = 1950; + /** @type {?} */ + let maxYear = new Date().getFullYear() + 1; + minYear = from ? new Date(from).getFullYear() : minYear; + maxYear = to ? new Date(to).getFullYear() : maxYear; + // console.log('getYearsList: ', this.yearInAscending); + if (this.yearInAscending) { + for (let i = minYear; i <= maxYear; i++) { + yearsList.push(i); + } + } + else { + for (let i = maxYear; i >= minYear; i--) { + yearsList.push(i); + } + } + return yearsList; + } + // Init Date-Picker + /** + * @return {?} + */ + initDatePicker() { + this.fromDate = ''; + this.toDate = ''; + // $scope.mainObj = angular.extend({}, config, ipObj); + if (this.mainObj.from) { + this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime(); + } + if (this.mainObj.to) { + this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime(); + } + // if (ipObj.disableWeekdays && this.config.disableWeekdays) { + // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays); + // } + this.setInitialObj(this.mainObj); + } + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + initDatePickerObj(config) { + // const config = this.mainObj; + if (config.inputDate && !this.selectedDate.date) { + this.isSelectedDateFound = true; + this.selectedDate.date = config.inputDate; + } + /** @type {?} */ + const objConfig = {}; + objConfig.from = config.fromDate ? config.fromDate : ''; + objConfig.to = config.toDate ? config.toDate : ''; + objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton; + objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false; + objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : []; + objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false; + objConfig.setLabel = config.setLabel ? config.setLabel : 'Set'; + objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today'; + objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close'; + objConfig.disabledDates = config.disabledDates ? config.disabledDates : []; + objConfig.titleLabel = config.titleLabel ? config.titleLabel : null; + objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList; + objConfig.monthsList = [...objConfig.monthsList]; + objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList; + objConfig.weeksList = [...objConfig.weeksList]; + objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY'; + // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale()); + objConfig.clearButton = config.clearButton ? config.clearButton : false; + objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false; + objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US'; + moment.locale(objConfig.momentLocale); + objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date(); + objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false; + objConfig.btnProperties = {}; + if (config.btnProperties) { + /** @type {?} */ + const btnProperties = config.btnProperties; + objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block'; + objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid'; + objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default'; + objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : ''; + objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false; + objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false; + } + else { + objConfig.btnProperties.expand = 'block'; + objConfig.btnProperties.fill = 'solid'; + objConfig.btnProperties.size = 'default'; + objConfig.btnProperties.disabled = false; + objConfig.btnProperties.strong = false; + } + objConfig.arrowNextPrev = {}; + if (config.arrowNextPrev) { + /** @type {?} */ + const arrowNextPrev = config.arrowNextPrev; + objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false; + objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false; + } + objConfig.highlightedDates = []; + if (config.highlightedDates && config.highlightedDates.length > 0) { + objConfig.highlightedDates = config.highlightedDates; + this.setHightlightedDates(objConfig); + } + objConfig.isSundayHighlighted = {}; + if (config.isSundayHighlighted) { + /** @type {?} */ + const isSundayHighlighted = config.isSundayHighlighted; + objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null; + } + // console.log('config =>', objConfig); + return objConfig; + } + // Format date + /** + * @return {?} + */ + formatDate() { + // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch)); + return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat); + } +} +Ionic4DatepickerModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker-modal', + template: "\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n", + styles: [":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"] + }] } +]; +/** @nocollapse */ +Ionic4DatepickerModalComponent.ctorParameters = () => [ + { type: NavParams }, + { type: ModalController }, + { type: Ionic4DatepickerService } +]; +Ionic4DatepickerModalComponent.propDecorators = { + content: [{ type: ViewChild, args: [IonContent, { static: false },] }] +}; + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const noop = (/** + * @return {?} + */ +() => { +}); +/** @type {?} */ +const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef((/** + * @return {?} + */ + () => Ionic4DatepickerComponent)), + multi: true +}; +class Ionic4DatepickerComponent { + /** + * @param {?} modalCtrl + * @param {?} el + * @param {?} renderer2 + */ + constructor(modalCtrl, el, renderer2) { + this.modalCtrl = modalCtrl; + this.el = el; + this.renderer2 = renderer2; + this.selectedDate = {}; + this.innerValue = ''; + // Placeholders for the callbacks which are later provided + // by the Control Value Accessor + this.onTouchedCallback = noop; + this.onChangeCallback = noop; + } + /** + * @return {?} + */ + ngOnInit() { + 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 = '0px'; + 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 = '30%'; + } + this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;'); + this.el.nativeElement.appendChild(this.closeIcon); + this.renderer2.listen(this.closeIcon, 'click', (/** + * @param {?} event + * @return {?} + */ + (event) => { + // Do something with 'event' + // console.log('button clicks'); + this.selectedDate = new Date(); + this.value = ''; + })); + } + } + /** + * @param {?} value + * @return {?} + */ + onChangeValue(value) { + // console.log('onChangeValue =>' , value); + if (this.inputDateConfig.clearButton !== false) { + if (!value) { + this.closeIcon.style.visibility = 'hidden'; + } + else { + this.closeIcon.style.visibility = 'visible'; + } + } + } + /** + * @param {?} value + * @return {?} + */ + openDatePicker(value) { + return __awaiter(this, void 0, void 0, function* () { + // console.log('openDatePicker'); + if (value) { + this.selectedDate.date = value; + } + /** @type {?} */ + const datePickerModal = yield this.modalCtrl.create({ + component: Ionic4DatepickerModalComponent, + cssClass: 'li-ionic4-datePicker', + componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date } + }); + yield datePickerModal.present(); + datePickerModal.onDidDismiss() + .then((/** + * @param {?} data + * @return {?} + */ + (data) => { + // console.log(data); + if (data.data && data.data.date && data.data.date !== 'Invalid date') { + this.selectedDate.date = data.data.date; + this.value = data.data.date; + } + })); + }); + } + // get accessor + /** + * @return {?} + */ + get value() { + return this.innerValue; + } + // set accessor including call the onchange callback + /** + * @param {?} v + * @return {?} + */ + set value(v) { + if (v !== this.innerValue) { + this.innerValue = v; + this.onChangeCallback(v); + } + this.onChangeValue(v); + } + // Set touched on blur + /** + * @return {?} + */ + onBlur() { + this.onTouchedCallback(); + } + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + writeValue(value) { + if (value !== this.innerValue) { + this.innerValue = value; + } + this.onChangeValue(value); + } + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + registerOnChange(fn) { + this.onChangeCallback = fn; + } + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + registerOnTouched(fn) { + this.onTouchedCallback = fn; + } +} +Ionic4DatepickerComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker', + template: "", + providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], + styles: [":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"] + }] } +]; +/** @nocollapse */ +Ionic4DatepickerComponent.ctorParameters = () => [ + { type: ModalController }, + { type: ElementRef }, + { type: Renderer2 } +]; +Ionic4DatepickerComponent.propDecorators = { + inputDateConfig: [{ type: Input }] +}; + +/** + * @fileoverview added by tsickle + * Generated from: lib/li-ionic4-datepicker.directive.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class LiIonic4DatepickerDirective { + /** + * @param {?} modalCtrl + * @param {?} ngModel + * @param {?} control + * @param {?} el + * @param {?} renderer2 + * @param {?} datePickerService + */ + constructor(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 {?} + */ + ngOnInit() { + // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending); + 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 {?} + */ + (event) => { + // Do something with 'event' + // console.log('button clicks'); + this.selectedDate.date = new Date(); + this.control.control.setValue(''); + this.ngModel.update.emit(''); + })); + } + /** @type {?} */ + const self = this; + this.ngModel.valueChanges.subscribe((/** + * @param {?} value + * @return {?} + */ + (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 {?} + */ + (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 {?} + */ + onFocus() { + if (this.datePickerService.isModalOpen) { + return; + } + this.openDatePicker(); + } + /** + * @return {?} + */ + openDatePicker() { + return __awaiter(this, void 0, void 0, function* () { + // console.log('openDatePicker'); + // console.log('openDatePicker'); + /** @type {?} */ + const datePickerModal = yield this.modalCtrl.create({ + component: Ionic4DatepickerModalComponent, + cssClass: 'li-ionic4-datePicker', + componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date } + }); + yield datePickerModal.present(); + datePickerModal.onDidDismiss() + .then((/** + * @param {?} data + * @return {?} + */ + (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); + } + })); + }); + } +} +LiIonic4DatepickerDirective.decorators = [ + { type: Directive, args: [{ + selector: '[liIonic4Datepicker]', + exportAs: 'liIonic4Datepicker', + providers: [NgModel], + },] } +]; +/** @nocollapse */ +LiIonic4DatepickerDirective.ctorParameters = () => [ + { type: ModalController }, + { type: NgModel }, + { type: NgControl }, + { type: ElementRef }, + { type: Renderer2 }, + { type: Ionic4DatepickerService } +]; +LiIonic4DatepickerDirective.propDecorators = { + inputDateConfig: [{ type: Input, args: ['liIonic4Datepicker',] }], + onFocus: [{ type: HostListener, args: ['ionFocus',] }] +}; + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.module.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +class Ionic4DatepickerModule { +} +Ionic4DatepickerModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CommonModule, + FormsModule, + IonicModule + ], + declarations: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent + ], + exports: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent, + CommonModule, + FormsModule + ], + entryComponents: [ + // Ionic4DatepickerComponent, + Ionic4DatepickerModalComponent + ], + providers: [] + },] } +]; + +/** + * @fileoverview added by tsickle + * Generated from: public_api.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * Generated from: logisticinfotech-ionic4-datepicker.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +export { Ionic4DatepickerService, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent, Ionic4DatepickerModule, Ionic4DatepickerModalComponent, LiIonic4DatepickerDirective as ɵa }; + +//# sourceMappingURL=logisticinfotech-ionic4-datepicker.js.map \ No newline at end of file diff --git a/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js.map b/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js.map new file mode 100644 index 0000000..f657ffe --- /dev/null +++ b/dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logisticinfotech-ionic4-datepicker.js.map","sources":["ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.service.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/li-ionic4-datepicker.directive.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Ionic4DatepickerService {\r\n\r\n isModalOpen = false;\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { NavParams, ModalController, IonContent } from '@ionic/angular';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from '../ionic4-datepicker.service';\r\nconst moment = moment_;\r\n\r\n@Component({\r\n selector: 'li-ionic4-datepicker-modal',\r\n templateUrl: './ionic4-datepicker-modal.component.html',\r\n styleUrls: ['./ionic4-datepicker-modal.component.scss']\r\n})\r\nexport class Ionic4DatepickerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(IonContent, {static: false}) content: IonContent;\r\n\r\n currentDate;\r\n today;\r\n\r\n // inputs\r\n mainObj: any = {};\r\n selectedDate: any = {};\r\n\r\n // component variables\r\n selctedDateEpoch = 0;\r\n firstDayEpoch;\r\n lastDayEpoch;\r\n\r\n disabledDates = [];\r\n highlightedDates: any = {};\r\n\r\n fromDate;\r\n toDate;\r\n disableWeekdays = [];\r\n data: any = {\r\n currentMonth: '',\r\n currentYear: '',\r\n currentMonthSelected: ''\r\n };\r\n currentYearSelected;\r\n numColumns;\r\n\r\n rows = [0, 7, 14, 21, 28, 35];\r\n cols = [0, 1, 2, 3, 4, 5, 6];\r\n monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\r\n weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n yearsList = [];\r\n daysList = [];\r\n yearInAscending = false;\r\n momentLocale = 'en-US';\r\n selectedDateString;\r\n\r\n // month year scroll variables\r\n isMonthYearSelectorOpen = false;\r\n selectedYearOrMonth;\r\n isMonthSelect;\r\n scrollingMonthOrYearArray: any = [];\r\n\r\n isSelectedDateFound = false;\r\n\r\n constructor(\r\n private navParams: NavParams,\r\n private modalCtrl: ModalController,\r\n public datePickerService: Ionic4DatepickerService\r\n ) {\r\n this.today = this.resetHMSM(new Date()).getTime();\r\n if (this.navParams.get('selectedDate')) {\r\n // console.log('Selected date =>', this.navParams.get('selectedDate'));\r\n this.selectedDate.date = this.navParams.get('selectedDate');\r\n this.isSelectedDateFound = true;\r\n }\r\n this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig'));\r\n }\r\n\r\n ngOnInit() {\r\n this.datePickerService.isModalOpen = true;\r\n this.initDatePicker();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.datePickerService.isModalOpen = false;\r\n }\r\n\r\n // Reset the hours, minutes, seconds and milli seconds\r\n resetHMSM(currentDate) {\r\n currentDate.setHours(0);\r\n currentDate.setMinutes(0);\r\n currentDate.setSeconds(0);\r\n currentDate.setMilliseconds(0);\r\n return currentDate;\r\n }\r\n\r\n // this method change month or year list to dateList\r\n changeToDateList() {\r\n // console.log('changeToDateList');\r\n this.isMonthYearSelectorOpen = false;\r\n }\r\n\r\n // Virtual scroll create for select year and month\r\n selectMonthYear(isMonthSelect) {\r\n // console.log('selectMonthYear', i);\r\n this.isMonthYearSelectorOpen = true;\r\n\r\n this.isMonthSelect = isMonthSelect;\r\n this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList;\r\n this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear;\r\n\r\n const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth);\r\n const iditem = index + 'list';\r\n\r\n setTimeout(() => {\r\n document.getElementById(iditem).scrollIntoView();\r\n }, 100);\r\n }\r\n\r\n // select month or year\r\n onChangeMonthYear(monthYear) {\r\n // console.log('onChangeMonthYear', monthYear);\r\n if (monthYear) {\r\n if (this.isMonthSelect) {\r\n this.data.currentMonth = monthYear;\r\n this.selectedYearOrMonth = this.data.currentMonth;\r\n const monthNumber = this.monthsList.indexOf(this.data.currentMonth);\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(monthNumber);\r\n } else {\r\n this.data.currentYear = monthYear;\r\n this.selectedYearOrMonth = this.data.currentYear;\r\n this.currentDate.setFullYear(this.data.currentYear);\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.isMonthYearSelectorOpen = false;\r\n\r\n }\r\n\r\n // Previous month\r\n prevMonth() {\r\n // console.log('prevNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) {\r\n return;\r\n }\r\n if (currentMonth === 1) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setMonth(currentMonth - 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // Next month\r\n nextMonth() {\r\n // console.log('nextNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear >= this.yearsList[0] && currentMonth === 11) {\r\n return;\r\n }\r\n if (currentMonth === 11) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(currentMonth + 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // changeDaySelected ( day selection changes )\r\n changeDaySelected() {\r\n // console.log('changeDaySelected');\r\n const newSelectedDate: any = new Date(this.selctedDateEpoch);\r\n newSelectedDate.setMonth(this.currentDate.getMonth());\r\n newSelectedDate.setYear(this.currentDate.getFullYear());\r\n this.selctedDateEpoch = newSelectedDate.getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Date selected\r\n dateSelected(selectedDate) {\r\n // console.log('dateSelected =>', selectedDate);\r\n if (selectedDate && !selectedDate.disabled) {\r\n if (!selectedDate || Object.keys(selectedDate).length === 0) { return; }\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = selectedDate.epoch;\r\n this.selectedDateString = this.formatDate();\r\n if (this.mainObj.closeOnSelect) {\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n }\r\n }\r\n\r\n // Set today as date for the modal\r\n setIonicDatePickerTodayDate() {\r\n // console.log('setIonicDatePickerTodayDate');\r\n const today = new Date(this.today);\r\n const today_obj = {\r\n date: today.getDate(),\r\n month: today.getMonth(),\r\n year: today.getFullYear(),\r\n day: today.getDay(),\r\n epoch: today.getTime(),\r\n disabled: false\r\n };\r\n this.dateSelected(today_obj);\r\n this.refreshDateList(new Date());\r\n this.selctedDateEpoch = this.resetHMSM(today).getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Set date for the modal\r\n setIonicDatePickerDate() {\r\n // console.log('setIonicDatePickerDate');\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Setting the disabled dates list.\r\n setDisabledDates(obj) {\r\n // console.log('setDisabledDates =>', obj);\r\n if (!obj.disabledDates || obj.disabledDates.length === 0) {\r\n this.disabledDates = [];\r\n } else {\r\n this.disabledDates = [];\r\n for (let i = 0; i < obj.disabledDates.length; i++) {\r\n // val = resetHMSM(new Date(val));\r\n this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime());\r\n }\r\n }\r\n }\r\n\r\n // Set hightlighted dates\r\n setHightlightedDates(obj) {\r\n if (!obj.highlightedDates || obj.highlightedDates.length === 0) {\r\n this.highlightedDates = {};\r\n } else {\r\n this.highlightedDates = {};\r\n for (let i = 0; i < obj.highlightedDates.length; i++) {\r\n const hDate = obj.highlightedDates[i].date;\r\n const hColor = obj.highlightedDates[i].color;\r\n const hFontColor = obj.highlightedDates[i].fontColor;\r\n const hDateTime = this.resetHMSM(new Date(hDate)).getTime();\r\n this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor };\r\n }\r\n }\r\n }\r\n\r\n // Refresh the list of the dates of a month\r\n refreshDateList(currentDate) {\r\n // console.log('refreshDateList =>', currentDate);\r\n currentDate = this.resetHMSM(currentDate);\r\n this.currentDate = currentDate;\r\n\r\n const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate();\r\n const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate();\r\n\r\n this.monthsList = [];\r\n if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) {\r\n this.monthsList = this.mainObj.monthsList;\r\n } else {\r\n this.monthsList = this.monthsList;\r\n }\r\n\r\n this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to);\r\n\r\n this.daysList = [];\r\n let tempDate, disabled;\r\n this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime();\r\n this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime();\r\n\r\n for (let i = firstDay; i <= lastDay; i++) {\r\n tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i);\r\n disabled = false;\r\n const day = tempDate.getDay();\r\n if (this.disableWeekdays.length > 0) {\r\n if (this.disableWeekdays.indexOf(day) >= 0) {\r\n disabled = this.disableWeekdays.indexOf(day) >= 0;\r\n } else {\r\n disabled = false;\r\n }\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) {\r\n disabled = true;\r\n }\r\n }\r\n\r\n if (this.fromDate && !disabled) {\r\n disabled = (tempDate.getTime() < this.fromDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n if (this.toDate && !disabled) {\r\n disabled = (tempDate.getTime() > this.toDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n\r\n const hightLightDate = this.highlightedDates[tempDate.getTime()];\r\n\r\n let fontColor = null;\r\n\r\n if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) {\r\n fontColor = this.mainObj.isSundayHighlighted.fontColor;\r\n } else if (hightLightDate && hightLightDate.fontColor) {\r\n fontColor = hightLightDate.fontColor;\r\n }\r\n\r\n this.daysList.push({\r\n date: tempDate.getDate(),\r\n month: tempDate.getMonth(),\r\n year: tempDate.getFullYear(),\r\n day: tempDate.getDay(),\r\n epoch: tempDate.getTime(),\r\n disabled: disabled,\r\n color: hightLightDate && hightLightDate.color ? hightLightDate.color : null,\r\n fontColor: fontColor\r\n // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null\r\n });\r\n }\r\n\r\n // To set Monday as the first day of the week.\r\n let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst;\r\n firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday;\r\n for (let j = 0; j < firstDayMonday; j++) {\r\n this.daysList.unshift({});\r\n }\r\n this.rows = [0, 7, 14, 21, 28, 35];\r\n this.cols = [0, 1, 2, 3, 4, 5, 6];\r\n this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()];\r\n this.data.currentYear = currentDate.getFullYear();\r\n this.data.currentMonthSelected = this.data.currentMonth;\r\n this.currentYearSelected = this.data.currentYear;\r\n this.numColumns = 7;\r\n }\r\n\r\n // Setting up the initial object\r\n setInitialObj(ipObj) {\r\n // console.log('setInitialObj =>', ipObj);\r\n this.mainObj = ipObj;\r\n if (this.isSelectedDateFound) {\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime();\r\n }\r\n\r\n this.selectedDateString = this.formatDate();\r\n\r\n if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) {\r\n this.weeksList = this.mainObj.weeksList;\r\n }\r\n if (this.mainObj.mondayFirst) {\r\n this.weeksList.push(this.mainObj.weeksList.shift());\r\n }\r\n if (this.mainObj.yearInAscending) {\r\n this.yearInAscending = this.mainObj.yearInAscending;\r\n }\r\n if (this.mainObj.momentLocale) {\r\n this.momentLocale = this.mainObj.momentLocale;\r\n }\r\n this.disableWeekdays = this.mainObj.disableWeekDays;\r\n this.setDisabledDates(this.mainObj);\r\n this.refreshDateList(this.mainObj.inputDate);\r\n }\r\n\r\n // for dismiss modal\r\n closeModal(selectedDate) {\r\n // console.log('closeModal => ', selectedDate);\r\n this.modalCtrl.getTop();\r\n const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat);\r\n this.modalCtrl.dismiss({ 'date': formattedDate });\r\n }\r\n\r\n // close modal button\r\n closeIonicDatePickerModal() {\r\n // console.log('closeIonicDatePickerModal');\r\n this.closeModal(null);\r\n }\r\n\r\n // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER )\r\n getYearsList(from, to) {\r\n // console.log('getYearsList =>', from, to);\r\n const yearsList = [];\r\n let minYear = 1950;\r\n let maxYear = new Date().getFullYear() + 1;\r\n minYear = from ? new Date(from).getFullYear() : minYear;\r\n maxYear = to ? new Date(to).getFullYear() : maxYear;\r\n // console.log('getYearsList: ', this.yearInAscending);\r\n if (this.yearInAscending) {\r\n for (let i = minYear; i <= maxYear; i++) {\r\n yearsList.push(i);\r\n }\r\n } else {\r\n for (let i = maxYear; i >= minYear; i--) {\r\n yearsList.push(i);\r\n }\r\n }\r\n return yearsList;\r\n }\r\n\r\n // Init Date-Picker\r\n initDatePicker() {\r\n this.fromDate = '';\r\n this.toDate = '';\r\n // $scope.mainObj = angular.extend({}, config, ipObj);\r\n if (this.mainObj.from) {\r\n this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime();\r\n }\r\n if (this.mainObj.to) {\r\n this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime();\r\n }\r\n // if (ipObj.disableWeekdays && this.config.disableWeekdays) {\r\n // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays);\r\n // }\r\n this.setInitialObj(this.mainObj);\r\n }\r\n\r\n // Init DatePicker Object\r\n initDatePickerObj(config) {\r\n // const config = this.mainObj;\r\n\r\n if (config.inputDate && !this.selectedDate.date) {\r\n this.isSelectedDateFound = true;\r\n this.selectedDate.date = config.inputDate;\r\n }\r\n\r\n const objConfig: any = {};\r\n objConfig.from = config.fromDate ? config.fromDate : '';\r\n objConfig.to = config.toDate ? config.toDate : '';\r\n objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton;\r\n objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false;\r\n objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : [];\r\n objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false;\r\n objConfig.setLabel = config.setLabel ? config.setLabel : 'Set';\r\n objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today';\r\n objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close';\r\n objConfig.disabledDates = config.disabledDates ? config.disabledDates : [];\r\n objConfig.titleLabel = config.titleLabel ? config.titleLabel : null;\r\n\r\n objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList;\r\n objConfig.monthsList = [...objConfig.monthsList];\r\n\r\n objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList;\r\n objConfig.weeksList = [...objConfig.weeksList];\r\n\r\n objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY';\r\n // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale());\r\n\r\n objConfig.clearButton = config.clearButton ? config.clearButton : false;\r\n\r\n objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false;\r\n objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US';\r\n\r\n moment.locale(objConfig.momentLocale);\r\n objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date();\r\n\r\n objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false;\r\n\r\n objConfig.btnProperties = {};\r\n if (config.btnProperties) {\r\n const btnProperties = config.btnProperties;\r\n objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block';\r\n objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid';\r\n objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default';\r\n objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : '';\r\n objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false;\r\n objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false;\r\n } else {\r\n objConfig.btnProperties.expand = 'block';\r\n objConfig.btnProperties.fill = 'solid';\r\n objConfig.btnProperties.size = 'default';\r\n objConfig.btnProperties.disabled = false;\r\n objConfig.btnProperties.strong = false;\r\n }\r\n\r\n objConfig.arrowNextPrev = {};\r\n if (config.arrowNextPrev) {\r\n const arrowNextPrev = config.arrowNextPrev;\r\n objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false;\r\n objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false;\r\n }\r\n\r\n objConfig.highlightedDates = [];\r\n if (config.highlightedDates && config.highlightedDates.length > 0) {\r\n objConfig.highlightedDates = config.highlightedDates;\r\n\r\n this.setHightlightedDates(objConfig);\r\n }\r\n\r\n objConfig.isSundayHighlighted = {};\r\n if (config.isSundayHighlighted) {\r\n const isSundayHighlighted = config.isSundayHighlighted;\r\n objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null;\r\n }\r\n\r\n // console.log('config =>', objConfig);\r\n return objConfig;\r\n }\r\n\r\n // Format date\r\n formatDate() {\r\n // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch));\r\n return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, NgModel } from '@angular/forms';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nconst noop = () => {\r\n};\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => Ionic4DatepickerComponent),\r\n multi: true\r\n};\r\n@Component({\r\n selector: 'li-ionic4-datepicker',\r\n templateUrl: './ionic4-datepicker.component.html',\r\n styleUrls: ['./ionic4-datepicker.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class Ionic4DatepickerComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n private innerValue: any = '';\r\n\r\n // Placeholders for the callbacks which are later provided\r\n // by the Control Value Accessor\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public el: ElementRef,\r\n public renderer2: Renderer2\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '0px';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '30%';\r\n }\r\n this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;');\r\n this.el.nativeElement.appendChild(this.closeIcon);\r\n\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate = new Date();\r\n this.value = '';\r\n });\r\n }\r\n }\r\n\r\n onChangeValue(value) {\r\n // console.log('onChangeValue =>' , value);\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n }\r\n\r\n async openDatePicker(value) {\r\n // console.log('openDatePicker');\r\n if (value) {\r\n this.selectedDate.date = value;\r\n }\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n // console.log(data);\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.value = data.data.date;\r\n }\r\n });\r\n }\r\n\r\n // get accessor\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n // set accessor including call the onchange callback\r\n set value(v: any) {\r\n if (v !== this.innerValue) {\r\n this.innerValue = v;\r\n this.onChangeCallback(v);\r\n }\r\n this.onChangeValue(v);\r\n }\r\n\r\n // Set touched on blur\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n writeValue(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n }\r\n this.onChangeValue(value);\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n}\r\n","import { Directive, Input, OnInit, HostListener, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { NgModel, NgControl } from '@angular/forms';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from './ionic4-datepicker.service';\r\n\r\n@Directive({\r\n selector: '[liIonic4Datepicker]',\r\n exportAs: 'liIonic4Datepicker',\r\n providers: [NgModel],\r\n})\r\nexport class LiIonic4DatepickerDirective implements OnInit {\r\n\r\n @Input('liIonic4Datepicker') inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n isModalOpen: any = false;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public ngModel: NgModel,\r\n public control: NgControl,\r\n public el: ElementRef,\r\n public renderer2: Renderer2,\r\n public datePickerService: Ionic4DatepickerService\r\n ) { }\r\n\r\n ngOnInit() {\r\n // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending);\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '30%';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '12px';\r\n }\r\n this.el.nativeElement.parentNode.appendChild(this.closeIcon);\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate.date = new Date();\r\n this.control.control.setValue('');\r\n this.ngModel.update.emit('');\r\n });\r\n }\r\n\r\n const self = this;\r\n this.ngModel.valueChanges.subscribe((value) => {\r\n // console.log('ngModel value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n this.control.control.valueChanges.subscribe((value) => {\r\n // console.log('formcontrol value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n if (this.control.control.value) {\r\n this.selectedDate.date = this.control.control.value;\r\n }\r\n }\r\n\r\n @HostListener('ionFocus')\r\n public onFocus() {\r\n if (this.datePickerService.isModalOpen) {\r\n return;\r\n }\r\n this.openDatePicker();\r\n }\r\n\r\n async openDatePicker() {\r\n // console.log('openDatePicker');\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.control.control.setValue(data.data.date);\r\n this.ngModel.update.emit(data.data.date);\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { Ionic4DatepickerComponent } from './ionic4-datepicker.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule\r\n ],\r\n declarations: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n exports: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent,\r\n CommonModule,\r\n FormsModule\r\n ],\r\n entryComponents: [\r\n // Ionic4DatepickerComponent,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n providers: [\r\n\r\n ]\r\n})\r\nexport class Ionic4DatepickerModule { }\r\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA,MAKa,uBAAuB;IAIlC;QAFA,gBAAW,GAAG,KAAK,CAAC;KAEH;;;YAPlB,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;;;;;;;;ACJD;MAKM,MAAM,GAAG,OAAO;AAOtB,MAAa,8BAA8B;;;;;;IAgDzC,YACU,SAAoB,EACpB,SAA0B,EAC3B,iBAA0C;QAFzC,cAAS,GAAT,SAAS,CAAW;QACpB,cAAS,GAAT,SAAS,CAAiB;QAC3B,sBAAiB,GAAjB,iBAAiB,CAAyB;;QA3CnD,YAAO,GAAQ,EAAE,CAAC;QAClB,iBAAY,GAAQ,EAAE,CAAC;;QAGvB,qBAAgB,GAAG,CAAC,CAAC;QAIrB,kBAAa,GAAG,EAAE,CAAC;QACnB,qBAAgB,GAAQ,EAAE,CAAC;QAI3B,oBAAe,GAAG,EAAE,CAAC;QACrB,SAAI,GAAQ;YACV,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,oBAAoB,EAAE,EAAE;SACzB,CAAC;QAIF,SAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,SAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,eAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzG,cAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,cAAS,GAAG,EAAE,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;QACd,oBAAe,GAAG,KAAK,CAAC;QACxB,iBAAY,GAAG,OAAO,CAAC;;QAIvB,4BAAuB,GAAG,KAAK,CAAC;QAGhC,8BAAyB,GAAQ,EAAE,CAAC;QAEpC,wBAAmB,GAAG,KAAK,CAAC;QAO1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;;YAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;KACxE;;;;IAED,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;;;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5C;;;;;;IAGD,SAAS,CAAC,WAAW;QACnB,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC;KACpB;;;;;IAGD,gBAAgB;;QAEd,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACtC;;;;;;IAGD,eAAe,CAAC,aAAa;;QAE3B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,yBAAyB,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1F,IAAI,CAAC,mBAAmB,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;cAEpF,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;;cACxE,MAAM,GAAG,KAAK,GAAG,MAAM;QAE7B,UAAU;;;QAAC;YACT,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;SAClD,GAAE,GAAG,CAAC,CAAC;KACT;;;;;;IAGD,iBAAiB,CAAC,SAAS;;QAEzB,IAAI,SAAS,EAAE;YACb,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;sBAC5C,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAClC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBACjD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KAEtC;;;;;IAGD,SAAS;;;cAED,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;cAC1C,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAClD,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;YACpF,OAAO;SACR;QACD,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;KAExC;;;;;IAGD,SAAS;;;cAED,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;cAC1C,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;QAClD,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,YAAY,KAAK,EAAE,EAAE;YAC3D,OAAO;SACR;QACD,IAAI,YAAY,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;KAExC;;;;;IAGD,iBAAiB;;;cAET,eAAe,GAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5D,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;KAE7C;;;;;;IAGD,YAAY,CAAC,YAAY;;QAEvB,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBAAE,OAAO;aAAE;YACxE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACxC;SACF;KACF;;;;;IAGD,2BAA2B;;;cAEnB,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;cAC5B,SAAS,GAAG;YAChB,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;YACrB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE;YACzB,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE;YACnB,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;YACtB,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;KAE7C;;;;;IAGD,sBAAsB;;QAEpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACxC;;;;;;IAGD,gBAAgB,CAAC,GAAG;;QAElB,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YACxD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;gBAEjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACnF;SACF;KACF;;;;;;IAGD,oBAAoB,CAAC,GAAG;QACtB,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9D,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;sBAC9C,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;;sBACpC,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;;sBACtC,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;;sBAC9C,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC3D,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;aAC7E;SACF;KACF;;;;;;IAGD,eAAe,CAAC,WAAW;;QAEzB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;;cAEzB,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;;cACnF,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;QAE5F,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;YACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SACnC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;YACf,QAAQ;;YAAE,QAAQ;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACrH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEnH,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;YACxC,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1E,QAAQ,GAAG,KAAK,CAAC;;kBACX,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE;YAC7B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1C,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACnD;qBAAM;oBACL,QAAQ,GAAG,KAAK,CAAC;iBAClB;aACF;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;oBACvD,QAAQ,GAAG,IAAI,CAAC;iBACjB;aACF;YAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBAC9B,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ;uBACzC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;aACnE;YACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;gBAC5B,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM;uBACvC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;aACnE;;kBAEK,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;gBAE5D,SAAS,GAAG,IAAI;YAEpB,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE;gBAC7G,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC;aACxD;iBAAM,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,EAAE;gBACrD,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;aACtC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE;gBACxB,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;gBAC1B,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE;gBAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACtB,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE;gBACzB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,cAAc,IAAI,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,GAAG,IAAI;gBAC3E,SAAS,EAAE,SAAS;;aAErB,CAAC,CAAC;SACJ;;;YAGG,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;QACpE,cAAc,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACxD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;KACrB;;;;;;IAGD,aAAa,CAAC,KAAK;;QAEjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1E;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACzC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;SAC/C;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KAC9C;;;;;;IAGD,UAAU,CAAC,YAAY;;QAErB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;;cAClB,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;KACnD;;;;;IAGD,yBAAyB;;QAEvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;;;;;;;IAGD,YAAY,CAAC,IAAI,EAAE,EAAE;;;cAEb,SAAS,GAAG,EAAE;;YAChB,OAAO,GAAG,IAAI;;YACd,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC;QAC1C,OAAO,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC;QACxD,OAAO,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC;;QAEpD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;gBACvC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB;SACF;aAAM;YACL,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;gBACvC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnB;SACF;QACD,OAAO,SAAS,CAAC;KAClB;;;;;IAGD,cAAc;QACZ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;QAEjB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACvE;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACnE;;;;QAID,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;;;;;;IAGD,iBAAiB,CAAC,MAAM;;QAGtB,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC/C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;SAC3C;;cAEK,SAAS,GAAQ,EAAE;QACzB,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QACxD,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QAClD,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;QACjG,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAC9E,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;QACjF,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QACxE,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/D,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;QACvE,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC;QACvE,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;QAC3E,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAEpE,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/E,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QAEjD,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3E,SAAS,CAAC,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAE/C,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC;;QAG7E,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAExE,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;QACpF,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;QAE7E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QAE1H,SAAS,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAEnG,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,aAAa,EAAE;;kBAClB,aAAa,GAAG,MAAM,CAAC,aAAa;YAC1C,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;YACvF,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;YACjF,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YACnF,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/E,SAAS,CAAC,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC3F,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;SACtF;aAAM;YACL,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;YACzC,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;YACvC,SAAS,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YACzC,SAAS,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK,CAAC;SACxC;QAED,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,aAAa,EAAE;;kBAClB,aAAa,GAAG,MAAM,CAAC,aAAa;YAC1C,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;YACvG,SAAS,CAAC,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;SACxG;QAED,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjE,SAAS,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAErD,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACtC;QAED,SAAS,CAAC,mBAAmB,GAAG,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,mBAAmB,EAAE;;kBACxB,mBAAmB,GAAG,MAAM,CAAC,mBAAmB;YACtD,SAAS,CAAC,mBAAmB,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC;SAChH;;QAGD,OAAO,SAAS,CAAC;KAClB;;;;;IAGD,UAAU;;QAER,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtE;;;YArfF,SAAS,SAAC;gBACT,QAAQ,EAAE,4BAA4B;gBACtC,mkQAAuD;;aAExD;;;;YAVQ,SAAS;YAAE,eAAe;YAG1B,uBAAuB;;;sBAU7B,SAAS,SAAC,UAAU,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC;;;;;;;;;MCNlC,IAAI;;;AAAG;CACZ,CAAA;;AAED,MAAa,mCAAmC,GAAQ;IACtD,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU;;;IAAC,MAAM,yBAAyB,EAAC;IACxD,KAAK,EAAE,IAAI;CACZ;AAOD,MAAa,yBAAyB;;;;;;IAapC,YACU,SAA0B,EAC3B,EAAc,EACd,SAAoB;QAFnB,cAAS,GAAT,SAAS,CAAiB;QAC3B,OAAE,GAAF,EAAE,CAAY;QACd,cAAS,GAAT,SAAS,CAAW;QAX7B,iBAAY,GAAQ,EAAE,CAAC;QACf,eAAU,GAAQ,EAAE,CAAC;;;QAIrB,sBAAiB,GAAe,IAAI,CAAC;QACrC,qBAAgB,GAAqB,IAAI,CAAC;KAM7C;;;;IAEL,QAAQ;QAEN,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,KAAK,EAAE;YAE9C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAElC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;gBAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;aACrC;YACD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,kCAAkC,CAAC,CAAC;YAChF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAElD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;;;;YAAE,CAAC,KAAK;;;gBAGnD,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC/B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;aACjB,EAAC,CAAC;SACJ;KACF;;;;;IAED,aAAa,CAAC,KAAK;;QAEjB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,KAAK,EAAE;YAC9C,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;aAC5C;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;aAC7C;SACF;KACF;;;;;IAEK,cAAc,CAAC,KAAK;;;YAExB,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;aAChC;;kBAEK,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAClD,SAAS,EAAE,8BAA8B;gBACzC,QAAQ,EAAE,sBAAsB;gBAChC,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAG;aAC/F,CAAC;YACF,MAAM,eAAe,CAAC,OAAO,EAAE,CAAC;YAEhC,eAAe,CAAC,YAAY,EAAE;iBAC3B,IAAI;;;;YAAC,CAAC,IAAI;;gBAET,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;oBACpE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7B;aACF,EAAC,CAAC;SACN;KAAA;;;;;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;;;;;IAGD,IAAI,KAAK,CAAC,CAAM;QACd,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KACvB;;;;;IAGD,MAAM;QACJ,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;;;;;;IAGD,UAAU,CAAC,KAAU;QACnB,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;IAGD,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;;;;;;IAGD,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;;;YA3HF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,2KAAiD;gBAEjD,SAAS,EAAE,CAAC,mCAAmC,CAAC;;aACjD;;;;YAnBQ,eAAe;YAFuB,UAAU;YAAE,SAAS;;;8BAwBjE,KAAK;;;;;;;;MCXK,2BAA2B;;;;;;;;;IAQtC,YACU,SAA0B,EAC3B,OAAgB,EAChB,OAAkB,EAClB,EAAc,EACd,SAAoB,EACpB,iBAA0C;QALzC,cAAS,GAAT,SAAS,CAAiB;QAC3B,YAAO,GAAP,OAAO,CAAS;QAChB,YAAO,GAAP,OAAO,CAAW;QAClB,OAAE,GAAF,EAAE,CAAY;QACd,cAAS,GAAT,SAAS,CAAW;QACpB,sBAAiB,GAAjB,iBAAiB,CAAyB;QATnD,iBAAY,GAAQ,EAAE,CAAC;QACvB,gBAAW,GAAQ,KAAK,CAAC;KASpB;;;;IAEL,QAAQ;;QAGN,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,KAAK,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,cAAc,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,aAAa,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAClC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;gBAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;aACtC;YACD,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO;;;;YAAE,CAAC,KAAK;;;gBAGnD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9B,EAAC,CAAC;SACJ;;cAEK,IAAI,GAAG,IAAI;QACjB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;;;;QAAC,CAAC,KAAK;;YAExC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,EAAE;oBACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;iBAC5C;qBAAM;oBACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;iBAC7C;aACF;SACF,EAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS;;;;QAAC,CAAC,KAAK;;YAEhD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,KAAK,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,EAAE;oBACV,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;iBAC5C;qBAAM;oBACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;iBAC7C;aACF;SACF,EAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;SACrD;KACF;;;;IAGM,OAAO;QACZ,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACtC,OAAO;SACR;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;;;IAEK,cAAc;;;;;kBAGZ,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAClD,SAAS,EAAE,8BAA8B;gBACzC,QAAQ,EAAE,sBAAsB;gBAChC,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;aAC9F,CAAC;YACF,MAAM,eAAe,CAAC,OAAO,EAAE,CAAC;YAEhC,eAAe,CAAC,YAAY,EAAE;iBAC3B,IAAI;;;;YAAC,CAAC,IAAI;gBACT,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;oBACpE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC1C;aACF,EAAC,CAAC;SACN;KAAA;;;YAxGF,SAAS,SAAC;gBACT,QAAQ,EAAE,sBAAsB;gBAChC,QAAQ,EAAE,oBAAoB;gBAC9B,SAAS,EAAE,CAAC,OAAO,CAAC;aACrB;;;;YAXQ,eAAe;YAEf,OAAO;YAAE,SAAS;YAHsB,UAAU;YAAE,SAAS;YAM7D,uBAAuB;;;8BAS7B,KAAK,SAAC,oBAAoB;sBAuE1B,YAAY,SAAC,UAAU;;;;;;;;ACtF1B,MAkCa,sBAAsB;;;YA1BlC,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,WAAW;iBACZ;gBACD,YAAY,EAAE;oBACZ,yBAAyB;oBACzB,2BAA2B;oBAC3B,8BAA8B;iBAC/B;gBACD,OAAO,EAAE;oBACP,yBAAyB;oBACzB,2BAA2B;oBAC3B,8BAA8B;oBAC9B,YAAY;oBACZ,WAAW;iBACZ;gBACD,eAAe,EAAE;;oBAEf,8BAA8B;iBAC/B;gBACD,SAAS,EAAE,EAEV;aACF;;;;;;;;;;;;;;;;;"} diff --git a/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js b/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js new file mode 100644 index 0000000..0ba9430 --- /dev/null +++ b/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js @@ -0,0 +1,1189 @@ +import * as moment_ from 'moment'; +import { CommonModule } from '@angular/common'; +import { __awaiter, __generator, __spread } from 'tslib'; +import { Injectable, Directive, ElementRef, Renderer2, Input, HostListener, ɵɵdefineInjectable, NgModule, forwardRef, Component, ViewChild } from '@angular/core'; +import { NG_VALUE_ACCESSOR, NgModel, NgControl, FormsModule } from '@angular/forms'; +import { NavParams, ModalController, IonContent, IonicModule } from '@ionic/angular'; + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.service.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Ionic4DatepickerService = /** @class */ (function () { + function Ionic4DatepickerService() { + this.isModalOpen = false; + } + Ionic4DatepickerService.decorators = [ + { type: Injectable, args: [{ + providedIn: 'root' + },] } + ]; + /** @nocollapse */ + Ionic4DatepickerService.ctorParameters = function () { return []; }; + /** @nocollapse */ Ionic4DatepickerService.ngInjectableDef = ɵɵdefineInjectable({ factory: function Ionic4DatepickerService_Factory() { return new Ionic4DatepickerService(); }, token: Ionic4DatepickerService, providedIn: "root" }); + return Ionic4DatepickerService; +}()); + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var moment = moment_; +var Ionic4DatepickerModalComponent = /** @class */ (function () { + function Ionic4DatepickerModalComponent(navParams, modalCtrl, datePickerService) { + this.navParams = navParams; + this.modalCtrl = modalCtrl; + this.datePickerService = datePickerService; + // inputs + this.mainObj = {}; + this.selectedDate = {}; + // component variables + this.selctedDateEpoch = 0; + this.disabledDates = []; + this.highlightedDates = {}; + this.disableWeekdays = []; + this.data = { + currentMonth: '', + currentYear: '', + currentMonthSelected: '' + }; + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']; + this.weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S']; + this.yearsList = []; + this.daysList = []; + this.yearInAscending = false; + this.momentLocale = 'en-US'; + // month year scroll variables + this.isMonthYearSelectorOpen = false; + this.scrollingMonthOrYearArray = []; + this.isSelectedDateFound = false; + this.today = this.resetHMSM(new Date()).getTime(); + if (this.navParams.get('selectedDate')) { + // console.log('Selected date =>', this.navParams.get('selectedDate')); + this.selectedDate.date = this.navParams.get('selectedDate'); + this.isSelectedDateFound = true; + } + this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig')); + } + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = true; + this.initDatePicker(); + }; + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.datePickerService.isModalOpen = false; + }; + // Reset the hours, minutes, seconds and milli seconds + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.resetHMSM = + // Reset the hours, minutes, seconds and milli seconds + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + currentDate.setHours(0); + currentDate.setMinutes(0); + currentDate.setSeconds(0); + currentDate.setMilliseconds(0); + return currentDate; + }; + // this method change month or year list to dateList + // this method change month or year list to dateList + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeToDateList = + // this method change month or year list to dateList + /** + * @return {?} + */ + function () { + // console.log('changeToDateList'); + this.isMonthYearSelectorOpen = false; + }; + // Virtual scroll create for select year and month + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.selectMonthYear = + // Virtual scroll create for select year and month + /** + * @param {?} isMonthSelect + * @return {?} + */ + function (isMonthSelect) { + // console.log('selectMonthYear', i); + this.isMonthYearSelectorOpen = true; + this.isMonthSelect = isMonthSelect; + this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList; + this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear; + /** @type {?} */ + var index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth); + /** @type {?} */ + var iditem = index + 'list'; + setTimeout((/** + * @return {?} + */ + function () { + document.getElementById(iditem).scrollIntoView(); + }), 100); + }; + // select month or year + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.onChangeMonthYear = + // select month or year + /** + * @param {?} monthYear + * @return {?} + */ + function (monthYear) { + // console.log('onChangeMonthYear', monthYear); + if (monthYear) { + if (this.isMonthSelect) { + this.data.currentMonth = monthYear; + this.selectedYearOrMonth = this.data.currentMonth; + /** @type {?} */ + var monthNumber = this.monthsList.indexOf(this.data.currentMonth); + this.currentDate.setDate(1); + this.currentDate.setMonth(monthNumber); + } + else { + this.data.currentYear = monthYear; + this.selectedYearOrMonth = this.data.currentYear; + this.currentDate.setFullYear(this.data.currentYear); + this.refreshDateList(this.currentDate); + } + this.refreshDateList(this.currentDate); + } + this.isMonthYearSelectorOpen = false; + }; + // Previous month + // Previous month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.prevMonth = + // Previous month + /** + * @return {?} + */ + function () { + // console.log('prevNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) { + return; + } + if (currentMonth === 1) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setMonth(currentMonth - 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // Next month + // Next month + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.nextMonth = + // Next month + /** + * @return {?} + */ + function () { + // console.log('nextNext', this.currentDate); + /** @type {?} */ + var currentMonth = this.currentDate.getMonth(); + /** @type {?} */ + var currentYear = this.currentDate.getFullYear(); + if (currentYear >= this.yearsList[0] && currentMonth === 11) { + return; + } + if (currentMonth === 11) { + this.currentDate.setFullYear(currentYear); + } + this.currentDate.setDate(1); + this.currentDate.setMonth(currentMonth + 1); + this.data.currentMonth = this.mainObj.monthsList[currentMonth]; + this.data.currentYear = currentYear; + this.refreshDateList(this.currentDate); + // this.changeDaySelected(); + }; + // changeDaySelected ( day selection changes ) + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.changeDaySelected = + // changeDaySelected ( day selection changes ) + /** + * @return {?} + */ + function () { + // console.log('changeDaySelected'); + /** @type {?} */ + var newSelectedDate = new Date(this.selctedDateEpoch); + newSelectedDate.setMonth(this.currentDate.getMonth()); + newSelectedDate.setYear(this.currentDate.getFullYear()); + this.selctedDateEpoch = newSelectedDate.getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Date selected + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.dateSelected = + // Date selected + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('dateSelected =>', selectedDate); + if (selectedDate && !selectedDate.disabled) { + if (!selectedDate || Object.keys(selectedDate).length === 0) { + return; + } + this.isSelectedDateFound = true; + this.selctedDateEpoch = selectedDate.epoch; + this.selectedDateString = this.formatDate(); + if (this.mainObj.closeOnSelect) { + this.closeModal(this.selctedDateEpoch); + } + } + }; + // Set today as date for the modal + // Set today as date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerTodayDate = + // Set today as date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerTodayDate'); + /** @type {?} */ + var today = new Date(this.today); + /** @type {?} */ + var today_obj = { + date: today.getDate(), + month: today.getMonth(), + year: today.getFullYear(), + day: today.getDay(), + epoch: today.getTime(), + disabled: false + }; + this.dateSelected(today_obj); + this.refreshDateList(new Date()); + this.selctedDateEpoch = this.resetHMSM(today).getTime(); + this.selectedDateString = this.formatDate(); + // this.closeModal(this.selctedDateEpoch); + }; + // Set date for the modal + // Set date for the modal + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setIonicDatePickerDate = + // Set date for the modal + /** + * @return {?} + */ + function () { + // console.log('setIonicDatePickerDate'); + this.closeModal(this.selctedDateEpoch); + }; + // Setting the disabled dates list. + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setDisabledDates = + // Setting the disabled dates list. + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + // console.log('setDisabledDates =>', obj); + if (!obj.disabledDates || obj.disabledDates.length === 0) { + this.disabledDates = []; + } + else { + this.disabledDates = []; + for (var i = 0; i < obj.disabledDates.length; i++) { + // val = resetHMSM(new Date(val)); + this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime()); + } + } + }; + // Set hightlighted dates + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setHightlightedDates = + // Set hightlighted dates + /** + * @param {?} obj + * @return {?} + */ + function (obj) { + if (!obj.highlightedDates || obj.highlightedDates.length === 0) { + this.highlightedDates = {}; + } + else { + this.highlightedDates = {}; + for (var i = 0; i < obj.highlightedDates.length; i++) { + /** @type {?} */ + var hDate = obj.highlightedDates[i].date; + /** @type {?} */ + var hColor = obj.highlightedDates[i].color; + /** @type {?} */ + var hFontColor = obj.highlightedDates[i].fontColor; + /** @type {?} */ + var hDateTime = this.resetHMSM(new Date(hDate)).getTime(); + this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor }; + } + } + }; + // Refresh the list of the dates of a month + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.refreshDateList = + // Refresh the list of the dates of a month + /** + * @param {?} currentDate + * @return {?} + */ + function (currentDate) { + // console.log('refreshDateList =>', currentDate); + currentDate = this.resetHMSM(currentDate); + this.currentDate = currentDate; + /** @type {?} */ + var firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate(); + /** @type {?} */ + var lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate(); + this.monthsList = []; + if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) { + this.monthsList = this.mainObj.monthsList; + } + else { + this.monthsList = this.monthsList; + } + this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to); + this.daysList = []; + /** @type {?} */ + var tempDate; + /** @type {?} */ + var disabled; + this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime(); + this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime(); + for (var i = firstDay; i <= lastDay; i++) { + tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i); + disabled = false; + /** @type {?} */ + var day = tempDate.getDay(); + if (this.disableWeekdays.length > 0) { + if (this.disableWeekdays.indexOf(day) >= 0) { + disabled = this.disableWeekdays.indexOf(day) >= 0; + } + else { + disabled = false; + } + } + if (this.disabledDates.length > 0) { + if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) { + disabled = true; + } + } + if (this.fromDate && !disabled) { + disabled = (tempDate.getTime() < this.fromDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + if (this.toDate && !disabled) { + disabled = (tempDate.getTime() > this.toDate) + || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0; + } + /** @type {?} */ + var hightLightDate = this.highlightedDates[tempDate.getTime()]; + /** @type {?} */ + var fontColor = null; + if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) { + fontColor = this.mainObj.isSundayHighlighted.fontColor; + } + else if (hightLightDate && hightLightDate.fontColor) { + fontColor = hightLightDate.fontColor; + } + this.daysList.push({ + date: tempDate.getDate(), + month: tempDate.getMonth(), + year: tempDate.getFullYear(), + day: tempDate.getDay(), + epoch: tempDate.getTime(), + disabled: disabled, + color: hightLightDate && hightLightDate.color ? hightLightDate.color : null, + fontColor: fontColor + // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null + }); + } + // To set Monday as the first day of the week. + /** @type {?} */ + var firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst; + firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday; + for (var j = 0; j < firstDayMonday; j++) { + this.daysList.unshift({}); + } + this.rows = [0, 7, 14, 21, 28, 35]; + this.cols = [0, 1, 2, 3, 4, 5, 6]; + this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()]; + this.data.currentYear = currentDate.getFullYear(); + this.data.currentMonthSelected = this.data.currentMonth; + this.currentYearSelected = this.data.currentYear; + this.numColumns = 7; + }; + // Setting up the initial object + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.setInitialObj = + // Setting up the initial object + /** + * @param {?} ipObj + * @return {?} + */ + function (ipObj) { + // console.log('setInitialObj =>', ipObj); + this.mainObj = ipObj; + if (this.isSelectedDateFound) { + this.isSelectedDateFound = true; + this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime(); + } + this.selectedDateString = this.formatDate(); + if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) { + this.weeksList = this.mainObj.weeksList; + } + if (this.mainObj.mondayFirst) { + this.weeksList.push(this.mainObj.weeksList.shift()); + } + if (this.mainObj.yearInAscending) { + this.yearInAscending = this.mainObj.yearInAscending; + } + if (this.mainObj.momentLocale) { + this.momentLocale = this.mainObj.momentLocale; + } + this.disableWeekdays = this.mainObj.disableWeekDays; + this.setDisabledDates(this.mainObj); + this.refreshDateList(this.mainObj.inputDate); + }; + // for dismiss modal + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeModal = + // for dismiss modal + /** + * @param {?} selectedDate + * @return {?} + */ + function (selectedDate) { + // console.log('closeModal => ', selectedDate); + this.modalCtrl.getTop(); + /** @type {?} */ + var formattedDate = moment(selectedDate).format(this.mainObj.dateFormat); + this.modalCtrl.dismiss({ 'date': formattedDate }); + }; + // close modal button + // close modal button + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.closeIonicDatePickerModal = + // close modal button + /** + * @return {?} + */ + function () { + // console.log('closeIonicDatePickerModal'); + this.closeModal(null); + }; + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.getYearsList = + // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER ) + /** + * @param {?} from + * @param {?} to + * @return {?} + */ + function (from, to) { + // console.log('getYearsList =>', from, to); + /** @type {?} */ + var yearsList = []; + /** @type {?} */ + var minYear = 1950; + /** @type {?} */ + var maxYear = new Date().getFullYear() + 1; + minYear = from ? new Date(from).getFullYear() : minYear; + maxYear = to ? new Date(to).getFullYear() : maxYear; + // console.log('getYearsList: ', this.yearInAscending); + if (this.yearInAscending) { + for (var i = minYear; i <= maxYear; i++) { + yearsList.push(i); + } + } + else { + for (var i = maxYear; i >= minYear; i--) { + yearsList.push(i); + } + } + return yearsList; + }; + // Init Date-Picker + // Init Date-Picker + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePicker = + // Init Date-Picker + /** + * @return {?} + */ + function () { + this.fromDate = ''; + this.toDate = ''; + // $scope.mainObj = angular.extend({}, config, ipObj); + if (this.mainObj.from) { + this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime(); + } + if (this.mainObj.to) { + this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime(); + } + // if (ipObj.disableWeekdays && this.config.disableWeekdays) { + // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays); + // } + this.setInitialObj(this.mainObj); + }; + // Init DatePicker Object + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.initDatePickerObj = + // Init DatePicker Object + /** + * @param {?} config + * @return {?} + */ + function (config) { + // const config = this.mainObj; + if (config.inputDate && !this.selectedDate.date) { + this.isSelectedDateFound = true; + this.selectedDate.date = config.inputDate; + } + /** @type {?} */ + var objConfig = {}; + objConfig.from = config.fromDate ? config.fromDate : ''; + objConfig.to = config.toDate ? config.toDate : ''; + objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton; + objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false; + objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : []; + objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false; + objConfig.setLabel = config.setLabel ? config.setLabel : 'Set'; + objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today'; + objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close'; + objConfig.disabledDates = config.disabledDates ? config.disabledDates : []; + objConfig.titleLabel = config.titleLabel ? config.titleLabel : null; + objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList; + objConfig.monthsList = __spread(objConfig.monthsList); + objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList; + objConfig.weeksList = __spread(objConfig.weeksList); + objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY'; + // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale()); + objConfig.clearButton = config.clearButton ? config.clearButton : false; + objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false; + objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US'; + moment.locale(objConfig.momentLocale); + objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date(); + objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false; + objConfig.btnProperties = {}; + if (config.btnProperties) { + /** @type {?} */ + var btnProperties = config.btnProperties; + objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block'; + objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid'; + objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default'; + objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : ''; + objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false; + objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false; + } + else { + objConfig.btnProperties.expand = 'block'; + objConfig.btnProperties.fill = 'solid'; + objConfig.btnProperties.size = 'default'; + objConfig.btnProperties.disabled = false; + objConfig.btnProperties.strong = false; + } + objConfig.arrowNextPrev = {}; + if (config.arrowNextPrev) { + /** @type {?} */ + var arrowNextPrev = config.arrowNextPrev; + objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false; + objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false; + } + objConfig.highlightedDates = []; + if (config.highlightedDates && config.highlightedDates.length > 0) { + objConfig.highlightedDates = config.highlightedDates; + this.setHightlightedDates(objConfig); + } + objConfig.isSundayHighlighted = {}; + if (config.isSundayHighlighted) { + /** @type {?} */ + var isSundayHighlighted = config.isSundayHighlighted; + objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null; + } + // console.log('config =>', objConfig); + return objConfig; + }; + // Format date + // Format date + /** + * @return {?} + */ + Ionic4DatepickerModalComponent.prototype.formatDate = + // Format date + /** + * @return {?} + */ + function () { + // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch)); + return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat); + }; + Ionic4DatepickerModalComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker-modal', + template: "\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n", + styles: [":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerModalComponent.ctorParameters = function () { return [ + { type: NavParams }, + { type: ModalController }, + { type: Ionic4DatepickerService } + ]; }; + Ionic4DatepickerModalComponent.propDecorators = { + content: [{ type: ViewChild, args: [IonContent, { static: false },] }] + }; + return Ionic4DatepickerModalComponent; +}()); + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.component.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var noop = (/** + * @return {?} + */ +function () { +}); +/** @type {?} */ +var CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef((/** + * @return {?} + */ + function () { return Ionic4DatepickerComponent; })), + multi: true +}; +var Ionic4DatepickerComponent = /** @class */ (function () { + function Ionic4DatepickerComponent(modalCtrl, el, renderer2) { + this.modalCtrl = modalCtrl; + this.el = el; + this.renderer2 = renderer2; + this.selectedDate = {}; + this.innerValue = ''; + // Placeholders for the callbacks which are later provided + // by the Control Value Accessor + this.onTouchedCallback = noop; + this.onChangeCallback = noop; + } + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.ngOnInit = /** + * @return {?} + */ + function () { + 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 = '0px'; + 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 = '30%'; + } + this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;'); + this.el.nativeElement.appendChild(this.closeIcon); + this.renderer2.listen(this.closeIcon, 'click', (/** + * @param {?} event + * @return {?} + */ + function (event) { + // Do something with 'event' + // console.log('button clicks'); + _this.selectedDate = new Date(); + _this.value = ''; + })); + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onChangeValue = /** + * @param {?} value + * @return {?} + */ + function (value) { + // console.log('onChangeValue =>' , value); + if (this.inputDateConfig.clearButton !== false) { + if (!value) { + this.closeIcon.style.visibility = 'hidden'; + } + else { + this.closeIcon.style.visibility = 'visible'; + } + } + }; + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.openDatePicker = /** + * @param {?} value + * @return {?} + */ + function (value) { + return __awaiter(this, void 0, void 0, function () { + var datePickerModal; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + // console.log('openDatePicker'); + if (value) { + this.selectedDate.date = value; + } + 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) { + // console.log(data); + if (data.data && data.data.date && data.data.date !== 'Invalid date') { + _this.selectedDate.date = data.data.date; + _this.value = data.data.date; + } + })); + return [2 /*return*/]; + } + }); + }); + }; + Object.defineProperty(Ionic4DatepickerComponent.prototype, "value", { + // get accessor + get: + // get accessor + /** + * @return {?} + */ + function () { + return this.innerValue; + }, + // set accessor including call the onchange callback + set: + // set accessor including call the onchange callback + /** + * @param {?} v + * @return {?} + */ + function (v) { + if (v !== this.innerValue) { + this.innerValue = v; + this.onChangeCallback(v); + } + this.onChangeValue(v); + }, + enumerable: true, + configurable: true + }); + // Set touched on blur + // Set touched on blur + /** + * @return {?} + */ + Ionic4DatepickerComponent.prototype.onBlur = + // Set touched on blur + /** + * @return {?} + */ + function () { + this.onTouchedCallback(); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + Ionic4DatepickerComponent.prototype.writeValue = + // From ControlValueAccessor interface + /** + * @param {?} value + * @return {?} + */ + function (value) { + if (value !== this.innerValue) { + this.innerValue = value; + } + this.onChangeValue(value); + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnChange = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onChangeCallback = fn; + }; + // From ControlValueAccessor interface + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + Ionic4DatepickerComponent.prototype.registerOnTouched = + // From ControlValueAccessor interface + /** + * @param {?} fn + * @return {?} + */ + function (fn) { + this.onTouchedCallback = fn; + }; + Ionic4DatepickerComponent.decorators = [ + { type: Component, args: [{ + selector: 'li-ionic4-datepicker', + template: "", + providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], + styles: [":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"] + }] } + ]; + /** @nocollapse */ + Ionic4DatepickerComponent.ctorParameters = function () { return [ + { type: ModalController }, + { type: ElementRef }, + { type: Renderer2 } + ]; }; + Ionic4DatepickerComponent.propDecorators = { + inputDateConfig: [{ type: Input }] + }; + return Ionic4DatepickerComponent; +}()); + +/** + * @fileoverview added by tsickle + * Generated from: lib/li-ionic4-datepicker.directive.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +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 __awaiter(this, void 0, void 0, function () { + var datePickerModal; + var _this = this; + return __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; +}()); + +/** + * @fileoverview added by tsickle + * Generated from: lib/ionic4-datepicker.module.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var Ionic4DatepickerModule = /** @class */ (function () { + function Ionic4DatepickerModule() { + } + Ionic4DatepickerModule.decorators = [ + { type: NgModule, args: [{ + imports: [ + CommonModule, + FormsModule, + IonicModule + ], + declarations: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent + ], + exports: [ + Ionic4DatepickerComponent, + LiIonic4DatepickerDirective, + Ionic4DatepickerModalComponent, + CommonModule, + FormsModule + ], + entryComponents: [ + // Ionic4DatepickerComponent, + Ionic4DatepickerModalComponent + ], + providers: [] + },] } + ]; + return Ionic4DatepickerModule; +}()); + +/** + * @fileoverview added by tsickle + * Generated from: public_api.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * Generated from: logisticinfotech-ionic4-datepicker.ts + * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +export { Ionic4DatepickerService, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, Ionic4DatepickerComponent, Ionic4DatepickerModule, Ionic4DatepickerModalComponent, LiIonic4DatepickerDirective as ɵa }; + +//# sourceMappingURL=logisticinfotech-ionic4-datepicker.js.map \ No newline at end of file diff --git a/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js.map b/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js.map new file mode 100644 index 0000000..55feaf8 --- /dev/null +++ b/dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logisticinfotech-ionic4-datepicker.js.map","sources":["ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.service.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.component.ts","ng://@logisticinfotech/ionic4-datepicker/lib/li-ionic4-datepicker.directive.ts","ng://@logisticinfotech/ionic4-datepicker/lib/ionic4-datepicker.module.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Ionic4DatepickerService {\r\n\r\n isModalOpen = false;\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit, ViewChild, OnDestroy } from '@angular/core';\r\nimport { NavParams, ModalController, IonContent } from '@ionic/angular';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from '../ionic4-datepicker.service';\r\nconst moment = moment_;\r\n\r\n@Component({\r\n selector: 'li-ionic4-datepicker-modal',\r\n templateUrl: './ionic4-datepicker-modal.component.html',\r\n styleUrls: ['./ionic4-datepicker-modal.component.scss']\r\n})\r\nexport class Ionic4DatepickerModalComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(IonContent, {static: false}) content: IonContent;\r\n\r\n currentDate;\r\n today;\r\n\r\n // inputs\r\n mainObj: any = {};\r\n selectedDate: any = {};\r\n\r\n // component variables\r\n selctedDateEpoch = 0;\r\n firstDayEpoch;\r\n lastDayEpoch;\r\n\r\n disabledDates = [];\r\n highlightedDates: any = {};\r\n\r\n fromDate;\r\n toDate;\r\n disableWeekdays = [];\r\n data: any = {\r\n currentMonth: '',\r\n currentYear: '',\r\n currentMonthSelected: ''\r\n };\r\n currentYearSelected;\r\n numColumns;\r\n\r\n rows = [0, 7, 14, 21, 28, 35];\r\n cols = [0, 1, 2, 3, 4, 5, 6];\r\n monthsList = ['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\r\n weeksList = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n yearsList = [];\r\n daysList = [];\r\n yearInAscending = false;\r\n momentLocale = 'en-US';\r\n selectedDateString;\r\n\r\n // month year scroll variables\r\n isMonthYearSelectorOpen = false;\r\n selectedYearOrMonth;\r\n isMonthSelect;\r\n scrollingMonthOrYearArray: any = [];\r\n\r\n isSelectedDateFound = false;\r\n\r\n constructor(\r\n private navParams: NavParams,\r\n private modalCtrl: ModalController,\r\n public datePickerService: Ionic4DatepickerService\r\n ) {\r\n this.today = this.resetHMSM(new Date()).getTime();\r\n if (this.navParams.get('selectedDate')) {\r\n // console.log('Selected date =>', this.navParams.get('selectedDate'));\r\n this.selectedDate.date = this.navParams.get('selectedDate');\r\n this.isSelectedDateFound = true;\r\n }\r\n this.mainObj = this.initDatePickerObj(this.navParams.get('objConfig'));\r\n }\r\n\r\n ngOnInit() {\r\n this.datePickerService.isModalOpen = true;\r\n this.initDatePicker();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.datePickerService.isModalOpen = false;\r\n }\r\n\r\n // Reset the hours, minutes, seconds and milli seconds\r\n resetHMSM(currentDate) {\r\n currentDate.setHours(0);\r\n currentDate.setMinutes(0);\r\n currentDate.setSeconds(0);\r\n currentDate.setMilliseconds(0);\r\n return currentDate;\r\n }\r\n\r\n // this method change month or year list to dateList\r\n changeToDateList() {\r\n // console.log('changeToDateList');\r\n this.isMonthYearSelectorOpen = false;\r\n }\r\n\r\n // Virtual scroll create for select year and month\r\n selectMonthYear(isMonthSelect) {\r\n // console.log('selectMonthYear', i);\r\n this.isMonthYearSelectorOpen = true;\r\n\r\n this.isMonthSelect = isMonthSelect;\r\n this.scrollingMonthOrYearArray = isMonthSelect ? this.mainObj.monthsList : this.yearsList;\r\n this.selectedYearOrMonth = isMonthSelect ? this.data.currentMonth : this.data.currentYear;\r\n\r\n const index = this.scrollingMonthOrYearArray.indexOf(this.selectedYearOrMonth);\r\n const iditem = index + 'list';\r\n\r\n setTimeout(() => {\r\n document.getElementById(iditem).scrollIntoView();\r\n }, 100);\r\n }\r\n\r\n // select month or year\r\n onChangeMonthYear(monthYear) {\r\n // console.log('onChangeMonthYear', monthYear);\r\n if (monthYear) {\r\n if (this.isMonthSelect) {\r\n this.data.currentMonth = monthYear;\r\n this.selectedYearOrMonth = this.data.currentMonth;\r\n const monthNumber = this.monthsList.indexOf(this.data.currentMonth);\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(monthNumber);\r\n } else {\r\n this.data.currentYear = monthYear;\r\n this.selectedYearOrMonth = this.data.currentYear;\r\n this.currentDate.setFullYear(this.data.currentYear);\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.refreshDateList(this.currentDate);\r\n }\r\n this.isMonthYearSelectorOpen = false;\r\n\r\n }\r\n\r\n // Previous month\r\n prevMonth() {\r\n // console.log('prevNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear <= this.yearsList[(this.yearsList.length - 1)] && currentMonth === 0) {\r\n return;\r\n }\r\n if (currentMonth === 1) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setMonth(currentMonth - 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // Next month\r\n nextMonth() {\r\n // console.log('nextNext', this.currentDate);\r\n const currentMonth = this.currentDate.getMonth();\r\n const currentYear = this.currentDate.getFullYear();\r\n if (currentYear >= this.yearsList[0] && currentMonth === 11) {\r\n return;\r\n }\r\n if (currentMonth === 11) {\r\n this.currentDate.setFullYear(currentYear);\r\n }\r\n this.currentDate.setDate(1);\r\n this.currentDate.setMonth(currentMonth + 1);\r\n this.data.currentMonth = this.mainObj.monthsList[currentMonth];\r\n this.data.currentYear = currentYear;\r\n this.refreshDateList(this.currentDate);\r\n // this.changeDaySelected();\r\n }\r\n\r\n // changeDaySelected ( day selection changes )\r\n changeDaySelected() {\r\n // console.log('changeDaySelected');\r\n const newSelectedDate: any = new Date(this.selctedDateEpoch);\r\n newSelectedDate.setMonth(this.currentDate.getMonth());\r\n newSelectedDate.setYear(this.currentDate.getFullYear());\r\n this.selctedDateEpoch = newSelectedDate.getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Date selected\r\n dateSelected(selectedDate) {\r\n // console.log('dateSelected =>', selectedDate);\r\n if (selectedDate && !selectedDate.disabled) {\r\n if (!selectedDate || Object.keys(selectedDate).length === 0) { return; }\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = selectedDate.epoch;\r\n this.selectedDateString = this.formatDate();\r\n if (this.mainObj.closeOnSelect) {\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n }\r\n }\r\n\r\n // Set today as date for the modal\r\n setIonicDatePickerTodayDate() {\r\n // console.log('setIonicDatePickerTodayDate');\r\n const today = new Date(this.today);\r\n const today_obj = {\r\n date: today.getDate(),\r\n month: today.getMonth(),\r\n year: today.getFullYear(),\r\n day: today.getDay(),\r\n epoch: today.getTime(),\r\n disabled: false\r\n };\r\n this.dateSelected(today_obj);\r\n this.refreshDateList(new Date());\r\n this.selctedDateEpoch = this.resetHMSM(today).getTime();\r\n this.selectedDateString = this.formatDate();\r\n // this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Set date for the modal\r\n setIonicDatePickerDate() {\r\n // console.log('setIonicDatePickerDate');\r\n this.closeModal(this.selctedDateEpoch);\r\n }\r\n\r\n // Setting the disabled dates list.\r\n setDisabledDates(obj) {\r\n // console.log('setDisabledDates =>', obj);\r\n if (!obj.disabledDates || obj.disabledDates.length === 0) {\r\n this.disabledDates = [];\r\n } else {\r\n this.disabledDates = [];\r\n for (let i = 0; i < obj.disabledDates.length; i++) {\r\n // val = resetHMSM(new Date(val));\r\n this.disabledDates.push(this.resetHMSM(new Date(obj.disabledDates[i])).getTime());\r\n }\r\n }\r\n }\r\n\r\n // Set hightlighted dates\r\n setHightlightedDates(obj) {\r\n if (!obj.highlightedDates || obj.highlightedDates.length === 0) {\r\n this.highlightedDates = {};\r\n } else {\r\n this.highlightedDates = {};\r\n for (let i = 0; i < obj.highlightedDates.length; i++) {\r\n const hDate = obj.highlightedDates[i].date;\r\n const hColor = obj.highlightedDates[i].color;\r\n const hFontColor = obj.highlightedDates[i].fontColor;\r\n const hDateTime = this.resetHMSM(new Date(hDate)).getTime();\r\n this.highlightedDates[hDateTime] = { color: hColor, fontColor: hFontColor };\r\n }\r\n }\r\n }\r\n\r\n // Refresh the list of the dates of a month\r\n refreshDateList(currentDate) {\r\n // console.log('refreshDateList =>', currentDate);\r\n currentDate = this.resetHMSM(currentDate);\r\n this.currentDate = currentDate;\r\n\r\n const firstDay = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1).getDate();\r\n const lastDay = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0).getDate();\r\n\r\n this.monthsList = [];\r\n if (this.mainObj.monthsList && this.mainObj.monthsList.length === 12) {\r\n this.monthsList = this.mainObj.monthsList;\r\n } else {\r\n this.monthsList = this.monthsList;\r\n }\r\n\r\n this.yearsList = this.getYearsList(this.mainObj.from, this.mainObj.to);\r\n\r\n this.daysList = [];\r\n let tempDate, disabled;\r\n this.firstDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), firstDay)).getTime();\r\n this.lastDayEpoch = this.resetHMSM(new Date(currentDate.getFullYear(), currentDate.getMonth(), lastDay)).getTime();\r\n\r\n for (let i = firstDay; i <= lastDay; i++) {\r\n tempDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), i);\r\n disabled = false;\r\n const day = tempDate.getDay();\r\n if (this.disableWeekdays.length > 0) {\r\n if (this.disableWeekdays.indexOf(day) >= 0) {\r\n disabled = this.disableWeekdays.indexOf(day) >= 0;\r\n } else {\r\n disabled = false;\r\n }\r\n }\r\n\r\n if (this.disabledDates.length > 0) {\r\n if (this.disabledDates.indexOf(tempDate.getTime()) >= 0) {\r\n disabled = true;\r\n }\r\n }\r\n\r\n if (this.fromDate && !disabled) {\r\n disabled = (tempDate.getTime() < this.fromDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n if (this.toDate && !disabled) {\r\n disabled = (tempDate.getTime() > this.toDate)\r\n || this.mainObj.disableWeekDays.indexOf(tempDate.getDay()) >= 0;\r\n }\r\n\r\n const hightLightDate = this.highlightedDates[tempDate.getTime()];\r\n\r\n let fontColor = null;\r\n\r\n if (tempDate.getDay() === 0 && this.mainObj.isSundayHighlighted && this.mainObj.isSundayHighlighted.fontColor) {\r\n fontColor = this.mainObj.isSundayHighlighted.fontColor;\r\n } else if (hightLightDate && hightLightDate.fontColor) {\r\n fontColor = hightLightDate.fontColor;\r\n }\r\n\r\n this.daysList.push({\r\n date: tempDate.getDate(),\r\n month: tempDate.getMonth(),\r\n year: tempDate.getFullYear(),\r\n day: tempDate.getDay(),\r\n epoch: tempDate.getTime(),\r\n disabled: disabled,\r\n color: hightLightDate && hightLightDate.color ? hightLightDate.color : null,\r\n fontColor: fontColor\r\n // fontColor: hightLightDate && hightLightDate.fontColor ? hightLightDate.fontColor : null\r\n });\r\n }\r\n\r\n // To set Monday as the first day of the week.\r\n let firstDayMonday = this.daysList[0].day - this.mainObj.mondayFirst;\r\n firstDayMonday = (firstDayMonday < 0) ? 6 : firstDayMonday;\r\n for (let j = 0; j < firstDayMonday; j++) {\r\n this.daysList.unshift({});\r\n }\r\n this.rows = [0, 7, 14, 21, 28, 35];\r\n this.cols = [0, 1, 2, 3, 4, 5, 6];\r\n this.data.currentMonth = this.mainObj.monthsList[currentDate.getMonth()];\r\n this.data.currentYear = currentDate.getFullYear();\r\n this.data.currentMonthSelected = this.data.currentMonth;\r\n this.currentYearSelected = this.data.currentYear;\r\n this.numColumns = 7;\r\n }\r\n\r\n // Setting up the initial object\r\n setInitialObj(ipObj) {\r\n // console.log('setInitialObj =>', ipObj);\r\n this.mainObj = ipObj;\r\n if (this.isSelectedDateFound) {\r\n this.isSelectedDateFound = true;\r\n this.selctedDateEpoch = this.resetHMSM(this.mainObj.inputDate).getTime();\r\n }\r\n\r\n this.selectedDateString = this.formatDate();\r\n\r\n if (this.mainObj.weeksList && this.mainObj.weeksList.length === 7) {\r\n this.weeksList = this.mainObj.weeksList;\r\n }\r\n if (this.mainObj.mondayFirst) {\r\n this.weeksList.push(this.mainObj.weeksList.shift());\r\n }\r\n if (this.mainObj.yearInAscending) {\r\n this.yearInAscending = this.mainObj.yearInAscending;\r\n }\r\n if (this.mainObj.momentLocale) {\r\n this.momentLocale = this.mainObj.momentLocale;\r\n }\r\n this.disableWeekdays = this.mainObj.disableWeekDays;\r\n this.setDisabledDates(this.mainObj);\r\n this.refreshDateList(this.mainObj.inputDate);\r\n }\r\n\r\n // for dismiss modal\r\n closeModal(selectedDate) {\r\n // console.log('closeModal => ', selectedDate);\r\n this.modalCtrl.getTop();\r\n const formattedDate = moment(selectedDate).format(this.mainObj.dateFormat);\r\n this.modalCtrl.dismiss({ 'date': formattedDate });\r\n }\r\n\r\n // close modal button\r\n closeIonicDatePickerModal() {\r\n // console.log('closeIonicDatePickerModal');\r\n this.closeModal(null);\r\n }\r\n\r\n // get years list ( GIVE HERE MIN OR MAX YEAR IN DATE_PICKER )\r\n getYearsList(from, to) {\r\n // console.log('getYearsList =>', from, to);\r\n const yearsList = [];\r\n let minYear = 1950;\r\n let maxYear = new Date().getFullYear() + 1;\r\n minYear = from ? new Date(from).getFullYear() : minYear;\r\n maxYear = to ? new Date(to).getFullYear() : maxYear;\r\n // console.log('getYearsList: ', this.yearInAscending);\r\n if (this.yearInAscending) {\r\n for (let i = minYear; i <= maxYear; i++) {\r\n yearsList.push(i);\r\n }\r\n } else {\r\n for (let i = maxYear; i >= minYear; i--) {\r\n yearsList.push(i);\r\n }\r\n }\r\n return yearsList;\r\n }\r\n\r\n // Init Date-Picker\r\n initDatePicker() {\r\n this.fromDate = '';\r\n this.toDate = '';\r\n // $scope.mainObj = angular.extend({}, config, ipObj);\r\n if (this.mainObj.from) {\r\n this.fromDate = this.resetHMSM(new Date(this.mainObj.from)).getTime();\r\n }\r\n if (this.mainObj.to) {\r\n this.toDate = this.resetHMSM(new Date(this.mainObj.to)).getTime();\r\n }\r\n // if (ipObj.disableWeekdays && this.config.disableWeekdays) {\r\n // this.mainObj.disableWeekDays = ipObj.disableWeekdays.concat(this.config.disableWeekdays);\r\n // }\r\n this.setInitialObj(this.mainObj);\r\n }\r\n\r\n // Init DatePicker Object\r\n initDatePickerObj(config) {\r\n // const config = this.mainObj;\r\n\r\n if (config.inputDate && !this.selectedDate.date) {\r\n this.isSelectedDateFound = true;\r\n this.selectedDate.date = config.inputDate;\r\n }\r\n\r\n const objConfig: any = {};\r\n objConfig.from = config.fromDate ? config.fromDate : '';\r\n objConfig.to = config.toDate ? config.toDate : '';\r\n objConfig.showTodayButton = config.showTodayButton === undefined ? true : config.showTodayButton;\r\n objConfig.closeOnSelect = config.closeOnSelect ? config.closeOnSelect : false;\r\n objConfig.disableWeekDays = config.disableWeekDays ? config.disableWeekDays : [];\r\n objConfig.mondayFirst = config.mondayFirst ? config.mondayFirst : false;\r\n objConfig.setLabel = config.setLabel ? config.setLabel : 'Set';\r\n objConfig.todayLabel = config.todayLabel ? config.todayLabel : 'Today';\r\n objConfig.closeLabel = config.closeLabel ? config.closeLabel : 'Close';\r\n objConfig.disabledDates = config.disabledDates ? config.disabledDates : [];\r\n objConfig.titleLabel = config.titleLabel ? config.titleLabel : null;\r\n\r\n objConfig.monthsList = config.monthsList ? config.monthsList : this.monthsList;\r\n objConfig.monthsList = [...objConfig.monthsList];\r\n\r\n objConfig.weeksList = config.weeksList ? config.weeksList : this.weeksList;\r\n objConfig.weeksList = [...objConfig.weeksList];\r\n\r\n objConfig.dateFormat = config.dateFormat ? config.dateFormat : 'DD MMM YYYY';\r\n // console.log(this.selectedDate.date, objConfig.dateFormat, moment.locale());\r\n\r\n objConfig.clearButton = config.clearButton ? config.clearButton : false;\r\n\r\n objConfig.yearInAscending = config.yearInAscending ? config.yearInAscending : false;\r\n objConfig.momentLocale = config.momentLocale ? config.momentLocale : 'en-US';\r\n\r\n moment.locale(objConfig.momentLocale);\r\n objConfig.inputDate = this.selectedDate.date ? moment(this.selectedDate.date, objConfig.dateFormat).toDate() : new Date();\r\n\r\n objConfig.btnCloseSetInReverse = config.btnCloseSetInReverse ? config.btnCloseSetInReverse : false;\r\n\r\n objConfig.btnProperties = {};\r\n if (config.btnProperties) {\r\n const btnProperties = config.btnProperties;\r\n objConfig.btnProperties.expand = btnProperties.expand ? btnProperties.expand : 'block';\r\n objConfig.btnProperties.fill = btnProperties.fill ? btnProperties.fill : 'solid';\r\n objConfig.btnProperties.size = btnProperties.size ? btnProperties.size : 'default';\r\n objConfig.btnProperties.color = btnProperties.color ? btnProperties.color : '';\r\n objConfig.btnProperties.disabled = btnProperties.disabled ? btnProperties.disabled : false;\r\n objConfig.btnProperties.strong = btnProperties.strong ? btnProperties.strong : false;\r\n } else {\r\n objConfig.btnProperties.expand = 'block';\r\n objConfig.btnProperties.fill = 'solid';\r\n objConfig.btnProperties.size = 'default';\r\n objConfig.btnProperties.disabled = false;\r\n objConfig.btnProperties.strong = false;\r\n }\r\n\r\n objConfig.arrowNextPrev = {};\r\n if (config.arrowNextPrev) {\r\n const arrowNextPrev = config.arrowNextPrev;\r\n objConfig.arrowNextPrev.nextArrowSrc = arrowNextPrev.nextArrowSrc ? arrowNextPrev.nextArrowSrc : false;\r\n objConfig.arrowNextPrev.prevArrowSrc = arrowNextPrev.prevArrowSrc ? arrowNextPrev.prevArrowSrc : false;\r\n }\r\n\r\n objConfig.highlightedDates = [];\r\n if (config.highlightedDates && config.highlightedDates.length > 0) {\r\n objConfig.highlightedDates = config.highlightedDates;\r\n\r\n this.setHightlightedDates(objConfig);\r\n }\r\n\r\n objConfig.isSundayHighlighted = {};\r\n if (config.isSundayHighlighted) {\r\n const isSundayHighlighted = config.isSundayHighlighted;\r\n objConfig.isSundayHighlighted.fontColor = isSundayHighlighted.fontColor ? isSundayHighlighted.fontColor : null;\r\n }\r\n\r\n // console.log('config =>', objConfig);\r\n return objConfig;\r\n }\r\n\r\n // Format date\r\n formatDate() {\r\n // console.log('formatDate: ', this.selctedDateEpoch, new Date(this.selctedDateEpoch));\r\n return moment(this.selctedDateEpoch).format(this.mainObj.dateFormat);\r\n }\r\n}\r\n\r\n","import { Component, OnInit, forwardRef, Input, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, NgModel } from '@angular/forms';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nconst noop = () => {\r\n};\r\n\r\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => Ionic4DatepickerComponent),\r\n multi: true\r\n};\r\n@Component({\r\n selector: 'li-ionic4-datepicker',\r\n templateUrl: './ionic4-datepicker.component.html',\r\n styleUrls: ['./ionic4-datepicker.component.scss'],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class Ionic4DatepickerComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n private innerValue: any = '';\r\n\r\n // Placeholders for the callbacks which are later provided\r\n // by the Control Value Accessor\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public el: ElementRef,\r\n public renderer2: Renderer2\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '0px';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '30%';\r\n }\r\n this.el.nativeElement.setAttribute('style', 'position: relative; width: 100%;');\r\n this.el.nativeElement.appendChild(this.closeIcon);\r\n\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate = new Date();\r\n this.value = '';\r\n });\r\n }\r\n }\r\n\r\n onChangeValue(value) {\r\n // console.log('onChangeValue =>' , value);\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n }\r\n\r\n async openDatePicker(value) {\r\n // console.log('openDatePicker');\r\n if (value) {\r\n this.selectedDate.date = value;\r\n }\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n // console.log(data);\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.value = data.data.date;\r\n }\r\n });\r\n }\r\n\r\n // get accessor\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n // set accessor including call the onchange callback\r\n set value(v: any) {\r\n if (v !== this.innerValue) {\r\n this.innerValue = v;\r\n this.onChangeCallback(v);\r\n }\r\n this.onChangeValue(v);\r\n }\r\n\r\n // Set touched on blur\r\n onBlur() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n writeValue(value: any) {\r\n if (value !== this.innerValue) {\r\n this.innerValue = value;\r\n }\r\n this.onChangeValue(value);\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnChange(fn: any) {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n // From ControlValueAccessor interface\r\n registerOnTouched(fn: any) {\r\n this.onTouchedCallback = fn;\r\n }\r\n}\r\n","import { Directive, Input, OnInit, HostListener, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { NgModel, NgControl } from '@angular/forms';\r\n\r\nimport * as moment_ from 'moment';\r\nimport { Ionic4DatepickerService } from './ionic4-datepicker.service';\r\n\r\n@Directive({\r\n selector: '[liIonic4Datepicker]',\r\n exportAs: 'liIonic4Datepicker',\r\n providers: [NgModel],\r\n})\r\nexport class LiIonic4DatepickerDirective implements OnInit {\r\n\r\n @Input('liIonic4Datepicker') inputDateConfig: any;\r\n\r\n closeIcon;\r\n selectedDate: any = {};\r\n isModalOpen: any = false;\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n public ngModel: NgModel,\r\n public control: NgControl,\r\n public el: ElementRef,\r\n public renderer2: Renderer2,\r\n public datePickerService: Ionic4DatepickerService\r\n ) { }\r\n\r\n ngOnInit() {\r\n // console.log('config.yearInAscending : ' + this.inputDateConfig.yearInAscending);\r\n\r\n if (this.inputDateConfig.clearButton !== false) {\r\n this.closeIcon = document.createElement('ion-icon');\r\n this.closeIcon.name = 'close-circle';\r\n this.closeIcon.className = 'clearButton';\r\n this.closeIcon.style.position = 'absolute';\r\n this.closeIcon.style.right = '8px';\r\n this.closeIcon.style.bottom = '30%';\r\n this.closeIcon.style.fontSize = '18px';\r\n this.closeIcon.style.color = '#A9A9A9';\r\n this.closeIcon.style.zIndex = '5';\r\n if (this.el.nativeElement.parentNode.nodeName === 'ION-ITEM') {\r\n this.closeIcon.style.bottom = '12px';\r\n }\r\n this.el.nativeElement.parentNode.appendChild(this.closeIcon);\r\n this.renderer2.listen(this.closeIcon, 'click', (event) => {\r\n // Do something with 'event'\r\n // console.log('button clicks');\r\n this.selectedDate.date = new Date();\r\n this.control.control.setValue('');\r\n this.ngModel.update.emit('');\r\n });\r\n }\r\n\r\n const self = this;\r\n this.ngModel.valueChanges.subscribe((value) => {\r\n // console.log('ngModel value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n this.control.control.valueChanges.subscribe((value) => {\r\n // console.log('formcontrol value =>', value);\r\n self.selectedDate.date = value;\r\n if (this.inputDateConfig.clearButton !== false) {\r\n if (!value) {\r\n this.closeIcon.style.visibility = 'hidden';\r\n } else {\r\n this.closeIcon.style.visibility = 'visible';\r\n }\r\n }\r\n });\r\n\r\n if (this.control.control.value) {\r\n this.selectedDate.date = this.control.control.value;\r\n }\r\n }\r\n\r\n @HostListener('ionFocus')\r\n public onFocus() {\r\n if (this.datePickerService.isModalOpen) {\r\n return;\r\n }\r\n this.openDatePicker();\r\n }\r\n\r\n async openDatePicker() {\r\n // console.log('openDatePicker');\r\n\r\n const datePickerModal = await this.modalCtrl.create({\r\n component: Ionic4DatepickerModalComponent,\r\n cssClass: 'li-ionic4-datePicker',\r\n componentProps: { 'objConfig': this.inputDateConfig, 'selectedDate': this.selectedDate.date }\r\n });\r\n await datePickerModal.present();\r\n\r\n datePickerModal.onDidDismiss()\r\n .then((data) => {\r\n if (data.data && data.data.date && data.data.date !== 'Invalid date') {\r\n this.selectedDate.date = data.data.date;\r\n this.control.control.setValue(data.data.date);\r\n this.ngModel.update.emit(data.data.date);\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LiIonic4DatepickerDirective } from './li-ionic4-datepicker.directive';\r\nimport { Ionic4DatepickerModalComponent } from './ionic4-datepicker-modal/ionic4-datepicker-modal.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { Ionic4DatepickerComponent } from './ionic4-datepicker.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule\r\n ],\r\n declarations: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n exports: [\r\n Ionic4DatepickerComponent,\r\n LiIonic4DatepickerDirective,\r\n Ionic4DatepickerModalComponent,\r\n CommonModule,\r\n FormsModule\r\n ],\r\n entryComponents: [\r\n // Ionic4DatepickerComponent,\r\n Ionic4DatepickerModalComponent\r\n ],\r\n providers: [\r\n\r\n ]\r\n})\r\nexport class Ionic4DatepickerModule { }\r\n"],"names":[],"mappings":"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"} diff --git a/dist/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.d.ts b/dist/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.d.ts new file mode 100644 index 0000000..033e483 --- /dev/null +++ b/dist/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.d.ts @@ -0,0 +1,61 @@ +import { OnInit, OnDestroy } from '@angular/core'; +import { NavParams, ModalController, IonContent } from '@ionic/angular'; +import { Ionic4DatepickerService } from '../ionic4-datepicker.service'; +export declare class Ionic4DatepickerModalComponent implements OnInit, OnDestroy { + private navParams; + private modalCtrl; + datePickerService: Ionic4DatepickerService; + content: IonContent; + currentDate: any; + today: any; + mainObj: any; + selectedDate: any; + selctedDateEpoch: number; + firstDayEpoch: any; + lastDayEpoch: any; + disabledDates: any[]; + highlightedDates: any; + fromDate: any; + toDate: any; + disableWeekdays: any[]; + data: any; + currentYearSelected: any; + numColumns: any; + rows: number[]; + cols: number[]; + monthsList: string[]; + weeksList: string[]; + yearsList: any[]; + daysList: any[]; + yearInAscending: boolean; + momentLocale: string; + selectedDateString: any; + isMonthYearSelectorOpen: boolean; + selectedYearOrMonth: any; + isMonthSelect: any; + scrollingMonthOrYearArray: any; + isSelectedDateFound: boolean; + constructor(navParams: NavParams, modalCtrl: ModalController, datePickerService: Ionic4DatepickerService); + ngOnInit(): void; + ngOnDestroy(): void; + resetHMSM(currentDate: any): any; + changeToDateList(): void; + selectMonthYear(isMonthSelect: any): void; + onChangeMonthYear(monthYear: any): void; + prevMonth(): void; + nextMonth(): void; + changeDaySelected(): void; + dateSelected(selectedDate: any): void; + setIonicDatePickerTodayDate(): void; + setIonicDatePickerDate(): void; + setDisabledDates(obj: any): void; + setHightlightedDates(obj: any): void; + refreshDateList(currentDate: any): void; + setInitialObj(ipObj: any): void; + closeModal(selectedDate: any): void; + closeIonicDatePickerModal(): void; + getYearsList(from: any, to: any): any[]; + initDatePicker(): void; + initDatePickerObj(config: any): any; + formatDate(): string; +} diff --git a/dist/ionic4-datepicker/lib/ionic4-datepicker.component.d.ts b/dist/ionic4-datepicker/lib/ionic4-datepicker.component.d.ts new file mode 100644 index 0000000..478677e --- /dev/null +++ b/dist/ionic4-datepicker/lib/ionic4-datepicker.component.d.ts @@ -0,0 +1,24 @@ +import { OnInit, ElementRef, Renderer2 } from '@angular/core'; +import { ControlValueAccessor } from '@angular/forms'; +import { ModalController } from '@ionic/angular'; +export declare const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any; +export declare class Ionic4DatepickerComponent implements OnInit, ControlValueAccessor { + private modalCtrl; + el: ElementRef; + renderer2: Renderer2; + inputDateConfig: any; + closeIcon: any; + selectedDate: any; + private innerValue; + private onTouchedCallback; + private onChangeCallback; + constructor(modalCtrl: ModalController, el: ElementRef, renderer2: Renderer2); + ngOnInit(): void; + onChangeValue(value: any): void; + openDatePicker(value: any): Promise; + value: any; + onBlur(): void; + writeValue(value: any): void; + registerOnChange(fn: any): void; + registerOnTouched(fn: any): void; +} diff --git a/dist/ionic4-datepicker/lib/ionic4-datepicker.module.d.ts b/dist/ionic4-datepicker/lib/ionic4-datepicker.module.d.ts new file mode 100644 index 0000000..c580f1d --- /dev/null +++ b/dist/ionic4-datepicker/lib/ionic4-datepicker.module.d.ts @@ -0,0 +1,2 @@ +export declare class Ionic4DatepickerModule { +} diff --git a/dist/ionic4-datepicker/lib/ionic4-datepicker.service.d.ts b/dist/ionic4-datepicker/lib/ionic4-datepicker.service.d.ts new file mode 100644 index 0000000..d1befc4 --- /dev/null +++ b/dist/ionic4-datepicker/lib/ionic4-datepicker.service.d.ts @@ -0,0 +1,4 @@ +export declare class Ionic4DatepickerService { + isModalOpen: boolean; + constructor(); +} diff --git a/dist/ionic4-datepicker/lib/li-ionic4-datepicker.directive.d.ts b/dist/ionic4-datepicker/lib/li-ionic4-datepicker.directive.d.ts new file mode 100644 index 0000000..07bc263 --- /dev/null +++ b/dist/ionic4-datepicker/lib/li-ionic4-datepicker.directive.d.ts @@ -0,0 +1,20 @@ +import { OnInit, ElementRef, Renderer2 } from '@angular/core'; +import { ModalController } from '@ionic/angular'; +import { NgModel, NgControl } from '@angular/forms'; +import { Ionic4DatepickerService } from './ionic4-datepicker.service'; +export declare class LiIonic4DatepickerDirective implements OnInit { + private modalCtrl; + ngModel: NgModel; + control: NgControl; + el: ElementRef; + renderer2: Renderer2; + datePickerService: Ionic4DatepickerService; + inputDateConfig: any; + closeIcon: any; + selectedDate: any; + isModalOpen: any; + constructor(modalCtrl: ModalController, ngModel: NgModel, control: NgControl, el: ElementRef, renderer2: Renderer2, datePickerService: Ionic4DatepickerService); + ngOnInit(): void; + onFocus(): void; + openDatePicker(): Promise; +} diff --git a/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker-1.5.0.tgz b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker-1.5.0.tgz new file mode 100644 index 0000000..b3e9d14 Binary files /dev/null and b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker-1.5.0.tgz differ diff --git a/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.d.ts b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.d.ts new file mode 100644 index 0000000..06d9496 --- /dev/null +++ b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.d.ts @@ -0,0 +1,5 @@ +/** + * Generated bundle index. Do not edit. + */ +export * from './public_api'; +export { LiIonic4DatepickerDirective as ɵa } from './lib/li-ionic4-datepicker.directive'; diff --git a/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.metadata.json b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.metadata.json new file mode 100644 index 0000000..87b28b8 --- /dev/null +++ b/dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.metadata.json @@ -0,0 +1 @@ +{"__symbolic":"module","version":4,"metadata":{"Ionic4DatepickerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":2,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}]},"statics":{"ngInjectableDef":{}}},"CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR":{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":12,"character":11},"useExisting":{"__symbolic":"reference","name":"Ionic4DatepickerComponent"},"multi":true},"Ionic4DatepickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":16,"character":1},"arguments":[{"selector":"li-ionic4-datepicker","providers":[{"__symbolic":"reference","name":"CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR"}],"template":"","styles":[":host input{font-size:16px;margin:6px 0;border:0;border-bottom:1px solid #ccc;width:100%;padding:12px}@media (min-width:768px){:host input{font-size:18px}}:host input.has-focus,:host input:focus{outline:0;box-shadow:unset}"]}]}],"members":{"inputDateConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":36,"character":23},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":37,"character":15},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":38,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"onChangeValue":[{"__symbolic":"method"}],"openDatePicker":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"Ionic4DatepickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":11,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":12,"character":4}],"declarations":[{"__symbolic":"reference","name":"Ionic4DatepickerComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"Ionic4DatepickerModalComponent"}],"exports":[{"__symbolic":"reference","name":"Ionic4DatepickerComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"Ionic4DatepickerModalComponent"},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":23,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":24,"character":4}],"entryComponents":[{"__symbolic":"reference","name":"Ionic4DatepickerModalComponent"}],"providers":[]}]}],"members":{}},"Ionic4DatepickerModalComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"li-ionic4-datepicker-modal","template":"\r\n \r\n \r\n {{mainObj?.titleLabel}}\r\n {{selectedDateString}}\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentMonth }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ data.currentYear }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n toDate)}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{weekName}}\r\n \r\n {{weekName}}\r\n \r\n \r\n \r\n \r\n \r\n {{daysList[row + col]?.date}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ monthYear }}\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n {{mainObj?.closeLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.todayLabel}}\r\n \r\n \r\n \r\n \r\n {{mainObj?.setLabel}}\r\n \r\n \r\n \r\n \r\n \r\n\r\n","styles":[":host ion-header{height:60px}:host ion-header ion-toolbar{--background:var(--ion-color-primary);height:100%;align-items:center;display:flex;color:var(--ion-color-primary-contrast)}:host ion-header ion-toolbar ion-title{font-size:20px;font-weight:700;text-align:center;padding:0;display:flex;align-items:center;justify-content:center;height:100%;cursor:pointer}:host ion-header ion-toolbar ion-title h1{font-size:14px;margin:0 0 4px}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col{display:flex;justify-content:center;align-items:center}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid{width:100%}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year{border-bottom:1.5px solid;border-bottom-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons{width:100%;height:40px;margin:0;padding:0;color:var(--ion-color-primary);--background:transparent;--box-shadow:none}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-buttons.activated{--background-activated:transparent;--color-activated:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container ion-col ion-grid .dp-select-month-year .dp-down-arrow{position:absolute;width:16px;right:0;top:10px;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button{--background:transparent;--box-shadow:0;color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button:focus{outline:0}:host .ionic_datepicker_modal_content .dp-month-year-container .dp-left-right-arrow ion-button.activated{--ion-color-primary-shade:transparent;--ion-color-primary-contrast:var(--ion-color-primary-tint)}:host .ionic_datepicker_modal_content .dp-weeks-container{margin:8px 0}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col{display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-weeks-name ion-col .weeks{width:14%;display:flex;justify-content:center;font-weight:700}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col{display:flex;justify-content:center;padding:10px;cursor:pointer}:host .ionic_datepicker_modal_content .dp-weeks-container .dp-days-list ion-col .days{width:14%;display:flex;justify-content:center}:host .ionic_datepicker_modal_content .dp-selecteddate{background:var(--ion-color-primary);color:var(--ion-color-primary-contrast);border-radius:4px;font-weight:500}:host .ionic_datepicker_modal_content .dp-today{border-radius:4px;font-weight:500;border:1px solid;border-color:var(--ion-color-primary)}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container{position:absolute;top:0;bottom:0;left:0;right:0;margin:0;overflow-y:scroll}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item{--padding-start:0;--inner-padding-end:0;--inner-border-width:0}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label{text-align:center;margin:0;font-size:16px}:host .ionic_datepicker_modal_content .dp-month-year-scroll-container ion-item ion-label.dp-selected{color:var(--ion-color-primary);font-size:20px;font-weight:500}:host .disabled{color:#aaa}:host .dp-virual-scroller-show{transition:opacity .3s ease-in;opacity:1;visibility:visible}:host .dp-virual-scroller-hide{opacity:0;visibility:hidden;height:auto}:host ion-footer{height:55px}:host ion-footer ion-toolbar{height:100%;--border-width:0;--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px}:host ion-footer ion-toolbar .toolbar-container{height:100%}:host ion-footer ion-toolbar .dp-btn-set-close-in-reverse{flex-direction:row-reverse}:host ion-footer ion-toolbar ion-button{--border-radius:0;height:55px;margin:0}:host ion-footer ion-toolbar ion-button:focus{outline:0}:host ion-footer ion-toolbar ion-button.activated{--background-activated:var(--ion-color-primary-tint);--color-activated:var(--ion-color-primary-contrast)}"]}]}],"members":{"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":14,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":14,"character":13},{"static":false}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"NavParams","line":61,"character":23},{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":62,"character":23},{"__symbolic":"reference","name":"Ionic4DatepickerService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"resetHMSM":[{"__symbolic":"method"}],"changeToDateList":[{"__symbolic":"method"}],"selectMonthYear":[{"__symbolic":"method"}],"onChangeMonthYear":[{"__symbolic":"method"}],"prevMonth":[{"__symbolic":"method"}],"nextMonth":[{"__symbolic":"method"}],"changeDaySelected":[{"__symbolic":"method"}],"dateSelected":[{"__symbolic":"method"}],"setIonicDatePickerTodayDate":[{"__symbolic":"method"}],"setIonicDatePickerDate":[{"__symbolic":"method"}],"setDisabledDates":[{"__symbolic":"method"}],"setHightlightedDates":[{"__symbolic":"method"}],"refreshDateList":[{"__symbolic":"method"}],"setInitialObj":[{"__symbolic":"method"}],"closeModal":[{"__symbolic":"method"}],"closeIonicDatePickerModal":[{"__symbolic":"method"}],"getYearsList":[{"__symbolic":"method"}],"initDatePicker":[{"__symbolic":"method"}],"initDatePickerObj":[{"__symbolic":"method"}],"formatDate":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1},"arguments":[{"selector":"[liIonic4Datepicker]","exportAs":"liIonic4Datepicker","providers":[{"__symbolic":"reference","module":"@angular/forms","name":"NgModel","line":11,"character":14}]}]}],"members":{"inputDateConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3},"arguments":["liIonic4Datepicker"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ModalController","line":22,"character":23},{"__symbolic":"reference","module":"@angular/forms","name":"NgModel","line":23,"character":20},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":24,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":15},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":26,"character":22},{"__symbolic":"reference","name":"Ionic4DatepickerService"}]}],"ngOnInit":[{"__symbolic":"method"}],"onFocus":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":86,"character":3},"arguments":["ionFocus"]}]}],"openDatePicker":[{"__symbolic":"method"}]}}},"origins":{"Ionic4DatepickerService":"./lib/ionic4-datepicker.service","CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR":"./lib/ionic4-datepicker.component","Ionic4DatepickerComponent":"./lib/ionic4-datepicker.component","Ionic4DatepickerModule":"./lib/ionic4-datepicker.module","Ionic4DatepickerModalComponent":"./lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component","ɵa":"./lib/li-ionic4-datepicker.directive"},"importAs":"@logisticinfotech/ionic4-datepicker"} \ No newline at end of file diff --git a/dist/ionic4-datepicker/package.json b/dist/ionic4-datepicker/package.json new file mode 100644 index 0000000..fa2bced --- /dev/null +++ b/dist/ionic4-datepicker/package.json @@ -0,0 +1,36 @@ +{ + "name": "@logisticinfotech/ionic4-datepicker", + "version": "1.5.0", + "description": "ionic4-datepicker inspired by rajeshwar patlolla ionic1 datepicker", + "keywords": [ + "Ionic-datepicker", + "ionic", + "ionic datepicker", + "datepicker", + "datepicker ionic", + "datepicker for ionic", + "datepicker for ionic framework" + ], + "license": "SEE LICENSE IN LICENSE", + "repository": { + "type": "git", + "url": "https://github.com/logisticinfotech/ionic4-datepicker" + }, + "homepage": "https://logisticinfotech.com/blog/ionic4-datepicker-component", + "peerDependencies": { + "moment": "^2.24.0" + }, + "main": "bundles/logisticinfotech-ionic4-datepicker.umd.js", + "module": "fesm5/logisticinfotech-ionic4-datepicker.js", + "es2015": "fesm2015/logisticinfotech-ionic4-datepicker.js", + "esm5": "esm5/logisticinfotech-ionic4-datepicker.js", + "esm2015": "esm2015/logisticinfotech-ionic4-datepicker.js", + "fesm5": "fesm5/logisticinfotech-ionic4-datepicker.js", + "fesm2015": "fesm2015/logisticinfotech-ionic4-datepicker.js", + "typings": "logisticinfotech-ionic4-datepicker.d.ts", + "metadata": "logisticinfotech-ionic4-datepicker.metadata.json", + "sideEffects": false, + "dependencies": { + "tslib": "^1.9.0" + } +} diff --git a/dist/ionic4-datepicker/public_api.d.ts b/dist/ionic4-datepicker/public_api.d.ts new file mode 100644 index 0000000..d1d84e7 --- /dev/null +++ b/dist/ionic4-datepicker/public_api.d.ts @@ -0,0 +1,4 @@ +export * from './lib/ionic4-datepicker.service'; +export * from './lib/ionic4-datepicker.component'; +export * from './lib/ionic4-datepicker.module'; +export * from './lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component'; diff --git a/package.json b/package.json index 7126f97..8823722 100644 --- a/package.json +++ b/package.json @@ -20,33 +20,33 @@ "private": true, "dependencies": { "moment": "^2.24.0", - "@angular/common": "^7.2.2", - "@angular/core": "^7.2.2", - "@angular/forms": "^7.2.2", - "@angular/http": "^7.2.2", - "@angular/platform-browser": "^7.2.2", - "@angular/platform-browser-dynamic": "^7.2.2", - "@angular/router": "^7.2.2", - "@ionic-native/core": "^5.0.0", + "@angular/compiler": "~8.2.14", + "@angular/common": "~8.2.14", + "@angular/core": "~8.2.14", + "@angular/forms": "~8.2.14", + "@angular/platform-browser": "~8.2.14", + "@angular/platform-browser-dynamic": "~8.2.14", + "@angular/router": "~8.2.14", + "@ionic-native/core": "^5.2.0", "@ionic-native/splash-screen": "^5.0.0", "@ionic-native/status-bar": "^5.0.0", "@ionic/angular": "^4.1.0", "core-js": "^2.5.4", - "rxjs": "~6.5.1", - "zone.js": "~0.8.29", + "rxjs": "~6.5.4", + "zone.js": "~0.9.1", "tslib": "^1.9.0" }, "devDependencies": { - "@angular-devkit/architect": "~0.12.3", - "@angular-devkit/build-angular": "~0.13.0", - "@angular-devkit/build-ng-packagr": "~0.13.0", - "@angular-devkit/core": "~7.2.3", - "@angular-devkit/schematics": "~7.2.3", - "@angular/cli": "~7.3.1", - "@angular/compiler": "~7.2.2", - "@angular/compiler-cli": "~7.2.2", - "@angular/language-service": "~7.2.2", - "@ionic/angular-toolkit": "~1.4.0", + "@angular-devkit/architect": "^0.803.15", + "@angular-devkit/build-angular": "^0.803.23", + "@angular-devkit/build-ng-packagr": "^0.900.6", + "@angular-devkit/core": "^8.3.15", + "@angular-devkit/schematics": "^8.3.15", + "@angular/cli": "~8.3.23", + "@angular/compiler": "~8.2.14", + "@angular/compiler-cli": "~8.2.14", + "@angular/language-service": "~8.2.14", + "@ionic/angular-toolkit": "^2.0.0", "@types/jasmine": "~2.8.8", "@types/jasminewd2": "~2.0.3", "@types/node": "~10.12.0", @@ -65,7 +65,7 @@ "tsickle": ">=0.34.0", "tslib": "^1.9.0", "tslint": "~5.12.0", - "typescript": "~3.1.6" + "typescript": "~3.4.3" }, "description": "An Ionic project" } diff --git a/projects/ionic4-datepicker/package.json b/projects/ionic4-datepicker/package.json index eb76808..6a55f65 100644 --- a/projects/ionic4-datepicker/package.json +++ b/projects/ionic4-datepicker/package.json @@ -1,6 +1,6 @@ { "name": "@logisticinfotech/ionic4-datepicker", - "version": "1.4.3", + "version": "1.5.0", "description": "ionic4-datepicker inspired by rajeshwar patlolla ionic1 datepicker", "keywords": ["Ionic-datepicker", "ionic", "ionic datepicker", "datepicker", "datepicker ionic", "datepicker for ionic", "datepicker for ionic framework"], "license": "SEE LICENSE IN LICENSE", @@ -12,4 +12,4 @@ "peerDependencies": { "moment": "^2.24.0" } -} \ No newline at end of file +} diff --git a/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.html b/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.html index 0e87dfe..6b2b7a2 100644 --- a/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.html +++ b/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.html @@ -1,113 +1,128 @@ - - - {{mainObj?.titleLabel}} - {{selectedDateString}} - - + + + {{mainObj?.titleLabel}} + {{selectedDateString}} + + - - - - - - - - - - - - - - - {{ data.currentMonth }} - - + + + + + + + + - - - - {{ data.currentYear }} - - + + + + + + {{ data.currentMonth }} + + + + + + + {{ data.currentYear }} + + + + + - - - - - toDate)}"> - - - - - - - - - - - - - {{weekName}} - - {{weekName}} + + toDate)}"> + + + - - - - - {{daysList[row + col]?.date}} - + + + + + + + + + {{weekName}} + + {{weekName}} + + + + + + {{daysList[row + col]?.date}} + + + + - - - - - - - - {{ monthYear }} - - + + + + + {{ monthYear }} + + - - - - - - {{mainObj?.closeLabel}} - - - - - {{mainObj?.todayLabel}} - - - - - {{mainObj?.setLabel}} - - - - - - \ No newline at end of file + + + + + + {{mainObj?.closeLabel}} + + + + + {{mainObj?.todayLabel}} + + + + + {{mainObj?.setLabel}} + + + + + + diff --git a/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts b/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts index b2244b2..34ed33e 100644 --- a/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts +++ b/projects/ionic4-datepicker/src/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.ts @@ -12,7 +12,7 @@ const moment = moment_; }) export class Ionic4DatepickerModalComponent implements OnInit, OnDestroy { - @ViewChild(IonContent) content: IonContent; + @ViewChild(IonContent, {static: false}) content: IonContent; currentDate; today; diff --git a/src/app/datepicker-button/datepicker-button.page.html b/src/app/datepicker-button/datepicker-button.page.html index 25a9e05..baff442 100644 --- a/src/app/datepicker-button/datepicker-button.page.html +++ b/src/app/datepicker-button/datepicker-button.page.html @@ -7,7 +7,7 @@ - + @@ -18,4 +18,4 @@ - \ No newline at end of file + diff --git a/src/app/datepicker-component/datepicker-component.page.html b/src/app/datepicker-component/datepicker-component.page.html index f9808c1..db0e2fe 100644 --- a/src/app/datepicker-component/datepicker-component.page.html +++ b/src/app/datepicker-component/datepicker-component.page.html @@ -7,7 +7,7 @@ - + @@ -21,4 +21,4 @@ - \ No newline at end of file + diff --git a/src/app/datepicker-directive/datepicker-directive.page.html b/src/app/datepicker-directive/datepicker-directive.page.html index 0b14376..960330c 100644 --- a/src/app/datepicker-directive/datepicker-directive.page.html +++ b/src/app/datepicker-directive/datepicker-directive.page.html @@ -7,7 +7,7 @@ - + @@ -18,4 +18,4 @@ - \ No newline at end of file + diff --git a/src/app/home/home.page.html b/src/app/home/home.page.html index 33ebabd..e3250af 100644 --- a/src/app/home/home.page.html +++ b/src/app/home/home.page.html @@ -9,7 +9,7 @@ - + @@ -54,4 +54,4 @@ - \ No newline at end of file + diff --git a/src/app/reactive-form/reactive-form.page.html b/src/app/reactive-form/reactive-form.page.html index 1524d62..0947704 100644 --- a/src/app/reactive-form/reactive-form.page.html +++ b/src/app/reactive-form/reactive-form.page.html @@ -7,10 +7,10 @@ - + - - + + Reactive Form @@ -44,4 +44,4 @@ - \ No newline at end of file + diff --git a/src/app/template-driven-form/template-driven-form.page.html b/src/app/template-driven-form/template-driven-form.page.html index 4f66ff4..33ddc33 100644 --- a/src/app/template-driven-form/template-driven-form.page.html +++ b/src/app/template-driven-form/template-driven-form.page.html @@ -7,10 +7,10 @@ - + - - + + Template Driven Form @@ -44,4 +44,4 @@ - \ No newline at end of file +