@wavemaker/app-runtime-wm-build 11.4.0-next.28151 → 11.4.0-next.28701

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.
@@ -5052,7 +5052,12 @@
5052
5052
  fieldDefs = [];
5053
5053
  parent.gridOptions.setCurrentPage(1);
5054
5054
  }
5055
- var currentPage = parent.currentPage;
5055
+ var currentPage;
5056
+ if (parent.widgetType === "wm-table") {
5057
+ currentPage = parent.gridOptions.showviewlessbutton && parent.gridOptions.mode === "viewless" ? parent.gridOptions.getCurrentPage() : parent.currentPage;
5058
+ } else {
5059
+ currentPage = parent.currentPage;
5060
+ }
5056
5061
  var dataNavigator = parent.dataNavigator;
5057
5062
  var pagesize = parent.pagesize;
5058
5063
  if (!isDefined(fieldDefs) || dataNavigator.isFirstPage()) {
@@ -8652,6 +8657,16 @@
8652
8657
  var routeRegex = new RegExp("^(#/|#)" + routeName + "$");
8653
8658
  return routeRegex.test(link);
8654
8659
  };
8660
+ var hasLinkToCurrentPage = function(nodes, routeUrl) {
8661
+ return nodes.some((function(node) {
8662
+ if (isActiveNavItem(node.link, routeUrl)) {
8663
+ return true;
8664
+ }
8665
+ if (node.children) {
8666
+ return hasLinkToCurrentPage(node.children, routeUrl);
8667
+ }
8668
+ }));
8669
+ };
8655
8670
  var getOrderByExpr = function(pageableObj) {
8656
8671
  pageableObj = pageableObj || [];
8657
8672
  var expressions = [], KEY_VAL_SEPARATOR = " ", FIELD_SEPARATOR = ",";
@@ -11214,6 +11229,10 @@
11214
11229
  if (openedDialogs.indexOf(ref) !== -1) {
11215
11230
  openedDialogs.splice(openedDialogs.indexOf(ref), 1);
11216
11231
  }
11232
+ if (openedDialogs.length === 0 && core$1.isMobileApp()) {
11233
+ var parentSelector = $("body > app-root")[0];
11234
+ parentSelector.removeAttribute("aria-hidden");
11235
+ }
11217
11236
  };
11218
11237
  DialogServiceImpl.prototype.getOpenedDialogs = function() {
11219
11238
  return openedDialogs;
@@ -12389,7 +12408,8 @@
12389
12408
  mindate: "mindate",
12390
12409
  maxdate: "maxdate",
12391
12410
  excludedates: "excludedates",
12392
- excludedays: "excludedays"
12411
+ excludedays: "excludedays",
12412
+ invalidNumber: "invalidNumber"
12393
12413
  };
12394
12414
  var BaseFieldValidations = function() {
12395
12415
  function BaseFieldValidations(instance, formwidget, widgettype, widgetControl, widgetContext, tableFieldType) {
@@ -13022,6 +13042,7 @@
13022
13042
  exports.getWidgetPropsByType = getWidgetPropsByType;
13023
13043
  exports.groupData = groupData;
13024
13044
  exports.handleHeaderClick = handleHeaderClick;
13045
+ exports.hasLinkToCurrentPage = hasLinkToCurrentPage;
13025
13046
  exports.interpolateBindExpressions = interpolateBindExpressions;
13026
13047
  exports.isActiveNavItem = isActiveNavItem;
13027
13048
  exports.isBooleanAttr = isBooleanAttr;
@@ -14199,7 +14220,7 @@
14199
14220
  var eventsTmpl = widgetType === core.FormWidgetType.UPLOAD ? "" : getEventsTemplate(attrs);
14200
14221
  var controlLayout = core.isMobileApp() ? "col-xs-12" : "col-sm-12";
14201
14222
  var isInList = pCounter === (parentList && parentList.get("parent_form_reference"));
14202
- attrs.set("__errormsg", formFieldErrorMsgId);
14223
+ attrs.set("__validationId", formFieldErrorMsgId);
14203
14224
  attrs.set("__widgetType", widgetType);
14204
14225
  attrs.delete("widget");
14205
14226
  shared.set("counter", counter);
@@ -27371,6 +27392,7 @@
27371
27392
  };
27372
27393
  BaseDateTimeComponent.prototype.setActiveDateFocus = function(newDate, isMouseEvent) {
27373
27394
  var _this = this;
27395
+ this.setNextData(newDate);
27374
27396
  var activeMonth = this.activeDate.getMonth();
27375
27397
  if (!isMouseEvent) {
27376
27398
  if (newDate.getMonth() < activeMonth) {
@@ -27452,8 +27474,8 @@
27452
27474
  _this.setFocusForMonthOrDay();
27453
27475
  }
27454
27476
  }));
