@wavemaker/app-runtime-wm-build 11.4.0-next.24592 → 11.4.0-next.24653

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavemaker/app-runtime-wm-build",
3
- "version": "11.4.0-next.24592",
3
+ "version": "11.4.0-next.24653",
4
4
  "description": "All modules required for a wavemaker application.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -8973,9 +8973,11 @@
8973
8973
  });
8974
8974
  };
8975
8975
  var getKeyboardFocusableElements = function(element) {
8976
- return [ element.querySelectorAll('a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex="-1"])') ].filter((function(el) {
8977
- return !el[0].hasAttribute("disabled") && !el[0].hasAttribute("hidden");
8978
- }))[0];
8976
+ var elementNodeList = element.querySelectorAll("a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable]");
8977
+ var elements = Array.from(elementNodeList);
8978
+ return elements.filter((function(el) {
8979
+ return !el.hasAttribute("disabled") && !el.hasAttribute("hidden") && (!el.hasAttribute("tabindex") || el.hasAttribute("tabindex") && !el.getAttribute("tabindex").startsWith("-"));
8980
+ }));
8979
8981
  };
8980
8982
  exports.APPLY_STYLES_TYPE = void 0;
8981
8983
  (function(APPLY_STYLES_TYPE) {
@@ -15058,7 +15060,7 @@
15058
15060
  }
15059
15061
  var markup = "<" + tagName$q + " wmPopover " + transpiler.getAttrMarkup(attrs) + ">";
15060
15062
  var contextAttrs = table ? 'let-row="row"' : "";
15061
- markup += "<ng-template " + contextAttrs + '><button class="popover-start"></button>';
15063
+ markup += "<ng-template " + contextAttrs + '><div tabindex="0" class="popover-start sr-only" aria-label="">popover content start</div>';
15062
15064
  if (popoverTemplate) {
15063
15065
  markup += "" + (popoverTemplate ? popoverTemplate : "");
15064
15066
  }
@@ -15069,7 +15071,7 @@
15069
15071
  if (shared.get("hasPopoverContent")) {
15070
15072
  markup += "</div>";
15071
15073
  }
15072
- return markup + '<button class="popover-end"></button></ng-template></' + tagName$q + ">";
15074
+ return markup + '<div tabindex="0" class="popover-end sr-only" aria-label="">popover content ended</div></ng-template></' + tagName$q + ">";
15073
15075
  }
15074
15076
  };
15075
15077
  }));
@@ -27393,14 +27395,18 @@
27393
27395
  var newDay = newDate.getDate().toString();
27394
27396
  _.filter($("span:contains(" + newDay + ")").not(".is-other-month"), (function(obj) {
27395
27397
  if ($(obj).text() === newDay) {
27398
+ if ($(obj).hasClass("selected")) {
27399
+ $(obj).parent().attr("aria-selected", "true");
27400
+ }
27396
27401
  $(obj).attr("aria-label", moment(newDate).format("dddd, MMMM Do YYYY"));
27402
+ $("[bsdatepickerdaydecorator]").not(".is-other-month").attr("tabindex", "-1");
27403
+ $(obj).attr("tabindex", "0");
27397
27404
  $(obj).focus();
27398
27405
  _this.activeDate = newDate;
27399
27406
  }
27400
27407
  }));
27401
27408
  if (newDate.getMonth() === (new Date).getMonth() && newDate.getFullYear() === (new Date).getFullYear()) {
27402
27409
  _this.hightlightToday();
27403
- $("span:contains(" + (new Date).getDate().toString() + ")").not(".is-other-month").parent().attr("aria-selected", "true");
27404
27410
  }
27405
27411
  }));
27406
27412
  };
@@ -27442,6 +27448,9 @@
27442
27448
  if (event.originalEvent) {
27443
27449
  _this.setFocusForDate(-1);
27444
27450
  }
27451
+ setTimeout((function() {
27452
+ $(".bs-datepicker-head .previous").focus();
27453
+ }));
27445
27454
  }));
