@wavemaker/app-ng-runtime 11.4.0-next.25703 → 11.4.0-next.25705

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 (59) hide show
  1. app-ng-runtime/build-task/basic/tree/tree.build.d.ts +1 -2
  2. app-ng-runtime/build-task/bundles/index.umd.js +7 -9
  3. app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
  4. app-ng-runtime/build-task/esm2015/basic/tree/tree.build.js +3 -4
  5. app-ng-runtime/build-task/esm2015/navigation/popover/popover.build.js +3 -3
  6. app-ng-runtime/build-task/fesm2015/index.js +7 -9
  7. app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
  8. app-ng-runtime/components/base/bundles/index.umd.js +6 -3
  9. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  10. app-ng-runtime/components/base/esm2015/utils/widget-utils.js +7 -4
  11. app-ng-runtime/components/base/fesm2015/index.js +6 -3
  12. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  13. app-ng-runtime/components/base/utils/widget-utils.d.ts +1 -1
  14. app-ng-runtime/components/basic/tree/bundles/index.umd.js +280 -256
  15. app-ng-runtime/components/basic/tree/bundles/index.umd.js.map +1 -1
  16. app-ng-runtime/components/basic/tree/esm2015/public_api.js +2 -2
  17. app-ng-runtime/components/basic/tree/esm2015/tree.component.js +322 -0
  18. app-ng-runtime/components/basic/tree/esm2015/tree.module.js +3 -3
  19. app-ng-runtime/components/basic/tree/fesm2015/index.js +260 -248
  20. app-ng-runtime/components/basic/tree/fesm2015/index.js.map +1 -1
  21. app-ng-runtime/components/basic/tree/index.metadata.json +1 -1
  22. app-ng-runtime/components/basic/tree/public_api.d.ts +1 -1
  23. app-ng-runtime/components/basic/tree/tree.component.d.ts +34 -0
  24. app-ng-runtime/components/data/list/bundles/index.umd.js +28 -4
  25. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  26. app-ng-runtime/components/data/list/esm2015/list.component.js +29 -5
  27. app-ng-runtime/components/data/list/fesm2015/index.js +28 -4
  28. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  29. app-ng-runtime/components/data/list/index.metadata.json +1 -1
  30. app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
  31. app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +1 -1
  32. app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
  33. app-ng-runtime/components/dialogs/default/index.metadata.json +1 -1
  34. app-ng-runtime/components/input/epoch/bundles/index.umd.js +39 -21
  35. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  36. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +43 -25
  37. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +3 -3
  38. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time.component.js +2 -2
  39. app-ng-runtime/components/input/epoch/fesm2015/index.js +45 -27
  40. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  41. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  42. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +3 -4
  43. app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
  44. app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +5 -6
  45. app-ng-runtime/components/navigation/popover/fesm2015/index.js +4 -5
  46. app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
  47. app-ng-runtime/package.json +1 -1
  48. app-ng-runtime/scripts/datatable/datatable.js +23 -23
  49. app-ng-runtime/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
  50. app-ng-runtime/variables/bundles/index.umd.js +14 -4
  51. app-ng-runtime/variables/bundles/index.umd.js.map +1 -1
  52. app-ng-runtime/variables/esm2015/manager/action/notification-action.manager.js +5 -6
  53. app-ng-runtime/variables/esm2015/service/variables.service.js +8 -1
  54. app-ng-runtime/variables/fesm2015/index.js +11 -5
  55. app-ng-runtime/variables/fesm2015/index.js.map +1 -1
  56. app-ng-runtime/variables/index.metadata.json +1 -1
  57. app-ng-runtime/variables/service/variables.service.d.ts +4 -0
  58. app-ng-runtime/components/basic/tree/esm2015/tree.directive.js +0 -310
  59. app-ng-runtime/components/basic/tree/tree.directive.d.ts +0 -35