27455
- datePickerHead.find(".next").attr("aria-label", "Next Month " + this.next.fullMonth + " " + this.next.date.getFullYear());
27456
- datePickerHead.find(".previous").attr("aria-label", "Previous Month " + this.prev.fullMonth + " " + this.prev.date.getFullYear());
27477
+ datePickerHead.find(".next").attr("aria-label", "Next Month, " + this.next.fullMonth + " " + this.next.date.getFullYear());
27478
+ datePickerHead.find(".previous").attr("aria-label", "Previous Month, " + this.prev.fullMonth + " " + this.prev.date.getFullYear());
27457
27479
  };
27458
27480
  BaseDateTimeComponent.prototype.setFocusForMonthOrDay = function() {
27459
27481
  var activeMonthOrYear = $(".bs-datepicker-head .current").first().text();
@@ -27519,14 +27541,14 @@
27519
27541
  this.loadDays();
27520
27542
  this.setActiveDateFocus(this.activeDate);
27521
27543
  };
27544
+ BaseDateTimeComponent.prototype.setNextData = function(nextDate) {
27545
+ this.next = this.getMonth(nextDate, 1);
27546
+ this.prev = this.getMonth(nextDate, -1);
27547
+ };
27522
27548
  BaseDateTimeComponent.prototype.loadDays = function() {
27523
27549
  var _this = this;
27524
27550
  setTimeout((function() {
27525
27551
  $("[bsdatepickerdaydecorator]").not(".is-other-month").attr("tabindex", "0");
27526
- if (_this.clicked === false) {
27527
- _this.next = _this.getMonth(_this.activeDate, 1);
27528
- _this.prev = _this.getMonth(_this.activeDate, -1);
27529
- }
27530
27552
  _this.addKeyBoardEventsForDays();
27531
27553
  _this.addDatepickerMouseEvents();
27532
27554
  }));
@@ -27641,6 +27663,7 @@
27641
27663
  };
