From ad2f2a0b3a614a2f0d50c5958711b51a6aad2c70 Mon Sep 17 00:00:00 2001 From: Alston Date: Mon, 2 Dec 2019 12:09:44 +1300 Subject: [PATCH 1/4] Fix ionic css deprecation --- .../ionic4-datepicker-modal.component.html | 20 +++++++++---------- .../datepicker-button.page.html | 4 ++-- .../datepicker-component.page.html | 4 ++-- .../datepicker-directive.page.html | 4 ++-- src/app/home/home.page.html | 4 ++-- src/app/reactive-form/reactive-form.page.html | 8 ++++---- .../template-driven-form.page.html | 8 ++++---- 7 files changed, 26 insertions(+), 26 deletions(-) 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..bfd7756 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 @@ -8,8 +8,8 @@

{{mainObj?.titleLabel}}

- - + + @@ -20,14 +20,14 @@

{{mainObj?.titleLabel}}

- + {{ data.currentMonth }} - + {{ data.currentYear }} @@ -82,23 +82,23 @@

{{mainObj?.titleLabel}}

- - - + + + {{mainObj?.closeLabel}} - + {{mainObj?.todayLabel}} - + {{mainObj?.titleLabel}} - \ No newline at end of file + 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 + From bff3519b5c633ac405cc7557ea1ca4245ea9943c Mon Sep 17 00:00:00 2001 From: Alston Kim Date: Wed, 18 Mar 2020 11:44:07 +1300 Subject: [PATCH 2/4] Update to ionic 5, fix icon name and any css deprecation --- package.json | 42 ++-- projects/ionic4-datepicker/package.json | 4 +- .../ionic4-datepicker-modal.component.html | 215 ++++++++++-------- .../ionic4-datepicker-modal.component.ts | 2 +- 4 files changed, 139 insertions(+), 124 deletions(-) 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..25b74e7 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.4.4", "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 bfd7756..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 }} + + + + + - - - - - - - - - - - - - - - - -
- {{weekName}}
-
- {{weekName}}
+ + + + + -
- - -
- {{daysList[row + col]?.date}} -
+
+ + + + + + +
+ {{weekName}}
+
+ {{weekName}}
+
+
+ + +
+ {{daysList[row + col]?.date}} +
+
+
+
-
-
-
-
-
- - - {{ monthYear }} - - +
+
+ + + {{ monthYear }} + +
- - - - - - {{mainObj?.closeLabel}} - - - - - {{mainObj?.todayLabel}} - - - - - {{mainObj?.setLabel}} - - - - - + + + + + + {{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; From 135dd819be98454179b847da5fd95139d49960cb Mon Sep 17 00:00:00 2001 From: Alston Kim Date: Wed, 18 Mar 2020 11:49:08 +1300 Subject: [PATCH 3/4] update version number --- projects/ionic4-datepicker/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ionic4-datepicker/package.json b/projects/ionic4-datepicker/package.json index 25b74e7..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.4", + "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", From 2c8aba1d5d345927b6185ae816ee55b34364cf20 Mon Sep 17 00:00:00 2001 From: Alston Kim Date: Wed, 18 Mar 2020 17:08:01 +1300 Subject: [PATCH 4/4] include dist files --- dist/ionic4-datepicker/LICENSE | 46 + dist/ionic4-datepicker/README.md | 17 + .../logisticinfotech-ionic4-datepicker.umd.js | 1325 +++++++++++++++++ ...isticinfotech-ionic4-datepicker.umd.js.map | 1 + ...isticinfotech-ionic4-datepicker.umd.min.js | 2 + ...cinfotech-ionic4-datepicker.umd.min.js.map | 1 + .../ionic4-datepicker-modal.component.js | 649 ++++++++ .../lib/ionic4-datepicker.component.js | 228 +++ .../esm2015/lib/ionic4-datepicker.module.js | 41 + .../esm2015/lib/ionic4-datepicker.service.js | 25 + .../lib/li-ionic4-datepicker.directive.js | 183 +++ .../logisticinfotech-ionic4-datepicker.js | 11 + dist/ionic4-datepicker/esm2015/public_api.js | 13 + .../ionic4-datepicker-modal.component.js | 785 ++++++++++ .../esm5/lib/ionic4-datepicker.component.js | 283 ++++ .../esm5/lib/ionic4-datepicker.module.js | 45 + .../esm5/lib/ionic4-datepicker.service.js | 27 + .../lib/li-ionic4-datepicker.directive.js | 197 +++ .../logisticinfotech-ionic4-datepicker.js | 11 + dist/ionic4-datepicker/esm5/public_api.js | 13 + .../logisticinfotech-ionic4-datepicker.js | 984 ++++++++++++ .../logisticinfotech-ionic4-datepicker.js.map | 1 + .../logisticinfotech-ionic4-datepicker.js | 1189 +++++++++++++++ .../logisticinfotech-ionic4-datepicker.js.map | 1 + .../ionic4-datepicker-modal.component.d.ts | 61 + .../lib/ionic4-datepicker.component.d.ts | 24 + .../lib/ionic4-datepicker.module.d.ts | 2 + .../lib/ionic4-datepicker.service.d.ts | 4 + .../lib/li-ionic4-datepicker.directive.d.ts | 20 + ...gisticinfotech-ionic4-datepicker-1.5.0.tgz | Bin 0 -> 145419 bytes .../logisticinfotech-ionic4-datepicker.d.ts | 5 + ...icinfotech-ionic4-datepicker.metadata.json | 1 + dist/ionic4-datepicker/package.json | 36 + dist/ionic4-datepicker/public_api.d.ts | 4 + 34 files changed, 6235 insertions(+) create mode 100644 dist/ionic4-datepicker/LICENSE create mode 100644 dist/ionic4-datepicker/README.md create mode 100644 dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js create mode 100644 dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.js.map create mode 100644 dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js create mode 100644 dist/ionic4-datepicker/bundles/logisticinfotech-ionic4-datepicker.umd.min.js.map create mode 100644 dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js create mode 100644 dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.component.js create mode 100644 dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.module.js create mode 100644 dist/ionic4-datepicker/esm2015/lib/ionic4-datepicker.service.js create mode 100644 dist/ionic4-datepicker/esm2015/lib/li-ionic4-datepicker.directive.js create mode 100644 dist/ionic4-datepicker/esm2015/logisticinfotech-ionic4-datepicker.js create mode 100644 dist/ionic4-datepicker/esm2015/public_api.js create mode 100644 dist/ionic4-datepicker/esm5/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.js create mode 100644 dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.component.js create mode 100644 dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.module.js create mode 100644 dist/ionic4-datepicker/esm5/lib/ionic4-datepicker.service.js create mode 100644 dist/ionic4-datepicker/esm5/lib/li-ionic4-datepicker.directive.js create mode 100644 dist/ionic4-datepicker/esm5/logisticinfotech-ionic4-datepicker.js create mode 100644 dist/ionic4-datepicker/esm5/public_api.js create mode 100644 dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js create mode 100644 dist/ionic4-datepicker/fesm2015/logisticinfotech-ionic4-datepicker.js.map create mode 100644 dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js create mode 100644 dist/ionic4-datepicker/fesm5/logisticinfotech-ionic4-datepicker.js.map create mode 100644 dist/ionic4-datepicker/lib/ionic4-datepicker-modal/ionic4-datepicker-modal.component.d.ts create mode 100644 dist/ionic4-datepicker/lib/ionic4-datepicker.component.d.ts create mode 100644 dist/ionic4-datepicker/lib/ionic4-datepicker.module.d.ts create mode 100644 dist/ionic4-datepicker/lib/ionic4-datepicker.service.d.ts create mode 100644 dist/ionic4-datepicker/lib/li-ionic4-datepicker.directive.d.ts create mode 100644 dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker-1.5.0.tgz create mode 100644 dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.d.ts create mode 100644 dist/ionic4-datepicker/logisticinfotech-ionic4-datepicker.metadata.json create mode 100644 dist/ionic4-datepicker/package.json create mode 100644 dist/ionic4-datepicker/public_api.d.ts 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 + +![Ionic4-Datepicker Gif](https://www.logisticinfotech.com/wp-content/uploads/2018/12/ionic4-datepicker.gif) + +# 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 \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":"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","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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGxvZ2lzdGljaW5mb3RlY2gvaW9uaWM0LWRhdGVwaWNrZXIvIiwic291cmNlcyI6WyJsaWIvaW9uaWM0LWRhdGVwaWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O0lBRTVCLE1BQU0sR0FBRyxPQUFPOztJQUVoQixJQUFJOzs7QUFBRztBQUNiLENBQUMsQ0FBQTs7O0FBRUQsTUFBTSxLQUFPLG1DQUFtQyxHQUFRO0lBQ3RELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVU7OztJQUFDLGNBQU0sT0FBQSx5QkFBeUIsRUFBekIsQ0FBeUIsRUFBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaO0FBQ0Q7SUFtQkUsbUNBQ1UsU0FBMEIsRUFDM0IsRUFBYyxFQUNkLFNBQW9CO1FBRm5CLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzNCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBWDdCLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBQ2YsZUFBVSxHQUFRLEVBQUUsQ0FBQzs7O1FBSXJCLHNCQUFpQixHQUFlLElBQUksQ0FBQztRQUNyQyxxQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO0lBTTlDLENBQUM7Ozs7SUFFTCw0Q0FBUTs7O0lBQVI7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QixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsc0NBQXNDOzs7Ozs7SUFDdEMscURBQWlCOzs7Ozs7SUFBakIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7O2dCQTNIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsMktBQWlEO29CQUVqRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQzs7aUJBQ2pEOzs7O2dCQW5CUSxlQUFlO2dCQUZ1QixVQUFVO2dCQUFFLFNBQVM7OztrQ0F3QmpFLEtBQUs7O0lBb0hSLGdDQUFDO0NBQUEsQUE1SEQsSUE0SEM7U0F0SFkseUJBQXlCOzs7SUFFcEMsb0RBQThCOztJQUU5Qiw4Q0FBVTs7SUFDVixpREFBdUI7Ozs7O0lBQ3ZCLCtDQUE2Qjs7Ozs7SUFJN0Isc0RBQTZDOzs7OztJQUM3QyxxREFBa0Q7Ozs7O0lBR2hELDhDQUFrQzs7SUFDbEMsdUNBQXFCOztJQUNyQiw4Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgZm9yd2FyZFJlZiwgSW5wdXQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgSW9uaWM0RGF0ZXBpY2tlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC9pb25pYzQtZGF0ZXBpY2tlci1tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcblxyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+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":"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"} 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 0000000000000000000000000000000000000000..b3e9d14a714d5c153cd8c51a3e7bae3debfa2eec GIT binary patch literal 145419 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�)xS7MdXWZQN}F^wPY<+D_cXWZh!oNf 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 Q@cl-_Xks1*T80JsFRcqZ1ONa4 literal 0 HcmV?d00001 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';