@@ -380,7 +380,6 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
380
380
  this.loadNativeDateInput = isMobile() && !this.showcustompicker;
381
381
  }
382
382
  get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }
383
- ;
384
383
  /**
385
384
  * returns true if the input value is default (i.e open date picker on input click)
386
385
  * @param1 dropdownvalue, user selected value (by default datepicker opens on input click)
@@ -430,7 +429,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
430
429
  };
431
430
  }
432
431
  /* WMS-18269 | Extending the existing validation for 'required' */
433
- if (this["show"] && this["required"]) {
432
+ if (this['show'] && this['required']) {
434
433
  return !!c.value ? null : { required: true };
435
434
  }
436
435
  this.validateType = '';
@@ -571,14 +570,18 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
571
570
  const newDay = newDate.getDate().toString();
572
571
  _.filter($(`span:contains(${newDay})`).not('.is-other-month'), (obj) => {
573
572
  if ($(obj).text() === newDay) {
573
+ if ($(obj).hasClass('selected')) {
574
+ $(obj).parent().attr('aria-selected', 'true');
575
+ }
574
576
  $(obj).attr('aria-label', moment(newDate).format('dddd, MMMM Do YYYY'));
577
+ $('[bsdatepickerdaydecorator]').not('.is-other-month').attr('tabindex', '-1');
578
+ $(obj).attr('tabindex', '0');
575
579
  $(obj).focus();
576
580
  this.activeDate = newDate;
577
581
  }
578
582
  });
579
583
  if (newDate.getMonth() === new Date().getMonth() && newDate.getFullYear() === new Date().getFullYear()) {
580
584
  this.hightlightToday();
581
- $(`span:contains(${new Date().getDate().toString()})`).not('.is-other-month').parent().attr('aria-selected', 'true');
582
585
  }
583
586
  });
584
587
  }
@@ -606,7 +609,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
606
609
  getMonth(date, inc) {
607
610
  const currentMonth = new Date(date);
608
611
  let month = currentMonth.getMonth();
609
- let year = currentMonth.getFullYear();
612
+ const year = currentMonth.getFullYear();
610
613
  month += inc;
611
614
  const newDate = new Date(year, month);
612
615
  const fullMonth = newDate.toLocaleString('en-US', { month: 'long' });
@@ -628,6 +631,9 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
628
631
  if (event.originalEvent) {
629
632
  this.setFocusForDate(-1);
630
633
  }
634
+ setTimeout(() => {
635
+ $(`.bs-datepicker-head .previous`).focus();
636
+ });
631
637
  });
632
638
  datePickerHead.find(`.next`).click((event) => {
633
639
  this.next = this.getMonth(this.activeDate, 2);
@@ -637,6 +643,9 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
637
643
  if (event.originalEvent) {
638
644
  this.setFocusForDate(1);
639
645
  }
646
+ setTimeout(() => {
647
+ $(`.bs-datepicker-head .next`).focus();
648
+ });
640
649
  });
641
650
  datePickerHead.find(`.current`).click((event) => {
642
651
  // check for original mouse click
@@ -653,6 +662,22 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
653
662
  });
654
663
  datePickerHead.find('.next').attr('aria-label', `Next Month, ${this.next.fullMonth} ${this.next.date.getFullYear()}`);
655
664
  datePickerHead.find('.previous').attr('aria-label', `Previous Month, ${this.prev.fullMonth} ${this.prev.date.getFullYear()}`);
665
+ setTimeout(() => {
666
+ const currentNodes = datePickerHead.find('.current span');
667
+ const msg = 'Changed to month ';
668
+ // currentNodes.each((i) => {
669
+ // msg =`${msg} ${$(currentNodes[i]).text()}`;
670
+ // });
671
+ datePickerHead.find('.current').attr("aria-live", "assertive").attr("aria-atomic", "false");
672
+ if (this.clicked) {
673
+ if ($(currentNodes[0]).text()) {
674
+ datePickerHead.find('.ng-star-inserted').prepend(`<div class="sr-only">${msg}</div>`);
675
+ }
676
+ if ($(currentNodes[1]).text()) {
677
+ datePickerHead.find('.current').last().prepend(`<div class="sr-only"> and year </div>`);
678
+ }
679
+ }
680
+ });
656
681
  }
