@wavemaker/app-ng-runtime 11.5.0-next.30508 → 11.5.0-next.40002

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. app-ng-runtime/components/base/bundles/index.umd.js +3 -21
  2. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  3. app-ng-runtime/components/base/esm2015/widgets/common/base/base-field-validations.js +4 -22
  4. app-ng-runtime/components/base/fesm2015/index.js +3 -21
  5. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  6. app-ng-runtime/components/basic/search/bundles/index.umd.js +1 -1
  7. app-ng-runtime/components/basic/search/bundles/index.umd.js.map +1 -1
  8. app-ng-runtime/components/basic/search/esm2015/search.component.js +2 -2
  9. app-ng-runtime/components/basic/search/fesm2015/index.js +1 -1
  10. app-ng-runtime/components/basic/search/fesm2015/index.js.map +1 -1
  11. app-ng-runtime/components/basic/search/index.metadata.json +1 -1
  12. app-ng-runtime/components/input/epoch/bundles/index.umd.js +2 -8
  13. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  14. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +1 -7
  15. app-ng-runtime/components/input/epoch/esm2015/date/date.props.js +2 -2
  16. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.props.js +2 -2
  17. app-ng-runtime/components/input/epoch/fesm2015/index.js +2 -8
  18. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  19. app-ng-runtime/http/bundles/index.umd.js +3 -3
  20. app-ng-runtime/http/bundles/index.umd.js.map +1 -1
  21. app-ng-runtime/http/esm2015/http.service.js +4 -4
  22. app-ng-runtime/http/fesm2015/index.js +3 -3
  23. app-ng-runtime/http/fesm2015/index.js.map +1 -1
  24. app-ng-runtime/http/http.service.d.ts +2 -2
  25. app-ng-runtime/package.json +1 -1
  26. app-ng-runtime/variables/bundles/index.umd.js +0 -1
  27. app-ng-runtime/variables/bundles/index.umd.js.map +1 -1
  28. app-ng-runtime/variables/esm2015/service/variables.service.js +1 -2
  29. app-ng-runtime/variables/fesm2015/index.js +0 -1
  30. app-ng-runtime/variables/fesm2015/index.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../../../../node_modules/tslib/tslib.es6.js","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time-picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/base-date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.props.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.props.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.props.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.component.ts","../../../../../projects/components/widgets/input/epoch/src/picker/picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/epoch.module.ts","../../../../../projects/components/widgets/input/epoch/src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\n\nimport { App } from '@wm/core';\n\ndeclare const moment, $, _;\n\n@Component({\n selector: 'wm-datetimepicker',\n template: `\n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n\n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\"\n class=\"btn btn-secondary today-btn\"\n (click)=\"setToday()\">{{appLocale.LABEL_TODAY_DATE || \"Today\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"\n (click)=\"onOkClick()\">{{appLocale.LABEL_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right clear-btn\"\n (click)=\"clear()\">{{appLocale.LABEL_CLEAR_DATE || \"Clear\" }}</button>\n </div>\n </div>\n </ng-template>\n `\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n\n private isDateOpen = true;\n\n private isTimeOpen = false;\n\n private appLocale: any;\n\n @ViewChild('datetimepickerTemplate' , { static: true }) datetimepickerTemplate: TemplateRef<any>;\n\n @Input()\n private mode: 'DATE' | 'TIME' | 'DATE_TIME' = 'DATE_TIME';\n\n @Input()\n private placement: 'MODAL' | 'INLINE' = 'MODAL';\n\n @Input(\"config\")\n private _bsDatepickerConfig: BsDatepickerConfig;\n\n @Input()\n private minTime: Date;\n\n @Input()\n private maxTime: Date;\n\n @Input()\n private _displayFormat: string;\n\n @Output() change = new EventEmitter<Date>();\n\n private _value = new Date();\n\n private changedValue = null;\n\n private modalRef: BsModalRef;\n\n @Input()\n private excludedDatesToDisable;\n\n constructor(\n protected inj: Injector,\n private bsModalService: BsModalService) {\n this.appLocale = inj.get(App).appLocale || {};\n }\n\n @Input()\n set value(d: Date) {\n d = d || new Date();\n this._value = d;\n this.changedValue = d;\n }\n\n\n @Input(\"config\")\n set bsDatepickerConfig(config: BsDatepickerConfig) {\n this._bsDatepickerConfig = config;\n this._bsDatepickerConfig.showClearButton = false;\n this._bsDatepickerConfig.showTodayButton = false;\n }\n\n @Input()\n set excludedDaysToDisable(v: number[]) {\n this._bsDatepickerConfig.daysDisabled = v;\n }\n\n get bsDatepickerConfig() {\n return this._bsDatepickerConfig;\n }\n\n @Input()\n set displayFormat(format: string) {\n if (format) {\n this._displayFormat = format.replace(/y/g, \"Y\").replace(/d/g, \"D\").replace(\"a\", \"A\");\n }\n }\n\n validateSelectedDate() {\n if (!this.changedValue) {\n return true;\n }\n const cd = moment(this.changedValue);\n const minDate = this._bsDatepickerConfig?.minDate;\n const maxDate = this._bsDatepickerConfig?.maxDate;\n if (minDate\n && ((this.mode === 'DATE' \n && moment(minDate).startOf('day').toDate() > this.changedValue)\n || (this.mode !== 'DATE' \n && minDate > this.changedValue))) {\n return false;\n }\n if (maxDate \n && ((this.mode === 'DATE' \n && moment(maxDate).endOf('day').toDate() < this.changedValue)\n || (this.mode !== 'DATE' \n && maxDate < this.changedValue))) {\n return false;\n }\n if (this._bsDatepickerConfig?.daysDisabled?.indexOf(cd.day()) >= 0) {\n return false;\n }\n const cdSt = cd.startOf('day').toDate().getTime();\n if (this.excludedDatesToDisable?.find(d => d.getTime() === cdSt)) {\n return false;\n }\n return true;\n }\n\n get displayFormat() {\n if (this._displayFormat) {\n return this._displayFormat;\n }\n }\n /**\n * This method is used to highlight the current date\n */\n private hightlightToday() {\n const toDay = new Date().getDate().toString();\n _.filter($(`body>modal-container .date-picker-modal span:contains(${toDay})`)\n .not('.is-other-month,.current-date'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n private hideOnClick() {\n $('body>modal-container .date-picker-modal .app-datetime-picker')\n .click(($event) => $event.stopPropagation());\n $('body>modal-container .date-picker-modal').click(() => this.onCancelClick());\n }\n\n getDateLabel() {\n return moment(this.changedValue).format(this.displayFormat);\n }\n\n openDatePicker() {\n this.isTimeOpen = false;\n this.isDateOpen = true;\n }\n\n openTimePicker() {\n this.isTimeOpen = true;\n this.isDateOpen = false;\n }\n\n public onDateUpdate(newVal) {\n const oldVal = this.changedValue;\n if (this.mode === 'DATE') {\n newVal.setHours(0);\n newVal.setMinutes(0);\n newVal.setSeconds(0);\n newVal.setMilliseconds(0);\n } else if (oldVal && newVal) {\n newVal.setHours(oldVal.getHours());\n newVal.setMinutes(oldVal.getMinutes());\n newVal.setSeconds(oldVal.getSeconds());\n newVal.setMilliseconds(oldVal.getMilliseconds());\n }\n this.changedValue = newVal;\n if (this.mode === 'DATE'\n && oldVal !== newVal\n && this.validateSelectedDate()) {\n this.onOkClick();\n }\n }\n\n public onTimeUpdate(newVal) {\n this.changedValue = newVal;\n }\n\n show() {\n this.reset();\n this.modalRef = this.bsModalService.show(this.datetimepickerTemplate, {\n animated: true,\n backdrop: 'static',\n class: 'date-picker-modal modal-dialog-centered'\n });\n setTimeout(() => { this.hideOnClick()}, 500);\n }\n\n clear() {\n this.changedValue = null;\n this.triggerChange();\n this.hideModal();\n }\n\n setToday() {\n const today = moment().startOf('day').toDate();\n this.onDateUpdate(today);\n }\n\n reset() {\n this.changedValue = this._value;\n }\n\n hideModal() {\n if (this.modalRef?.id) {\n this.bsModalService.hide(this.modalRef.id);\n }\n }\n\n onCancelClick() {\n this.changedValue = this._value;\n this.hideModal();\n }\n\n onOkClick() {\n if (this.validateSelectedDate()) {\n this.triggerChange();\n }\n this.hideModal();\n }\n\n triggerChange() {\n if (this.value !== this.changedValue) {\n this.change.emit(this.changedValue);\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this.hideModal();\n }\n\n}\n\n\n@Component({\n selector: 'wm-timepicker',\n template: `\n <wm-pickergroup>\n <wm-picker\n [options]=\"options.hour\"\n [selectedValue]=\"hour\"\n (change)=\"set($event, 'HOUR')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"minute\"\n (change)=\"set($event, 'MINUTE')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"second\"\n (change)=\"set($event, 'SECOND')\"></wm-picker>\n </wm-pickergroup>\n `\n})\nexport class TimePickerComponent implements AfterViewInit {\n\n options = {\n hour: [],\n minute: [],\n second: [],\n meridian: ['AM', 'PM']\n };\n\n @Input()\n private value = new Date();\n\n @Input()\n private min: Date = null;\n\n @Input()\n private max: Date = null;\n\n @Output() change = new EventEmitter<Date>();\n\n constructor(\n protected inj: Injector) {\n this.options.hour = this.populateNumbers(0, 23);\n this.options.minute = this.populateNumbers(0, 59);\n this.options.second = this.populateNumbers(0, 59);\n }\n\n private populateNumbers(start: number, to: number) {\n const arr = [];\n for(let i = start; i <= to; i++) {\n arr.push({\n label: (i < 10 ? '0' : '') + i,\n value: i\n })\n }\n return arr;\n }\n\n set({index, value}, unit: 'HOUR' | 'MINUTE' | 'SECOND' | 'MERIDIAN') {\n if (unit === 'HOUR') {\n this.value = moment(this.value).hour(parseInt(value)).toDate();\n } else if (unit === 'MINUTE') {\n this.value = moment(this.value).minute(parseInt(value)).toDate();\n } else if (unit === 'SECOND') {\n this.value = moment(this.value).second(parseInt(value)).toDate();\n } else if (unit === 'MERIDIAN') {\n this.value = moment(this.value).minute(value).toDate();\n }\n if (this.min && this.value < this.min) {\n this.value = this.min;\n }\n if (this.max && this.value > this.max) {\n this.value = this.max;\n }\n this.change.emit(this.value);\n }\n\n get hour() {\n return moment(this.value).hour();\n }\n\n get minute() {\n return moment(this.value).minute();\n }\n\n get second() {\n return moment(this.value).second();\n }\n\n get meridian() {\n return 'AM';\n }\n\n public onDateUpdate(newVal) {\n debugger;\n }\n\n ngAfterViewInit(): void {\n\n }\n\n}\n","import { AfterViewInit, Injector, OnDestroy, ViewChild, Directive } from '@angular/core';\nimport { Validator, AbstractControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { getLocaleDayPeriods, FormStyle, TranslationWidth } from '@angular/common';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { TimepickerComponent, TimepickerConfig } from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n getDateObj,\n getFormattedDate,\n getNativeDateObject,\n hasCordova,\n isIos,\n isMobile,\n isString,\n setAttr\n} from '@wm/core';\n\nimport { getContainerTargetClass, ToDatePipe } from '@wm/components/base';\nimport { BaseFormCustomComponent } from '@wm/components/input';\nimport { BsDatepickerConfig, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { DateTimePickerComponent } from './date-time//date-time-picker.component';\n\ndeclare const moment, _, $;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DATEPICKER_DROPDOWN_OPTIONS = {\n BUTTON: 'button',\n DEFAULT: 'default'\n};\nconst DATAENTRYMODE_DROPDOWN_OPTIONS = {\n PICKER: 'picker',\n DEFAULT: 'default'\n};\n\n// Providing meridians to the timepicker baesd on selected locale\nexport function getTimepickerConfig(i18nService): TimepickerConfig {\n return Object.assign(new TimepickerConfig(), {\n meridians: getLocaleDayPeriods(i18nService.getSelectedLocale(), FormStyle.Format, TranslationWidth.Abbreviated)\n });\n}\n\n@Directive()\nexport abstract class BaseDateTimeComponent extends BaseFormCustomComponent implements AfterViewInit, OnDestroy, Validator {\n public required: boolean;\n public disabled: boolean;\n public tabindex: any;\n public name: string;\n public autofocus: boolean;\n public readonly: boolean;\n public placeholder: string;\n public shortcutkey: string;\n public _triggeredByUser: boolean;\n\n public excludedays: string;\n public excludedDaysToDisable: Array<number>;\n public excludedDatesToDisable: Array<Date>;\n public excludedates;\n public outputformat;\n public mindate;\n public maxdate;\n public dataentrymode;\n protected activeDate;\n private keyEventPluginInstance;\n private elementScope;\n public datepattern;\n public timepattern;\n protected showseconds: boolean;\n protected ismeridian: boolean;\n protected meridians: any;\n protected datePipe;\n protected i18nService;\n public isReadOnly = false;\n protected selectedLocale: string;\n public selectfromothermonth: boolean;\n public todaybutton: boolean;\n public clearbutton: boolean;\n public removeKeyupListener;\n public loadNativeDateInput;\n public showcustompicker;\n public next;\n public prev;\n public clicked = false;\n\n protected dateNotInRange: boolean;\n protected timeNotInRange: boolean;\n protected invalidDateTimeFormat: boolean;\n\n private dateOnShowSubscription: Subscription;\n private cancelLocaleChangeSubscription;\n public get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }\n\n formatsByLocale = {'timezone': ''};\n\n /**\n * This is an internal property used to map the containerClass, showWeekNumbers etc., to the bsDatepicker\n */\n public _dateOptions: BsDatepickerConfig = new BsDatepickerConfig();\n protected bsDatePickerDirective: BsDatepickerDirective;\n\n @ViewChild(BsDropdownDirective) protected bsDropdown;\n @ViewChild(TimepickerComponent) protected bsTimePicker;\n @ViewChild(DateTimePickerComponent) datetimepickerComponent;\n private validateType: string;\n containerTarget: string;\n\n constructor(inj: Injector, WIDGET_CONFIG) {\n super(inj, WIDGET_CONFIG);\n this.i18nService = this.inj.get(AbstractI18nService);\n this.invokeEventCallback('beforeload');\n\n this.datePipe = this.inj.get(ToDatePipe);\n this.selectedLocale = this.i18nService.getSelectedLocale();\n this._dateOptions.todayPosition = 'left';\n this._dateOptions.clearPosition = 'right';\n this.meridians = getLocaleDayPeriods(this.selectedLocale, FormStyle.Format, TranslationWidth.Abbreviated);\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (locale) => {\n this.datePipe.datePipe.locale = locale.angular;\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage('LABEL_TODAY_DATE');\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage('LABEL_CLEAR_DATE');\n });\n }\n\n\n /**\n * returns true if the input value is default (i.e open date picker on input click)\n * @param1 dropdownvalue, user selected value (by default datepicker opens on input click)\n * **/\n protected isDropDownDisplayEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATEPICKER_DROPDOWN_OPTIONS.DEFAULT;\n }\n\n /**\n * returns true if the input value is default (i.e Data entry can be done either by selecting from the Date/DateTime/Time Picker or by entering manually using the keyboard. )\n * @param1 dropdownvalue, user selected value\n * **/\n protected isDataEntryModeEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATAENTRYMODE_DROPDOWN_OPTIONS.DEFAULT;\n }\n /**\n * This method is used to show validation message depending on the isNativePicker flag.\n */\n private showValidation($event, displayValue, isNativePicker, msg) {\n if (isNativePicker) {\n console.warn('min max date validation failed ', msg);\n return $($event.target).val(displayValue);\n }\n }\n\n resetDisplayInput() {\n $(this.nativeElement).find('.display-input').val('');\n }\n\n public validate(c: AbstractControl) {\n if (this.invalidDateTimeFormat) {\n return {\n invalidDateTimeFormat: {\n valid: false\n }\n };\n }\n if (!_.isUndefined(this.dateNotInRange) && this.dateNotInRange) {\n return {\n dateNotInRange: {\n valid: false\n },\n };\n }\n if (!_.isUndefined(this.timeNotInRange) && this.timeNotInRange) {\n return {\n timeNotInRange: {\n valid: false\n },\n };\n }\n /* WMS-18269 | Extending the existing validation for 'required' */\n if (this['show'] && this['required']) {\n return !!c.value ? null : { required: true };\n }\n this.validateType = '';\n return null;\n }\n\n /**\n * This method is used to validate date pattern and time pattern\n * If user selects one pattern in design time and if he tries to enter the date in another pattern then the device is throwing an error\n */\n protected formatValidation(newVal, inputVal, isNativePicker?: boolean) {\n const pattern = this.datepattern || this.timepattern;\n const timeZone = this.timeZone;\n const formattedDate = getFormattedDate(this.datePipe, newVal, pattern, timeZone, null, null, this);\n inputVal = inputVal.trim();\n if (inputVal) {\n if (pattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n } else {\n if (isNativePicker) {\n // format the date value only when inputVal is obtained from $event.target.value, as the format doesnt match.\n inputVal = getFormattedDate(this.datePipe, inputVal, pattern, timeZone);\n }\n if (inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n }\n\n }\n return true;\n }\n\n /**\n * This method is used to validate min date, max date, exclude dates and exclude days\n * In mobile if invalid dates are entered, device is showing an alert.\n * In web if invalid dates are entered, device is showing validation message.\n */\n protected minDateMaxDateValidationOnInput(newVal, $event?: Event, displayValue?: string, isNativePicker?: boolean) {\n if (newVal) {\n const dateTimeVal = newVal;\n newVal = moment(newVal).startOf('day').toDate();\n const minDate = moment(getDateObj(this.mindate)).startOf('day').toDate();\n const maxDate = moment(getDateObj(this.maxdate)).startOf('day').toDate();\n if (this.mindate && newVal < minDate) {\n const msg = `${this.appLocale.LABEL_MINDATE_VALIDATION_MESSAGE} ${this.mindate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, minDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'mindate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.maxdate && newVal > maxDate) {\n const msg = `${this.appLocale.LABEL_MAXDATE_VALIDATION_MESSAGE} ${this.maxdate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, maxDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'maxdate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.excludedates) {\n let excludeDatesArray;\n if (isString(this.excludedates)) {\n excludeDatesArray = _.split(this.excludedates, ',');\n } else {\n excludeDatesArray = this.excludedates;\n }\n excludeDatesArray = excludeDatesArray.map(d => getFormattedDate(this.datePipe, d, this.datepattern, this.timeZone, null, null, this));\n if (excludeDatesArray.indexOf(getFormattedDate(this.datePipe, dateTimeVal, this.datepattern, this.timeZone, null, null, this)) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedates';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n if (this.excludedays) {\n const excludeDaysArray = _.split(this.excludedays, ',');\n const day = _.get(dateTimeVal, 'getDay') ? dateTimeVal.getDay() : dateTimeVal;\n if (excludeDaysArray.indexOf(day.toString()) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedays';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n }\n\n if (!isNativePicker) {\n this.dateNotInRange = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n }\n\n /**\n * This method is used to highlight the current date\n */\n protected hightlightToday() {\n const toDay = new Date().getDate().toString();\n _.filter($(`span:contains(${toDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n /**\n * This method is used to find the new date is from another year or not\n * @param newDate - newly selected date value\n */\n private isOtheryear(newDate) {\n return (newDate.getMonth() === 0 && this.activeDate.getMonth() === 11) || (newDate.getMonth() === 11 && this.activeDate.getMonth() === 0);\n }\n\n /**\n * This method is used to set focus for active day\n * @param newDate - newly selected date value\n * @param isMouseEvent - boolean value represents the event is mouse event/ keyboard event\n */\n private setActiveDateFocus(newDate, isMouseEvent?: boolean) {\n this.setNextData(newDate);\n const activeMonth = this.activeDate.getMonth();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getMonth() < activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('next', 'days') : this.goToOtherMonthOryear('previous', 'days');\n } else if (newDate.getMonth() > activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('previous', 'days') : this.goToOtherMonthOryear('next', 'days');\n }\n }\n setTimeout(() => {\n const newDay = newDate.getDate().toString();\n _.filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === newDay) {\n if ($(obj).hasClass('selected')) {\n $(obj).parent().attr('aria-selected', 'true');\n }\n $(obj).attr('aria-label', moment(newDate).format('dddd, MMMM Do YYYY'));\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '-1');\n $(obj).attr('tabindex', '0');\n $(obj).focus();\n this.activeDate = newDate;\n }\n });\n if (newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n this.hightlightToday();\n }\n });\n\n }\n\n /**\n * This method is used to load other month days or other month or other year\n * @param btnClass - class(previous/next) of the button which we have to click\n * @param timePeriod - String value decides to load other month days or other month or other year\n */\n private goToOtherMonthOryear(btnClass, timePeriod) {\n const $node = $(`.bs-datepicker-head .${btnClass}`);\n if ($node.attr('disabled')) {\n return;\n }\n $node.trigger('click');\n if (timePeriod === 'days') {\n this.loadDays();\n } else if (timePeriod === 'month') {\n this.loadMonths();\n } else if (timePeriod === 'year') {\n this.loadYears();\n }\n }\n\n private getMonth(date, inc) {\n const currentMonth = new Date(date);\n\n let month = currentMonth.getMonth();\n const year = currentMonth.getFullYear();\n\n month += inc;\n\n const newDate = new Date(year, month);\n\n const fullMonth = newDate.toLocaleString('en-US', { month: 'long' });\n\n return {\n date: newDate,\n fullMonth: fullMonth\n };\n }\n\n /**\n * This method sets the mouse events to Datepicker popup. These events are required when we navigate date picker through mouse.\n */\n private addDatepickerMouseEvents() {\n const datePickerHead = $(`.bs-datepicker-head`);\n datePickerHead.find(`.previous`).click((event) => {\n this.next = this.getMonth(this.activeDate, 0);\n this.prev = this.getMonth(this.activeDate, -2);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(-1);\n }\n var prevMon = this.getMonth(this.activeDate, -1);\n $(`.bs-datepicker-head .previous`).prepend(`<p aria-hidden=\"false\" class=\"sr-only\">Changed to Previous Month, ${prevMon.fullMonth} and year ${prevMon.date.getFullYear()}</p>`);\n\n setTimeout(() => {\n $(`.bs-datepicker-head .previous`).focus();\n });\n\n });\n datePickerHead.find(`.next`).click((event) => {\n this.next = this.getMonth(this.activeDate, 2);\n this.prev = this.getMonth(this.activeDate, 0);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(1);\n }\n var nextMon = this.getMonth(this.activeDate, 1);\n $(`.bs-datepicker-head .next`).prepend(`<p aria-hidden=\"false\" class=\"sr-only\">Changed to Next Month, ${nextMon.fullMonth} and year ${nextMon.date.getFullYear()}</p>`);\n setTimeout(() => {\n $(`.bs-datepicker-head .next`).focus();\n });\n\n });\n datePickerHead.find(`.current`).click((event) => {\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForCurrentMonthOryear();\n }\n });\n $('.bs-datepicker-body, .bs-datepicker-action-buttons').click((event) => {\n event.stopPropagation();\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForMonthOrDay();\n }\n });\n if(!this.clicked) {\n datePickerHead.find('.next').attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n datePickerHead.find('.previous').attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n }\n }\n\n /**\n * This method sets focus for months/days depending on the loaded datepicker table\n */\n private setFocusForMonthOrDay() {\n const activeMonthOrYear = $(`.bs-datepicker-head .current`).first().text();\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n if (_.parseInt(activeMonthOrYear) !== this.activeDate.getFullYear()) {\n this.loadMonths();\n }\n const newDate = new Date(_.parseInt(activeMonthOrYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n const newMonth = months.indexOf(activeMonthOrYear);\n if (newMonth !== this.activeDate.getMonth()) {\n this.loadDays();\n }\n const newDate = new Date(this.activeDate.getFullYear(), newMonth, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years depending on the loaded datepicker table\n */\n private setFocusForCurrentMonthOryear() {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n this.setActiveYearFocus(this.activeDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years/days depending on the loaded datepicker table\n */\n private setFocusForDate(count) {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n const newDate = new Date(this.activeDate.getFullYear() + count, 0, this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n const startYear = datePickerBody.find('table.years span').first().text();\n const newDate = new Date(_.parseInt(startYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveYearFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth() + count, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method is used to add keyboard events while opening the date picker\n * @param scope - scope of the date/datetime widget\n * @param isDateTime - boolean value represents the loaded widget is date or datetime\n */\n protected addDatepickerKeyboardEvents(scope, isDateTime) {\n this.keyEventPluginInstance = scope.keyEventPlugin.constructor;\n this.elementScope = scope;\n const dateContainer = document.querySelector(`.${scope.dateContainerCls}`) as HTMLElement;\n setAttr(dateContainer, 'tabindex', '0');\n dateContainer.onkeydown = (event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n // Check for Shift+Tab key or Tab key or escape\n if (action === 'escape') {\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n };\n this.loadDays();\n this.setActiveDateFocus(this.activeDate);\n }\n private setNextData(nextDate) {\n this.next = this.getMonth(nextDate, 1);\n this.prev = this.getMonth(nextDate, -1);\n }\n /**\n * This method is used to add tabindex, keybord and mouse events for days\n */\n private loadDays() {\n setTimeout(() => {\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '0');\n // if (this.clicked === false) {\n // this.next = this.getMonth(this.activeDate, 1);\n // this.prev = this.getMonth(this.activeDate, -1);\n // }\n this.addKeyBoardEventsForDays();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for days\n */\n private addKeyBoardEventsForDays() {\n const datePickerBody = $('.bs-datepicker-body');\n datePickerBody.keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'pageup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'pagedown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'control.arrowup') {\n // clicking on table header month name to load list of months\n $('.bs-datepicker-head .current').first().click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (action === 'enter') {\n if ($(document.activeElement).hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n private focusBlurDatePickerHeadButtons() {\n const datePickerHeadButton = $('.bs-datepicker-head button');\n datePickerHeadButton.on('focus', function() { $(this).css('background-color', '#9AA0A3'); });\n datePickerHeadButton.on('blur', function() { $(this).css('background-color', ''); });\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for months\n */\n private loadMonths() {\n setTimeout(() => {\n this.addKeyBoardEventsForMonths();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for months\n */\n private addKeyBoardEventsForMonths() {\n $('.bs-datepicker-body').keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'control.arrowup') {\n // clicking on table header year to load list of years\n $('.bs-datepicker-head .current').first().click();\n this.loadYears();\n this.setActiveYearFocus(this.activeDate);\n } else if (action === 'control.arrowdown' || action === 'enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth(), 1);\n this.setActiveDateFocus(newDate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for years\n */\n private loadYears() {\n setTimeout(() => {\n this.addKeyBoardEventsForYears();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method is used to set focus for active month\n */\n private setActiveMonthFocus(newDate, isMoouseEvent?: boolean) {\n this.setNextData(newDate);\n const newMonth = months[newDate.getMonth()];\n // check for keyboard event\n if (!isMoouseEvent) {\n if (newDate.getFullYear() < this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('previous', 'month');\n } else if (newDate.getFullYear() > this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('next', 'month');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.months span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets keyboard events for years\n */\n private addKeyBoardEventsForYears() {\n $('.bs-datepicker-body').keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'control.arrowdown' || action === 'enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to set focus for active year\n */\n private setActiveYearFocus(newDate, isMouseEvent?: boolean) {\n const newYear = newDate.getFullYear();\n const datePickerYears = $('.bs-datepicker-body table.years span');\n const startYear = datePickerYears.first().text();\n const endYear = datePickerYears.last().text();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getFullYear() < _.parseInt(startYear)) {\n this.goToOtherMonthOryear('previous', 'year');\n } else if (newDate.getFullYear() > _.parseInt(endYear)) {\n this.goToOtherMonthOryear('next', 'year');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.years span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets focus for timepicker first input field(hours field) while opening time picker\n * @param scope - scope of the time picker widget\n */\n protected focusTimePickerPopover(scope) {\n this.keyEventPluginInstance = scope.keyEventPlugin.constructor;\n this.elementScope = scope;\n // setTimeout is used so that by then time input has the updated value. focus is setting back to the input field\n this.elementScope.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n $('timepicker .form-group').first().find('> input.form-control').focus();\n });\n });\n\n\n }\n /**\n * This function sets the keyboard events to Timepicker popup\n */\n protected bindTimePickerKeyboardEvents() {\n setTimeout(() => {\n const $timepickerPopup = $('body').find('> bs-dropdown-container timepicker');\n $timepickerPopup.attr('tabindex', 0);\n this.addEventsOnTimePicker($timepickerPopup);\n });\n }\n\n protected focusOnInputEl() {\n if ($(this.nativeElement).closest('.caption-floating').length > 0) {\n setTimeout(() => {\n $(this.nativeElement).find('.app-textbox').focus();\n }, 100);\n }\n }\n\n /**\n * This function checks whether the given date is valid or not\n * @returns boolean value, true if date is valid else returns false\n */\n private isValidDate(date) {\n return date && date instanceof Date && !isNaN(date.getTime());\n }\n\n /**\n * This function checks whether the given time is valid or not\n */\n private timeFormatValidation() {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.datepattern});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n private updateTimeValue(value, fieldName) {\n if (value.length < 2) {\n setTimeout(() => {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes('00') : this.bsTimePicker.updateSeconds('00');\n }, 500);\n } else {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes('00') : this.bsTimePicker.updateSeconds('00');\n }\n }\n\n /**\n * This function sets the events to given element\n * @param $el - element on which the event is added\n */\n private addEventsOnTimePicker($el: JQuery) {\n const inputFields = $el.find('.bs-timepicker-field');\n // WMS-19382: update minutes and seconds to 0 when we enter hour value\n inputFields.first().on('keyup', evt => {\n const hourValue = (evt.target as any).value;\n _.forEach(inputFields, (field, index) => {\n if (evt.target !== field && field.value === '' && hourValue.length) {\n const fieldName = index === 1 ? 'minutes' : 'seconds';\n this.updateTimeValue(hourValue, fieldName);\n }\n });\n });\n this.removeKeyupListener = () => {\n inputFields.first().off('keyup');\n };\n $el.on('keydown', evt => {\n const $target = $(evt.target);\n const $parent = $target.parent();\n const elementScope = this.elementScope;\n\n const action = this.keyEventPluginInstance.getEventFullKey(evt);\n\n let stopPropogation, preventDefault;\n\n if (action === 'escape') {\n elementScope.hideTimepickerDropdown();\n }\n\n if ($target.hasClass('bs-timepicker-field')) {\n if ($parent.is(':first-child')) {\n if (action === 'shift.tab' || action === 'enter' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else if ($parent.is(':last-child') || ($parent.next().next().find('button.disabled').length)) {\n if (action === 'tab' || action === 'escape' || action === 'enter') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else {\n if (action === 'enter' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n }\n if (stopPropogation) {\n evt.stopPropagation();\n }\n if (preventDefault) {\n evt.preventDefault();\n }\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if (action === 'arrowdown') {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if (action === 'arrowup') {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n if (action === 'tab') {\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n const pattern = this.datepattern || this.timepattern;\n if (getFormattedDate(elementScope.datePipe, elementScope.bsTimeValue, pattern, this.timeZone, null, null, this) === elementScope.displayValue) {\n $(this.nativeElement).find('.display-input').val(elementScope.displayValue);\n }\n }\n if (action === 'arrowdown' || action === 'arrowup') {\n this.timeFormatValidation();\n }\n } else if ($target.hasClass('btn-default')) {\n if (action === 'tab' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n }\n }\n });\n $el.find('a').on('click', evt => {\n const elementScope = this.elementScope;\n const $target = $(evt.target);\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if ($target.find('span').hasClass('bs-chevron-down')) {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if ($target.find('span').hasClass('bs-chevron-up')) {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n this.timeFormatValidation();\n });\n }\n\n public updateFormat(pattern) {\n if (pattern === 'datepattern') {\n this._dateOptions.dateInputFormat = this.datepattern;\n this.showseconds = _.includes(this.datepattern, 's');\n this.ismeridian = _.includes(this.datepattern, 'h');\n } else if (pattern === 'timepattern') {\n this.showseconds = _.includes(this.timepattern, 's');\n this.ismeridian = _.includes(this.timepattern, 'h');\n }\n }\n\n getMobileInput() {\n return this.nativeElement.querySelector('.mobile-input') as HTMLElement;\n }\n\n onDateTimeInputBlur() {\n // removing the opacity on blur of the mobile widget\n const displayInputElem = this.getMobileInput();\n if (displayInputElem && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.remove('add-opacity');\n }\n displayInputElem.classList.remove('remove-opacity');\n }\n }\n\n onDateTimeInputFocus(skipFocus: boolean = false): void {\n if (!this.loadNativeDateInput) {\n return;\n }\n const displayInputElem = this.getMobileInput();\n // toggling the classes to show and hide the native widget using opacity\n if (skipFocus && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.add('add-opacity');\n }\n displayInputElem.classList.add('remove-opacity');\n return;\n }\n\n if (displayInputElem && this._triggeredByUser) {\n displayInputElem.focus();\n displayInputElem.click();\n }\n }\n\n getCordovaPluginDatePickerApi() {\n if (isIos()) {\n return _.get(window, 'cordova.wavemaker.datePicker.selectDate');\n }\n }\n\n public showDatePickerModal() {\n this.datetimepickerComponent.show();\n return ;\n }\n\n blurDateInput(isPickerOpen) {\n const displayInputElem = this.nativeElement.querySelector('.display-input') as HTMLElement;\n if (isPickerOpen) {\n setTimeout(() => displayInputElem.blur());\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n\n if (key === 'tabindex') {\n return;\n }\n if (key === 'required') {\n this._onChange(this.datavalue);\n return;\n }\n if (key === 'datepattern') {\n this.updateFormat(key);\n } else if (key === 'showweeks') {\n this._dateOptions.showWeekNumbers = nv;\n } else if (key === 'mindate') {\n this._dateOptions.minDate = (nv === CURRENT_DATE) ? this.mindate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'maxdate') {\n this._dateOptions.maxDate = (nv === CURRENT_DATE) ? this.maxdate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'excludedates' || key === 'excludedays') {\n if (this.excludedays) {\n this.excludedDaysToDisable = _.split(this.excludedays, ',').map((day) => {\n return +day;\n });\n }\n if (this.excludedates) {\n this.excludedDatesToDisable = this.excludedates;\n if (isString(this.excludedates)) {\n this.excludedDatesToDisable = _.split(this.excludedates, ',');\n }\n this.excludedDatesToDisable = this.excludedDatesToDisable.map(d => getDateObj(d));\n }\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'selectfromothermonth') {\n this._dateOptions.selectFromOtherMonth = nv;\n\n } else if (key === 'todaybutton') {\n this._dateOptions.showTodayButton = nv;\n } else if (key === 'clearbutton') {\n this._dateOptions.showClearButton = nv;\n } else if (key === 'todaybuttonlabel') {\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'clearbuttonlabel') {\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'showcustompicker') {\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n } else if (key === 'adaptiveposition') {\n this._dateOptions.adaptivePosition = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n this.isReadOnly = this.dataentrymode != 'undefined' && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);\n\n // this mobileinput width varies in ios hence setting width here.\n const mobileInput = this.getMobileInput();\n if (mobileInput) {\n setTimeout(() => {\n mobileInput.style.width = '100%';\n mobileInput.style.height = '100%';\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateOnShowSubscription) {\n this.dateOnShowSubscription.unsubscribe();\n }\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n\n super.ngOnDestroy();\n }\n\n public ngOnDetach() {\n this.datetimepickerComponent?.hideModal();\n }\n\n setTimezone(locale) {\n this.i18nService.setTimezone(locale, this);\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\nimport { FormWidgetType, isMobileApp } from '@wm/core';\n\nexport const dateProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['name', PROP_STRING],\n ['outputformat', { value: 'yyyy-MM-dd', ...PROP_STRING }],\n ['placeholder', { value: 'Select Date', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', { value: true, ...PROP_BOOLEAN }], // TODO not addressed\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', { value: false, ...PROP_BOOLEAN }],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-date',\n dateProps\n );\n registerFormWidget(\n FormWidgetType.DATE,\n new Map(dateProps)\n );\n};\n","import { ChangeDetectorRef, Component, Inject, Injector, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\n\nimport { adjustContainerPosition, addEventListenerOnElement, AppDefaults, EVENT_LIFE, FormWidgetType, getDateObj, getDisplayDateTimeFormat, getFormattedDate, adjustContainerRightEdges, getMomentLocaleObject, App } from '@wm/core';\nimport {IWidgetConfig, provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\nimport { BaseDateTimeComponent } from './../base-date-time.component';\nimport { registerProps } from './date.props';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\n\ndeclare const _, $, moment;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst DEFAULT_CLS = 'app-date input-group';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-date',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: '[wmDate]',\n templateUrl: './date.component.html',\n providers: [\n provideAs(DateComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DateComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DateComponent)\n ]\n})\nexport class DateComponent extends BaseDateTimeComponent {\n static initializeProps = registerProps();\n\n public bsDataValue;\n public showdropdownon: string;\n private dateContainerCls: string;\n public isOpen: boolean = false;\n private isEnterPressedOnDateInput = false;\n private _bsDefaultLoadCheck: boolean;\n public hint: string;\n\n private keyEventPlugin;\n private deregisterEventListener;\n private isCurrentDate;\n private focusTrap;\n\n get timestamp() {\n return this.bsDataValue ? this.bsDataValue.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-dd';\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, 'yyyy-MM-dd', this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // @ts-ignore\n get datavalue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.outputformat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // Todo[Shubham]: needs to be redefined\n // sets the dataValue and computes the display model values\n // @ts-ignore\n set datavalue(newVal) {\n if (newVal === CURRENT_DATE) {\n setTimeout(() => {\n this.bsDataValue = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n }, 50);\n this.isCurrentDate = true;\n } else {\n this.bsDataValue = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.isCurrentDate = false;\n }\n // update the previous datavalue.\n this.invokeOnChange(this.datavalue, undefined, true);\n this.cdRef.detectChanges();\n }\n\n @ViewChild(BsDatepickerDirective) protected bsDatePickerDirective;\n\n // TODO use BsLocaleService to set the current user's locale to see the localized labels\n constructor(\n inj: Injector,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n styler(this.nativeElement, this);\n\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this._bsDefaultLoadCheck = true;\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method triggered when the date input changes\n */\n onDisplayDateChange($event, isNativePicker: boolean = false) {\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n const newVal = getDateObj($event.target.value, {pattern: this.datepattern, isNativePicker: isNativePicker});\n // date pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.setDataValue(newVal);\n }\n\n // sets the dataValue and computes the display model values\n private setDataValue(newVal): void {\n this.invalidDateTimeFormat = false;\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n if (newVal) {\n this.bsDataValue = newVal;\n } else {\n this.bsDataValue = undefined;\n }\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n onDatePickerOpen() {\n this.isOpen = true;\n this.bsDataValue ? this.activeDate = this.bsDataValue : this.activeDate = new Date();\n if (!this.bsDataValue) {\n this.hightlightToday();\n }\n\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0, so bootstrap calculating the calendar container top position improperly.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n this.addDatepickerKeyboardEvents(this, false);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n adjustContainerRightEdges($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n\n public hideDatepickerDropdown() {\n this.invokeOnTouched();\n this.isOpen = false;\n this.focusTrap?.deactivate();\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.blurDateInput(this.isOpen);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n // this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.isOpen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the date input\n */\n public onDisplayKeydown(event) {\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter') {\n const newVal = getDateObj(event.target.value, {pattern: this.datepattern});\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = event.target.value ? newVal : '';\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the date selection changes\n */\n onDateChange(newVal): void {\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n /**\n * Ngx-bootstrap upgrade : To avoid the page load datechange event;\n * TODO:\n * https://github.com/valor-software/ngx-bootstrap/issues/6016\n * For above issue, once we get the solution from Ngx-Bootstrap team, remove the _bsDefaultLoadCheck check and update accordingly.\n * */\n if (this._bsDefaultLoadCheck) {\n this._bsDefaultLoadCheck = false;\n return;\n }\n this.setDataValue(newVal);\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: true, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n","import { AfterViewInit, ChangeDetectorRef, Component, Inject, Injector, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\n\nimport { AbstractI18nService, addClass, addEventListenerOnElement, adjustContainerPosition, AppDefaults, EVENT_LIFE, FormWidgetType, getDateObj, getDisplayDateTimeFormat, getFormattedDate, getNativeDateObject, adjustContainerRightEdges, App, getMomentLocaleObject } from '@wm/core';\nimport {provideAsWidgetRef, provideAs, styler, setFocusTrap} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './date-time.props';\n\ndeclare const moment, $, _;\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public showdropdownon: string;\n private keyEventPlugin;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n return getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = _.debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n _.forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n if (!this.bsDateValue) {\n this.hightlightToday();\n }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(formattedDate, timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i=0; i<timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if(this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput}) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter' || action === 'arrowdown') {\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians}) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const timeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['hourstep', {value: 1, ...PROP_NUMBER}],\n ['maxtime', PROP_STRING],\n ['mintime', PROP_STRING],\n ['minutestep', {value: 15, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['outputformat', {value: 'HH:mm:ss', ...PROP_STRING}],\n ['placeholder', {value: 'Select time', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showdropdownon', {value: 'default', ...PROP_STRING}],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['secondsstep', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['timepattern', PROP_STRING],\n ['timestamp', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-time',\n timeProps\n );\n registerFormWidget(\n FormWidgetType.TIME,\n new Map(timeProps)\n );\n};\n","import { Component, Inject, Injector, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\nimport {\n $appDigest,\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getNativeDateObject,\n getMomentLocaleObject\n} from '@wm/core';\nimport { provideAsWidgetRef, provideAs, styler } from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './time.props';\n\nconst CURRENT_TIME = 'CURRENT_TIME';\nconst DEFAULT_CLS = 'input-group app-timeinput';\nconst WIDGET_CONFIG = {widgetType: 'wm-time', hostClass: DEFAULT_CLS};\n\ndeclare const _, moment, $;\n\n@Component({\n selector: '[wmTime]',\n templateUrl: './time.component.html',\n providers: [\n provideAs(TimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class TimeComponent extends BaseDateTimeComponent implements OnDestroy {\n static initializeProps = registerProps();\n /**\n * This property sets the display pattern of the time selected\n */\n timepattern: string;\n\n /**\n * This property sets the output format for the selected time datavalue\n */\n outputformat: string;\n\n public showdropdownon: string;\n public mintime;\n public maxtime;\n public hint: string;\n\n private deregisterEventListener;\n private app: App;\n private displayInputElem: HTMLElement;\n\n get timestamp() {\n return this.bsTimeValue ? this.bsTimeValue.valueOf() : undefined;\n }\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentTime && !this.bsTimeValue) {\n return CURRENT_TIME;\n }\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.outputformat, this.timeZone, null, null, this) || '';\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the time selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal) {\n if (newVal === CURRENT_TIME) {\n this.isCurrentTime = true;\n this.setTimeInterval();\n } else {\n this.clearTimeInterval();\n this.bsTimeValue = getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput});\n this.isCurrentTime = false;\n this.mintimeMaxtimeValidation();\n }\n } else {\n this.bsTimeValue = undefined;\n this.clearTimeInterval();\n this.isCurrentTime = false;\n }\n this.invokeOnChange(this.datavalue);\n $appDigest();\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.timepattern, this.timeZone, null, null, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, 'HH:mm:ss', this.timeZone, null, null, this) || '';\n }\n\n /* Internal property to have a flag to check the given datavalue is of Current time*/\n public isCurrentTime: boolean;\n\n private timeinterval: any;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private minTime: Date;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private maxTime: Date;\n\n /**\n * This is an internal property used to toggle the timepicker dropdown\n */\n public status = { isopen: false };\n\n /**\n * This is an internal property used to map the main model to the time widget\n */\n private bsTimeValue: Date;\n\n private keyEventPlugin;\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private appDefaults: AppDefaults,\n app: App,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n\n styler(this.nativeElement, this);\n /**\n * Destroy the timer once the date widget is gone\n */\n this.registerDestroyListener(() => this.clearTimeInterval());\n\n this.timepattern = this.appDefaults.timeFormat || getDisplayDateTimeFormat(FormWidgetType.TIME);\n this.updateFormat('timepattern');\n this.app = app;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'timepattern') {\n this.updateFormat('timepattern');\n }\n if (key === 'mintime') {\n this.minTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput }); // TODO it is supposed to be time conversion, not to the day\n this.mintimeMaxtimeValidation();\n } else if (key === 'maxtime') {\n this.maxTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.mintimeMaxtimeValidation();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n setValidateType(min, max, val) {\n if (this.timeNotInRange) {\n if (val < min) {\n (this as any).validateType = 'mintime';\n } else if (val > max) {\n (this as any).validateType = 'maxtime';\n }\n }\n }\n\n /**\n * This is an internal method used to validate mintime and maxtime\n */\n private mintimeMaxtimeValidation() {\n this.timeNotInRange = this.minTime && this.maxTime && (this.bsTimeValue < this.minTime || this.bsTimeValue > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, this.bsTimeValue);\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the time widget\n */\n public toggleDropdown($event, skipFocus: boolean = false): void {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', {$event: $event});\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n return;\n }\n this.ngZone.run(() => {\n this.status.isopen = !this.status.isopen;\n });\n this.addBodyClickListener(this.status.isopen);\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.status.isopen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the time input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter' || action === 'arrowdown') {\n event.preventDefault();\n this.toggleDropdown(event);\n } else {\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideTimepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the time input changes\n */\n onDisplayTimeChange($event) {\n const newVal = getNativeDateObject($event.target.value, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n // time pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onTimeChange(newVal);\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('bs-timepicker-field')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', {$event});\n }\n }\n\n /**\n * This is an internal method used to execute the on time change functionality\n */\n private onTimeChange(newVal, isNativePicker?: boolean) {\n let timeValue,\n timeInputValue,\n minTimeMeridian,\n maxTimeMeridian;\n // For nativePicker, newVal is event, get the dateobject from the event.\n if (isNativePicker) {\n newVal = getNativeDateObject(newVal.target.value, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n }\n if (newVal) {\n this.bsTimeValue = newVal;\n // if the newVal is valid but not in the given range then highlight the input field\n this.timeNotInRange = this.minTime && this.maxTime && (newVal < this.minTime || newVal > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, newVal);\n } else {\n // sometimes library is not returning the correct value when the min and max time are given, displaying the datavalue based on the value given by the user\n if (this.bsTimePicker && this.bsTimePicker.min && this.bsTimePicker.max) {\n minTimeMeridian = moment(new Date(this.bsTimePicker.min)).format('A');\n maxTimeMeridian = moment(new Date(this.bsTimePicker.max)).format('A');\n timeValue = this.bsTimePicker.hours + ':' + (this.bsTimePicker.minutes || 0) + ':' + (this.bsTimePicker.seconds || 0) + (this.bsTimePicker.showMeridian ? (' ' + minTimeMeridian) : '');\n timeInputValue = getNativeDateObject(timeValue, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.bsTimePicker.meridian = minTimeMeridian;\n this.timeNotInRange = (this.bsTimePicker.min > timeInputValue || this.bsTimePicker.max < timeInputValue);\n this.setValidateType(this.bsTimePicker.min, this.bsTimePicker.max, timeInputValue);\n }\n this.bsTimeValue = timeInputValue;\n }\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval( () => {\n const now = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n now.setSeconds(now.getSeconds() + 1);\n this.datavalue = CURRENT_TIME;\n this.onTimeChange(now);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.status.isopen = val;\n }\n\n // Change event is registered from the template, Prevent the framework from registering one more event\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n public hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.status.isopen = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.removeKeyupListener();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(true);\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n /**\n * This is an internal method to add css class for dropdown while opening the time dropdown\n */\n public onShown() {\n const tpElements = document.querySelectorAll('timepicker');\n _.forEach(tpElements, element => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public assignModel() {\n if (!this.displayInputElem) {\n this.displayInputElem = this.getMobileInput();\n }\n (this.displayInputElem as any).value = _.get(this, 'nativeDisplayValue');\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\n\ndeclare const _, moment, $;\n\n@Component({\n selector: 'wm-pickergroup',\n template: `\n <div class=\"app-picker-group\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PickerGroupComponent {\n\n}\n\n@Component({\n selector: 'wm-picker',\n template: `\n <div class=\"app-picker\">\n <div class=\"app-picker-option-container\">\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div *ngFor=\"let option of options; index as i;\" class=\"app-picker-option\">\n {{option.label}}\n </div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n </div>\n <div class=\"app-picker-ruler\"></div>\n </div>\n `\n})\nexport class PickerComponent implements AfterViewInit {\n\n public $el;\n\n private pickerAnimator;\n\n @Output() change = new EventEmitter<{\n label: string,\n value?: any\n }>();\n\n private _selectedIndex = 0;\n\n private _selectedValue: any;\n\n private _options: Array<{label: string, value?: any}> = [];\n\n noOfEmptyElements = 2;\n\n constructor(protected inj: Injector) {\n this.$el = $(inj.get(ElementRef).nativeElement);\n }\n\n @Input()\n set selectedValue(s: string) {\n this._selectedValue = s;\n this.reRender();\n }\n\n get selectedValue() {\n return this._selectedValue;\n }\n\n @Input()\n set options(opts: Array<{label: string, value?: any}>) {\n this._options = opts.map(o => ({\n label: o.label,\n value: o.value !== undefined ? o.value : o.label\n }));\n this.reRender();\n }\n\n get options() {\n return this._options;\n }\n\n reRender() {\n this._selectedIndex = this.options.findIndex(o => o.value === this.selectedValue);\n this.pickerAnimator?.select(this._selectedIndex + this.noOfEmptyElements);\n }\n\n set selectedIndex(i: number) {\n this._selectedIndex = i;\n this._selectedValue = this.options[i].value;\n this.change.emit(this.options[i]);\n }\n\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n ngAfterViewInit(): void {\n this.pickerAnimator = new PickerAnimator(this);\n }\n\n}\n\nclass PickerAnimator {\n\n constructor(private picker: PickerComponent) {\n let lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n const computeIndex = (d: number) => lastSelectedIndex + Math.floor(d / 16);\n this.select(lastSelectedIndex);\n this.getElement().swipey({\n 'direction': $.fn.swipey.DIRECTIONS.VERTICAL,\n 'threshold': 10,\n 'target': picker.$el,\n 'onSwipe': (e, data) => {\n this.select(computeIndex(-1 * data.length));\n },\n 'onSwipeEnd': (e, data) => {\n const nextSelectedIndex = computeIndex(-1 * data.length);\n this.select(nextSelectedIndex);\n lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n }\n });\n }\n\n getElement() {\n return this.picker.$el.find('.app-picker-option-container:first');\n }\n\n getOptionElements() {\n return this.getElement().find('.app-picker-option');\n }\n\n select(selectedIndex: number) {\n const options = this.getOptionElements();\n if (selectedIndex < this.picker.noOfEmptyElements\n || selectedIndex >= options.length - this.picker.noOfEmptyElements) {\n return;\n }\n this.getElement()\n .find('.app-picker-option.app-picker-option-selected')\n .removeClass('app-picker-option-selected');\n options.eq(selectedIndex).addClass('app-picker-option-selected');\n this.picker.selectedIndex = selectedIndex - this.picker.noOfEmptyElements;\n const minIndex = selectedIndex - this.picker.noOfEmptyElements;\n const maxIndex = selectedIndex + this.picker.noOfEmptyElements;\n options.each((i, e) => {\n if (i >= minIndex && i <= maxIndex) {\n const rotation = (i - selectedIndex) * 30;\n const opacity = 1 - Math.abs(i - selectedIndex) * 0.3;\n $(e).css({\n transform : 'perspective(500px) rotateX(' + rotation + 'deg)',\n opacity: opacity\n }).show();\n } else {\n $(e).hide();\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DateComponent } from './date/date.component';\nimport { DateTimePickerComponent, TimePickerComponent } from './date-time/date-time-picker.component';\nimport { DatetimeComponent } from './date-time/date-time.component';\nimport { TimeComponent } from './time/time.component';\nimport { PickerComponent, PickerGroupComponent } from './picker/picker.component';\n\nconst components = [\n DateComponent,\n DatetimeComponent,\n TimeComponent,\n DateTimePickerComponent,\n TimePickerComponent,\n PickerComponent,\n PickerGroupComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BsDatepickerModule,\n BsDropdownModule,\n FormsModule,\n TimepickerModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class EpochModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {BaseDateTimeComponent as ɵb,getTimepickerConfig as ɵa} from './base-date-time.component';\nexport {DateTimePickerComponent as ɵc,TimePickerComponent as ɵd} from './date-time/date-time-picker.component';\nexport {registerProps as ɵf} from './date-time/date-time.props';\nexport {registerProps as ɵe} from './date/date.props';\nexport {PickerComponent as ɵi,PickerGroupComponent as ɵh} from './picker/picker.component';\nexport {registerProps as ɵg} from './time/time.props';"],"names":["EventEmitter","App","Component","Injector","BsModalService","ViewChild","Input","Output","CURRENT_DATE","TimepickerConfig","getLocaleDayPeriods","FormStyle","TranslationWidth","BsDatepickerConfig","AbstractI18nService","ToDatePipe","isMobile","getFormattedDate","getDateObj","isString","setAttr","getNativeDateObject","hasCordova","isIos","getContainerTargetClass","BaseFormCustomComponent","Directive","BsDropdownDirective","TimepickerComponent","PROP_BOOLEAN","PROP_STRING","PROP_ANY","PROP_NUMBER","registerProps","register","registerFormWidget","FormWidgetType","DEFAULT_CLS","WIDGET_CONFIG","styler","getDisplayDateTimeFormat","getMomentLocaleObject","setFocusTrap","adjustContainerPosition","adjustContainerRightEdges","addEventListenerOnElement","provideAs","NG_VALUE_ACCESSOR","NG_VALIDATORS","provideAsWidgetRef","ChangeDetectorRef","AppDefaults","Inject","EVENT_MANAGER_PLUGINS","BsDatepickerDirective","addClass","NgZone","$appDigest","ElementRef","NgModule","CommonModule","BsDatepickerModule","BsDropdownModule","FormsModule","TimepickerModule","WmComponentsModule"],"mappings":"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"}
1
+ {"version":3,"file":"index.umd.js","sources":["../../../../../node_modules/tslib/tslib.es6.js","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time-picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/base-date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.props.ts","../../../../../projects/components/widgets/input/epoch/src/date/date.component.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.props.ts","../../../../../projects/components/widgets/input/epoch/src/date-time/date-time.component.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.props.ts","../../../../../projects/components/widgets/input/epoch/src/time/time.component.ts","../../../../../projects/components/widgets/input/epoch/src/picker/picker.component.ts","../../../../../projects/components/widgets/input/epoch/src/epoch.module.ts","../../../../../projects/components/widgets/input/epoch/src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { BsDatepickerConfig } from 'ngx-bootstrap/datepicker';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\n\nimport { App } from '@wm/core';\n\ndeclare const moment, $, _;\n\n@Component({\n selector: 'wm-datetimepicker',\n template: `\n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n\n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\"\n class=\"btn btn-secondary today-btn\"\n (click)=\"setToday()\">{{appLocale.LABEL_TODAY_DATE || \"Today\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"\n (click)=\"onOkClick()\">{{appLocale.LABEL_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right clear-btn\"\n (click)=\"clear()\">{{appLocale.LABEL_CLEAR_DATE || \"Clear\" }}</button>\n </div>\n </div>\n </ng-template>\n `\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n\n private isDateOpen = true;\n\n private isTimeOpen = false;\n\n private appLocale: any;\n\n @ViewChild('datetimepickerTemplate' , { static: true }) datetimepickerTemplate: TemplateRef<any>;\n\n @Input()\n private mode: 'DATE' | 'TIME' | 'DATE_TIME' = 'DATE_TIME';\n\n @Input()\n private placement: 'MODAL' | 'INLINE' = 'MODAL';\n\n @Input(\"config\")\n private _bsDatepickerConfig: BsDatepickerConfig;\n\n @Input()\n private minTime: Date;\n\n @Input()\n private maxTime: Date;\n\n @Input()\n private _displayFormat: string;\n\n @Output() change = new EventEmitter<Date>();\n\n private _value = new Date();\n\n private changedValue = null;\n\n private modalRef: BsModalRef;\n\n @Input()\n private excludedDatesToDisable;\n\n constructor(\n protected inj: Injector,\n private bsModalService: BsModalService) {\n this.appLocale = inj.get(App).appLocale || {};\n }\n\n @Input()\n set value(d: Date) {\n d = d || new Date();\n this._value = d;\n this.changedValue = d;\n }\n\n\n @Input(\"config\")\n set bsDatepickerConfig(config: BsDatepickerConfig) {\n this._bsDatepickerConfig = config;\n this._bsDatepickerConfig.showClearButton = false;\n this._bsDatepickerConfig.showTodayButton = false;\n }\n\n @Input()\n set excludedDaysToDisable(v: number[]) {\n this._bsDatepickerConfig.daysDisabled = v;\n }\n\n get bsDatepickerConfig() {\n return this._bsDatepickerConfig;\n }\n\n @Input()\n set displayFormat(format: string) {\n if (format) {\n this._displayFormat = format.replace(/y/g, \"Y\").replace(/d/g, \"D\").replace(\"a\", \"A\");\n }\n }\n\n validateSelectedDate() {\n if (!this.changedValue) {\n return true;\n }\n const cd = moment(this.changedValue);\n const minDate = this._bsDatepickerConfig?.minDate;\n const maxDate = this._bsDatepickerConfig?.maxDate;\n if (minDate\n && ((this.mode === 'DATE' \n && moment(minDate).startOf('day').toDate() > this.changedValue)\n || (this.mode !== 'DATE' \n && minDate > this.changedValue))) {\n return false;\n }\n if (maxDate \n && ((this.mode === 'DATE' \n && moment(maxDate).endOf('day').toDate() < this.changedValue)\n || (this.mode !== 'DATE' \n && maxDate < this.changedValue))) {\n return false;\n }\n if (this._bsDatepickerConfig?.daysDisabled?.indexOf(cd.day()) >= 0) {\n return false;\n }\n const cdSt = cd.startOf('day').toDate().getTime();\n if (this.excludedDatesToDisable?.find(d => d.getTime() === cdSt)) {\n return false;\n }\n return true;\n }\n\n get displayFormat() {\n if (this._displayFormat) {\n return this._displayFormat;\n }\n }\n /**\n * This method is used to highlight the current date\n */\n private hightlightToday() {\n const toDay = new Date().getDate().toString();\n _.filter($(`body>modal-container .date-picker-modal span:contains(${toDay})`)\n .not('.is-other-month,.current-date'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n private hideOnClick() {\n $('body>modal-container .date-picker-modal .app-datetime-picker')\n .click(($event) => $event.stopPropagation());\n $('body>modal-container .date-picker-modal').click(() => this.onCancelClick());\n }\n\n getDateLabel() {\n return moment(this.changedValue).format(this.displayFormat);\n }\n\n openDatePicker() {\n this.isTimeOpen = false;\n this.isDateOpen = true;\n }\n\n openTimePicker() {\n this.isTimeOpen = true;\n this.isDateOpen = false;\n }\n\n public onDateUpdate(newVal) {\n const oldVal = this.changedValue;\n if (this.mode === 'DATE') {\n newVal.setHours(0);\n newVal.setMinutes(0);\n newVal.setSeconds(0);\n newVal.setMilliseconds(0);\n } else if (oldVal && newVal) {\n newVal.setHours(oldVal.getHours());\n newVal.setMinutes(oldVal.getMinutes());\n newVal.setSeconds(oldVal.getSeconds());\n newVal.setMilliseconds(oldVal.getMilliseconds());\n }\n this.changedValue = newVal;\n if (this.mode === 'DATE'\n && oldVal !== newVal\n && this.validateSelectedDate()) {\n this.onOkClick();\n }\n }\n\n public onTimeUpdate(newVal) {\n this.changedValue = newVal;\n }\n\n show() {\n this.reset();\n this.modalRef = this.bsModalService.show(this.datetimepickerTemplate, {\n animated: true,\n backdrop: 'static',\n class: 'date-picker-modal modal-dialog-centered'\n });\n setTimeout(() => { this.hideOnClick()}, 500);\n }\n\n clear() {\n this.changedValue = null;\n this.triggerChange();\n this.hideModal();\n }\n\n setToday() {\n const today = moment().startOf('day').toDate();\n this.onDateUpdate(today);\n }\n\n reset() {\n this.changedValue = this._value;\n }\n\n hideModal() {\n if (this.modalRef?.id) {\n this.bsModalService.hide(this.modalRef.id);\n }\n }\n\n onCancelClick() {\n this.changedValue = this._value;\n this.hideModal();\n }\n\n onOkClick() {\n if (this.validateSelectedDate()) {\n this.triggerChange();\n }\n this.hideModal();\n }\n\n triggerChange() {\n if (this.value !== this.changedValue) {\n this.change.emit(this.changedValue);\n }\n }\n\n ngAfterViewInit(): void {\n\n }\n\n ngOnDestroy(): void {\n this.hideModal();\n }\n\n}\n\n\n@Component({\n selector: 'wm-timepicker',\n template: `\n <wm-pickergroup>\n <wm-picker\n [options]=\"options.hour\"\n [selectedValue]=\"hour\"\n (change)=\"set($event, 'HOUR')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"minute\"\n (change)=\"set($event, 'MINUTE')\"></wm-picker>\n <span class=\"app-time-separator\">:</span>\n <wm-picker\n [options]=\"options.minute\"\n [selectedValue]=\"second\"\n (change)=\"set($event, 'SECOND')\"></wm-picker>\n </wm-pickergroup>\n `\n})\nexport class TimePickerComponent implements AfterViewInit {\n\n options = {\n hour: [],\n minute: [],\n second: [],\n meridian: ['AM', 'PM']\n };\n\n @Input()\n private value = new Date();\n\n @Input()\n private min: Date = null;\n\n @Input()\n private max: Date = null;\n\n @Output() change = new EventEmitter<Date>();\n\n constructor(\n protected inj: Injector) {\n this.options.hour = this.populateNumbers(0, 23);\n this.options.minute = this.populateNumbers(0, 59);\n this.options.second = this.populateNumbers(0, 59);\n }\n\n private populateNumbers(start: number, to: number) {\n const arr = [];\n for(let i = start; i <= to; i++) {\n arr.push({\n label: (i < 10 ? '0' : '') + i,\n value: i\n })\n }\n return arr;\n }\n\n set({index, value}, unit: 'HOUR' | 'MINUTE' | 'SECOND' | 'MERIDIAN') {\n if (unit === 'HOUR') {\n this.value = moment(this.value).hour(parseInt(value)).toDate();\n } else if (unit === 'MINUTE') {\n this.value = moment(this.value).minute(parseInt(value)).toDate();\n } else if (unit === 'SECOND') {\n this.value = moment(this.value).second(parseInt(value)).toDate();\n } else if (unit === 'MERIDIAN') {\n this.value = moment(this.value).minute(value).toDate();\n }\n if (this.min && this.value < this.min) {\n this.value = this.min;\n }\n if (this.max && this.value > this.max) {\n this.value = this.max;\n }\n this.change.emit(this.value);\n }\n\n get hour() {\n return moment(this.value).hour();\n }\n\n get minute() {\n return moment(this.value).minute();\n }\n\n get second() {\n return moment(this.value).second();\n }\n\n get meridian() {\n return 'AM';\n }\n\n public onDateUpdate(newVal) {\n debugger;\n }\n\n ngAfterViewInit(): void {\n\n }\n\n}\n","import { AfterViewInit, Injector, OnDestroy, ViewChild, Directive } from '@angular/core';\nimport { Validator, AbstractControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { getLocaleDayPeriods, FormStyle, TranslationWidth } from '@angular/common';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { TimepickerComponent, TimepickerConfig } from 'ngx-bootstrap/timepicker';\n\nimport {\n AbstractI18nService,\n getDateObj,\n getFormattedDate,\n getNativeDateObject,\n hasCordova,\n isIos,\n isMobile,\n isString,\n setAttr\n} from '@wm/core';\n\nimport { getContainerTargetClass, ToDatePipe } from '@wm/components/base';\nimport { BaseFormCustomComponent } from '@wm/components/input';\nimport { BsDatepickerConfig, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { DateTimePickerComponent } from './date-time//date-time-picker.component';\n\ndeclare const moment, _, $;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DATEPICKER_DROPDOWN_OPTIONS = {\n BUTTON: 'button',\n DEFAULT: 'default'\n};\nconst DATAENTRYMODE_DROPDOWN_OPTIONS = {\n PICKER: 'picker',\n DEFAULT: 'default'\n};\n\n// Providing meridians to the timepicker baesd on selected locale\nexport function getTimepickerConfig(i18nService): TimepickerConfig {\n return Object.assign(new TimepickerConfig(), {\n meridians: getLocaleDayPeriods(i18nService.getSelectedLocale(), FormStyle.Format, TranslationWidth.Abbreviated)\n });\n}\n\n@Directive()\nexport abstract class BaseDateTimeComponent extends BaseFormCustomComponent implements AfterViewInit, OnDestroy, Validator {\n public required: boolean;\n public disabled: boolean;\n public tabindex: any;\n public name: string;\n public autofocus: boolean;\n public readonly: boolean;\n public placeholder: string;\n public shortcutkey: string;\n public _triggeredByUser: boolean;\n\n public excludedays: string;\n public excludedDaysToDisable: Array<number>;\n public excludedDatesToDisable: Array<Date>;\n public excludedates;\n public outputformat;\n public mindate;\n public maxdate;\n public dataentrymode;\n protected activeDate;\n private keyEventPluginInstance;\n private elementScope;\n public datepattern;\n public timepattern;\n protected showseconds: boolean;\n protected ismeridian: boolean;\n protected meridians: any;\n protected datePipe;\n protected i18nService;\n public isReadOnly = false;\n protected selectedLocale: string;\n public selectfromothermonth: boolean;\n public todaybutton: boolean;\n public clearbutton: boolean;\n public removeKeyupListener;\n public loadNativeDateInput;\n public showcustompicker;\n public next;\n public prev;\n public clicked = false;\n\n protected dateNotInRange: boolean;\n protected timeNotInRange: boolean;\n protected invalidDateTimeFormat: boolean;\n\n private dateOnShowSubscription: Subscription;\n private cancelLocaleChangeSubscription;\n public get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }\n\n formatsByLocale = {'timezone': ''};\n\n /**\n * This is an internal property used to map the containerClass, showWeekNumbers etc., to the bsDatepicker\n */\n public _dateOptions: BsDatepickerConfig = new BsDatepickerConfig();\n protected bsDatePickerDirective: BsDatepickerDirective;\n\n @ViewChild(BsDropdownDirective) protected bsDropdown;\n @ViewChild(TimepickerComponent) protected bsTimePicker;\n @ViewChild(DateTimePickerComponent) datetimepickerComponent;\n private validateType: string;\n containerTarget: string;\n\n constructor(inj: Injector, WIDGET_CONFIG) {\n super(inj, WIDGET_CONFIG);\n this.i18nService = this.inj.get(AbstractI18nService);\n this.invokeEventCallback('beforeload');\n\n this.datePipe = this.inj.get(ToDatePipe);\n this.selectedLocale = this.i18nService.getSelectedLocale();\n this._dateOptions.todayPosition = 'left';\n this._dateOptions.clearPosition = 'right';\n this.meridians = getLocaleDayPeriods(this.selectedLocale, FormStyle.Format, TranslationWidth.Abbreviated);\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n\n this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe(\"locale-changed\", (locale) => {\n this.datePipe.datePipe.locale = locale.angular;\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage('LABEL_TODAY_DATE');\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage('LABEL_CLEAR_DATE');\n });\n }\n\n\n /**\n * returns true if the input value is default (i.e open date picker on input click)\n * @param1 dropdownvalue, user selected value (by default datepicker opens on input click)\n * **/\n protected isDropDownDisplayEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATEPICKER_DROPDOWN_OPTIONS.DEFAULT;\n }\n\n /**\n * returns true if the input value is default (i.e Data entry can be done either by selecting from the Date/DateTime/Time Picker or by entering manually using the keyboard. )\n * @param1 dropdownvalue, user selected value\n * **/\n protected isDataEntryModeEnabledOnInput(dropdownvalue) {\n return dropdownvalue === DATAENTRYMODE_DROPDOWN_OPTIONS.DEFAULT;\n }\n /**\n * This method is used to show validation message depending on the isNativePicker flag.\n */\n private showValidation($event, displayValue, isNativePicker, msg) {\n if (isNativePicker) {\n console.warn('min max date validation failed ', msg);\n return $($event.target).val(displayValue);\n }\n }\n\n resetDisplayInput() {\n $(this.nativeElement).find('.display-input').val('');\n }\n\n public validate(c: AbstractControl) {\n if (this.invalidDateTimeFormat) {\n return {\n invalidDateTimeFormat: {\n valid: false\n }\n };\n }\n if (!_.isUndefined(this.dateNotInRange) && this.dateNotInRange) {\n return {\n dateNotInRange: {\n valid: false\n },\n };\n }\n if (!_.isUndefined(this.timeNotInRange) && this.timeNotInRange) {\n return {\n timeNotInRange: {\n valid: false\n },\n };\n }\n /* WMS-18269 | Extending the existing validation for 'required' */\n if (this['show'] && this['required']) {\n return !!c.value ? null : { required: true };\n }\n this.validateType = '';\n return null;\n }\n\n /**\n * This method is used to validate date pattern and time pattern\n * If user selects one pattern in design time and if he tries to enter the date in another pattern then the device is throwing an error\n */\n protected formatValidation(newVal, inputVal, isNativePicker?: boolean) {\n const pattern = this.datepattern || this.timepattern;\n const timeZone = this.timeZone;\n const formattedDate = getFormattedDate(this.datePipe, newVal, pattern, timeZone, null, null, this);\n inputVal = inputVal.trim();\n if (inputVal) {\n if (pattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n } else {\n if (isNativePicker) {\n // format the date value only when inputVal is obtained from $event.target.value, as the format doesnt match.\n inputVal = getFormattedDate(this.datePipe, inputVal, pattern, timeZone);\n }\n if (inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.validateType = 'incorrectformat';\n this.invokeOnChange(this.datavalue, undefined, false);\n return false;\n }\n }\n\n }\n return true;\n }\n\n /**\n * This method is used to validate min date, max date, exclude dates and exclude days\n * In mobile if invalid dates are entered, device is showing an alert.\n * In web if invalid dates are entered, device is showing validation message.\n */\n protected minDateMaxDateValidationOnInput(newVal, $event?: Event, displayValue?: string, isNativePicker?: boolean) {\n if (newVal) {\n const dateTimeVal = newVal;\n newVal = moment(newVal).startOf('day').toDate();\n const minDate = moment(getDateObj(this.mindate)).startOf('day').toDate();\n const maxDate = moment(getDateObj(this.maxdate)).startOf('day').toDate();\n if (this.mindate && newVal < minDate) {\n const msg = `${this.appLocale.LABEL_MINDATE_VALIDATION_MESSAGE} ${this.mindate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, minDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'mindate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.maxdate && newVal > maxDate) {\n const msg = `${this.appLocale.LABEL_MAXDATE_VALIDATION_MESSAGE} ${this.maxdate}.`;\n this.invokeOnChange(this.datavalue, undefined, false);\n if (isNativePicker && getFormattedDate(this.datePipe, maxDate, this.datepattern, this.timeZone, null, null, this) === displayValue) {\n return $($event.target).val(displayValue);\n }\n this.dateNotInRange = true;\n this.validateType = 'maxdate';\n return this.showValidation($event, displayValue, isNativePicker, msg);\n }\n if (this.excludedates) {\n let excludeDatesArray;\n if (isString(this.excludedates)) {\n excludeDatesArray = _.split(this.excludedates, ',');\n } else {\n excludeDatesArray = this.excludedates;\n }\n excludeDatesArray = excludeDatesArray.map(d => getFormattedDate(this.datePipe, d, this.datepattern, this.timeZone, null, null, this));\n if (excludeDatesArray.indexOf(getFormattedDate(this.datePipe, dateTimeVal, this.datepattern, this.timeZone, null, null, this)) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedates';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n if (this.excludedays) {\n const excludeDaysArray = _.split(this.excludedays, ',');\n const day = _.get(dateTimeVal, 'getDay') ? dateTimeVal.getDay() : dateTimeVal;\n if (excludeDaysArray.indexOf(day.toString()) > -1) {\n this.dateNotInRange = true;\n this.validateType = 'excludedays';\n this.invokeOnChange(this.datavalue, undefined, false);\n return;\n }\n }\n }\n\n if (!isNativePicker) {\n this.dateNotInRange = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n }\n\n /**\n * This method is used to highlight the current date\n */\n protected hightlightToday() {\n const toDay = new Date().getDate().toString();\n _.filter($(`span:contains(${toDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === toDay) {\n $(obj).addClass('current-date text-info');\n }\n });\n }\n\n /**\n * This method is used to find the new date is from another year or not\n * @param newDate - newly selected date value\n */\n private isOtheryear(newDate) {\n return (newDate.getMonth() === 0 && this.activeDate.getMonth() === 11) || (newDate.getMonth() === 11 && this.activeDate.getMonth() === 0);\n }\n\n /**\n * This method is used to set focus for active day\n * @param newDate - newly selected date value\n * @param isMouseEvent - boolean value represents the event is mouse event/ keyboard event\n */\n private setActiveDateFocus(newDate, isMouseEvent?: boolean) {\n this.setNextData(newDate);\n const activeMonth = this.activeDate.getMonth();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getMonth() < activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('next', 'days') : this.goToOtherMonthOryear('previous', 'days');\n } else if (newDate.getMonth() > activeMonth) {\n this.isOtheryear(newDate) ? this.goToOtherMonthOryear('previous', 'days') : this.goToOtherMonthOryear('next', 'days');\n }\n }\n setTimeout(() => {\n const newDay = newDate.getDate().toString();\n _.filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {\n if ($(obj).text() === newDay) {\n if ($(obj).hasClass('selected')) {\n $(obj).parent().attr('aria-selected', 'true');\n }\n $(obj).attr('aria-label', moment(newDate).format('dddd, MMMM Do YYYY'));\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '-1');\n $(obj).attr('tabindex', '0');\n $(obj).focus();\n this.activeDate = newDate;\n }\n });\n if (newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {\n this.hightlightToday();\n }\n });\n\n }\n\n /**\n * This method is used to load other month days or other month or other year\n * @param btnClass - class(previous/next) of the button which we have to click\n * @param timePeriod - String value decides to load other month days or other month or other year\n */\n private goToOtherMonthOryear(btnClass, timePeriod) {\n const $node = $(`.bs-datepicker-head .${btnClass}`);\n if ($node.attr('disabled')) {\n return;\n }\n $node.trigger('click');\n if (timePeriod === 'days') {\n this.loadDays();\n } else if (timePeriod === 'month') {\n this.loadMonths();\n } else if (timePeriod === 'year') {\n this.loadYears();\n }\n }\n\n private getMonth(date, inc) {\n const currentMonth = new Date(date);\n\n let month = currentMonth.getMonth();\n const year = currentMonth.getFullYear();\n\n month += inc;\n\n const newDate = new Date(year, month);\n\n const fullMonth = newDate.toLocaleString('en-US', { month: 'long' });\n\n return {\n date: newDate,\n fullMonth: fullMonth\n };\n }\n\n /**\n * This method sets the mouse events to Datepicker popup. These events are required when we navigate date picker through mouse.\n */\n private addDatepickerMouseEvents() {\n const datePickerHead = $(`.bs-datepicker-head`);\n datePickerHead.find(`.previous`).click((event) => {\n this.next = this.getMonth(this.activeDate, 0);\n this.prev = this.getMonth(this.activeDate, -2);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(-1);\n }\n var prevMon = this.getMonth(this.activeDate, -1);\n $(`.bs-datepicker-head .previous`).prepend(`<p aria-hidden=\"false\" class=\"sr-only\">Changed to Previous Month, ${prevMon.fullMonth} and year ${prevMon.date.getFullYear()}</p>`);\n\n setTimeout(() => {\n $(`.bs-datepicker-head .previous`).focus();\n });\n\n });\n datePickerHead.find(`.next`).click((event) => {\n this.next = this.getMonth(this.activeDate, 2);\n this.prev = this.getMonth(this.activeDate, 0);\n this.clicked = true;\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForDate(1);\n }\n var nextMon = this.getMonth(this.activeDate, 1);\n $(`.bs-datepicker-head .next`).prepend(`<p aria-hidden=\"false\" class=\"sr-only\">Changed to Next Month, ${nextMon.fullMonth} and year ${nextMon.date.getFullYear()}</p>`);\n setTimeout(() => {\n $(`.bs-datepicker-head .next`).focus();\n });\n\n });\n datePickerHead.find(`.current`).click((event) => {\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForCurrentMonthOryear();\n }\n });\n $('.bs-datepicker-body, .bs-datepicker-action-buttons').click((event) => {\n event.stopPropagation();\n // check for original mouse click\n if (event.originalEvent) {\n this.setFocusForMonthOrDay();\n }\n });\n if(!this.clicked) {\n datePickerHead.find('.next').attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);\n datePickerHead.find('.previous').attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);\n }\n }\n\n /**\n * This method sets focus for months/days depending on the loaded datepicker table\n */\n private setFocusForMonthOrDay() {\n const activeMonthOrYear = $(`.bs-datepicker-head .current`).first().text();\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n if (_.parseInt(activeMonthOrYear) !== this.activeDate.getFullYear()) {\n this.loadMonths();\n }\n const newDate = new Date(_.parseInt(activeMonthOrYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n const newMonth = months.indexOf(activeMonthOrYear);\n if (newMonth !== this.activeDate.getMonth()) {\n this.loadDays();\n }\n const newDate = new Date(this.activeDate.getFullYear(), newMonth, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years depending on the loaded datepicker table\n */\n private setFocusForCurrentMonthOryear() {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n this.setActiveYearFocus(this.activeDate, true);\n }\n }\n\n /**\n * This method sets focus for months/years/days depending on the loaded datepicker table\n */\n private setFocusForDate(count) {\n const datePickerBody = $('.bs-datepicker-body');\n if (datePickerBody.find('table.months').length > 0) {\n this.loadMonths();\n const newDate = new Date(this.activeDate.getFullYear() + count, 0, this.activeDate.getDate());\n this.setActiveMonthFocus(newDate, true);\n } else if (datePickerBody.find('table.years').length > 0) {\n this.loadYears();\n const startYear = datePickerBody.find('table.years span').first().text();\n const newDate = new Date(_.parseInt(startYear), this.activeDate.getMonth(), this.activeDate.getDate());\n this.setActiveYearFocus(newDate, true);\n } else if (datePickerBody.find('table.days').length > 0) {\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth() + count, 1);\n this.setActiveDateFocus(newDate, true);\n }\n }\n\n /**\n * This method is used to add keyboard events while opening the date picker\n * @param scope - scope of the date/datetime widget\n * @param isDateTime - boolean value represents the loaded widget is date or datetime\n */\n protected addDatepickerKeyboardEvents(scope, isDateTime) {\n this.keyEventPluginInstance = scope.keyEventPlugin.constructor;\n this.elementScope = scope;\n const dateContainer = document.querySelector(`.${scope.dateContainerCls}`) as HTMLElement;\n setAttr(dateContainer, 'tabindex', '0');\n dateContainer.onkeydown = (event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n // Check for Shift+Tab key or Tab key or escape\n if (action === 'escape') {\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n };\n this.loadDays();\n this.setActiveDateFocus(this.activeDate);\n }\n private setNextData(nextDate) {\n this.next = this.getMonth(nextDate, 1);\n this.prev = this.getMonth(nextDate, -1);\n }\n /**\n * This method is used to add tabindex, keybord and mouse events for days\n */\n private loadDays() {\n setTimeout(() => {\n $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '0');\n // if (this.clicked === false) {\n // this.next = this.getMonth(this.activeDate, 1);\n // this.prev = this.getMonth(this.activeDate, -1);\n // }\n this.addKeyBoardEventsForDays();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for days\n */\n private addKeyBoardEventsForDays() {\n const datePickerBody = $('.bs-datepicker-body');\n datePickerBody.keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-7, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'days').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'pageup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'pagedown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveDateFocus(newdate);\n } else if (action === 'control.arrowup') {\n // clicking on table header month name to load list of months\n $('.bs-datepicker-head .current').first().click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n } else if (action === 'enter') {\n if ($(document.activeElement).hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.elementScope.hideDatepickerDropdown();\n const displayInputElem = this.elementScope.nativeElement.querySelector('.display-input') as HTMLElement;\n setTimeout(() => displayInputElem.focus());\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n private focusBlurDatePickerHeadButtons() {\n const datePickerHeadButton = $('.bs-datepicker-head button');\n datePickerHeadButton.on('focus', function() { $(this).css('background-color', '#9AA0A3'); });\n datePickerHeadButton.on('blur', function() { $(this).css('background-color', ''); });\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for months\n */\n private loadMonths() {\n setTimeout(() => {\n this.addKeyBoardEventsForMonths();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method sets keyboard events for months\n */\n private addKeyBoardEventsForMonths() {\n $('.bs-datepicker-body').keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-3, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'month').toDate();\n this.setActiveMonthFocus(newdate);\n } else if (action === 'control.arrowup') {\n // clicking on table header year to load list of years\n $('.bs-datepicker-head .current').first().click();\n this.loadYears();\n this.setActiveYearFocus(this.activeDate);\n } else if (action === 'control.arrowdown' || action === 'enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadDays();\n const newDate = new Date(this.activeDate.getFullYear(), this.activeDate.getMonth(), 1);\n this.setActiveDateFocus(newDate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to add tabindex, keybord and mouse events for years\n */\n private loadYears() {\n setTimeout(() => {\n this.addKeyBoardEventsForYears();\n this.addDatepickerMouseEvents();\n });\n }\n\n /**\n * This method is used to set focus for active month\n */\n private setActiveMonthFocus(newDate, isMoouseEvent?: boolean) {\n this.setNextData(newDate);\n const newMonth = months[newDate.getMonth()];\n // check for keyboard event\n if (!isMoouseEvent) {\n if (newDate.getFullYear() < this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('previous', 'month');\n } else if (newDate.getFullYear() > this.activeDate.getFullYear()) {\n this.goToOtherMonthOryear('next', 'month');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.months span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.months span:contains(${newMonth})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets keyboard events for years\n */\n private addKeyBoardEventsForYears() {\n $('.bs-datepicker-body').keydown((event) => {\n const action = this.keyEventPluginInstance.getEventFullKey(event);\n let newdate;\n if (action === 'arrowdown') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(+4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowup') {\n event.preventDefault();\n newdate = moment(this.activeDate).add(-4, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowleft') {\n newdate = moment(this.activeDate).add(-1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'arrowright') {\n newdate = moment(this.activeDate).add(+1, 'year').toDate();\n this.setActiveYearFocus(newdate);\n } else if (action === 'control.arrowdown' || action === 'enter') {\n if ($(document.activeElement).parent().hasClass('disabled')) {\n return;\n }\n $(document.activeElement).click();\n this.loadMonths();\n this.setActiveMonthFocus(this.activeDate);\n }\n });\n this.focusBlurDatePickerHeadButtons();\n }\n\n /**\n * This method is used to set focus for active year\n */\n private setActiveYearFocus(newDate, isMouseEvent?: boolean) {\n const newYear = newDate.getFullYear();\n const datePickerYears = $('.bs-datepicker-body table.years span');\n const startYear = datePickerYears.first().text();\n const endYear = datePickerYears.last().text();\n // check for keyboard event\n if (!isMouseEvent) {\n if (newDate.getFullYear() < _.parseInt(startYear)) {\n this.goToOtherMonthOryear('previous', 'year');\n } else if (newDate.getFullYear() > _.parseInt(endYear)) {\n this.goToOtherMonthOryear('next', 'year');\n }\n }\n setTimeout(() => {\n $(`.bs-datepicker-body table.years span`).attr('tabindex', '-1');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).attr('tabindex', '0');\n $(`.bs-datepicker-body table.years span:contains(${newYear})`).focus();\n this.activeDate = newDate;\n });\n }\n\n /**\n * This method sets focus for timepicker first input field(hours field) while opening time picker\n * @param scope - scope of the time picker widget\n */\n protected focusTimePickerPopover(scope) {\n this.keyEventPluginInstance = scope.keyEventPlugin.constructor;\n this.elementScope = scope;\n // setTimeout is used so that by then time input has the updated value. focus is setting back to the input field\n this.elementScope.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n $('timepicker .form-group').first().find('> input.form-control').focus();\n });\n });\n\n\n }\n /**\n * This function sets the keyboard events to Timepicker popup\n */\n protected bindTimePickerKeyboardEvents() {\n setTimeout(() => {\n const $timepickerPopup = $('body').find('> bs-dropdown-container timepicker');\n $timepickerPopup.attr('tabindex', 0);\n this.addEventsOnTimePicker($timepickerPopup);\n });\n }\n\n protected focusOnInputEl() {\n if ($(this.nativeElement).closest('.caption-floating').length > 0) {\n setTimeout(() => {\n $(this.nativeElement).find('.app-textbox').focus();\n }, 100);\n }\n }\n\n /**\n * This function checks whether the given date is valid or not\n * @returns boolean value, true if date is valid else returns false\n */\n private isValidDate(date) {\n return date && date instanceof Date && !isNaN(date.getTime());\n }\n\n /**\n * This function checks whether the given time is valid or not\n */\n private timeFormatValidation() {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.datepattern});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n private updateTimeValue(value, fieldName) {\n if (value.length < 2) {\n setTimeout(() => {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes('00') : this.bsTimePicker.updateSeconds('00');\n }, 500);\n } else {\n fieldName === 'minutes' ? this.bsTimePicker.updateMinutes('00') : this.bsTimePicker.updateSeconds('00');\n }\n }\n\n /**\n * This function sets the events to given element\n * @param $el - element on which the event is added\n */\n private addEventsOnTimePicker($el: JQuery) {\n const inputFields = $el.find('.bs-timepicker-field');\n // WMS-19382: update minutes and seconds to 0 when we enter hour value\n inputFields.first().on('keyup', evt => {\n const hourValue = (evt.target as any).value;\n _.forEach(inputFields, (field, index) => {\n if (evt.target !== field && field.value === '' && hourValue.length) {\n const fieldName = index === 1 ? 'minutes' : 'seconds';\n this.updateTimeValue(hourValue, fieldName);\n }\n });\n });\n this.removeKeyupListener = () => {\n inputFields.first().off('keyup');\n };\n $el.on('keydown', evt => {\n const $target = $(evt.target);\n const $parent = $target.parent();\n const elementScope = this.elementScope;\n\n const action = this.keyEventPluginInstance.getEventFullKey(evt);\n\n let stopPropogation, preventDefault;\n\n if (action === 'escape') {\n elementScope.hideTimepickerDropdown();\n }\n\n if ($target.hasClass('bs-timepicker-field')) {\n if ($parent.is(':first-child')) {\n if (action === 'shift.tab' || action === 'enter' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else if ($parent.is(':last-child') || ($parent.next().next().find('button.disabled').length)) {\n if (action === 'tab' || action === 'escape' || action === 'enter') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n } else {\n if (action === 'enter' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n stopPropogation = true;\n preventDefault = true;\n }\n }\n if (stopPropogation) {\n evt.stopPropagation();\n }\n if (preventDefault) {\n evt.preventDefault();\n }\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if (action === 'arrowdown') {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if (action === 'arrowup') {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n if (action === 'tab') {\n this.invalidDateTimeFormat = false;\n this.invokeOnChange(this.datavalue, undefined, false);\n const pattern = this.datepattern || this.timepattern;\n if (getFormattedDate(elementScope.datePipe, elementScope.bsTimeValue, pattern, this.timeZone, null, null, this) === elementScope.displayValue) {\n $(this.nativeElement).find('.display-input').val(elementScope.displayValue);\n }\n }\n if (action === 'arrowdown' || action === 'arrowup') {\n this.timeFormatValidation();\n }\n } else if ($target.hasClass('btn-default')) {\n if (action === 'tab' || action === 'escape') {\n elementScope.setIsTimeOpen(false);\n this.focus();\n }\n }\n });\n $el.find('a').on('click', evt => {\n const elementScope = this.elementScope;\n const $target = $(evt.target);\n if (elementScope.mintime && elementScope.maxtime && !this.isValidDate(elementScope.bsTimeValue)) {\n if ($target.find('span').hasClass('bs-chevron-down')) {\n elementScope.bsTimeValue = elementScope.maxTime;\n } else if ($target.find('span').hasClass('bs-chevron-up')) {\n elementScope.bsTimeValue = elementScope.minTime;\n }\n }\n this.timeFormatValidation();\n });\n }\n\n public updateFormat(pattern) {\n if (pattern === 'datepattern') {\n this._dateOptions.dateInputFormat = this.datepattern;\n this.showseconds = _.includes(this.datepattern, 's');\n this.ismeridian = _.includes(this.datepattern, 'h');\n } else if (pattern === 'timepattern') {\n this.showseconds = _.includes(this.timepattern, 's');\n this.ismeridian = _.includes(this.timepattern, 'h');\n }\n }\n\n getMobileInput() {\n return this.nativeElement.querySelector('.mobile-input') as HTMLElement;\n }\n\n onDateTimeInputBlur() {\n // removing the opacity on blur of the mobile widget\n const displayInputElem = this.getMobileInput();\n if (displayInputElem && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.remove('add-opacity');\n }\n displayInputElem.classList.remove('remove-opacity');\n }\n }\n\n onDateTimeInputFocus(skipFocus: boolean = false): void {\n if (!this.loadNativeDateInput) {\n return;\n }\n const displayInputElem = this.getMobileInput();\n // toggling the classes to show and hide the native widget using opacity\n if (skipFocus && !hasCordova()) {\n const children = this.nativeElement.children;\n for (let i = 0; i < children.length; i++) {\n children[i].classList.add('add-opacity');\n }\n displayInputElem.classList.add('remove-opacity');\n return;\n }\n\n if (displayInputElem && this._triggeredByUser) {\n displayInputElem.focus();\n displayInputElem.click();\n }\n }\n\n getCordovaPluginDatePickerApi() {\n if (isIos()) {\n return _.get(window, 'cordova.wavemaker.datePicker.selectDate');\n }\n }\n\n public showDatePickerModal() {\n this.datetimepickerComponent.show();\n return ;\n }\n\n blurDateInput(isPickerOpen) {\n const displayInputElem = this.nativeElement.querySelector('.display-input') as HTMLElement;\n if (isPickerOpen) {\n setTimeout(() => displayInputElem.blur());\n }\n }\n\n onPropertyChange(key, nv, ov?) {\n\n if (key === 'tabindex') {\n return;\n }\n if (key === 'required') {\n this._onChange(this.datavalue);\n return;\n }\n if (key === 'datepattern') {\n this.updateFormat(key);\n } else if (key === 'showweeks') {\n this._dateOptions.showWeekNumbers = nv;\n } else if (key === 'mindate') {\n this._dateOptions.minDate = (nv === CURRENT_DATE) ? this.mindate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'maxdate') {\n this._dateOptions.maxDate = (nv === CURRENT_DATE) ? this.maxdate = new Date() : getDateObj(nv);\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'excludedates' || key === 'excludedays') {\n if (this.excludedays) {\n this.excludedDaysToDisable = _.split(this.excludedays, ',').map((day) => {\n return +day;\n });\n }\n if (this.excludedates) {\n this.excludedDatesToDisable = this.excludedates;\n if (isString(this.excludedates)) {\n this.excludedDatesToDisable = _.split(this.excludedates, ',');\n }\n this.excludedDatesToDisable = this.excludedDatesToDisable.map(d => getDateObj(d));\n }\n this.minDateMaxDateValidationOnInput(this.datavalue);\n } else if (key === 'selectfromothermonth') {\n this._dateOptions.selectFromOtherMonth = nv;\n\n } else if (key === 'todaybutton') {\n this._dateOptions.showTodayButton = nv;\n } else if (key === 'clearbutton') {\n this._dateOptions.showClearButton = nv;\n } else if (key === 'todaybuttonlabel') {\n this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'clearbuttonlabel') {\n this._dateOptions.clearButtonLabel = this.i18nService.getLocalizedMessage(nv) || nv;\n } else if (key === 'showcustompicker') {\n this.loadNativeDateInput = isMobile() && !this.showcustompicker;\n } else if (key === 'adaptiveposition') {\n this._dateOptions.adaptivePosition = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.containerTarget = getContainerTargetClass(this.nativeElement);\n this.isReadOnly = this.dataentrymode != 'undefined' && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);\n\n // this mobileinput width varies in ios hence setting width here.\n const mobileInput = this.getMobileInput();\n if (mobileInput) {\n setTimeout(() => {\n mobileInput.style.width = '100%';\n mobileInput.style.height = '100%';\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateOnShowSubscription) {\n this.dateOnShowSubscription.unsubscribe();\n }\n if(this.cancelLocaleChangeSubscription) {\n this.cancelLocaleChangeSubscription();\n }\n\n super.ngOnDestroy();\n }\n\n public ngOnDetach() {\n this.datetimepickerComponent?.hideModal();\n }\n\n setTimezone(locale) {\n this.i18nService.setTimezone(locale, this);\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\nimport { FormWidgetType, isMobileApp } from '@wm/core';\n\nexport const dateProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['name', PROP_STRING],\n ['outputformat', { value: 'yyyy-MM-dd', ...PROP_STRING }],\n ['placeholder', { value: 'Select Date', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', { value: true, ...PROP_BOOLEAN }], // TODO not addressed\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', { value: false, ...PROP_BOOLEAN }],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: false, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-date',\n dateProps\n );\n registerFormWidget(\n FormWidgetType.DATE,\n new Map(dateProps)\n );\n};\n","import { ChangeDetectorRef, Component, Inject, Injector, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\n\nimport { adjustContainerPosition, addEventListenerOnElement, AppDefaults, EVENT_LIFE, FormWidgetType, getDateObj, getDisplayDateTimeFormat, getFormattedDate, adjustContainerRightEdges, getMomentLocaleObject, App } from '@wm/core';\nimport {IWidgetConfig, provideAs, provideAsWidgetRef, setFocusTrap, styler} from '@wm/components/base';\nimport { BaseDateTimeComponent } from './../base-date-time.component';\nimport { registerProps } from './date.props';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\n\ndeclare const _, $, moment;\n\nconst CURRENT_DATE = 'CURRENT_DATE';\nconst DEFAULT_CLS = 'app-date input-group';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-date',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: '[wmDate]',\n templateUrl: './date.component.html',\n providers: [\n provideAs(DateComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DateComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DateComponent)\n ]\n})\nexport class DateComponent extends BaseDateTimeComponent {\n static initializeProps = registerProps();\n\n public bsDataValue;\n public showdropdownon: string;\n private dateContainerCls: string;\n public isOpen: boolean = false;\n private isEnterPressedOnDateInput = false;\n private _bsDefaultLoadCheck: boolean;\n public hint: string;\n\n private keyEventPlugin;\n private deregisterEventListener;\n private isCurrentDate;\n private focusTrap;\n\n get timestamp() {\n return this.bsDataValue ? this.bsDataValue.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-dd';\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, 'yyyy-MM-dd', this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // @ts-ignore\n get datavalue() {\n return getFormattedDate(this.datePipe, this.bsDataValue, this.outputformat, this.timeZone, null, this.isCurrentDate, this) || '';\n }\n\n // Todo[Shubham]: needs to be redefined\n // sets the dataValue and computes the display model values\n // @ts-ignore\n set datavalue(newVal) {\n if (newVal === CURRENT_DATE) {\n setTimeout(() => {\n this.bsDataValue = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n }, 50);\n this.isCurrentDate = true;\n } else {\n this.bsDataValue = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.isCurrentDate = false;\n }\n // update the previous datavalue.\n this.invokeOnChange(this.datavalue, undefined, true);\n this.cdRef.detectChanges();\n }\n\n @ViewChild(BsDatepickerDirective) protected bsDatePickerDirective;\n\n // TODO use BsLocaleService to set the current user's locale to see the localized labels\n constructor(\n inj: Injector,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n styler(this.nativeElement, this);\n\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this._bsDefaultLoadCheck = true;\n this.datepattern = this.appDefaults.dateFormat || getDisplayDateTimeFormat(FormWidgetType.DATE);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method triggered when the date input changes\n */\n onDisplayDateChange($event, isNativePicker: boolean = false) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n const newVal = getDateObj($event.target.value, {pattern: this.datepattern, isNativePicker: isNativePicker});\n // date pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.setDataValue(newVal);\n }\n\n // sets the dataValue and computes the display model values\n private setDataValue(newVal): void {\n this.invalidDateTimeFormat = false;\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n if (newVal) {\n this.bsDataValue = newVal;\n } else {\n this.bsDataValue = undefined;\n }\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n onDatePickerOpen() {\n this.isOpen = true;\n this.bsDataValue ? this.activeDate = this.bsDataValue : this.activeDate = new Date();\n if (!this.bsDataValue) {\n this.hightlightToday();\n }\n\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0, so bootstrap calculating the calendar container top position improperly.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n this.addDatepickerKeyboardEvents(this, false);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n adjustContainerRightEdges($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n\n public hideDatepickerDropdown() {\n this.invokeOnTouched();\n this.isOpen = false;\n this.focusTrap?.deactivate();\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.blurDateInput(this.isOpen);\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n // this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.isOpen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the date input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter') {\n const newVal = getDateObj(event.target.value, {pattern: this.datepattern});\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = event.target.value ? newVal : '';\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the date selection changes\n */\n onDateChange(newVal): void {\n\n /**\n * Ngx-bootstrap upgrade : To avoid the page load datechange event;\n * TODO:\n * https://github.com/valor-software/ngx-bootstrap/issues/6016\n * For above issue, once we get the solution from Ngx-Bootstrap team, remove the _bsDefaultLoadCheck check and update accordingly.\n * */\n if (this._bsDefaultLoadCheck) {\n this._bsDefaultLoadCheck = false;\n return;\n }\n this.setDataValue(newVal);\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const dateTimeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', { value: 'default', ...PROP_STRING }],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['datepattern', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['excludedays', PROP_STRING],\n ['excludedates', PROP_STRING],\n ['hint', PROP_STRING],\n ['hourstep', { value: 1, ...PROP_NUMBER }],\n ['maxdate', PROP_STRING],\n ['mindate', PROP_STRING],\n ['minutestep', { value: 15, ...PROP_NUMBER }],\n ['name', PROP_STRING],\n ['outputformat', { value: 'timestamp', ...PROP_STRING }],\n ['placeholder', { value: 'Select date time', ...PROP_STRING }],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['secondsstep', { value: 1, ...PROP_NUMBER }],\n ['shortcutkey', PROP_STRING],\n ['show', { value: true, ...PROP_BOOLEAN }],\n ['showdropdownon', { value: 'default', ...PROP_STRING }],\n ['showbuttonbar', PROP_BOOLEAN],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['showindevice', { displayType: 'inline-block', value: 'all', ...PROP_STRING }],\n ['showweeks', PROP_BOOLEAN],\n ['tabindex', { value: 0, ...PROP_NUMBER }],\n ['timestamp', PROP_STRING],\n ['selectfromothermonth', { value: true, ...PROP_BOOLEAN }],\n ['todaybutton', { value: true, ...PROP_BOOLEAN }],\n ['clearbutton', { value: true, ...PROP_BOOLEAN }],\n ['adaptiveposition', {value: false, ...PROP_BOOLEAN}],\n ['todaybuttonlabel', { value: 'LABEL_TODAY_DATE', ...PROP_STRING }],\n ['clearbuttonlabel', { value: 'LABEL_CLEAR_DATE', ...PROP_STRING }]\n\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-datetime',\n dateTimeProps\n );\n registerFormWidget(\n FormWidgetType.DATETIME,\n new Map(dateTimeProps)\n );\n registerFormWidget(\n FormWidgetType.TIMESTAMP,\n new Map(dateTimeProps)\n );\n};\n","import { AfterViewInit, ChangeDetectorRef, Component, Inject, Injector, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\n\nimport { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\n\nimport { AbstractI18nService, addClass, addEventListenerOnElement, adjustContainerPosition, AppDefaults, EVENT_LIFE, FormWidgetType, getDateObj, getDisplayDateTimeFormat, getFormattedDate, getNativeDateObject, adjustContainerRightEdges, App, getMomentLocaleObject } from '@wm/core';\nimport {provideAsWidgetRef, provideAs, styler, setFocusTrap} from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './date-time.props';\n\ndeclare const moment, $, _;\n\nconst DEFAULT_CLS = 'app-datetime input-group';\nconst WIDGET_CONFIG = { widgetType: 'wm-datetime', hostClass: DEFAULT_CLS };\n\nconst CURRENT_DATE = 'CURRENT_DATE';\n\n@Component({\n selector: '[wmDateTime]',\n templateUrl: './date-time.component.html',\n providers: [\n provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(DatetimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(DatetimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class DatetimeComponent extends BaseDateTimeComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n /**\n * The below propeties prefixed with \"bs\" always holds the value that is selected from the datepicker.\n * The bsDateTimeValue = bsDateValue + bsTimeValue.\n */\n private bsDateTimeValue: any;\n public bsDateValue;\n private bsTimeValue;\n private proxyModel;\n private app: App;\n public hint: string;\n public showdropdownon: string;\n private keyEventPlugin;\n private deregisterDatepickerEventListener;\n private deregisterTimepickeEventListener;\n private isEnterPressedOnDateInput = false;\n private focusTrap;\n\n get timestamp() {\n return this.proxyModel ? this.proxyModel.valueOf() : undefined;\n }\n\n get dateInputFormat() {\n return this._dateOptions.dateInputFormat || 'yyyy-MM-ddTHH:mm:ss';\n }\n\n /**\n * The displayValue is the display value of the bsDateTimeValue after applying the datePattern on it.\n * @returns {any|string}\n */\n get displayValue(): any {\n return getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, (this as any).key, this.isCurrentDate, this) || '';\n }\n\n @ViewChild(BsDatepickerDirective) bsDatePickerDirective;\n\n /**\n * This property checks if the timePicker is Open\n */\n public isTimeOpen = false;\n\n /**\n * This property checks if the datePicker is Open\n */\n public isDateOpen = false;\n\n /**\n * This timeinterval is used to run the timer when the time component value is set to CURRENT_TIME in properties panel.\n */\n private timeinterval: any;\n\n /**\n * This property is set to TRUE if the time component value is set to CURRENT_TIME; In this case the timer keeps changing the time value until the widget is available.\n */\n public isCurrentDate = false;\n\n private _debouncedOnChange: Function = _.debounce(this.invokeOnChange, 10);\n\n private dateContainerCls: string;\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentDate && !this.proxyModel) {\n return CURRENT_DATE;\n }\n return getFormattedDate(this.datePipe, this.proxyModel, this.outputformat, this.timeZone, null, null, this);\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the date selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal === CURRENT_DATE) {\n this.isCurrentDate = true;\n this.setTimeInterval();\n } else {\n this.proxyModel = newVal ? getDateObj(newVal, {isNativePicker: this.loadNativeDateInput}, this.timeZone) : undefined;\n this.clearTimeInterval();\n this.isCurrentDate = false;\n }\n this.bsTimeValue = this.bsDateValue = this.proxyModel;\n this.cdRef.detectChanges();\n }\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n private appDefaults: AppDefaults,\n app: App,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n this.registerDestroyListener(() => this.clearTimeInterval());\n styler(this.nativeElement, this);\n this.app = app;\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n this.dateContainerCls = `app-date-${this.widgetId}`;\n this._dateOptions.containerClass = `app-date ${this.dateContainerCls}`;\n this._dateOptions.showWeekNumbers = false;\n this.datepattern = this.appDefaults.dateTimeFormat || getDisplayDateTimeFormat(FormWidgetType.DATETIME);\n this.updateFormat('datepattern');\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval(() => {\n const currentTime = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n this.onModelUpdate(currentTime);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This is an internal method to toggle the time picker\n */\n public toggleTimePicker(newVal, $event?: any) {\n if (this.loadNativeDateInput) {\n this.onDateTimeInputFocus();\n return;\n }\n this.isTimeOpen = newVal;\n if ($event && $event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n }\n this.addTimepickerClickListener(this.isTimeOpen);\n }\n\n private addTimepickerClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterTimepickeEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.toggleTimePicker(false);\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.isTimeOpen = val;\n }\n\n private hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.toggleTimePicker(false);\n if (this.deregisterTimepickeEventListener) {\n this.deregisterTimepickeEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n /**\n * This is an internal method to add a click listener once the time dropdown is open\n */\n public onTimepickerOpen() {\n // adding class for time widget dropdown menu\n const tpElements = document.querySelectorAll('timepicker');\n _.forEach(tpElements, (element) => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n\n this.bsDatePickerDirective.hide();\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n adjustContainerRightEdges($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public onDatePickerOpen() {\n this.isDateOpen = !this.isDateOpen;\n this.toggleTimePicker(false);\n // We are using the two input tags(To maintain the modal and proxy modal) for the date control.\n // So actual bootstrap input target width we made it to 0 so bootstrap calculating the calendar container top position impropery.\n // To fix the container top position set the width 1px;\n this.$element.find('.model-holder').width('1px');\n const dpContainerEl = $('bs-datepicker-container');\n dpContainerEl.attr('aria-label', 'Use Arrow keys to navigate dates, Choose Date from datepicker');\n $('.bs-calendar-container').removeAttr('role');\n const datePickerContainer = $('.bs-datepicker-container')[0];\n this.focusTrap = setFocusTrap(datePickerContainer, true);\n this.focusTrap.activate();\n\n this.bsDateValue ? this.activeDate = this.bsDateValue : this.activeDate = new Date();\n if (!this.bsDateValue) {\n this.hightlightToday();\n }\n this.addDatepickerKeyboardEvents(this, true);\n adjustContainerPosition($('bs-datepicker-container'), this.nativeElement, this.bsDatePickerDirective._datepicker);\n }\n\n /**\n * This is an internal method to update the model\n */\n public onModelUpdate(newVal, type?) {\n\n if (type === 'date') {\n this.invalidDateTimeFormat = false;\n if (getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this) === this.displayValue) {\n $(this.nativeElement).find('.display-input').val(this.displayValue);\n }\n }\n // min date and max date validation in web.\n // if invalid dates are entered, device is showing validation message.\n this.minDateMaxDateValidationOnInput(newVal);\n if (!newVal) {\n // Set timevalue as 00:00:00 if we remove any one from hours/minutes/seconds field in timepicker after selecting date\n if (this.bsDateValue && this.bsTimePicker && (this.bsTimePicker.hours === '' || this.bsTimePicker.minutes === '' || this.bsTimePicker.seconds === '')) {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = moment(this.bsDateValue).startOf('day').toDate();\n } else {\n this.bsDateValue = this.bsTimeValue = this.proxyModel = undefined;\n }\n // When the datavalue is manually cleared, both newval and datavalue are undefined but prevDataValue exists - trigger change cb\n if (newVal !== this.datavalue || (!this.datavalue && (this as any).prevDatavalue)) {\n this._debouncedOnChange(this.datavalue, {}, true);\n }\n return;\n }\n if (type === 'date') {\n if (this.isDateOpen) {\n this.toggleTimePicker(true);\n }\n }\n this.proxyModel = newVal;\n if (this.proxyModel) {\n this.bsDateValue = this.bsTimeValue = newVal;\n }\n this._debouncedOnChange(this.datavalue, {}, true);\n this.cdRef.detectChanges();\n\n // Update timepicker with formatted time, when timezone is provided.\n const timePickerFields = $('.bs-timepicker-field');\n if (this.timeZone && (this as any).key === 'datetimestamp' && timePickerFields.length) {\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, (this as any).key, null, this);\n this.updateTimepickerFields(formattedDate, timePickerFields);\n }\n }\n\n // deduces the timepattern from datepattern set in the studio\n private getTimePattern() {\n let timepattern;\n const timePatternStartIndex = this.datepattern.toLowerCase().indexOf('h');\n let timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':ss');\n if (timePatternEndIndex > -1) {\n // adding the index to +3 to incluse :ss\n timePatternEndIndex += 3;\n } else {\n timePatternEndIndex = this.datepattern.toLowerCase().indexOf(':mm');\n // adding the index to +3 to incluse :mm\n if (timePatternEndIndex > -1) {\n timePatternEndIndex += 3;\n }\n }\n const hasMeridian = this.datepattern.toLowerCase().indexOf('a');\n timepattern = this.datepattern.substr(timePatternStartIndex, timePatternEndIndex);\n if (hasMeridian > -1)\n timepattern += ' a';\n return timepattern;\n }\n\n private updateTimepickerFields(date, timePickerFields) {\n const meridianField = $('timepicker button.text-center');\n const formattedArr = date.split(' ');\n const formattedTime = formattedArr[0].split(':');\n for (let i=0; i<timePickerFields.length; i++) {\n timePickerFields[i].value = formattedTime[i]\n }\n if (meridianField?.html()?.trim() !== formattedArr[1]) {\n meridianField.text(formattedArr[1]);\n }\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the date widget\n */\n public toggleDpDropdown($event, skipFocus: boolean = false) {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', { $event: $event });\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n $event.stopPropagation();\n return;\n }\n this.bsDatePickerDirective.toggle();\n this.addBodyClickListener(this.bsDatePickerDirective.isOpen);\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const bsDateContainerElement = bodyElement.querySelector(`.${this.dateContainerCls}`);\n this.deregisterDatepickerEventListener = addEventListenerOnElement(bodyElement, bsDateContainerElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.bsDatePickerDirective.hide();\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n public hideDatepickerDropdown() {\n this.isDateOpen = false;\n this.focusTrap?.deactivate();\n this.invokeOnTouched();\n this.bsDatePickerDirective.hide();\n\n // To open the timepicker menu when user wants to update time without changing the date.\n if(this.bsDateValue) {\n this.toggleTimePicker(true);\n }\n this.isEnterPressedOnDateInput = false;\n if (this.deregisterDatepickerEventListener) {\n this.deregisterDatepickerEventListener();\n }\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(this.isDateOpen);\n }\n\n public onDateChange($event, isNativePicker?: boolean) {\n if (this.isEnterPressedOnDateInput) {\n this.isEnterPressedOnDateInput = false;\n return;\n }\n let newVal = $event.target.value.trim();\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput}) : undefined;\n // datetime pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {\n return;\n }\n // min date and max date validation in mobile view.\n // if invalid dates are entered, device is showing an alert.\n if (isNativePicker && this.minDateMaxDateValidationOnInput(newVal, $event, this.displayValue, isNativePicker)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onModelUpdate(newVal);\n }\n\n /**\n * This is an internal method triggered when pressing key on the datetime input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n let newVal = event.target.value.trim();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter' || action === 'arrowdown') {\n newVal = newVal ? getNativeDateObject(newVal, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians}) : undefined;\n event.preventDefault();\n const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, (this as any).key, this.isCurrentDate, this);\n const inputVal = event.target.value.trim();\n if (inputVal && this.datepattern === 'timestamp') {\n if (!_.isNaN(inputVal) && _.parseInt(inputVal) !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n }\n } else if (inputVal && inputVal !== formattedDate) {\n this.invalidDateTimeFormat = true;\n this.invokeOnChange(this.datavalue, event, false);\n } else {\n this.invalidDateTimeFormat = false;\n this.isEnterPressedOnDateInput = true;\n this.bsDatePickerDirective.bsValue = newVal;\n }\n this.toggleDpDropdown(event);\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideDatepickerDropdown();\n this.hideTimepickerDropdown();\n }\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput});\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n\n // change and blur events are added from the template\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, callback, locals);\n }\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('current-date')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', { $event });\n }\n }\n}\n","import { FormWidgetType, isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget } from '@wm/components/base';\n\nexport const timeProps = new Map(\n [\n ['autofocus', PROP_BOOLEAN],\n ['class', PROP_STRING],\n ['dataentrymode', {value: 'default', ...PROP_STRING}],\n ['datavaluesource', PROP_ANY],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['hourstep', {value: 1, ...PROP_NUMBER}],\n ['maxtime', PROP_STRING],\n ['mintime', PROP_STRING],\n ['minutestep', {value: 15, ...PROP_NUMBER}],\n ['name', PROP_STRING],\n ['outputformat', {value: 'HH:mm:ss', ...PROP_STRING}],\n ['placeholder', {value: 'Select time', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showdropdownon', {value: 'default', ...PROP_STRING}],\n ['showcustompicker', { value: false, ...PROP_BOOLEAN }],\n ['secondsstep', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['timepattern', PROP_STRING],\n ['timestamp', PROP_STRING]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-time',\n timeProps\n );\n registerFormWidget(\n FormWidgetType.TIME,\n new Map(timeProps)\n );\n};\n","import { Component, Inject, Injector, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { TimepickerConfig } from 'ngx-bootstrap/timepicker';\nimport {\n $appDigest,\n AbstractI18nService,\n addClass,\n addEventListenerOnElement,\n adjustContainerPosition,\n App,\n AppDefaults,\n EVENT_LIFE,\n FormWidgetType,\n getDisplayDateTimeFormat,\n getFormattedDate,\n getNativeDateObject,\n getMomentLocaleObject\n} from '@wm/core';\nimport { provideAsWidgetRef, provideAs, styler } from '@wm/components/base';\n\nimport {BaseDateTimeComponent, getTimepickerConfig} from './../base-date-time.component';\nimport { registerProps } from './time.props';\n\nconst CURRENT_TIME = 'CURRENT_TIME';\nconst DEFAULT_CLS = 'input-group app-timeinput';\nconst WIDGET_CONFIG = {widgetType: 'wm-time', hostClass: DEFAULT_CLS};\n\ndeclare const _, moment, $;\n\n@Component({\n selector: '[wmTime]',\n templateUrl: './time.component.html',\n providers: [\n provideAs(TimeComponent, NG_VALUE_ACCESSOR, true),\n provideAs(TimeComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(TimeComponent),\n { provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }\n ]\n})\nexport class TimeComponent extends BaseDateTimeComponent implements OnDestroy {\n static initializeProps = registerProps();\n /**\n * This property sets the display pattern of the time selected\n */\n timepattern: string;\n\n /**\n * This property sets the output format for the selected time datavalue\n */\n outputformat: string;\n\n public showdropdownon: string;\n public mintime;\n public maxtime;\n public hint: string;\n\n private deregisterEventListener;\n private app: App;\n private displayInputElem: HTMLElement;\n\n get timestamp() {\n return this.bsTimeValue ? this.bsTimeValue.valueOf() : undefined;\n }\n\n // @ts-ignore\n get datavalue(): any {\n if (this.isCurrentTime && !this.bsTimeValue) {\n return CURRENT_TIME;\n }\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.outputformat, this.timeZone, null, null, this) || '';\n }\n\n /**Todo[Shubham]: needs to be redefined\n * This property sets the default value for the time selection\n */\n // @ts-ignore\n set datavalue(newVal: any) {\n if (newVal) {\n if (newVal === CURRENT_TIME) {\n this.isCurrentTime = true;\n this.setTimeInterval();\n } else {\n this.clearTimeInterval();\n this.bsTimeValue = getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput});\n this.isCurrentTime = false;\n this.mintimeMaxtimeValidation();\n }\n } else {\n this.bsTimeValue = undefined;\n this.clearTimeInterval();\n this.isCurrentTime = false;\n }\n this.invokeOnChange(this.datavalue);\n $appDigest();\n }\n\n get displayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, this.timepattern, this.timeZone, null, null, this) || '';\n }\n\n get nativeDisplayValue() {\n return getFormattedDate(this.datePipe, this.bsTimeValue, 'HH:mm:ss', this.timeZone, null, null, this) || '';\n }\n\n /* Internal property to have a flag to check the given datavalue is of Current time*/\n public isCurrentTime: boolean;\n\n private timeinterval: any;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private minTime: Date;\n\n /**\n * This is an internal property used to map it to the widget\n */\n private maxTime: Date;\n\n /**\n * This is an internal property used to toggle the timepicker dropdown\n */\n public status = { isopen: false };\n\n /**\n * This is an internal property used to map the main model to the time widget\n */\n private bsTimeValue: Date;\n\n private keyEventPlugin;\n\n constructor(\n inj: Injector,\n private ngZone: NgZone,\n private appDefaults: AppDefaults,\n app: App,\n @Inject(EVENT_MANAGER_PLUGINS) evtMngrPlugins\n ) {\n super(inj, WIDGET_CONFIG);\n\n // KeyEventsPlugin\n this.keyEventPlugin = evtMngrPlugins[1];\n\n styler(this.nativeElement, this);\n /**\n * Destroy the timer once the date widget is gone\n */\n this.registerDestroyListener(() => this.clearTimeInterval());\n\n this.timepattern = this.appDefaults.timeFormat || getDisplayDateTimeFormat(FormWidgetType.TIME);\n this.updateFormat('timepattern');\n this.app = app;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'tabindex') {\n return;\n }\n if (key === 'timepattern') {\n this.updateFormat('timepattern');\n }\n if (key === 'mintime') {\n this.minTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput }); // TODO it is supposed to be time conversion, not to the day\n this.mintimeMaxtimeValidation();\n } else if (key === 'maxtime') {\n this.maxTime = getNativeDateObject(nv, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.mintimeMaxtimeValidation();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n setValidateType(min, max, val) {\n if (this.timeNotInRange) {\n if (val < min) {\n (this as any).validateType = 'mintime';\n } else if (val > max) {\n (this as any).validateType = 'maxtime';\n }\n }\n }\n\n /**\n * This is an internal method used to validate mintime and maxtime\n */\n private mintimeMaxtimeValidation() {\n this.timeNotInRange = this.minTime && this.maxTime && (this.bsTimeValue < this.minTime || this.bsTimeValue > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, this.bsTimeValue);\n this.invokeOnChange(this.datavalue, undefined, false);\n }\n\n /**\n * This is an internal method used to toggle the dropdown of the time widget\n */\n public toggleDropdown($event, skipFocus: boolean = false): void {\n if (this.loadNativeDateInput) {\n //Fixes click event getting triggred twice in Mobile devices.\n if(!skipFocus){\n this.onDateTimeInputFocus();\n }\n return;\n }\n if ($event.type === 'click') {\n this.invokeEventCallback('click', {$event: $event});\n //this.focusOnInputEl();\n }\n if ($event.target && $($event.target).is('input') && !(this.isDropDownDisplayEnabledOnInput(this.showdropdownon))) {\n return;\n }\n this.ngZone.run(() => {\n this.status.isopen = !this.status.isopen;\n });\n this.addBodyClickListener(this.status.isopen);\n }\n\n /**\n * This is an internal method used to Prevent time picker close while changing time value\n */\n private preventTpClose($event) {\n $event.stopImmediatePropagation();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n }\n\n private addBodyClickListener(skipListener) {\n if (!skipListener) {\n return;\n }\n const bodyElement = document.querySelector('body');\n setTimeout(() => {\n const dropdownElement = $(bodyElement).find('>bs-dropdown-container .dropdown-menu').get(0);\n this.deregisterEventListener = addEventListenerOnElement(bodyElement, dropdownElement, this.nativeElement, 'click', this.isDropDownDisplayEnabledOnInput(this.showdropdownon), () => {\n this.status.isopen = false;\n }, EVENT_LIFE.ONCE, true);\n }, 350);\n }\n\n /**\n * This is an internal method triggered when pressing key on the time input\n */\n public onDisplayKeydown(event) {\n if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {\n event.stopPropagation();\n const action = this.keyEventPlugin.constructor.getEventFullKey(event);\n if (action === 'enter' || action === 'arrowdown') {\n event.preventDefault();\n this.toggleDropdown(event);\n } else {\n this.hideTimepickerDropdown();\n }\n } else {\n this.hideTimepickerDropdown();\n }\n }\n\n /**\n * This is an internal method triggered when the time input changes\n */\n onDisplayTimeChange($event) {\n const newVal = getNativeDateObject($event.target.value, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n // time pattern validation\n // if invalid pattern is entered, device is showing an error.\n if (!this.formatValidation(newVal, $event.target.value)) {\n return;\n }\n this.invalidDateTimeFormat = false;\n this.onTimeChange(newVal);\n }\n\n onInputBlur($event) {\n if (!$($event.relatedTarget).hasClass('bs-timepicker-field')) {\n this.invokeOnTouched();\n this.invokeEventCallback('blur', {$event});\n }\n }\n\n /**\n * This is an internal method used to execute the on time change functionality\n */\n private onTimeChange(newVal, isNativePicker?: boolean) {\n let timeValue,\n timeInputValue,\n minTimeMeridian,\n maxTimeMeridian;\n // For nativePicker, newVal is event, get the dateobject from the event.\n if (isNativePicker) {\n newVal = getNativeDateObject(newVal.target.value, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n }\n if (newVal) {\n this.bsTimeValue = newVal;\n // if the newVal is valid but not in the given range then highlight the input field\n this.timeNotInRange = this.minTime && this.maxTime && (newVal < this.minTime || newVal > this.maxTime);\n this.setValidateType(this.minTime, this.maxTime, newVal);\n } else {\n // sometimes library is not returning the correct value when the min and max time are given, displaying the datavalue based on the value given by the user\n if (this.bsTimePicker && this.bsTimePicker.min && this.bsTimePicker.max) {\n minTimeMeridian = moment(new Date(this.bsTimePicker.min)).format('A');\n maxTimeMeridian = moment(new Date(this.bsTimePicker.max)).format('A');\n timeValue = this.bsTimePicker.hours + ':' + (this.bsTimePicker.minutes || 0) + ':' + (this.bsTimePicker.seconds || 0) + (this.bsTimePicker.showMeridian ? (' ' + minTimeMeridian) : '');\n timeInputValue = getNativeDateObject(timeValue, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n this.bsTimePicker.meridian = minTimeMeridian;\n this.timeNotInRange = (this.bsTimePicker.min > timeInputValue || this.bsTimePicker.max < timeInputValue);\n this.setValidateType(this.bsTimePicker.min, this.bsTimePicker.max, timeInputValue);\n }\n this.bsTimeValue = timeInputValue;\n }\n this.invokeOnTouched();\n this.invokeOnChange(this.datavalue, {}, true);\n }\n\n /**\n * This is an internal method used to maintain a time interval to update the time model when the data value is set to CURRENT_TIME\n */\n private setTimeInterval() {\n if (this.timeinterval) {\n return;\n }\n this.timeinterval = setInterval( () => {\n const now = this.timeZone ? getMomentLocaleObject(this.timeZone) : new Date();\n now.setSeconds(now.getSeconds() + 1);\n this.datavalue = CURRENT_TIME;\n this.onTimeChange(now);\n }, 1000);\n }\n\n /**\n * This is an internal method used to clear the time interval created\n */\n private clearTimeInterval() {\n if (this.timeinterval) {\n clearInterval(this.timeinterval);\n this.timeinterval = null;\n }\n }\n\n /**\n * This function sets the value isOpen/isTimeOpen (i.e when datepicker popup is closed) based on widget type(i.e DateTime, Time)\n * @param val - isOpen/isTimeOpen is set based on the timepicker popup is open/closed\n */\n private setIsTimeOpen(val: boolean) {\n this.status.isopen = val;\n }\n\n // Change event is registered from the template, Prevent the framework from registering one more event\n protected handleEvent(node: HTMLElement, eventName: string, eventCallback: Function, locals: any) {\n if (!_.includes(['blur', 'focus', 'change', 'click'], eventName)) {\n super.handleEvent(node, eventName, eventCallback, locals);\n }\n }\n\n public hideTimepickerDropdown() {\n this.invokeOnTouched();\n this.status.isopen = false;\n if (this.deregisterEventListener) {\n this.deregisterEventListener();\n }\n this.removeKeyupListener();\n const parentEl = $(this.nativeElement).closest('.app-composite-widget.caption-floating');\n if (parentEl.length > 0) {\n this.app.notify('captionPositionAnimate', {displayVal: this.displayValue, nativeEl: parentEl});\n }\n this.blurDateInput(true);\n }\n\n private isValid(event) {\n if (!event) {\n const enteredDate = $(this.nativeElement).find('input').val();\n const newVal = getNativeDateObject(enteredDate, {meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });\n if (!this.formatValidation(newVal, enteredDate)) {\n return;\n }\n }\n }\n /**\n * This is an internal method to add css class for dropdown while opening the time dropdown\n */\n public onShown() {\n const tpElements = document.querySelectorAll('timepicker');\n _.forEach(tpElements, element => {\n addClass(element.parentElement as HTMLElement, 'app-datetime', true);\n });\n this.focusTimePickerPopover(this);\n this.bindTimePickerKeyboardEvents();\n adjustContainerPosition($('bs-dropdown-container'), this.nativeElement, this.bsDropdown._dropdown, $('bs-dropdown-container .dropdown-menu'));\n }\n\n public assignModel() {\n if (!this.displayInputElem) {\n this.displayInputElem = this.getMobileInput();\n }\n (this.displayInputElem as any).value = _.get(this, 'nativeDisplayValue');\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Injector, Input, NgZone, OnDestroy, Output, ViewChild } from '@angular/core';\n\ndeclare const _, moment, $;\n\n@Component({\n selector: 'wm-pickergroup',\n template: `\n <div class=\"app-picker-group\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PickerGroupComponent {\n\n}\n\n@Component({\n selector: 'wm-picker',\n template: `\n <div class=\"app-picker\">\n <div class=\"app-picker-option-container\">\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div *ngFor=\"let option of options; index as i;\" class=\"app-picker-option\">\n {{option.label}}\n </div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n <div class=\"app-picker-option app-picker-empty-option\">E</div>\n </div>\n <div class=\"app-picker-ruler\"></div>\n </div>\n `\n})\nexport class PickerComponent implements AfterViewInit {\n\n public $el;\n\n private pickerAnimator;\n\n @Output() change = new EventEmitter<{\n label: string,\n value?: any\n }>();\n\n private _selectedIndex = 0;\n\n private _selectedValue: any;\n\n private _options: Array<{label: string, value?: any}> = [];\n\n noOfEmptyElements = 2;\n\n constructor(protected inj: Injector) {\n this.$el = $(inj.get(ElementRef).nativeElement);\n }\n\n @Input()\n set selectedValue(s: string) {\n this._selectedValue = s;\n this.reRender();\n }\n\n get selectedValue() {\n return this._selectedValue;\n }\n\n @Input()\n set options(opts: Array<{label: string, value?: any}>) {\n this._options = opts.map(o => ({\n label: o.label,\n value: o.value !== undefined ? o.value : o.label\n }));\n this.reRender();\n }\n\n get options() {\n return this._options;\n }\n\n reRender() {\n this._selectedIndex = this.options.findIndex(o => o.value === this.selectedValue);\n this.pickerAnimator?.select(this._selectedIndex + this.noOfEmptyElements);\n }\n\n set selectedIndex(i: number) {\n this._selectedIndex = i;\n this._selectedValue = this.options[i].value;\n this.change.emit(this.options[i]);\n }\n\n get selectedIndex() {\n return this._selectedIndex;\n }\n\n ngAfterViewInit(): void {\n this.pickerAnimator = new PickerAnimator(this);\n }\n\n}\n\nclass PickerAnimator {\n\n constructor(private picker: PickerComponent) {\n let lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n const computeIndex = (d: number) => lastSelectedIndex + Math.floor(d / 16);\n this.select(lastSelectedIndex);\n this.getElement().swipey({\n 'direction': $.fn.swipey.DIRECTIONS.VERTICAL,\n 'threshold': 10,\n 'target': picker.$el,\n 'onSwipe': (e, data) => {\n this.select(computeIndex(-1 * data.length));\n },\n 'onSwipeEnd': (e, data) => {\n const nextSelectedIndex = computeIndex(-1 * data.length);\n this.select(nextSelectedIndex);\n lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n }\n });\n }\n\n getElement() {\n return this.picker.$el.find('.app-picker-option-container:first');\n }\n\n getOptionElements() {\n return this.getElement().find('.app-picker-option');\n }\n\n select(selectedIndex: number) {\n const options = this.getOptionElements();\n if (selectedIndex < this.picker.noOfEmptyElements\n || selectedIndex >= options.length - this.picker.noOfEmptyElements) {\n return;\n }\n this.getElement()\n .find('.app-picker-option.app-picker-option-selected')\n .removeClass('app-picker-option-selected');\n options.eq(selectedIndex).addClass('app-picker-option-selected');\n this.picker.selectedIndex = selectedIndex - this.picker.noOfEmptyElements;\n const minIndex = selectedIndex - this.picker.noOfEmptyElements;\n const maxIndex = selectedIndex + this.picker.noOfEmptyElements;\n options.each((i, e) => {\n if (i >= minIndex && i <= maxIndex) {\n const rotation = (i - selectedIndex) * 30;\n const opacity = 1 - Math.abs(i - selectedIndex) * 0.3;\n $(e).css({\n transform : 'perspective(500px) rotateX(' + rotation + 'deg)',\n opacity: opacity\n }).show();\n } else {\n $(e).hide();\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DateComponent } from './date/date.component';\nimport { DateTimePickerComponent, TimePickerComponent } from './date-time/date-time-picker.component';\nimport { DatetimeComponent } from './date-time/date-time.component';\nimport { TimeComponent } from './time/time.component';\nimport { PickerComponent, PickerGroupComponent } from './picker/picker.component';\n\nconst components = [\n DateComponent,\n DatetimeComponent,\n TimeComponent,\n DateTimePickerComponent,\n TimePickerComponent,\n PickerComponent,\n PickerGroupComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n BsDatepickerModule,\n BsDropdownModule,\n FormsModule,\n TimepickerModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class EpochModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {BaseDateTimeComponent as ɵb,getTimepickerConfig as ɵa} from './base-date-time.component';\nexport {DateTimePickerComponent as ɵc,TimePickerComponent as ɵd} from './date-time/date-time-picker.component';\nexport {registerProps as ɵf} from './date-time/date-time.props';\nexport {registerProps as ɵe} from './date/date.props';\nexport {PickerComponent as ɵi,PickerGroupComponent as ɵh} from './picker/picker.component';\nexport {registerProps as ɵg} from './time/time.props';"],"names":["EventEmitter","App","Component","Injector","BsModalService","ViewChild","Input","Output","CURRENT_DATE","TimepickerConfig","getLocaleDayPeriods","FormStyle","TranslationWidth","BsDatepickerConfig","AbstractI18nService","ToDatePipe","isMobile","getFormattedDate","getDateObj","isString","setAttr","getNativeDateObject","hasCordova","isIos","getContainerTargetClass","BaseFormCustomComponent","Directive","BsDropdownDirective","TimepickerComponent","PROP_BOOLEAN","PROP_STRING","PROP_ANY","PROP_NUMBER","registerProps","register","registerFormWidget","FormWidgetType","DEFAULT_CLS","WIDGET_CONFIG","styler","getDisplayDateTimeFormat","getMomentLocaleObject","setFocusTrap","adjustContainerPosition","adjustContainerRightEdges","addEventListenerOnElement","provideAs","NG_VALUE_ACCESSOR","NG_VALIDATORS","provideAsWidgetRef","ChangeDetectorRef","AppDefaults","Inject","EVENT_MANAGER_PLUGINS","BsDatepickerDirective","addClass","NgZone","$appDigest","ElementRef","NgModule","CommonModule","BsDatepickerModule","BsDropdownModule","FormsModule","TimepickerModule","WmComponentsModule"],"mappings":"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"}