27446
27455
  datePickerHead.find(".next").click((function(event) {
27447
27456
  _this.next = _this.getMonth(_this.activeDate, 2);
@@ -27450,6 +27459,9 @@
27450
27459
  if (event.originalEvent) {
27451
27460
  _this.setFocusForDate(1);
27452
27461
  }
27462
+ setTimeout((function() {
27463
+ $(".bs-datepicker-head .next").focus();
27464
+ }));
27453
27465
  }));
27454
27466
  datePickerHead.find(".current").click((function(event) {
27455
27467
  if (event.originalEvent) {
@@ -27464,6 +27476,19 @@
27464
27476
  }));
27465
27477
  datePickerHead.find(".next").attr("aria-label", "Next Month, " + this.next.fullMonth + " " + this.next.date.getFullYear());
27466
27478
  datePickerHead.find(".previous").attr("aria-label", "Previous Month, " + this.prev.fullMonth + " " + this.prev.date.getFullYear());
27479
+ setTimeout((function() {
27480
+ var currentNodes = datePickerHead.find(".current span");
27481
+ var msg = "Changed to month ";
27482
+ datePickerHead.find(".current").attr("aria-live", "assertive").attr("aria-atomic", "false");
27483
+ if (_this.clicked) {
27484
+ if ($(currentNodes[0]).text()) {
27485
+ datePickerHead.find(".ng-star-inserted").prepend('<div class="sr-only">' + msg + "</div>");
27486
+ }
27487
+ if ($(currentNodes[1]).text()) {
27488
+ datePickerHead.find(".current").last().prepend('<div class="sr-only"> and year </div>');
27489
+ }
27490
+ }
27491
+ }));
27467
27492
  };
27468
27493
  BaseDateTimeComponent.prototype.setFocusForMonthOrDay = function() {
27469
27494
  var activeMonthOrYear = $(".bs-datepicker-head .current").first().text();
@@ -27599,8 +27624,6 @@
27599
27624
  BaseDateTimeComponent.prototype.loadMonths = function() {
27600
27625
  var _this = this;
27601
27626
  setTimeout((function() {
27602
- var datePickerBody = $(".bs-datepicker-body");
27603
- datePickerBody.find("table.months span").attr("tabindex", "0");
27604
27627
  _this.addKeyBoardEventsForMonths();
27605
27628
  _this.addDatepickerMouseEvents();
27606
27629
  }));
@@ -27643,8 +27666,6 @@
27643
27666
  BaseDateTimeComponent.prototype.loadYears = function() {
27644
27667
  var _this = this;
27645
27668
  setTimeout((function() {
27646
- var datePickerBody = $(".bs-datepicker-body");
27647
- datePickerBody.find("table.years span").attr("tabindex", "0");
27648
27669
  _this.addKeyBoardEventsForYears();
27649
27670
  _this.addDatepickerMouseEvents();
27650
27671
  }));
@@ -27661,6 +27682,8 @@
27661
27682
  }
27662
27683
  }
27663
27684
  setTimeout((function() {
27685
+ $(".bs-datepicker-body table.months span").attr("tabindex", "-1");
27686
+ $(".bs-datepicker-body table.months span:contains(" + newMonth + ")").attr("tabindex", "0");
27664
27687
  $(".bs-datepicker-body table.months span:contains(" + newMonth + ")").focus();
27665
27688
  _this.activeDate = newDate;
27666
27689
  }));
@@ -27709,6 +27732,8 @@
27709
27732
  }
27710
27733
  }
27711
27734
  setTimeout((function() {
27735
+ $(".bs-datepicker-body table.years span").attr("tabindex", "-1");
27736
+ $(".bs-datepicker-body table.years span:contains(" + newYear + ")").attr("tabindex", "0");
27712
27737
  $(".bs-datepicker-body table.years span:contains(" + newYear + ")").focus();
27713
27738
  _this.activeDate = newDate;
27714
27739
  }));
@@ -27875,11 +27900,6 @@
27875
27900
  children[i].classList.remove("add-opacity");
27876
27901
  }
27877
27902
  displayInputElem.classList.remove("remove-opacity");
27878
- var allDateTimeElements = this.nativeElement.getElementsByTagName("*");
27879
- for (var i = 0; i < allDateTimeElements.length; i++) {
27880
- allDateTimeElements[i].setAttribute("tabindex", this.tabindex);
27881
- }
27882
- displayInputElem.removeAttribute("tabindex");
27883
27903
  }