657
682
  /**
658
683
  * This method sets focus for months/days depending on the loaded datepicker table
@@ -816,8 +841,6 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
816
841
  */
817
842
  loadMonths() {
818
843
  setTimeout(() => {
819
- const datePickerBody = $('.bs-datepicker-body');
820
- datePickerBody.find('table.months span').attr('tabindex', '0');
821
844
  this.addKeyBoardEventsForMonths();
822
845
  this.addDatepickerMouseEvents();
823
846
  });
@@ -870,8 +893,6 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
870
893
  */
871
894
  loadYears() {
872
895
  setTimeout(() => {
873
- const datePickerBody = $('.bs-datepicker-body');
874
- datePickerBody.find('table.years span').attr('tabindex', '0');
875
896
  this.addKeyBoardEventsForYears();
876
897
  this.addDatepickerMouseEvents();
877
898
  });
@@ -892,6 +913,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
892
913
  }
893
914
  }
894
915
  setTimeout(() => {
916
+ $(`.bs-datepicker-body table.months span`).attr('tabindex', '-1');
917
+ $(`.bs-datepicker-body table.months span:contains(${newMonth})`).attr('tabindex', '0');
895
918
  $(`.bs-datepicker-body table.months span:contains(${newMonth})`).focus();
896
919
  this.activeDate = newDate;
897
920
  });
@@ -950,6 +973,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
950
973
  }
951
974
  }
952
975
  setTimeout(() => {
976
+ $(`.bs-datepicker-body table.years span`).attr('tabindex', '-1');
977
+ $(`.bs-datepicker-body table.years span:contains(${newYear})`).attr('tabindex', '0');
953
978
  $(`.bs-datepicker-body table.years span:contains(${newYear})`).focus();
954
979
  this.activeDate = newDate;
955
980
  });
@@ -1130,37 +1155,27 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
1130
1155
  }
1131
1156
  onDateTimeInputBlur() {
1132
1157
  // removing the opacity on blur of the mobile widget
1133
- let displayInputElem = this.getMobileInput();
1158
+ const displayInputElem = this.getMobileInput();
1134
1159
  if (displayInputElem && !hasCordova()) {
1135
- let children = this.nativeElement.children;
1160
+ const children = this.nativeElement.children;
1136
1161
  for (let i = 0; i < children.length; i++) {
1137
1162
  children[i].classList.remove('add-opacity');
1138
1163
  }
1139
1164
  displayInputElem.classList.remove('remove-opacity');
1140
- let allDateTimeElements = this.nativeElement.getElementsByTagName('*');
1141
- for (let i = 0; i < allDateTimeElements.length; i++) {
1142
- allDateTimeElements[i].setAttribute('tabindex', this.tabindex);
1143
- }
1144
- displayInputElem.removeAttribute('tabindex');
1145
1165
  }
1146
1166
  }
