@wavemaker/app-runtime-wm-build 11.4.2-rc.5403 → 11.4.2-rc.5559

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.
@@ -17071,7 +17071,9 @@
17071
17071
  };
17072
17072
  BaseFormCustomComponent.prototype.invokeOnChange = function(value, $event, valid) {
17073
17073
  this._onChange(value);
17074
- _super.prototype.invokeOnChange.call(this, value, $event);
17074
+ if (valid) {
17075
+ _super.prototype.invokeOnChange.call(this, value, $event);
17076
+ }
17075
17077
  };
17076
17078
  BaseFormCustomComponent.prototype.invokeOnTouched = function($event) {
17077
17079
  this._onTouched();
@@ -22705,7 +22707,7 @@
22705
22707
  type: core$1.Component,
22706
22708
  args: [ {
22707
22709
  selector: "[wmSearch]",
22708
- template: '<ng-template #customItemTemplate let-model="item" let-index="index" let-query="query" let-match="match">\n \x3c!-- Default item template --\x3e\n <a *ngIf="!content">\n <img *ngIf="model.imgSrc" [src]="model.imgSrc" alt="Search" [style.width]="imagewidth">\n <span [title]="model.label" [innerHtml]="highlight(match, query) || model.label"></span>\n </a>\n \x3c!-- Custom partial template --\x3e\n <a *ngIf="content" [ngClass]="{customTemplate: content}" partialContainer [wmItemTemplate]="content" [userComponentParams]="match.item">\n <div partial-container-target></div>\n </a>\n</ng-template>\n\n<ng-template #customListTemplate let-matches="matches" let-itemTemplate="itemTemplate" let-query="query">\n <ul #ulElement class="app-search dropdown-menu" scrollable>\n <li #liElements *ngFor="let match of matches" [ngClass]="{active: typeaheadContainer && typeaheadContainer.isActive(match), \'list-group-header\': match && match.isHeader()}"\n (mouseenter)="typeaheadContainer.selectActive(match);"\n (click)="match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();">\n \x3c!-- itemTemplate comes from the <input> --\x3e\n <h4 *ngIf="match.isHeader()" class="group-title">{{match.value}}</h4>\n <ng-container *ngIf="!match.isHeader()" [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{item: match.item, index: i, match: match, query: query}">\n </ng-container>\n </li>\n <div class="status" [hidden]="_loadingItems || !(datacompletemsg && dataProvider.isLastPage)">\n <span [textContent]="datacompletemsg"></span>\n </div>\n <div class="status" [hidden]="!_loadingItems">\n <i class="fa fa-circle-o-notch fa-spin"></i>\n <span [textContent]="loadingdatamsg"></span>\n </div>\n </ul>\n</ng-template>\n\n\x3c!--This template is for search inside mobile navbar.--\x3e\n<ng-container *ngIf="navsearchbar; else searchTemplate">\n <input [title]="query || \'\'" type="text" class="app-textbox form-control list-of-objs app-search-input" [placeholder]="placeholder || \'\'"\n focus-target\n container="body"\n [disabled]="disabled"\n autocomplete="off"\n [(ngModel)]="query"\n [readonly]="readonly"\n [disabled]="disabled"\n [typeahead]="typeaheadDataSource"\n [typeaheadWaitMs]="debouncetime"\n [typeaheadItemTemplate]="customItemTemplate"\n [optionsListTemplate]="customListTemplate"\n (input)="onInputChange($event)"\n (keydown)="listenQuery = true"\n (keydown.enter)="$typeaheadEvent = $event;handleEnterEvent($event)"\n (keydown.arrowdown)="selectNext($event)"\n (blur)="invokeOnTouched($event)"\n (click)="handleFocus($event);"\n (focus)="_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);"\n (focusout)="onFocusOut()"\n [typeaheadMinLength]="minchars"\n [typeaheadOptionsLimit]="limit"\n (typeaheadLoading)="_loadingItems"\n (typeaheadOnSelect)="typeaheadOnSelect($event)"\n typeaheadOptionField="label"\n [typeaheadGroupField]="groupby ? \'groupby\' : null"\n [typeaheadAsync]="true"\n [typeaheadScrollable]="true"\n [adaptivePosition]="true"\n [typeaheadOptionsInScrollableView]="optionslimitinscrollableview"\n [dropup]="dropup"\n [tabindex]="tabindex"\n [attr.name]="name"\n [attr.aria-label]="hint || \'Search field\'"/>\n <i class="btn-close wi wi-cancel" [hidden]="!showClosebtn" (click)="clearSearch($event);"></i>\n</ng-container>\n\x3c!--This template is for both web and fullscreen mode in mobile.--\x3e\n<ng-template #searchTemplate>\n <span class="wi wi-arrow-left form-control-feedback back-btn" aria-hidden="true" (click)="closeSearch()"></span>\n <span class="sr-only">Back button</span>\n <input [title]="query || \'\'" type="text" class="app-textbox form-control list-of-objs app-search-input" [placeholder]="placeholder || \'\'"\n focus-target\n [container]="containerTarget || \'body\'"\n [disabled]="disabled"\n autocomplete="off"\n [(ngModel)]="query"\n [readonly]="readonly"\n [typeahead]="typeaheadDataSource"\n [typeaheadWaitMs]="debouncetime"\n [typeaheadItemTemplate]="customItemTemplate"\n [optionsListTemplate]="customListTemplate"\n (input)="onInputChange($event)"\n (keydown)="listenQuery = true"\n (keydown.enter)="$typeaheadEvent = $event;handleEnterEvent($event)"\n (keydown.arrowdown)="selectNext($event)"\n (blur)="invokeOnTouched($event); onFocusOut()"\n (click)="handleFocus($event);"\n (focus)="_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)"\n [typeaheadMinLength]="minchars"\n [typeaheadOptionsLimit]="limit"\n (typeaheadLoading)="_loadingItems"\n (typeaheadOnSelect)="typeaheadOnSelect($event)"\n typeaheadOptionField="label"\n [typeaheadGroupField]="groupby ? \'groupby\' : null"\n [typeaheadAsync]="true"\n [typeaheadScrollable]="true"\n [adaptivePosition]="true"\n [typeaheadOptionsInScrollableView]="optionslimitinscrollableview"\n [tabindex]="tabindex"\n [dropup]="dropup"\n [attr.name]="name"\n [attr.aria-label]="hint || \'Search field\'">\n <input class="model-holder" ng-model="proxyModel" ng-required="required" tabindex="-1" aria-hidden="true">\n <span *ngIf="_loadingItems" aria-hidden="true" class="fa fa-circle-o-notch fa-spin form-control-feedback"></span>\n <span class="wi wi-close form-control-feedback clear-btn" [ngClass]="{\'show-btn\': isQueryEntered()}" (click)="clearSearch($event, true)"></span>\n <span class="sr-only">Clear button</span>\n <span *ngIf="showsearchicon" class="input-group-addon" aria-label="search icon" [ngClass]="{\'disabled\': disabled}">\n <form>\n <button title="Search" [disabled]="disabled" class="app-search-button wm-sl-l sl-search" type="submit"\n (click)="onSearchSelect($event)"></button>\n </form>\n </span>\n</ng-template>\n',
22710
+ template: '<ng-template #customItemTemplate let-model="item" let-index="index" let-query="query" let-match="match">\n \x3c!-- Default item template --\x3e\n <a *ngIf="!content">\n <img *ngIf="model.imgSrc" [src]="model.imgSrc" alt="Search" [style.width]="imagewidth">\n <span [title]="model.label" [innerHtml]="highlight(match, query) || model.label"></span>\n </a>\n \x3c!-- Custom partial template --\x3e\n <a *ngIf="content" [ngClass]="{customTemplate: content}" partialContainer [wmItemTemplate]="content" [userComponentParams]="match.item">\n <div partial-container-target></div>\n </a>\n</ng-template>\n\n<ng-template #customListTemplate let-matches="matches" let-itemTemplate="itemTemplate" let-query="query">\n <ul #ulElement class="app-search dropdown-menu" scrollable>\n <li #liElements *ngFor="let match of matches" [ngClass]="{active: typeaheadContainer && typeaheadContainer.isActive(match), \'list-group-header\': match && match.isHeader()}"\n (mouseenter)="typeaheadContainer.selectActive(match);"\n (click)="match && !match.isHeader() && typeaheadContainer.selectMatch(match, $event); $typeaheadEvent = $event; notifySubscriber();">\n \x3c!-- itemTemplate comes from the <input> --\x3e\n <h4 *ngIf="match.isHeader()" class="group-title">{{match.value}}</h4>\n <ng-container *ngIf="!match.isHeader()" [ngTemplateOutlet]="itemTemplate"\n [ngTemplateOutletContext]="{item: match.item, index: i, match: match, query: query}">\n </ng-container>\n </li>\n <div class="status" [hidden]="_loadingItems || !(datacompletemsg && dataProvider.isLastPage)">\n <span [textContent]="datacompletemsg"></span>\n </div>\n <div class="status" [hidden]="!_loadingItems">\n <i class="fa fa-circle-o-notch fa-spin"></i>\n <span [textContent]="loadingdatamsg"></span>\n </div>\n </ul>\n</ng-template>\n\n\x3c!--This template is for search inside mobile navbar.--\x3e\n<ng-container *ngIf="navsearchbar; else searchTemplate">\n <input [title]="query || \'\'" type="text" class="app-textbox form-control list-of-objs app-search-input" [placeholder]="placeholder || \'\'"\n focus-target\n container="body"\n [disabled]="disabled"\n autocomplete="off"\n [(ngModel)]="query"\n [readonly]="readonly"\n [disabled]="disabled"\n [typeahead]="typeaheadDataSource"\n [typeaheadWaitMs]="debouncetime"\n [typeaheadItemTemplate]="customItemTemplate"\n [optionsListTemplate]="customListTemplate"\n (input)="onInputChange($event)"\n (keydown)="listenQuery = true"\n (keydown.enter)="$typeaheadEvent = $event;handleEnterEvent($event)"\n (keydown.arrowdown)="selectNext($event)"\n (blur)="invokeOnTouched($event)"\n (click)="handleFocus($event);"\n (focus)="_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event);"\n (focusout)="onFocusOut()"\n [typeaheadMinLength]="minchars"\n [typeaheadOptionsLimit]="limit"\n (typeaheadLoading)="_loadingItems"\n (typeaheadOnSelect)="typeaheadOnSelect($event)"\n typeaheadOptionField="label"\n [typeaheadGroupField]="groupby ? \'groupby\' : null"\n [typeaheadAsync]="true"\n [typeaheadScrollable]="true"\n [typeaheadOptionsInScrollableView]="optionslimitinscrollableview"\n [dropup]="dropup"\n [tabindex]="tabindex"\n [attr.name]="name"\n [attr.aria-label]="hint || \'Search field\'"/>\n <i class="btn-close wi wi-cancel" [hidden]="!showClosebtn" (click)="clearSearch($event);"></i>\n</ng-container>\n\x3c!--This template is for both web and fullscreen mode in mobile.--\x3e\n<ng-template #searchTemplate>\n <span class="wi wi-arrow-left form-control-feedback back-btn" aria-hidden="true" (click)="closeSearch()"></span>\n <span class="sr-only">Back button</span>\n <input [title]="query || \'\'" type="text" class="app-textbox form-control list-of-objs app-search-input" [placeholder]="placeholder || \'\'"\n focus-target\n [container]="containerTarget || \'body\'"\n [disabled]="disabled"\n autocomplete="off"\n [(ngModel)]="query"\n [readonly]="readonly"\n [typeahead]="typeaheadDataSource"\n [typeaheadWaitMs]="debouncetime"\n [typeaheadItemTemplate]="customItemTemplate"\n [optionsListTemplate]="customListTemplate"\n (input)="onInputChange($event)"\n (keydown)="listenQuery = true"\n (keydown.enter)="$typeaheadEvent = $event;handleEnterEvent($event)"\n (keydown.arrowdown)="selectNext($event)"\n (blur)="invokeOnTouched($event); onFocusOut()"\n (click)="handleFocus($event);"\n (focus)="_unsubscribeDv = false; listenQuery = true; handleFocus($event); invokeOnFocus($event)"\n [typeaheadMinLength]="minchars"\n [typeaheadOptionsLimit]="limit"\n (typeaheadLoading)="_loadingItems"\n (typeaheadOnSelect)="typeaheadOnSelect($event)"\n typeaheadOptionField="label"\n [typeaheadGroupField]="groupby ? \'groupby\' : null"\n [typeaheadAsync]="true"\n [typeaheadScrollable]="true"\n [typeaheadOptionsInScrollableView]="optionslimitinscrollableview"\n [tabindex]="tabindex"\n [dropup]="dropup"\n [attr.name]="name"\n [attr.aria-label]="hint || \'Search field\'">\n <input class="model-holder" ng-model="proxyModel" ng-required="required" tabindex="-1" aria-hidden="true">\n <span *ngIf="_loadingItems" aria-hidden="true" class="fa fa-circle-o-notch fa-spin form-control-feedback"></span>\n <span class="wi wi-close form-control-feedback clear-btn" [ngClass]="{\'show-btn\': isQueryEntered()}" (click)="clearSearch($event, true)"></span>\n <span class="sr-only">Clear button</span>\n <span *ngIf="showsearchicon" class="input-group-addon" aria-label="search icon" [ngClass]="{\'disabled\': disabled}">\n <form>\n <button title="Search" [disabled]="disabled" class="app-search-button wm-sl-l sl-search" type="submit"\n (click)="onSearchSelect($event)"></button>\n </form>\n </span>\n</ng-template>\n',
22709
22711
  providers: [ base.provideAs(SearchComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(SearchComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(SearchComponent) ]
22710
22712
  } ]
22711
22713
  } ];
@@ -28148,7 +28150,7 @@
28148
28150
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28149
28151
  value: true
28150
28152
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28151
- value: true
28153
+ value: false
28152
28154
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28153
28155
  value: "LABEL_TODAY_DATE"
28154
28156
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -28442,7 +28444,7 @@
28442
28444
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28443
28445
  value: true
28444
28446
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28445
- value: true
28447
+ value: false
28446
28448
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28447
28449
  value: "LABEL_TODAY_DATE"
28448
28450
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -38073,9 +38075,10 @@
38073
38075
  value;
38074
38076
  }
