@wavemaker/app-runtime-wm-build 11.4.3-next.30202 → 11.4.3-rc.126

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.
@@ -4976,7 +4976,7 @@
4976
4976
  if (!_.get(parsedObj, [ stateParam ]) && !_.get(parsedObj, key)) {
4977
4977
  return;
4978
4978
  }
4979
- if (_.get(parsedObj, stateParam + "." + key)) {
4979
+ if (_.get(parsedObj, stateParam + "." + key) || parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) {
4980
4980
  if (subParam) {
4981
4981
  delete parsedObj[stateParam][key][subParam];
4982
4982
  } else {
@@ -7243,14 +7243,14 @@
7243
7243
  }
7244
7244
  return new http.HttpRequest(options.method, options.url, third, fourth);
7245
7245
  };
7246
- HttpServiceImpl.prototype.sendCallAsObservable = function(options) {
7246
+ HttpServiceImpl.prototype.sendCallAsObservable = function(options, params) {
7247
7247
  var req = this.generateRequest(options);
7248
7248
  return this.httpClient.request(req);
7249
7249
  };
7250
- HttpServiceImpl.prototype.sendCall = function(requestParams, variable) {
7250
+ HttpServiceImpl.prototype.sendCall = function(requestParams, variable, params) {
7251
7251
  var _this = this;
7252
7252
  return new Promise((function(resolve, reject) {
7253
- variable._observable = _this.sendCallAsObservable(requestParams).subscribe((function(response) {
7253
+ variable._observable = _this.sendCallAsObservable(requestParams, params).subscribe((function(response) {
7254
7254
  if (response && response.type) {
7255
7255
  resolve(response);
7256
7256
  }
@@ -12533,7 +12533,11 @@
12533
12533
  };
12534
12534
  this.widgetControl.setAsyncValidators([ this._asyncValidatorFn() ]);
12535
12535
  if (this.widgetContext.ngform.touched) {
12536
- this.widgetControl.updateValueAndValidity();
12536
+ var opt = {};
12537
+ if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
12538
+ opt["emitEvent"] = false;
12539
+ }
12540
+ this.widgetControl.updateValueAndValidity(opt);
12537
12541
  }
12538
12542
  };
12539
12543
  BaseFieldValidations.prototype.isDefaultValidator = function(type) {
@@ -12590,8 +12594,12 @@
12590
12594
  BaseFieldValidations.prototype.validate = function() {
12591
12595
  this.applyDefaultValidators();
12592
12596
  if (this._asyncValidatorFn) {
12597
+ var opt = {};
12598
+ if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
12599
+ opt["emitEvent"] = false;
12600
+ }
12593
12601
  this.widgetControl.setAsyncValidators([ this._asyncValidatorFn() ]);
12594
- this.widgetControl.updateValueAndValidity();
12602
+ this.widgetControl.updateValueAndValidity(opt);
12595
12603
  }
12596
12604
  if (this.widgetContext.ngform.touched) {
12597
12605
  this.widgetControl.markAsTouched();
@@ -12610,8 +12618,12 @@
12610
12618
  };
12611
12619
  BaseFieldValidations.prototype.applyDefaultValidators = function() {
12612
12620
  var validators = this.getDefaultValidators();
12621
+ var opt = {};
12622
+ if (this.formwidget && this.instance.value === this.formwidget.prevDatavalue) {
12623
+ opt["emitEvent"] = false;
12624
+ }
12613
12625
  this.widgetControl.setValidators(_.concat(this._syncValidators || [], validators));
12614
- this.widgetControl.updateValueAndValidity();
12626
+ this.widgetControl.updateValueAndValidity(opt);
12615
12627
  this.setCustomValidationMessage();
12616
12628
  };
12617
12629
  BaseFieldValidations.prototype.setCustomValidationMessage = function() {
@@ -14513,7 +14525,7 @@
14513
14525
  return {
14514
14526
  pre: function(attrs) {
14515
14527
  var counter = idGen$c.nextUid();
14516
- return "<" + tagName$P + " wmButton #" + counter + '="wmButton" [attr.aria-label]="' + counter + ".hint || " + counter + '.caption" ' + transpiler.getAttrMarkup(attrs) + ">";
14528
+ return "<" + tagName$P + " wmButton #" + counter + '="wmButton" [attr.aria-label]="' + counter + ".hint || " + counter + '.caption || null" ' + transpiler.getAttrMarkup(attrs) + ">";
14517
14529
  },
14518
14530
  post: function() {
14519
14531
  return "</" + tagName$P + ">";
@@ -17071,7 +17083,9 @@
17071
17083
  };
17072
17084
  BaseFormCustomComponent.prototype.invokeOnChange = function(value, $event, valid) {
17073
17085
  this._onChange(value);
17074
- _super.prototype.invokeOnChange.call(this, value, $event);
17086
+ if (valid) {
17087
+ _super.prototype.invokeOnChange.call(this, value, $event);
17088
+ }
17075
17089
  };
17076
17090
  BaseFormCustomComponent.prototype.invokeOnTouched = function($event) {
17077
17091
  this._onTouched();
@@ -22705,7 +22719,7 @@
22705
22719
  type: core$1.Component,
22706
22720
  args: [ {
22707
22721
  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 [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',
22722
+ 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',
22709
22723
  providers: [ base.provideAs(SearchComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(SearchComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(SearchComponent) ]
22710
22724
  } ]
22711
22725
  } ];
@@ -28148,7 +28162,7 @@
28148
28162
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28149
28163
  value: true
28150
28164
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28151
- value: false
28165
+ value: true
28152
28166
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28153
28167
  value: "LABEL_TODAY_DATE"
28154
28168
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -28237,6 +28251,8 @@
28237
28251
  if (isNativePicker === void 0) {
28238
28252
  isNativePicker = false;
28239
28253
  }
28254
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28255
+ this.updateFormat("datepattern");
28240
28256
  if (this.isEnterPressedOnDateInput) {
28241
28257
  this.isEnterPressedOnDateInput = false;
28242
28258
  return;
@@ -28342,6 +28358,8 @@
28342
28358
  }), 350);
28343
28359
  };
28344
28360
  DateComponent.prototype.onDisplayKeydown = function(event) {
28361
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28362
+ this.updateFormat("datepattern");
28345
28363
  if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {
28346
28364
  event.stopPropagation();
28347
28365
  var action = this.keyEventPlugin.constructor.getEventFullKey(event);
@@ -28374,6 +28392,8 @@
28374
28392
  }
28375
28393
  };
28376
28394
  DateComponent.prototype.onDateChange = function(newVal) {
28395
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28396
+ this.updateFormat("datepattern");
28377
28397
  if (this._bsDefaultLoadCheck) {
28378
28398
  this._bsDefaultLoadCheck = false;
28379
28399
  return;
@@ -28442,7 +28462,7 @@
28442
28462
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28443
28463
  value: true
28444
28464
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28445
- value: false
28465
+ value: true
28446
28466
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28447
28467
  value: "LABEL_TODAY_DATE"
28448
28468
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -35686,7 +35706,10 @@
35686
35706
  value: "Link"
35687
35707
  }, base.PROP_STRING) ], [ "class", base.PROP_STRING ], [ "conditionalclass", base.PROP_ANY ], [ "content", base.PROP_STRING ], [ "contentanimation", base.PROP_STRING ], [ "contentsource", Object.assign({
35688
35708
  value: "partial"
35689
- }, base.PROP_STRING) ], [ "encodeurl", base.PROP_BOOLEAN ], [ "hint", base.PROP_STRING ], [ "hyperlink", base.PROP_STRING ], [ "iconclass", base.PROP_STRING ], [ "iconheight", base.PROP_STRING ], [ "iconmargin", base.PROP_STRING ], [ "iconposition", base.PROP_STRING ], [ "iconurl", base.PROP_STRING ], [ "iconwidth", base.PROP_STRING ], [ "interaction", Object.assign({
35709
+ }, base.PROP_STRING) ], [ "encodeurl", base.PROP_BOOLEAN ], [ "hint", base.PROP_STRING ], [ "hyperlink", {
35710
+ value: "javascript:void(0)",
35711
+ PROP_STRING: base.PROP_STRING
35712
+ } ], [ "iconclass", base.PROP_STRING ], [ "iconheight", base.PROP_STRING ], [ "iconmargin", base.PROP_STRING ], [ "iconposition", base.PROP_STRING ], [ "iconurl", base.PROP_STRING ], [ "iconwidth", base.PROP_STRING ], [ "interaction", Object.assign({
35690
35713
  value: "click"
35691
35714
  }, base.PROP_STRING) ], [ "name", base.PROP_STRING ], [ "popoverarrow", Object.assign({
35692
35715
  value: true
@@ -37150,7 +37173,7 @@
37150
37173
  type: core$1.Component,
37151
37174
  args: [ {
37152
37175
  selector: "div[wmAlertDialog]",
37153
- template: '<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]="closable"\n [iconclass]="iconclass"\n [iconurl]="iconurl"\n [iconwidth]="iconwidth"\n [iconheight]="iconheight"\n [iconmargin]="iconmargin"\n [heading]="title"\n [titleid]="titleId"></div>\n <div wmDialogBody>\n <p class="app-dialog-message text-{{alerttype}}" [attr.aria-describedby]="message" [textContent]="message"></p>\n </div>\n <div wmDialogFooter>\n <button wmButton class="btn-primary ok-action" caption.bind="oktext" aria-label="Submit button" (click)="onOk($event)"></button>\n </div>\n</ng-template>\n',
37176
+ template: '<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]="closable"\n [iconclass]="iconclass"\n [iconurl]="iconurl"\n [iconwidth]="iconwidth"\n [iconheight]="iconheight"\n [iconmargin]="iconmargin"\n [heading]="title"\n [titleid]="titleId"></div>\n <div wmDialogBody>\n <p class="app-dialog-message text-{{alerttype}}" [textContent]="message"></p>\n </div>\n <div wmDialogFooter>\n <button wmButton class="btn-primary ok-action" caption.bind="oktext" aria-label="Submit button" (click)="onOk($event)"></button>\n </div>\n</ng-template>\n',
37154
37177
  providers: [ base.provideAsWidgetRef(AlertDialogComponent), base.provideAsDialogRef(AlertDialogComponent) ]
37155
37178
  } ]
37156
37179
  } ];
@@ -38073,10 +38096,9 @@
38073
38096
  value;
38074
38097
  }
38075
38098
  var registerProps = function() {
38076
- base.register("wm-dialog", new Map([ [ "animation", base.PROP_STRING ], [ "class", base.PROP_STRING ], [ "closable", {
38077
- value: true,
38078
- PROP_BOOLEAN: base.PROP_BOOLEAN
38079
- } ], [ "iconclass", {
38099
+ base.register("wm-dialog", new Map([ [ "animation", base.PROP_STRING ], [ "class", base.PROP_STRING ], [ "closable", Object.assign({
38100
+ value: true
38101
+ }, base.PROP_BOOLEAN) ], [ "iconclass", {
38080
38102
  value: "wi wi-file-text",
38081
38103
  PROP_STRING: base.PROP_STRING
38082
38104
  } ], [ "iconheight", base.PROP_STRING ], [ "iconmargin", base.PROP_STRING ], [ "iconurl", base.PROP_STRING ], [ "iconwidth", base.PROP_STRING ], [ "modal", Object.assign({
@@ -38111,7 +38133,7 @@
38111
38133
  _this = _super.call(this, inj, WIDGET_INFO, {
38112
38134
  class: DIALOG_CLS + " " + (dialogClass || ""),
38113
38135
  backdrop: backdrop,
38114
- keyboard: !core.toBoolean(modal)
38136
+ keyboard: core.toBoolean(closable) ? true : !core.toBoolean(modal)
38115
38137
  }) || this;
38116
38138
  return _this;
38117
38139
  }
@@ -46914,6 +46936,9 @@
46914
46936
  }
46915
46937
  } else {
46916
46938
  this.resetPageNavigation();
46939
+ if (newVal === "" || newVal === undefined || _.get(this.datasource, "category") === "wm.Variable") {
46940
+ this.variableInflight = false;
46941
+ }
46917
46942
  if (!this.variableInflight) {
46918
46943
  this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
46919
46944
  }
@@ -47053,7 +47078,7 @@
47053
47078
  };
47054
47079
  TableComponent.prototype.setGridData = function(serverData) {
47055
47080
  var data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
47056
- if (_.get(this.datasource, "category") === "wm.Variable") {
47081
+ if (_.get(this.datasource, "category") === "wm.Variable" || _.get(this.datasource, "category") === undefined) {
47057
47082
  this.variableInflight = false;
47058
47083
  }
47059
47084
  if (!this.variableInflight) {
@@ -73192,6 +73217,7 @@
73192
73217
  variables.wmSetDependency("oAuth", this.oAuthService);
73193
73218
  variables.wmSetDependency("security", this.securityService);
73194
73219
  variables.wmSetDependency("metadata", this.metadataService);
73220
+ variables.wmSetDependency("http", this.httpService);
73195
73221
  }
73196
73222
  VariablesService.prototype.bulkCancel = function(collection) {
73197
73223
  Object.keys(collection).forEach((function(name) {