@wavemaker/app-runtime-wm-build 11.4.3-next.30201 → 11.4.3-rc.125

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 + ">";
@@ -22705,7 +22717,7 @@
22705
22717
  type: core$1.Component,
22706
22718
  args: [ {
22707
22719
  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',
22720
+ 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
22721
  providers: [ base.provideAs(SearchComponent, forms.NG_VALUE_ACCESSOR, true), base.provideAs(SearchComponent, forms.NG_VALIDATORS, true), base.provideAsWidgetRef(SearchComponent) ]
22710
22722
  } ]
22711
22723
  } ];
@@ -28148,7 +28160,7 @@
28148
28160
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28149
28161
  value: true
28150
28162
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28151
- value: false
28163
+ value: true
28152
28164
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28153
28165
  value: "LABEL_TODAY_DATE"
28154
28166
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -28237,6 +28249,8 @@
28237
28249
  if (isNativePicker === void 0) {
28238
28250
  isNativePicker = false;
28239
28251
  }
28252
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28253
+ this.updateFormat("datepattern");
28240
28254
  if (this.isEnterPressedOnDateInput) {
28241
28255
  this.isEnterPressedOnDateInput = false;
28242
28256
  return;
@@ -28342,6 +28356,8 @@
28342
28356
  }), 350);
28343
28357
  };
28344
28358
  DateComponent.prototype.onDisplayKeydown = function(event) {
28359
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28360
+ this.updateFormat("datepattern");
28345
28361
  if (this.isDropDownDisplayEnabledOnInput(this.showdropdownon)) {
28346
28362
  event.stopPropagation();
28347
28363
  var action = this.keyEventPlugin.constructor.getEventFullKey(event);
@@ -28374,6 +28390,8 @@
28374
28390
  }
28375
28391
  };
28376
28392
  DateComponent.prototype.onDateChange = function(newVal) {
28393
+ this.datepattern = this.appDefaults.dateFormat || core$1.getDisplayDateTimeFormat(core$1.FormWidgetType.DATE);
28394
+ this.updateFormat("datepattern");
28377
28395
  if (this._bsDefaultLoadCheck) {
28378
28396
  this._bsDefaultLoadCheck = false;
28379
28397
  return;
@@ -28442,7 +28460,7 @@
28442
28460
  }, base.PROP_BOOLEAN) ], [ "clearbutton", Object.assign({
28443
28461
  value: true
28444
28462
  }, base.PROP_BOOLEAN) ], [ "adaptiveposition", Object.assign({
28445
- value: false
28463
+ value: true
28446
28464
  }, base.PROP_BOOLEAN) ], [ "todaybuttonlabel", Object.assign({
28447
28465
  value: "LABEL_TODAY_DATE"
28448
28466
  }, base.PROP_STRING) ], [ "clearbuttonlabel", Object.assign({
@@ -35686,7 +35704,10 @@
35686
35704
  value: "Link"
35687
35705
  }, base.PROP_STRING) ], [ "class", base.PROP_STRING ], [ "conditionalclass", base.PROP_ANY ], [ "content", base.PROP_STRING ], [ "contentanimation", base.PROP_STRING ], [ "contentsource", Object.assign({
35688
35706
  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({
35707
+ }, base.PROP_STRING) ], [ "encodeurl", base.PROP_BOOLEAN ], [ "hint", base.PROP_STRING ], [ "hyperlink", {
35708
+ value: "javascript:void(0)",
35709
+ PROP_STRING: base.PROP_STRING
35710
+ } ], [ "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
35711
  value: "click"
35691
35712
  }, base.PROP_STRING) ], [ "name", base.PROP_STRING ], [ "popoverarrow", Object.assign({
35692
35713
  value: true
@@ -37150,7 +37171,7 @@
37150
37171
  type: core$1.Component,
37151
37172
  args: [ {
37152
37173
  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',
37174
+ 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
37175
  providers: [ base.provideAsWidgetRef(AlertDialogComponent), base.provideAsDialogRef(AlertDialogComponent) ]
37155
37176
  } ]
37156
37177
  } ];
@@ -38073,10 +38094,9 @@
38073
38094
  value;
38074
38095
  }
38075
38096
  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", {
38097
+ base.register("wm-dialog", new Map([ [ "animation", base.PROP_STRING ], [ "class", base.PROP_STRING ], [ "closable", Object.assign({
38098
+ value: true
38099
+ }, base.PROP_BOOLEAN) ], [ "iconclass", {
38080
38100
  value: "wi wi-file-text",
38081
38101
  PROP_STRING: base.PROP_STRING
38082
38102
  } ], [ "iconheight", base.PROP_STRING ], [ "iconmargin", base.PROP_STRING ], [ "iconurl", base.PROP_STRING ], [ "iconwidth", base.PROP_STRING ], [ "modal", Object.assign({
@@ -38111,7 +38131,7 @@
38111
38131
  _this = _super.call(this, inj, WIDGET_INFO, {
38112
38132
  class: DIALOG_CLS + " " + (dialogClass || ""),
38113
38133
  backdrop: backdrop,
38114
- keyboard: !core.toBoolean(modal)
38134
+ keyboard: core.toBoolean(closable) ? true : !core.toBoolean(modal)
38115
38135
  }) || this;
38116
38136
  return _this;
38117
38137
  }
@@ -46914,6 +46934,9 @@
46914
46934
  }
46915
46935
  } else {
46916
46936
  this.resetPageNavigation();
46937
+ if (newVal === "" || newVal === undefined || _.get(this.datasource, "category") === "wm.Variable") {
46938
+ this.variableInflight = false;
46939
+ }
46917
46940
  if (!this.variableInflight) {
46918
46941
  this.callDataGridMethod("setStatus", "nodata", this.nodatamessage);
46919
46942
  }
@@ -47053,7 +47076,7 @@
47053
47076
  };
47054
47077
  TableComponent.prototype.setGridData = function(serverData) {
47055
47078
  var data = this.filternullrecords ? this.removeEmptyRecords(serverData) : serverData;
47056
- if (_.get(this.datasource, "category") === "wm.Variable") {
47079
+ if (_.get(this.datasource, "category") === "wm.Variable" || _.get(this.datasource, "category") === undefined) {
47057
47080
  this.variableInflight = false;
47058
47081
  }
47059
47082
  if (!this.variableInflight) {
@@ -64970,6 +64993,7 @@
64970
64993
  variables.wmSetDependency("oAuth", this.oAuthService);
64971
64994
  variables.wmSetDependency("security", this.securityService);
64972
64995
  variables.wmSetDependency("metadata", this.metadataService);
64996
+ variables.wmSetDependency("http", this.httpService);
64973
64997
  }
64974
64998
  VariablesService.prototype.bulkCancel = function(collection) {
64975
64999
  Object.keys(collection).forEach((function(name) {