27642
27664
  BaseDateTimeComponent.prototype.setActiveMonthFocus = function(newDate, isMoouseEvent) {
27643
27665
  var _this = this;
27666
+ this.setNextData(newDate);
27644
27667
  var newMonth = months[newDate.getMonth()];
27645
27668
  if (!isMoouseEvent) {
27646
27669
  if (newDate.getFullYear() < this.activeDate.getFullYear()) {
@@ -28277,7 +28300,7 @@
28277
28300
  type: core.Component,
28278
28301
  args: [ {
28279
28302
  selector: "[wmDate]",
28280
- 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',
28303
+ 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',
28281
28304
  providers: [ base.provideAs(DateComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(DateComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(DateComponent) ]
28282
28305
  } ]
28283
28306
  } ];
@@ -33596,9 +33619,10 @@
33596
33619
  };
33597
33620
  var MenuComponent = function(_super) {
33598
33621
  __extends(MenuComponent, _super);
33599
- function MenuComponent(inj, route, userDefinedExecutionContext, bsDropdown, parentNav, selectEventCB) {
33622
+ function MenuComponent(inj, route, app, userDefinedExecutionContext, bsDropdown, parentNav, selectEventCB) {
33600
33623
  var _this = _super.call(this, inj, WIDGET_CONFIG$1) || this;
33601
33624
  _this.route = route;
33625
+ _this.app = app;
33602
33626
  _this.userDefinedExecutionContext = userDefinedExecutionContext;
33603
33627
  _this.bsDropdown = bsDropdown;
33604
33628
  _this.parentNav = parentNav;
@@ -33612,6 +33636,9 @@
33612
33636
  }
33613
33637
  var datasetSubscription = _this.nodes$.subscribe((function() {
33614
33638
  if (!_.isEmpty(_this.nodes)) {
33639
+ if (base.hasLinkToCurrentPage(_this.nodes, _this.route.url)) {
33640
+ core.addClass(_this.nativeElement.querySelector(".dropdown-toggle"), "active");
33641
+ }
33615
33642
  if (_this.parentNav) {
33616
33643
  return;
33617
33644
  }
@@ -33686,26 +33713,22 @@
33686
33713
  }
33687
33714
  $event.preventDefault();
33688
33715
  };
33689
- MenuComponent.prototype.hasLinkToCurrentPage = function(nodes) {
33690
- var _this = this;
33691
- return nodes.some((function(node) {
33692
- if (base.isActiveNavItem(node.link, _this.route.url)) {
33693
- return true;
33694
- }
33695
- if (node.children) {
33696
- return _this.hasLinkToCurrentPage(node.children);
33697
- }
33698
- }));
33699
- };
33700
33716
  MenuComponent.prototype.resetNodes = function() {
33701
33717
  _super.prototype.resetNodes.call(this);
33702
- if (this.autoopen === AUTO_OPEN.ACTIVE_PAGE && this.hasLinkToCurrentPage(this.nodes) || this.autoopen === AUTO_OPEN.ALWAYS) {
33718
+ if (this.autoopen === AUTO_OPEN.ACTIVE_PAGE && base.hasLinkToCurrentPage(this.nodes, this.route.url) || this.autoopen === AUTO_OPEN.ALWAYS) {
33703
33719
  this.bsDropdown.show();
33704
33720
  }
33705
33721
  };
33706
33722
  MenuComponent.prototype.ngOnInit = function() {
33723
+ var _this = this;
33707
33724
  _super.prototype.ngOnInit.call(this);
33708
33725
  this.setMenuPosition();
33726
+ var cancelSubscription = this.app.subscribe("highlightActiveLink", (function(data) {
33727
+ core.toggleClass(_this.nativeElement.querySelector(".dropdown-toggle"), "active", base.hasLinkToCurrentPage(_this.nodes, _this.route.url));
33728
+ }));
33729
+ this.registerDestroyListener((function() {
33730
+ return cancelSubscription();
33731
+ }));
33709
33732
  };
33710
33733
  MenuComponent.prototype.onPropertyChange = function(key, nv, ov) {
33711
33734
  if (key === "tabindex") {
@@ -33776,6 +33799,8 @@
33776
33799
  type: core$1.Injector
33777
33800
  }, {
33778
33801
  type: router.Router
33802
+ }, {
33803
+ type: core.App
33779
33804
  }, {
33780
33805
  type: core.UserDefinedExecutionContext
33781
33806
  }, {
@@ -33893,8 +33918,9 @@
33893
33918
  VERTICAL: "vertical"
33894
33919
  };
33895
33920
  var MenuDropdownItemComponent = function() {
33896
- function MenuDropdownItemComponent(menuRef, userDefinedExecutionContext, parentNav, elRef) {
33921
+ function MenuDropdownItemComponent(app, menuRef, userDefinedExecutionContext, parentNav, elRef) {
33897
33922
  var _this = this;
33923
+ this.app = app;
33898
33924
  this.menuRef = menuRef;
33899
33925
  this.userDefinedExecutionContext = userDefinedExecutionContext;
33900
33926
  this.parentNav = parentNav;
@@ -33920,10 +33946,14 @@
33920
33946
  this.menualign = menuAlignClass[this.menuRef.menualign] || menuAlignClass["pull-left"];
33921
33947
  }
33922
33948
  MenuDropdownItemComponent.prototype.ngOnInit = function() {
33949
+ var _this = this;
33923
33950
  if (this.parentNav) {
33924
- if (base.isActiveNavItem(this.item.link, this.menuRef.route.url)) {
33951
+ if (base.hasLinkToCurrentPage([ this.item ], this.menuRef.route.url)) {
33925
33952
  core.addClass(this.nativeElement, "active");
33926
33953
  }
33954
+ this.highlightActiveLinkSubscription = this.app.subscribe("highlightActiveLink", (function(data) {
33955
+ core.toggleClass(_this.nativeElement, "active", base.hasLinkToCurrentPage([ _this.item ], _this.menuRef.route.url));
33956
+ }));
33927
33957
  }
33928
33958
  };
33929
33959
  MenuDropdownItemComponent.prototype.getInitialKeyMovements = function() {
@@ -33992,6 +34022,11 @@
33992
34022
  $event.stopPropagation();
33993
34023
  }
33994
34024
  };
34025
+ MenuDropdownItemComponent.prototype.ngOnDestroy = function() {
34026
+ if (this.highlightActiveLinkSubscription) {
34027
+ this.highlightActiveLinkSubscription();
34028
+ }
34029
+ };
33995
34030
  return MenuDropdownItemComponent;
33996
34031
  }();
33997
34032
  MenuDropdownItemComponent.decorators = [ {
@@ -34003,6 +34038,8 @@
34003
34038
  } ];
34004
34039
  MenuDropdownItemComponent.ctorParameters = function() {
34005
34040
  return [ {
34041
+ type: core.App
34042
+ }, {
34006
34043
  type: MenuComponent
34007
34044
  }, {
34008
34045
  type: core.UserDefinedExecutionContext
@@ -35694,6 +35731,8 @@
35694
35731
  }));
35695
35732
  var popoverStartBtn = popoverContainer.querySelector(".popover-start");
35696
35733
  var popoverEndBtn = popoverContainer.querySelector(".popover-end");
35734
+ popoverStartBtn.setAttribute("aria-hidden", "true");
35735
+ popoverEndBtn.setAttribute("aria-hidden", "true");
35697
35736
  popoverStartBtn.onkeydown = function(event) {
35698
35737
  var action = _this.keyEventPlugin.constructor.getEventFullKey(event);
35699
35738
  if (action === "shift.tab") {
@@ -36441,6 +36480,10 @@
36441
36480
  Object.assign(this.context, initState);
36442
36481
  this.modalOptions.ariaLabelledBy = this.titleId;
36443
36482
  this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
36483
+ if (this.dialogService.getOpenedDialogs().length === 1 && core.isMobileApp()) {
36484
+ var parentSelector = $("body > app-root")[0];
36485
+ parentSelector.setAttribute("aria-hidden", "true");
36486
+ }
36444
36487
  };
36445
36488
  BaseDialog.prototype.close = function() {
36446
36489
  if (this.dialogRef) {
@@ -42338,7 +42381,7 @@
42338
42381
  }
42339
42382
  this.isDisableCurrent = isCurrentPageFirst && isCurrentPageLast;
42340
42383
  if (this.dataset && this.dataset.length && this.isDisableNext && this.parent.onDemandLoad && this.parent.widgetType === "wm-table") {
42341
- this.parent.callDataGridMethod("hideLoadingIndicator", this.isDisableNext, false);
42384
+ this.parent.callDataGridMethod("hideLoadingIndicator", this.isDisableNext, this.parent.infScroll);
42342
42385
  }
42343
42386
  };
42344
42387
  PaginationComponent.prototype.isDataSourceHasPaging = function() {
@@ -44707,7 +44750,7 @@
44707
44750
  ListComponent.prototype.handleKeyDown = function($event, action) {
44708
44751
  var _this = this;
44709
44752
  $event.stopPropagation();
44710
- if ($event.keyCode !== 13 && $event.keyCode !== 9 && !($event.target.classList.contains("form-control") && $event.keyCode === 32)) {
44753
+ if ($event.keyCode !== 13 && $event.keyCode !== 9 && !(($event.target.classList.contains("form-control") || $event.target.classList.contains("note-editable")) && $event.keyCode === 32)) {
44711
44754
  $event.preventDefault();
44712
44755
  }
44713
44756
  var listItems = this.listItems;
@@ -45061,7 +45104,7 @@
45061
45104
  type: core$1.Component,
45062
45105
  args: [ {
45063
45106
  selector: "div[wmList]",
45064
- 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<nav 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 <i class="wi wi-chevron-left" aria-hidden="true"></i>\n <span class="sr-only">Previous</span>\n </a>\n </li>\n </ul>\n</nav>\n<div *ngIf="navigation === \'Inline\' && !noDataFound" aria-live="polite" aria-atomic="true" class="sr-only"> {{\'Item \' + dataNavigator.dn.currentPage + \' of \' + dataNavigator.pageCount }}</div>\n\n<div>\n <div id={{titleId}} class="sr-only" >\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" 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<nav 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 <i class="wi wi-chevron-right" aria-hidden="true"></i>\n <span class="sr-only">Next</span>\n </a>\n </li>\n </ul>\n</nav>\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',
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<nav 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 <i class="wi wi-chevron-left" aria-hidden="true"></i>\n <span class="sr-only">Previous</span>\n </a>\n </li>\n </ul>\n</nav>\n<div *ngIf="navigation === \'Inline\' && !noDataFound" aria-live="polite" aria-atomic="true" class="sr-only"> {{\'Item \' + 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<nav 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 <i class="wi wi-chevron-right" aria-hidden="true"></i>\n <span class="sr-only">Next</span>\n </a>\n </li>\n </ul>\n</nav>\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',
45065
45108
  providers: [ base.provideAsWidgetRef(ListComponent) ]
45066
45109
  } ]
45067
45110
  } ];
@@ -45576,6 +45619,10 @@
45576
45619
  value: "No data found."
45577
45620
  }, base.PROP_STRING) ], [ "ondemandmessage", Object.assign({
45578
45621
  value: "Load More"
45622
+ }, base.PROP_STRING) ], [ "showviewlessbutton", Object.assign({
45623
+ value: false
45624
+ }, base.PROP_BOOLEAN) ], [ "viewlessmessage", Object.assign({
45625
+ value: "View Less"
45579
45626
  }, base.PROP_STRING) ], [ "pagesize", base.PROP_NUMBER ], [ "radioselect", base.PROP_BOOLEAN ], [ "rowclass", base.PROP_STRING ], [ "rowngclass", base.PROP_STRING ], [ "searchlabel", Object.assign({
45580
45627
  value: "Search"
45581
45628
  }, base.PROP_STRING) ], [ "show", Object.assign({
@@ -45656,6 +45703,7 @@
45656
45703
  _this.columns = {};
45657
45704
  _this.formfields = {};
45658
45705
  _this.enablesort = true;
45706
+ _this.showviewlessbutton = false;
45659
45707
  _this.primaryKey = [];
45660
45708
  _this.selectedItems = [];
45661
45709
  _this.selectedItemChange = new rxjs.Subject;
@@ -45676,6 +45724,7 @@
45676
45724
  _this.rowDef = {};
45677
45725
  _this.rowInstance = {};
45678
45726
  _this.fullFieldDefs = [];
45727
+ _this.variableInflight = true;
45679
45728
  _this.applyProps = new Map;
45680
45729
  _this.redraw = _.debounce(_this._redraw, 150);
45681
45730
  _this.debouncedHandleLoading = _.debounce(_this.handleLoading, 350);
@@ -45698,6 +45747,7 @@
45698
45747
  data: [],
45699
45748
  colDefs: [],
45700
45749
  startRowIndex: 1,
45750
+ mode: "",
45701
45751
  sortInfo: {
45702
45752
  field: "",
45703
45753
  direction: ""
@@ -45728,6 +45778,10 @@
45728
45778
  isSearchTrigerred: false,
45729
45779
  isDatasetUpdated: false,
45730
45780
  isDataUpdatedByUser: false,
45781
+ showviewlessbutton: false,
45782
+ ondemandmessage: "",
45783
+ viewlessmessage: "",
45784
+ loadingdatamsg: "",
45731
45785
  isNextPageData: undefined,
45732
45786
  ACTIONS: {
45733
45787
  DELETE: "delete",
@@ -45752,6 +45806,14 @@
45752
45806
  getPageSize: function() {
45753
45807
  return _this.pagesize;
45754
45808
  },
45809
+ getPageCount: function() {
45810
+ return _this.dataNavigator.pageCount;
45811
+ },
45812
+ enableNavigation: function() {
45813
+ _this.dataNavigator.widget.isDisableNext = false;
45814
+ _this.dataNavigator.widget.isDisableLast = false;
45815
+ _this.gridOptions.mode = "viewless";
45816
+ },
45755
45817
  setDeletedRowIndex: function(id) {
45756
45818
  _this.setDataGridOption("deletedRowIndex", id);
45757
45819
  },
@@ -45786,7 +45848,9 @@
45786
45848
  }
45787
45849
  _this.callDataGridMethod("selectRows", _this.items);
45788
45850
  _this.selectedItems = _this.callDataGridMethod("getSelectedRows");
45789
- _this.selectedItemChange.next(_this.selectedItems);
45851
+ if (_this.selectedItems.length) {
45852
+ _this.selectedItemChange.next(_this.selectedItems);
45853
+ }
45790
45854
  if (_this._isPageSearch && _this.filterInfo) {
45791
45855
  _this.searchSortHandler(_this.filterInfo, undefined, "search");
45792
45856
  }
@@ -45795,9 +45859,11 @@
45795
45859
  onRowSelect: function(row, e) {
45796
45860
  _this.ngZone.run((function() {
45797
45861
  _this.selectedItems = _this.callDataGridMethod("getSelectedRows");
45798
- _this.selectedItemChange.next(_this.selectedItems);
45862
+ if (_this.selectedItems.length) {
45863
+ _this.selectedItemChange.next(_this.selectedItems);
45864
+ }
45799
45865
  var rowData = _this.addRowIndex(row);
45800
- if (rowData.$index && _this.getConfiguredState() !== "none" && _this.dataNavigator && base.unsupportedStatePersistenceTypes.indexOf(_this.navigation) < 0) {
45866
+ if (_this.selectedItems.length && rowData.$index && _this.getConfiguredState() !== "none" && _this.dataNavigator && base.unsupportedStatePersistenceTypes.indexOf(_this.navigation) < 0) {
45801
45867
  var obj = {
45802
45868
  page: _this.dataNavigator.dn.currentPage,
45803
45869
  index: rowData.$index - 1
@@ -46237,9 +46303,14 @@
46237
46303
  _this.callDataGridMethod("addLoadMoreBtn", _this.ondemandmessage, _this.loadingdatamsg, (function($event) {
46238
46304
  _this.gridOptions.setIsNextPageData(true);
46239
46305
  _this.gridOptions.setIsDataUpdatedByUser(false);
46240
- _this.dataNavigator.navigatePage("next", $event);
46241
- _this.isDataLoading = true;
46242
- }));
46306
+ if (_this.gridOptions.mode === "viewless") {
46307
+ _this.dataNavigator.navigatePage("first", $event, true);
46308
+ _this.gridOptions.mode = "";
46309
+ } else {
46310
+ _this.dataNavigator.navigatePage("next", $event);
46311
+ _this.isDataLoading = true;
46312
+ }
46313
+ }), _this.infScroll);
46243
46314
  },
46244
46315
  bindScrollEvt: function() {
46245
46316
  if (_this._gridData && _this._gridData.length && _this.infScroll) {
@@ -46399,6 +46470,9 @@
46399
46470
  set: function(newValue) {
46400
46471
  var _a;
46401
46472
  this.isDataLoading = false;
46473
+ if (this.variableInflight && _.isEmpty(newValue)) {
46474
+ return;
46475
+ }
46402
46476
  this.variableInflight = false;
46403
46477
  if (this.gridOptions.isNavTypeScrollOrOndemand()) {
46404
46478
  _a = __read(this.paginationService.updateFieldsOnPagination(this, newValue), 2),
@@ -46517,6 +46591,10 @@
46517
46591
  this.gridOptions.securityUtils.pipeTransform = this.trustAsPipe;
46518
46592
  this.gridOptions.navigation = this.navigation;
46519
46593
  this.gridOptions.isdynamictable = this.isdynamictable;
46594
+ this.gridOptions.showviewlessbutton = this.showviewlessbutton;
46595
+ this.gridOptions.ondemandmessage = this.ondemandmessage;
46596
+ this.gridOptions.viewlessmessage = this.viewlessmessage;
46597
+ this.gridOptions.loadingdatamsg = this.loadingdatamsg;
46520
46598
  if (!_.isEmpty(this.gridData)) {
46521
46599
  this.gridOptions.data = core.getClonedObject(this.gridData);
46522
46600
  }
@@ -46848,6 +46926,9 @@
46848
46926
  };
46849
46927
  TableComponent.prototype.setGridData = function(serverData) {
46850
46928
  var data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
46929
+ if (_.get(this.datasource, "category") === "wm.Variable") {
46930
+ this.variableInflight = false;
46931
+ }
46851
46932
  if (!this.variableInflight) {
46852
46933
  if (data && data.length === 0) {
46853
46934
  this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
@@ -47142,10 +47223,8 @@
47142
47223
  this.variableInflight = false;
47143
47224
  this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
47144
47225
  }
47145
- if (this.dataset) {
47146
- this.watchVariableDataSet(this.dataset);
47147
- this.onDataSourceChange();
47148
- }
47226
+ this.watchVariableDataSet(this.dataset);
47227
+ this.onDataSourceChange();
47149
47228
  break;
47150
47229
 
47151
47230
  case "dataset":
@@ -47254,6 +47333,11 @@
47254
47333
  if (nv) {
47255
47334
  this.$element.find(".on-demand-datagrid > a").text(nv);
47256
47335
  }
47336
+ this.gridOptions.ondemandmessage = nv;
47337
+ break;
47338
+
47339
+ case "viewlessmessage":
47340
+ this.gridOptions.viewlessmessage = nv;
47257
47341
  break;
47258
47342
 
47259
47343
  case "show":
@@ -50978,15 +51062,20 @@
50978
51062
  };
50979
51063
  };
50980
51064
  var \u02752 = findInvalidElement;
50981
- var setTouchedState = function(ngForm) {
51065
+ var setTouchedState = function(self, ngForm, fieldName) {
51066
+ var _a, _b;
50982
51067
  if (ngForm.valid) {
50983
51068
  return;
50984
51069
  }
50985
51070
  if (ngForm.controls) {
50986
- _.forEach(ngForm.controls, (function(ctrl) {
50987
- setTouchedState(ctrl);
51071
+ _.forEach(ngForm.controls, (function(ctrl, fieldName) {
51072
+ setTouchedState(self, ctrl, fieldName);
50988
51073
  }));
50989
51074
  } else {
51075
+ var element = self.$element.find('[wmformfield][key="' + fieldName + '"]');
51076
+ element[0].setAttribute("__errormsg", element[0].getAttribute("__validationId"));
51077
+ (_a = element[0].querySelector("input")) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-invalid", ngForm.invalid);
51078
+ (_b = element[0].querySelector("input")) === null || _b === void 0 ? void 0 : _b.setAttribute("aria-describedby", element[0].getAttribute("__validationId"));
50990
51079
  ngForm.markAsTouched();
50991
51080
  }
50992
51081
  };
@@ -51283,7 +51372,7 @@
51283
51372
  }));
51284
51373
  };
51285
51374
  FormComponent.prototype.highlightInvalidFields = function() {
51286
- setTouchedState(this.ngform);
51375
+ setTouchedState(this, this.ngform, "");
51287
51376
  };
51288
51377
  FormComponent.prototype.validateFieldsOnSubmit = function() {
51289
51378
  this.setValidationMsgs();
@@ -51812,8 +51901,8 @@
51812
51901
  FormComponent.prototype.generateFormFields = function() {
51813
51902
  return __awaiter(this, void 0, void 0, (function() {
51814
51903
  var noOfColumns, $gridLayout, columnWidth, fieldTemplate, colCount, index, userFields, fields, colTmpl, componentFactoryRef, component;
51815
- return __generator(this, (function(_b) {
51816
- switch (_b.label) {
51904
+ return __generator(this, (function(_c) {
51905
+ switch (_c.label) {
51817
51906
  case 0:
51818
51907
  if (_.isUndefined(this._isGridLayoutPresent)) {
51819
51908
  this._isGridLayoutPresent = this.$element.find(".panel-body [wmlayoutgrid]").length > 0;
@@ -51872,7 +51961,7 @@
51872
51961
  }) ];
51873
51962
 
51874
51963
  case 1:
51875
- componentFactoryRef = _b.sent();
51964
+ componentFactoryRef = _c.sent();
51876
51965
  component = this.dynamicFormRef.createComponent(componentFactoryRef, 0, this.inj);
51877
51966
  core.extendProto(component.instance, this._dynamicContext);
51878
51967
  $gridLayout[0].appendChild(component.location.nativeElement);
@@ -52393,10 +52482,18 @@
52393
52482
  $($evt.target).closest(".live-field").addClass("active");
52394
52483
  };
52395
52484
  FormFieldDirective.prototype._onBlurField = function($evt) {
52396
- var _a, _b;
52485
+ var _a, _b, _c, _d;
52397
52486
  $($evt.target).closest(".live-field").removeClass("active");
52398
- (_a = this.nativeElement.querySelector("input")) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-invalid", "" + this.ngform.controls[this._fieldName].invalid);
52399
- (_b = this.nativeElement.querySelector("input")) === null || _b === void 0 ? void 0 : _b.setAttribute("aria-describedby", "" + this.nativeElement.getAttribute("__errormsg"));
52487
+ var ele = this.nativeElement.querySelector("p.text-danger");
52488
+ if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {
52489
+ this.nativeElement.setAttribute("__errormsg", "" + this.nativeElement.getAttribute("__validationId"));
52490
+ (_a = this.nativeElement.querySelector("input")) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-invalid", "" + this.ngform.controls[this._fieldName].invalid);
52491
+ (_b = this.nativeElement.querySelector("input")) === null || _b === void 0 ? void 0 : _b.setAttribute("aria-describedby", "" + this.nativeElement.getAttribute("__validationId"));
52492
+ } else {
52493
+ this.nativeElement.removeAttribute("__errormsg");
52494
+ (_c = this.nativeElement.querySelector("input")) === null || _c === void 0 ? void 0 : _c.removeAttribute("aria-invalid");
52495
+ (_d = this.nativeElement.querySelector("input")) === null || _d === void 0 ? void 0 : _d.removeAttribute("aria-describedby");
52496
+ }
52400
52497
  this._activeField = false;
52401
52498
  this._triggeredByUser = false;
52402
52499
  this._clicktriggeredByUser = false;
@@ -52618,7 +52715,7 @@
52618
52715
  });
52619
52716
  };
52620
52717
  FormFieldDirective.prototype.onValueChange = function(val) {
52621
- var _a, _b;
52718
+ var _a, _b, _c, _d;
52622
52719
  if (!this.isDestroyed) {
52623
52720
  var captionEl = $(this.nativeElement).find(".caption-floating");
52624
52721
  if (captionEl.length > 0) {
@@ -52630,8 +52727,15 @@
52630
52727
  isFocused: this._activeField
52631
52728
  });
52632
52729
  }
52633
- (_a = this.nativeElement.querySelector("input")) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-invalid", this._triggeredByUser && this.ngform.controls[this._fieldName].invalid ? "true" : "false");
52634
- (_b = this.nativeElement.querySelector("input")) === null || _b === void 0 ? void 0 : _b.setAttribute("aria-describedby", "" + this.nativeElement.getAttribute("__errormsg"));
52730
+ if (this.ngform.controls[this._fieldName].invalid && this.ngform.controls[this._fieldName].touched && this.form.isUpdateMode) {
52731
+ this.nativeElement.setAttribute("__errormsg", "" + this.nativeElement.getAttribute("__validationId"));
52732
+ (_a = this.nativeElement.querySelector("input")) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-invalid", this._triggeredByUser && this.ngform.controls[this._fieldName].invalid ? "true" : "false");
52733
+ (_b = this.nativeElement.querySelector("input")) === null || _b === void 0 ? void 0 : _b.setAttribute("aria-describedby", "" + this.nativeElement.getAttribute("__validationId"));
52734
+ } else {
52735
+ this.nativeElement.removeAttribute("__errormsg");
52736
+ (_c = this.nativeElement.querySelector("input")) === null || _c === void 0 ? void 0 : _c.removeAttribute("aria-invalid");
52737
+ (_d = this.nativeElement.querySelector("input")) === null || _d === void 0 ? void 0 : _d.removeAttribute("aria-describedby");
52738
+ }
52635
52739
  this.form.onFieldValueChange(this, val);
52636
52740
  this.notifyChanges();
52637
52741
  if (this.$element.find(".active").length > 0 || this.form.touched) {