27884
27904
  };
27885
27905
  BaseDateTimeComponent.prototype.onDateTimeInputFocus = function(skipFocus) {
@@ -27896,11 +27916,6 @@
27896
27916
  children[i].classList.add("add-opacity");
27897
27917
  }
27898
27918
  displayInputElem.classList.add("remove-opacity");
27899
- var allDateTimeElements = this.nativeElement.getElementsByTagName("*");
27900
- for (var i = 0; i < allDateTimeElements.length; i++) {
27901
- allDateTimeElements[i].setAttribute("tabindex", "-1");
27902
- }
27903
- displayInputElem.setAttribute("tabindex", this.tabindex);
27904
27919
  return;
27905
27920
  }
27906
27921
  if (displayInputElem && this._triggeredByUser) {
@@ -27983,7 +27998,10 @@
27983
27998
  this.isReadOnly = this.dataentrymode != "undefined" && !this.isDataEntryModeEnabledOnInput(this.dataentrymode);
27984
27999
  var mobileInput = this.getMobileInput();
27985
28000
  if (mobileInput) {
27986
- mobileInput.style.width = mobileInput.parentElement.clientWidth + "px";
28001
+ setTimeout((function() {
28002
+ mobileInput.style.width = mobileInput.parentElement.clientWidth + "px";
28003
+ mobileInput.style.height = mobileInput.parentElement.clientHeight + "px";
28004
+ }));
27987
28005
  }
27988
28006
  };