38075
38077
  var registerProps = function() {
38076
- base.register("wm-dialog", new Map([ [ "animation", base.PROP_STRING ], [ "class", base.PROP_STRING ], [ "closable", Object.assign({
38077
- value: true
38078
- }, base.PROP_BOOLEAN) ], [ "iconclass", {
38078
+ base.register("wm-dialog", new Map([ [ "animation", base.PROP_STRING ], [ "class", base.PROP_STRING ], [ "closable", {
38079
+ value: true,
38080
+ PROP_BOOLEAN: base.PROP_BOOLEAN
38081
+ } ], [ "iconclass", {
38079
38082
  value: "wi wi-file-text",
38080
38083
  PROP_STRING: base.PROP_STRING
38081
38084
  } ], [ "iconheight", base.PROP_STRING ], [ "iconmargin", base.PROP_STRING ], [ "iconurl", base.PROP_STRING ], [ "iconwidth", base.PROP_STRING ], [ "modal", Object.assign({
@@ -38110,7 +38113,7 @@
38110
38113
  _this = _super.call(this, inj, WIDGET_INFO, {
38111
38114
  class: DIALOG_CLS + " " + (dialogClass || ""),
38112
38115
  backdrop: backdrop,
38113
- keyboard: core.toBoolean(closable) ? true : !core.toBoolean(modal)
38116
+ keyboard: !core.toBoolean(modal)
38114
38117
  }) || this;
38115
38118
  return _this;
38116
38119
  }
@@ -46913,9 +46916,6 @@
46913
46916
  }
46914
46917
  } else {
46915
46918
  this.resetPageNavigation();
46916
- if (newVal === "" || newVal === undefined || _.get(this.datasource, "category") === "wm.Variable") {
46917
- this.variableInflight = false;
46918
- }
46919
46919
  if (!this.variableInflight) {
46920
46920
  this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
46921
46921
  }
@@ -47055,7 +47055,7 @@
47055
47055
  };
47056
47056
  TableComponent.prototype.setGridData = function(serverData) {
47057
47057
  var data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
47058
- if (_.get(this.datasource, "category") === "wm.Variable" || _.get(this.datasource, "category") === undefined) {
47058
+ if (_.get(this.datasource, "category") === "wm.Variable") {
47059
47059
  this.variableInflight = false;
47060
47060
  }
47061
47061
  if (!this.variableInflight) {
@@ -58673,14 +58673,14 @@
58673
58673
  $event: $event
58674
58674
  });
58675
58675
  };
58676
- TabPaneComponent.prototype.select = function($event) {
58676
+ TabPaneComponent.prototype.select = function($event, isKeyBoardEvent) {
58677
58677
  if (this.isActive || this.disabled) {
58678
58678
  return;
58679
58679
  }
58680
58680
  this.isActive = true;
58681
58681
  this.$lazyLoad();
58682
58682
  this.redrawChildren();
58683
- this.notifyParent($event);
58683
+ this.notifyParent($event, isKeyBoardEvent);
58684
58684
  };
58685
58685
  TabPaneComponent.prototype.tabpaneHeaderClick = function($event, paneIndex) {
58686
58686
  this.invokeEventCallback("headerclick", {
@@ -58718,8 +58718,8 @@
58718
58718
  }
58719
58719
  }), 100);
58720
58720
  };
58721
- TabPaneComponent.prototype.notifyParent = function(evt) {
58722
- this.tabsRef.notifyChange(this, evt);
58721
+ TabPaneComponent.prototype.notifyParent = function(evt, isKeyBoardEvent) {
58722
+ this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);
58723
58723
  };
58724
58724
  TabPaneComponent.prototype.handleSwipeLeft = function() {
58725
58725
  this.tabsRef.next();
@@ -58917,7 +58917,7 @@
58917
58917
  paneRef.remove();
58918
58918
  }
58919
58919
  };
58920
- TabsComponent.prototype.notifyChange = function(paneRef, evt) {
58920
+ TabsComponent.prototype.notifyChange = function(paneRef, evt, isKeyBoardEvent) {
58921
58921
  if (!this.isSelectableTab(paneRef)) {
58922
58922
  return;
58923
58923
  }
@@ -58949,7 +58949,7 @@
58949
58949
  if (!evt || !headerElement || !headerElement.length) {
58950
58950
  headerElement = this.nativeElement.querySelector("li[data-paneid=" + paneRef.widgetId + "]");
58951
58951
  var insideTabs = !!$(headerElement).closest(".app-tabs").parent().closest(".app-tabs").length;
58952
- if (!insideTabs) {
58952
+ if (!insideTabs && isKeyBoardEvent) {
58953
58953
  $(headerElement).children().focus();
58954
58954
  }
58955
58955
  }
@@ -59021,16 +59021,16 @@
59021
59021
  }
59022
59022
  }
59023
59023
  };
59024
- TabsComponent.prototype.next = function($event) {
59024
+ TabsComponent.prototype.next = function($event, isKeyBoardEvent) {
59025
59025
  var pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());
59026
59026
  if (pane) {
59027
- pane.select($event);
59027
+ pane.select($event, isKeyBoardEvent);
59028
59028
  }
59029
59029
  };
59030
- TabsComponent.prototype.prev = function($event) {
59030
+ TabsComponent.prototype.prev = function($event, isKeyBoardEvent) {
59031
59031
  var pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());
59032
59032
  if (pane) {
59033
- pane.select($event);
59033
+ pane.select($event, isKeyBoardEvent);
59034
59034
  }
59035
59035
  };
59036
59036
  TabsComponent.prototype.selectDefaultPaneByIndex = function(index) {
@@ -59119,13 +59119,13 @@
59119
59119
  switch (event.key) {
59120
59120
  case "ArrowLeft":
59121
59121
  case "ArrowUp":
59122
- this.prev();
59122
+ this.prev(null, true);
59123
59123
  event.preventDefault();
59124
59124
  break;
59125
59125
 
59126
59126
  case "ArrowRight":
59127
59127
  case "ArrowDown":
59128
- this.next();
59128
+ this.next(null, true);
59129
59129
  event.preventDefault();
59130
59130
  break;
59131
59131