1147
1167
  onDateTimeInputFocus(skipFocus = false) {
1148
1168
  if (!this.loadNativeDateInput) {
1149
1169
  return;
1150
1170
  }
1151
- let displayInputElem = this.getMobileInput();
1171
+ const displayInputElem = this.getMobileInput();
1152
1172
  // toggling the classes to show and hide the native widget using opacity
1153
1173
  if (skipFocus && !hasCordova()) {
1154
- let children = this.nativeElement.children;
1174
+ const children = this.nativeElement.children;
1155
1175
  for (let i = 0; i < children.length; i++) {
1156
1176
  children[i].classList.add('add-opacity');
1157
1177
  }
1158
1178
  displayInputElem.classList.add('remove-opacity');
1159
- let allDateTimeElements = this.nativeElement.getElementsByTagName('*');
1160
- for (let i = 0; i < allDateTimeElements.length; i++) {
1161
- allDateTimeElements[i].setAttribute('tabindex', '-1');
1162
- }
1163
- displayInputElem.setAttribute('tabindex', this.tabindex);
1164
1179
  return;
1165
1180
  }
1166
1181
  if (displayInputElem && this._triggeredByUser) {
@@ -1250,9 +1265,12 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
1250
1265
  this.containerTarget = getContainerTargetClass(this.nativeElement);
1251
1266
  this.isReadOnly = this.dataentrymode != 'undefined' && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);
1252
1267
  // this mobileinput width varies in ios hence setting width here.
1253
- let mobileInput = this.getMobileInput();
1268
+ const mobileInput = this.getMobileInput();
1254
1269
  if (mobileInput) {
1255
- mobileInput.style.width = mobileInput.parentElement.clientWidth + 'px';
1270
+ setTimeout(() => {
1271
+ mobileInput.style.width = '100%';
1272
+ mobileInput.style.height = '100%';
1273
+ });
1256
1274
  }
1257
1275
  }
1258
1276
  ngOnDestroy() {
@@ -1497,7 +1515,7 @@ class DateComponent extends BaseDateTimeComponent {
1497
1515
  if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {
1498
1516
  event.stopPropagation();
1499
1517
  const action = this.keyEventPlugin.constructor.getEventFullKey(event);
1500
- if (action === 'enter' || action === 'arrowdown') {
1518
+ if (action === 'enter') {
1501
1519
  const newVal = getDateObj(event.target.value, { pattern: this.datepattern });
1502
1520
  event.preventDefault();
1503
1521
  const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, null, this.isCurrentDate, this);
@@ -1548,7 +1566,7 @@ DateComponent.initializeProps = registerProps$2();
1548
1566
  DateComponent.decorators = [
1549
1567
  { type: Component, args: [{
1550
1568
  selector: '[wmDate]',
1551
- template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
1569
+ template: " <input class=\"form-control app-textbox app-dateinput display-input\"\n focus-target\n type=\"text\"\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n [disabled]=\"disabled || readonly\"\n [autofocus]=\"autofocus\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n (change)=\"onDisplayDateChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event);\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isOpen\"\n #datepicker=\"bsDatepicker\"\n bsDatepicker\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n placement=\"bottom right\"\n [isDisabled]=\"disabled || readonly\"\n [bsValue]=\"bsDataValue\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n (bsValueChange)=\"onDateChange($event)\">\n</div>\n\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n mode=\"DATE\"\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDataValue\"\n (change)=\"onDateChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event);\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n [attr.aria-label]=\"displayValue ? 'Change Date' + displayValue : 'Choose Date'\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
1552
1570
  providers: [
1553
1571
  provideAs(DateComponent, NG_VALUE_ACCESSOR, true),
1554
1572
  provideAs(DateComponent, NG_VALIDATORS, true),
@@ -2009,7 +2027,7 @@ DatetimeComponent.initializeProps = registerProps$1();
2009
2027
  DatetimeComponent.decorators = [
2010
2028
  { type: Component, args: [{
2011
2029
  selector: '[wmDateTime]',
2012
- template: " <div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"hint\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"tabindex\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
2030
+ template: " <div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"hint\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || 'body'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"></timepicker>\n </div>\n </div>\n<ng-template [ngIf]=\"loadNativeDateInput\">\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n (click)=\"!(disabled || readonly || isCurrentDate) && showDatePickerModal()\">\n </div>\n</ng-template>\n",
2013
2031
  providers: [
2014
2032
  provideAs(DatetimeComponent, NG_VALUE_ACCESSOR, true),
2015
2033
  provideAs(DatetimeComponent, NG_VALIDATORS, true),