27989
28007
  BaseDateTimeComponent.prototype.ngOnDestroy = function() {
@@ -28246,7 +28264,7 @@
28246
28264
  if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {
28247
28265
  event.stopPropagation();
28248
28266
  var action = this.keyEventPlugin.constructor.getEventFullKey(event);
28249
- if (action === "enter" || action === "arrowdown") {
28267
+ if (action === "enter") {
28250
28268
  var newVal = core$1.getDateObj(event.target.value, {
28251
28269
  pattern: this.datepattern
28252
28270
  });
@@ -28288,7 +28306,7 @@
28288
28306
  type: core.Component,
28289
28307
  args: [ {
28290
28308
  selector: "[wmDate]",
28291
- 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',
28309
+ 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',
28292
28310
  providers: [ base.provideAs(DateComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(DateComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(DateComponent) ]
28293
28311
  } ]
28294
28312
  } ];
@@ -28740,7 +28758,7 @@
28740
28758
  type: core.Component,
28741
28759
  args: [ {
28742
28760
  selector: "[wmDateTime]",
28743
- 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',
28761
+ 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',
28744
28762
  providers: [ base.provideAs(DatetimeComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(DatetimeComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(DatetimeComponent), {
28745
28763
  provide: timepicker.TimepickerConfig,
28746
28764
  deps: [ core$1.AbstractI18nService ],
@@ -35712,6 +35730,9 @@
35712
35730
  return _this.hidePopover();
35713
35731
  };
35714
35732
  }
35733
+ setTimeout((function() {
35734
+ _this.anchorRef.nativeElement.removeAttribute("aria-describedby");
35735
+ }));
35715
35736
  var deRegister = this.eventManager.addEventListener(popoverContainer, "keydown.esc", (function() {
35716
35737
  _this.isOpen = false;
35717
35738
  _this.setFocusToPopoverLink();
@@ -35719,8 +35740,6 @@
35719
35740
  }));
35720
35741
  var popoverStartBtn = popoverContainer.querySelector(".popover-start");
35721
35742
  var popoverEndBtn = popoverContainer.querySelector(".popover-end");
35722
- popoverStartBtn.setAttribute("aria-hidden", "true");
35723
- popoverEndBtn.setAttribute("aria-hidden", "true");
35724
35743
  popoverStartBtn.onkeydown = function(event) {
35725
35744
  var action = _this.keyEventPlugin.constructor.getEventFullKey(event);
35726
35745
  if (action === "shift.tab") {
@@ -35744,7 +35763,6 @@
35744
35763
  return _this.close();
35745
35764
  };
35746
35765
  }
35747
- core.setAttr(popoverContainer, "tabindex", 0);
35748
35766
  setTimeout((function() {
35749
35767
  return popoverStartBtn.focus();
35750
35768
  }), 50);
@@ -36423,7 +36441,7 @@
36423
36441
  var subscriptions = [ _this.bsModal.onShown.subscribe((function(_a) {
36424
36442
  var id = _a.id;
36425
36443
  var ref = _this.dialogService.getLastOpenedDialog();
36426
- if (ref === _this) {
36444
+ if (ref === _this && !_this.dialogId) {
36427
36445
  invokeOpenedCallback(ref);
36428
36446
  _this.dialogId = id;
36429
36447
  }
@@ -36437,6 +36455,7 @@
36437
36455
  ref = _this.dialogService.getLastOpenedDialog();
36438
36456
  }
36439
36457
  if (ref === _this) {
36458
+ _this.dialogId = null;
36440
36459
  _this.dialogService.removeFromOpenedDialogs(ref);
36441
36460
  _this.dialogService.removeFromClosedDialogs(ref);
36442
36461
  invokeClosedCallback(ref);
@@ -44667,9 +44686,9 @@
44667
44686
  }
44668
44687
  }
44669
44688
  };
44670
- ListComponent.prototype.onUpdate = function(evt, ui) {
44689
+ ListComponent.prototype.onUpdate = function(evt, ui, presentIndex) {
44671
44690
  var data = this.fieldDefs;
44672
- var newIndex = ui.item.index();
44691
+ var newIndex = ui === undefined ? presentIndex : ui.item.index();
44673
44692
  var oldIndex = this.$ulEle.data("oldIndex");
44674
44693
  var minIndex = _.min([ newIndex, oldIndex ]);
44675
44694
  var maxIndex = _.max([ newIndex, oldIndex ]);
@@ -44865,8 +44884,10 @@
44865
44884
  this.currentIndex = presentIndex + 1;
44866
44885
  if (this.isListElementMovable) {
44867
44886
  this.ariaText = "Item " + this.currentIndex + " grabbed, current position ";
44887
+ this.$ulEle.data("oldIndex", presentIndex);
44868
44888
  } else {
44869
44889
  this.ariaText = "Item " + this.currentIndex + " dropped, final position ";
44890
+ this.onUpdate($event, undefined, presentIndex);
44870
44891
  }
44871
44892
  }
44872
44893
  };
@@ -44911,10 +44932,12 @@
44911
44932
  this.dataNavigator.widget.maxResults = nv;
44912
44933
  this.dataNavigator.maxResults = nv;
44913
44934
  } else if (key === "enablereorder") {
44914
- if (nv) {
44935
+ if (nv && this.$ulEle) {
44936
+ this.$ulEle.attr("aria-describedby", this.titleId);
44915
44937
  this.configureDnD();
44916
44938
  this.$ulEle.sortable("enable");
44917
44939
  } else if (this.$ulEle && !nv) {
44940
+ this.$ulEle.removeAttr("aria-describedby");
44918
44941
  this.$ulEle.sortable("disable");
44919
44942
  }
44920
44943
  } else {
@@ -45068,9 +45091,18 @@
45068
45091
  _super.prototype.ngAfterViewInit.call(_this);
45069
45092
  _this.setUpCUDHandlers();
45070
45093
  _this.selectedItemWidgets = _this.multiselect ? [] : {};
45094
+ var ele = $(_this.nativeElement).find(".app-livelist-container");
45071
45095
  if (_this.enablereorder && !_this.groupby) {
45096
+ if (ele) {
45097
+ ele.attr("aria-describedby", _this.titleId);
45098
+ }
45072
45099
  _this.configureDnD();
45073
45100
  }
45101
+ if (!_this.enablereorder) {
45102
+ if (ele) {
45103
+ ele.removeAttr("aria-describedby");
45104
+ }
45105
+ }
45074
45106
  if (_this.groupby && _this.collapsible) {
45075
45107
  _this.handleHeaderClick = base.handleHeaderClick;
45076
45108
  _this.toggleAllHeaders = base.toggleAllHeaders.bind(undefined, _this);
@@ -45080,6 +45112,16 @@
45080
45112
  this.setupHandlers();
45081
45113
  var $ul = this.nativeElement.querySelector("ul.app-livelist-container");
45082
45114
  base.styler($ul, this, base.APPLY_STYLES_TYPE.SCROLLABLE_CONTAINER);
45115
+ if (this.enablereorder) {
45116
+ if ($ul) {
45117
+ $ul.setAttribute("aria-describedby", this.titleId);
45118
+ }
45119
+ }
45120
+ if (!this.enablereorder) {
45121
+ if ($ul) {
45122
+ $ul.removeAttribute("aria-describedby");
45123
+ }
45124
+ }
45083
45125
  if (core.isMobileApp() && $ul.querySelector(".app-list-item-action-panel")) {
45084
45126
  this._listAnimator = new ListAnimator(this);
45085
45127
  }
@@ -45104,7 +45146,7 @@
45104
45146
  type: core$1.Component,
45105
45147
  args: [ {
45106
45148
  selector: "div[wmList]",
45107
- template: '<div class="panel-heading" *ngIf="title || subheading || iconclass">\n <h3 class="panel-title">\n <div class="pull-left">\n <i class="app-icon panel-icon {{iconclass}}" aria-hidden="true" [hidden]="!iconclass"></i>\n </div>\n <div class="pull-left">\n <div class="heading" [innerHTML]="title"></div>\n <div class="description" [innerHTML]="subheading"></div>\n </div>\n </h3>\n</div>\n\n<div class="app-datanavigator" [attr.aria-disabled]="dataNavigator.isDisablePrevious" aria-label="Page navigation" *ngIf="navigation === \'Inline\' && !noDataFound">\n <ul class="pager">\n <li class="previous" [ngClass]="{\'disabled\': (dataNavigator ? dataNavigator.isDisablePrevious : true)}">\n <a href="javascript:void(0);" (click)="dataNavigator.navigatePage(\'prev\', $event)"\n [attr.aria-disabled]="dataNavigator.isDisablePrevious">\n <i class="wi wi-chevron-left" aria-hidden="true"></i>\n <span class="sr-only">Go to Previous page {{dataNavigator.isDisablePrevious ? \', Disabled\' : \'\'}}</span>\n </a>\n </li>\n </ul>\n</div>\n<div *ngIf="navigation === \'Inline\' && !noDataFound" aria-live="polite" aria-atomic="true" class="sr-only"> {{\'Page \' + dataNavigator.dn.currentPage + \' of \' + dataNavigator.pageCount }}</div>\n\n<div>\n <div id={{titleId}} class="sr-only" *ngIf="enablereorder">\n Press space bar to toggle drag drop mode, use arrow keys to move selected elements.\n </div>\n\n <div aria-live="assertive" *ngIf="listItems && enablereorder && currentIndex" class="sr-only" >\n {{ariaText + currentIndex + \' of \' + listItems.length}}\n </div>\n</div>\n\n<ul [attr.tabindex]="tabindex" [attr.aria-describedby] = "titleId" class="app-livelist-container clearfix {{direction === \'horizontal\' ? \'app-horizontal-list\': \'\'}} {{listclass}}" role="list"\n (keydown.enter)="handleKeyDown($event, \'select\')"\n\n (keydown.space)="handleKeyDown($event, \'space\')"\n\n (keydown.arrowup)="handleKeyDown($event, \'focusPrev\')"\n (keydown.arrowdown)="handleKeyDown($event, \'focusNext\')"\n (keydown.arrowleft)="handleKeyDown($event, \'focusPrev\')"\n (keydown.arrowright)="handleKeyDown($event, \'focusNext\')"\n\n (keydown.shift.arrowup)="handleKeyDown($event, \'selectPrev\')"\n (keydown.shift.arrowdown)="handleKeyDown($event, \'selectNext\')"\n (keydown.shift.arrowleft)="handleKeyDown($event, \'selectPrev\')"\n (keydown.shift.arrowright)="handleKeyDown($event, \'selectNext\')"\n [hidden]="noDataFound && !variableInflight"\n>\n <ng-template [ngIf]="!groupby" [ngIfElse]="groupedListTemplate">\n <li *ngFor="let item of fieldDefs; index as $index; first as $first; last as $last;" class="app-list-item {{direction === \'horizontal\' ? \'\' : itemsPerRowClass}}" [ngClass]="listItemRef.itemClass"\n [wmListItem]="item"\n #listItemRef="listItemRef"\n [attr.tabindex]="tabindex"\n role="listitem">\n <ng-container [ngTemplateOutlet]="listTemplate" [ngTemplateOutletContext]="{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}"></ng-container>\n </li>\n </ng-template>\n <ng-container [ngTemplateOutlet]="listLeftActionTemplate"></ng-container>\n <ng-container [ngTemplateOutlet]="listRightActionTemplate"></ng-container>\n</ul>\n\n<div class="no-data-msg" *ngIf="noDataFound && !variableInflight" [textContent]="nodatamessage"></div>\n\n<div class="loading-data-msg" *ngIf="variableInflight && !pulltorefresh">\n <span>\n <i class="app-icon panel-icon fa-spin" aria-hidden="true" [ngClass]="loadingicon"></i>\n <span class="sr-only">Loading</span>\n <span class="loading-text" [textContent]="loadingdatamsg"></span>\n </span>\n</div>\n\n<div class="app-datanavigator" [attr.aria-disabled]="dataNavigator.isDisableNext" *ngIf="navigation === \'Inline\' && !noDataFound">\n <ul class="pager">\n <li class="next" [ngClass]="{\'disabled\': (dataNavigator ? dataNavigator.isDisableNext : true)}">\n <a href="javascript:void(0);" (click)="dataNavigator.navigatePage(\'next\', $event)"\n [attr.aria-disabled]="dataNavigator.isDisableNext">\n <i class="wi wi-chevron-right" aria-hidden="true"></i>\n <span class="sr-only">Go to Next page {{dataNavigator.isDisableNext ? \', Disabled\' : \'\'}}</span>\n </a>\n </li>\n </ul>\n</div>\n\n<div class="panel-footer" *ngIf="navigation !== \'None\'" [hidden]="!showNavigation || (onDemandLoad && dataNavigator.isDisableNext) || (dataNavigator.dataSize <= pagesize) || (!dataNavigator.dataSize && !dataNavigator.datasource?.pagination?.next)">\n <nav wmPagination\n navigationalign.bind="navigationalign"\n navigation.bind="navControls"\n showrecordcount.bind="showrecordcount"\n maxsize.bind="maxsize"\n boundarylinks.bind="boundarylinks"\n forceellipses.bind="forceellipses"\n directionlinks.bind="directionlinks"\n show.bind="!onDemandLoad"\n paginationchange.event="beforePaginationChange($event, $index)"\n ></nav>\n <a *ngIf="onDemandLoad" href="javascript:void(0);"\n (click)="dataNavigator.navigatePage(\'next\', $event)"\n class="app-button btn btn-block"\n [ngClass]="paginationclass"\n [textContent]="ondemandmessage"\n ></a>\n</div>\n\n\x3c!--This template will be displayed when groupby is specified--\x3e\n<ng-template #groupedListTemplate>\n <li *ngFor="let groupObj of groupedData" class="app-list-item-group clearfix">\n <ul [attr.tabindex]="tabindex" class="list-group item-group" [ngClass]="listclass">\n <li class="app-list-item-header list-item list-group-header" (click)="handleHeaderClick($event)" [ngClass]="{\'collapsible-content\': collapsible}">\n <h4>{{groupObj.key}}\n <div class="header-action">\n <i class="app-icon wi action wi-chevron-up" *ngIf="collapsible"></i>\n <span *ngIf="showcount" class="label label-default">{{groupObj.data.length}}</span>\n </div>\n </h4>\n </li>\n <ul class="list-group clearfix {{direction === \'horizontal\' ? \'app-horizontal-list\': \'\'}}">\n <li *ngFor="let item of groupObj.data; index as $index; first as $first; last as $last;" [attr.tabindex]="tabindex"\n class="app-list-item group-list-item {{itemsPerRowClass}}"\n [ngClass]="listItemRef.itemClass"\n [wmListItem]="item" #listItemRef="listItemRef">\n <ng-container [ngTemplateOutlet]="listTemplate" [ngTemplateOutletContext]="{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}"></ng-container>\n </li>\n </ul>\n </ul>\n </li>\n</ng-template>\n',
45149
+ template: '<div class="panel-heading" *ngIf="title || subheading || iconclass">\n <h3 class="panel-title">\n <div class="pull-left">\n <i class="app-icon panel-icon {{iconclass}}" aria-hidden="true" [hidden]="!iconclass"></i>\n </div>\n <div class="pull-left">\n <div class="heading" [innerHTML]="title"></div>\n <div class="description" [innerHTML]="subheading"></div>\n </div>\n </h3>\n</div>\n\n<div class="app-datanavigator" [attr.aria-disabled]="dataNavigator.isDisablePrevious" aria-label="Page navigation" *ngIf="navigation === \'Inline\' && !noDataFound">\n <ul class="pager">\n <li class="previous" [ngClass]="{\'disabled\': (dataNavigator ? dataNavigator.isDisablePrevious : true)}">\n <a href="javascript:void(0);" (click)="dataNavigator.navigatePage(\'prev\', $event)"\n [attr.aria-disabled]="dataNavigator.isDisablePrevious">\n <i class="wi wi-chevron-left" aria-hidden="true"></i>\n <span class="sr-only">Go to Previous page {{dataNavigator.isDisablePrevious ? \', Disabled\' : \'\'}}</span>\n </a>\n </li>\n </ul>\n</div>\n<div *ngIf="navigation === \'Inline\' && !noDataFound" aria-live="polite" aria-atomic="true" class="sr-only"> {{\'Page \' + dataNavigator.dn.currentPage + \' of \' + dataNavigator.pageCount }}</div>\n\n<div>\n <div id={{titleId}} class="sr-only" *ngIf="enablereorder">\n Press space bar to toggle drag drop mode, use arrow keys to move selected elements.\n </div>\n\n <div aria-live="assertive" *ngIf="listItems && enablereorder && currentIndex" class="sr-only" >\n {{ariaText + currentIndex + \' of \' + listItems.length}}\n </div>\n</div>\n\n<ul [attr.tabindex]="tabindex" class="app-livelist-container clearfix {{direction === \'horizontal\' ? \'app-horizontal-list\': \'\'}} {{listclass}}" role="list"\n (keydown.enter)="handleKeyDown($event, \'select\')"\n\n (keydown.space)="handleKeyDown($event, \'space\')"\n\n (keydown.arrowup)="handleKeyDown($event, \'focusPrev\')"\n (keydown.arrowdown)="handleKeyDown($event, \'focusNext\')"\n (keydown.arrowleft)="handleKeyDown($event, \'focusPrev\')"\n (keydown.arrowright)="handleKeyDown($event, \'focusNext\')"\n\n (keydown.shift.arrowup)="handleKeyDown($event, \'selectPrev\')"\n (keydown.shift.arrowdown)="handleKeyDown($event, \'selectNext\')"\n (keydown.shift.arrowleft)="handleKeyDown($event, \'selectPrev\')"\n (keydown.shift.arrowright)="handleKeyDown($event, \'selectNext\')"\n [hidden]="noDataFound && !variableInflight"\n>\n <ng-template [ngIf]="!groupby" [ngIfElse]="groupedListTemplate">\n <li *ngFor="let item of fieldDefs; index as $index; first as $first; last as $last;" class="app-list-item {{direction === \'horizontal\' ? \'\' : itemsPerRowClass}}" [ngClass]="listItemRef.itemClass"\n [wmListItem]="item"\n #listItemRef="listItemRef"\n [attr.tabindex]="tabindex"\n role="listitem">\n <ng-container [ngTemplateOutlet]="listTemplate" [ngTemplateOutletContext]="{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}"></ng-container>\n </li>\n </ng-template>\n <ng-container [ngTemplateOutlet]="listLeftActionTemplate"></ng-container>\n <ng-container [ngTemplateOutlet]="listRightActionTemplate"></ng-container>\n</ul>\n\n<div class="no-data-msg" *ngIf="noDataFound && !variableInflight" [textContent]="nodatamessage"></div>\n\n<div class="loading-data-msg" *ngIf="variableInflight && !pulltorefresh">\n <span>\n <i class="app-icon panel-icon fa-spin" aria-hidden="true" [ngClass]="loadingicon"></i>\n <span class="sr-only">Loading</span>\n <span class="loading-text" [textContent]="loadingdatamsg"></span>\n </span>\n</div>\n\n<div class="app-datanavigator" [attr.aria-disabled]="dataNavigator.isDisableNext" *ngIf="navigation === \'Inline\' && !noDataFound">\n <ul class="pager">\n <li class="next" [ngClass]="{\'disabled\': (dataNavigator ? dataNavigator.isDisableNext : true)}">\n <a href="javascript:void(0);" (click)="dataNavigator.navigatePage(\'next\', $event)"\n [attr.aria-disabled]="dataNavigator.isDisableNext">\n <i class="wi wi-chevron-right" aria-hidden="true"></i>\n <span class="sr-only">Go to Next page {{dataNavigator.isDisableNext ? \', Disabled\' : \'\'}}</span>\n </a>\n </li>\n </ul>\n</div>\n\n<div class="panel-footer" *ngIf="navigation !== \'None\'" [hidden]="!showNavigation || (onDemandLoad && dataNavigator.isDisableNext) || (dataNavigator.dataSize <= pagesize) || (!dataNavigator.dataSize && !dataNavigator.datasource?.pagination?.next)">\n <nav wmPagination\n navigationalign.bind="navigationalign"\n navigation.bind="navControls"\n showrecordcount.bind="showrecordcount"\n maxsize.bind="maxsize"\n boundarylinks.bind="boundarylinks"\n forceellipses.bind="forceellipses"\n directionlinks.bind="directionlinks"\n show.bind="!onDemandLoad"\n paginationchange.event="beforePaginationChange($event, $index)"\n ></nav>\n <a *ngIf="onDemandLoad" href="javascript:void(0);"\n (click)="dataNavigator.navigatePage(\'next\', $event)"\n class="app-button btn btn-block"\n [ngClass]="paginationclass"\n [textContent]="ondemandmessage"\n ></a>\n</div>\n\n\x3c!--This template will be displayed when groupby is specified--\x3e\n<ng-template #groupedListTemplate>\n <li *ngFor="let groupObj of groupedData" class="app-list-item-group clearfix">\n <ul [attr.tabindex]="tabindex" class="list-group item-group" [ngClass]="listclass">\n <li class="app-list-item-header list-item list-group-header" (click)="handleHeaderClick($event)" [ngClass]="{\'collapsible-content\': collapsible}">\n <h4>{{groupObj.key}}\n <div class="header-action">\n <i class="app-icon wi action wi-chevron-up" *ngIf="collapsible"></i>\n <span *ngIf="showcount" class="label label-default">{{groupObj.data.length}}</span>\n </div>\n </h4>\n </li>\n <ul class="list-group clearfix {{direction === \'horizontal\' ? \'app-horizontal-list\': \'\'}}">\n <li *ngFor="let item of groupObj.data; index as $index; first as $first; last as $last;" [attr.tabindex]="tabindex"\n class="app-list-item group-list-item {{itemsPerRowClass}}"\n [ngClass]="listItemRef.itemClass"\n [wmListItem]="item" #listItemRef="listItemRef">\n <ng-container [ngTemplateOutlet]="listTemplate" [ngTemplateOutletContext]="{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}"></ng-container>\n </li>\n </ul>\n </ul>\n </li>\n</ng-template>\n',
45108
45150
  providers: [ base.provideAsWidgetRef(ListComponent) ]
45109
45151
  } ]
45110
45152
  } ];
@@ -46474,6 +46516,11 @@
46474
46516
  return;
46475
46517
  }
46476
46518
  this.variableInflight = false;
46519
+ if (newValue && newValue.length === 0) {
46520
+ this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
46521
+ } else {
46522
+ this.callDataGridMethod("setStatus", "ready");
46523
+ }
46477
46524
  if (this.gridOptions.isNavTypeScrollOrOndemand()) {
46478
46525
  _a = __read(this.paginationService.updateFieldsOnPagination(this, newValue), 2),
46479
46526
  this._gridData = _a[0], this.currentPage = _a[1];