@wavemaker/app-ng-runtime 11.4.0-next.24568 → 11.4.0-next.24570

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.
Files changed (72) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +1 -1
  2. app-ng-runtime/build-task/bundles/index.umd.js.map +1 -1
  3. app-ng-runtime/build-task/esm2015/data/form/form-field/form-field.build.js +2 -2
  4. app-ng-runtime/build-task/fesm2015/index.js +1 -1
  5. app-ng-runtime/build-task/fesm2015/index.js.map +1 -1
  6. app-ng-runtime/components/base/bundles/index.umd.js +5 -0
  7. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  8. app-ng-runtime/components/base/esm2015/widgets/common/dialog/dialog.service.js +7 -1
  9. app-ng-runtime/components/base/fesm2015/index.js +6 -1
  10. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  11. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +39 -23
  12. app-ng-runtime/components/containers/tabs/bundles/index.umd.js.map +1 -1
  13. app-ng-runtime/components/containers/tabs/esm2015/tab-pane/tab-pane.component.js +8 -1
  14. app-ng-runtime/components/containers/tabs/esm2015/tabs.animator.js +33 -13
  15. app-ng-runtime/components/containers/tabs/fesm2015/index.js +40 -13
  16. app-ng-runtime/components/containers/tabs/fesm2015/index.js.map +1 -1
  17. app-ng-runtime/components/containers/tabs/tabs.animator.d.ts +5 -1
  18. app-ng-runtime/components/data/form/bundles/index.umd.js +37 -13
  19. app-ng-runtime/components/data/form/bundles/index.umd.js.map +1 -1
  20. app-ng-runtime/components/data/form/esm2015/form-field/form-field.directive.js +26 -7
  21. app-ng-runtime/components/data/form/esm2015/form.component.js +10 -5
  22. app-ng-runtime/components/data/form/fesm2015/index.js +34 -10
  23. app-ng-runtime/components/data/form/fesm2015/index.js.map +1 -1
  24. app-ng-runtime/components/data/form/index.metadata.json +1 -1
  25. app-ng-runtime/components/data/list/bundles/index.umd.js +24 -39
  26. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  27. app-ng-runtime/components/data/list/esm2015/list.component.js +24 -39
  28. app-ng-runtime/components/data/list/fesm2015/index.js +23 -38
  29. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  30. app-ng-runtime/components/data/list/index.metadata.json +1 -1
  31. app-ng-runtime/components/data/list/list.component.d.ts +1 -1
  32. app-ng-runtime/components/data/pagination/bundles/index.umd.js +21 -4
  33. app-ng-runtime/components/data/pagination/bundles/index.umd.js.map +1 -1
  34. app-ng-runtime/components/data/pagination/esm2015/pagination.component.js +22 -5
  35. app-ng-runtime/components/data/pagination/fesm2015/index.js +21 -4
  36. app-ng-runtime/components/data/pagination/fesm2015/index.js.map +1 -1
  37. app-ng-runtime/components/data/pagination/index.metadata.json +1 -1
  38. app-ng-runtime/components/data/pagination/pagination.component.d.ts +1 -0
  39. app-ng-runtime/components/data/table/bundles/index.umd.js +11 -4
  40. app-ng-runtime/components/data/table/bundles/index.umd.js.map +1 -1
  41. app-ng-runtime/components/data/table/esm2015/table.component.js +12 -5
  42. app-ng-runtime/components/data/table/fesm2015/index.js +11 -4
  43. app-ng-runtime/components/data/table/fesm2015/index.js.map +1 -1
  44. app-ng-runtime/components/data/table/index.metadata.json +1 -1
  45. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +1 -0
  46. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +11 -2
  47. app-ng-runtime/components/dialogs/default/bundles/index.umd.js.map +1 -1
  48. app-ng-runtime/components/dialogs/default/esm2015/base-dialog.js +12 -4
  49. app-ng-runtime/components/dialogs/default/fesm2015/index.js +11 -3
  50. app-ng-runtime/components/dialogs/default/fesm2015/index.js.map +1 -1
  51. app-ng-runtime/components/dialogs/default/index.metadata.json +1 -1
  52. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -9
  53. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  54. app-ng-runtime/components/input/epoch/date-time/date-time-picker.component.d.ts +1 -0
  55. app-ng-runtime/components/input/epoch/esm2015/date/date.component.js +2 -2
  56. app-ng-runtime/components/input/epoch/esm2015/date-time/date-time-picker.component.js +31 -11
  57. app-ng-runtime/components/input/epoch/fesm2015/index.js +31 -11
  58. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  59. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  60. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +3 -0
  61. app-ng-runtime/components/navigation/popover/bundles/index.umd.js.map +1 -1
  62. app-ng-runtime/components/navigation/popover/esm2015/popover.component.js +4 -1
  63. app-ng-runtime/components/navigation/popover/fesm2015/index.js +3 -0
  64. app-ng-runtime/components/navigation/popover/fesm2015/index.js.map +1 -1
  65. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +24 -6
  66. app-ng-runtime/mobile/components/page/default/bundles/index.umd.js.map +1 -1
  67. app-ng-runtime/mobile/components/page/default/esm2015/page.directive.js +20 -3
  68. app-ng-runtime/mobile/components/page/default/fesm2015/index.js +19 -2
  69. app-ng-runtime/mobile/components/page/default/fesm2015/index.js.map +1 -1
  70. app-ng-runtime/mobile/components/page/default/index.metadata.json +1 -1
  71. app-ng-runtime/mobile/components/page/default/page.directive.d.ts +4 -1
  72. app-ng-runtime/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { Injector, Injectable } from '@angular/core';
2
2
  import { NavigationEnd, Router } from '@angular/router';
3
3
  import { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';
4
- import { AbstractDialogService, findRootContainer, generateGUId } from '@wm/core';
4
+ import { AbstractDialogService, findRootContainer, generateGUId, isMobile, isMobileApp } from '@wm/core';
5
5
  import { BaseComponent } from '@wm/components/base';
6
6
  import { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';
7
7
  let eventsRegistered = false;
@@ -50,18 +50,21 @@ export class BaseDialog extends BaseComponent {
50
50
  this.bsModal = inj.get(BsModalService);
51
51
  const router = inj.get(Router);
52
52
  const subscriptions = [
53
- this.bsModal.onShown.subscribe(() => {
53
+ this.bsModal.onShown.subscribe(({ id }) => {
54
54
  const ref = this.dialogService.getLastOpenedDialog();
55
55
  if (ref === this) {
56
56
  // Always get the reference of last pushed dialog in the array for calling onOpen callback
57
57
  invokeOpenedCallback(ref);
58
+ this.dialogId = id;
58
59
  }
59
60
  }),
60
61
  this.bsModal.onShow.subscribe(() => {
61
62
  focusTrapObj.activeElement = document.activeElement;
62
63
  }),
63
64
  this.bsModal.onHidden.subscribe((closeReason) => {
64
- const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
65
+ const ref = (closeReason === 'esc'
66
+ || closeReason === 'backdrop-click'
67
+ || (this.dialogId && (closeReason === null || closeReason === void 0 ? void 0 : closeReason.id) === this.dialogId)) ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
65
68
  if (ref === this) {
66
69
  // remove the dialog reference from opened dialogs and closed dialogs
67
70
  this.dialogService.removeFromOpenedDialogs(ref);
@@ -110,6 +113,11 @@ export class BaseDialog extends BaseComponent {
110
113
  Object.assign(this.context, initState);
111
114
  this.modalOptions.ariaLabelledBy = this.titleId;
112
115
  this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
116
+ // Fix for [WMS-23948]: Focus moving out of active Dialog widget
117
+ if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {
118
+ const parentSelector = $('body > app-root')[0];
119
+ parentSelector.setAttribute('aria-hidden', 'true');
120
+ }
113
121
  }
114
122
  /**
115
123
  * closes the dialog
@@ -166,4 +174,4 @@ BaseDialog.ctorParameters = () => [
166
174
  { type: ModalOptions }
167
175
  ];
168
176
  export { ɵ0, ɵ1 };
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUEwQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSS9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBZ0IsaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxhQUFhLEVBQTBCLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSXhFLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBRTdCLElBQUksWUFBWSxHQUFHO0lBQ2YsYUFBYSxFQUFFLElBQUk7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNqQyxJQUFJLEdBQUcsRUFBRTtRQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsMkZBQTJGO1lBQzNGLElBQUksSUFBSSxFQUFFO2dCQUNOLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdEO1lBQ0QsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBRSxFQUFDLElBQUksRUFBRSxRQUFRLEVB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SixVQUFVOzs7WUExREYsUUFBUTs7WUFFb0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBYnN0cmFjdERpYWxvZ1NlcnZpY2UsIGNsb3NlUG9wb3ZlciwgZmluZFJvb3RDb250YWluZXIsIGdlbmVyYXRlR1VJZH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBJRGlhbG9nLCBJV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBjcmVhdGVGb2N1c1RyYXAgfSBmcm9tICdAd2F2ZW1ha2VyL2ZvY3VzLXRyYXAvZGlzdC9mb2N1cy10cmFwJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5sZXQgZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG5sZXQgZm9jdXNUcmFwT2JqID0ge1xuICAgIGFjdGl2ZUVsZW1lbnQ6IG51bGxcbn07XG5cbmNvbnN0IGludm9rZU9wZW5lZENhbGxiYWNrID0gKHJlZikgPT4ge1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIocmVmLiRlbGVtZW50KTtcbiAgICAgICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBkaWFsb2cgdGhlbiBkaWFsb2cgaGFzIHRvIGJlIGNoaWxkIG9mIHBhZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keSA+IG1vZGFsLWNvbnRhaW5lciA+IGRpdicpLndyYXAoJzwnICsgcm9vdCArICcvPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmLmludm9rZUV2ZW50Q2FsbGJhY2soJ29wZW5lZCcsIHskZXZlbnQ6IHt0eXBlOiAnb3BlbmVkJ319KTtcbiAgICAgICAgICAgIC8vIGZvY3VzVHJhcE9iaiB3aWxsIGNyZWF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgYWNjb3JkaW5nIHRvIHRoZSB0aXRsZUlkIGFzc2lnbmVkIHRvIHRoZW0gd2hpY2ggaXMgdW5pcXVlLlxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gJCgnW2FyaWEtbGFiZWxsZWRieT0gJyArIHJlZi50aXRsZUlkICsgJ10nKVswXTtcblxuICAgICAgICAgICAgY29uc3Qga2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50cyA9IFtjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAnYSwgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGV0YWlscywgaWZyYW1lLCBlbWJlZCwgb2JqZWN0LCBzdW1tYXJ5IGRpYWxvZywgYXVkaW9bY29udHJvbHNdLCB2aWRlb1tjb250cm9sc10sIFtjb250ZW50ZWRpdGFibGVdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknXG4gICAgICAgICAgICAgICldLmZpbHRlcihlbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgIWVsWzBdLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykpXG4gICAgICAgICAgICAgIH0pWzBdO1xuXG4gICAgICAgICAgICAkKGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNbMF0pLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0gPSBjcmVhdGVGb2N1c1RyYXAoY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgb25BY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldFJldHVybkZvY3VzOiBmb2N1c1RyYXBPYmouYWN0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5hY3RpdmF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5jb25zdCBpbnZva2VDbG9zZWRDYWxsYmFjayA9IChyZWYpID0+IHtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5pbnZva2VFdmVudENhbGxiYWNrKCdjbG9zZScpO1xuICAgICAgICByZWYuZGlhbG9nUmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRGlhbG9nIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElEaWFsb2csIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBic01vZGFsOiBCc01vZGFsU2VydmljZTtcblxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBCc01vZGFsUmVmO1xuICAgIHB1YmxpYyB0aXRsZUlkOnN0cmluZyA9ICd3bWRpYWxvZy0nICsgZ2VuZXJhdGVHVUlkKCk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIHdpZGdldENvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgcHJvdGVjdGVkIG1vZGFsT3B0aW9uczogTW9kYWxPcHRpb25zXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgd2lkZ2V0Q29uZmlnKTtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gaW5qLmdldChBYnN0cmFjdERpYWxvZ1NlcnZpY2UpO1xuICAgICAgICB0aGlzLmJzTW9kYWwgPSBpbmouZ2V0KEJzTW9kYWxTZXJ2aWNlKTtcbiAgICAgICAgY29uc3Qgcm91dGVyID0gaW5qLmdldChSb3V0ZXIpO1xuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW1xuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0TGFzdE9wZW5lZERpYWxvZygpO1xuICAgICAgICAgICAgICAgIGlmIChyZWYgPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGdldCB0aGUgcmVmZXJlbmNlIG9mIGxhc3QgcHVzaGVkIGRpYWxvZyBpbiB0aGUgYXJyYXkgZm9yIGNhbGxpbmcgb25PcGVuIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGludm9rZU9wZW5lZENhbGxiYWNrKHJlZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLmJzTW9kYWwub25TaG93LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9jdXNUcmFwT2JqLmFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLmJzTW9kYWwub25IaWRkZW4uc3Vic2NyaWJlKChjbG9zZVJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IGNsb3NlUmVhc29uID09PSAnZXNjJyB8fCBjbG9zZVJlYXNvbiA9PT0gJ2JhY2tkcm9wLWNsaWNrJyA/IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCkgOiB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0RGlhbG9nUmVmRnJvbUNsb3NlZERpYWxvZ3MoKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbU9wZW5lZERpYWxvZ3MocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGludm9rZUNsb3NlZENhbGxiYWNrKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWYuY2xvc2VDYWxsQmFja0ZuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWYuY2xvc2VDYWxsQmFja0ZuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vbkhpZGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgV2lsbCBkZS1hY3RpdmF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgd2hlbiB0aGV5IGFyZSBjbG9zZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiAmJiBmb2N1c1RyYXBPYmpbcmVmLnRpdGxlSWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gey8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21PcGVuZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGRpYWxvZ1xuICAgICAqIFN1YnNjcmliZSB0byB0aGUgb25TaG93biBldmVudCBlbWl0dGVyIG9mIGJzTW9kYWwgYW5kIHRyaWdnZXIgb24tb3BlbmVkIGV2ZW50IGNhbGxiYWNrXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oaW5pdFN0YXRlPzogYW55KSB7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcblxuICAgICAgICAvLyBkbyBub3Qgb3BlbiB0aGUgZGlhbG9nIGFnYWluIGlmIGl0IGlzIGFscmVhZHkgb3BlbmVkXG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZURpYWxvZ0NoZWNrID0gKG9wZW5lZERpYWxvZykgPT4ge1xuICAgICAgICAgICByZXR1cm4gb3BlbmVkRGlhbG9nID09PSB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0T3BlbmVkRGlhbG9ncygpLnNvbWUoZHVwbGljYXRlRGlhbG9nQ2hlY2spKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkVG9PcGVuZWREaWFsb2dzKHRoaXMpO1xuXG4gICAgICAgIC8vIGV4dGVuZCB0aGUgY29udGV4dCB3aXRoIHRoZSBpbml0U3RhdGVcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbnRleHQsIGluaXRTdGF0ZSk7XG4gICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy50aXRsZUlkO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuYnNNb2RhbC5zaG93KHRoaXMuZ2V0VGVtcGxhdGVSZWYoKSwgdGhpcy5tb2RhbE9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlcyB0aGUgZGlhbG9nXG4gICAgICogaW52b2tlcyB0aGUgb24tY2xvc2UgZXZlbnQgY2FsbGJhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcG9wb3ZlcnMgaW4gdGhlIHBhZ2UgdG8gYXZvaWQgdGhlIG92ZXJsYXAgd2l0aCBkaWFsb2dcbiAgICAgICAgLy8gY2xvc2VQb3BvdmVyKHRoaXMuJGVsZW1lbnQpOyBDb21tZW50aW5nIHRoaXMgbGluZSBiZWNhdXNlIGl0IGlzIGNhdXNpbmcgcmVncmVzc2lvbihpZiB3ZSBoYXZlIGRpYWxvZyBpbnNpZGUgcG9wb3ZlciBhcyBwYXJ0YWlsIGNvbnRlbnQsIHRoZW4gdGhlIGRpYWxvZyBjbG9zZSBpcyBub3Qgd29ya2luZyBiZWNhdXNlIG9uIGNsb3NpbmcgdGhlIHBvcG92ZXIgdGhlIHBhcnRpYWwgZ2V0IGRlc3Ryb3llZC4pXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmFkZFRvQ2xvc2VkRGlhbG9ncyh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBkaWFsb2cgd2l0aCB0aGUgZGlhbG9nIHNlcnZpY2UgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXIoc2NvcGUpIHtcbiAgICAgICAgLy8gYWRkIHNjb3BlIGFsb25nIHdpdGggbmFtZSBpbiB0aGUgZGlhbG9nUmVmc0NvbGxlY3Rpb24gTWFwIHdoaWxlIHJlZ2lzdGVyaW5nIGRpYWxvZ1xuICAgICAgICAvLyBTbyB0aGF0IDIgZGlhbG9ncyBoYXZpbmcgc2FtZSBuYW1lIG9uIGRpZmZlcmVudCBwYWdlcyB3b24ndCBiZSBvdmVycmlkZGVuLlxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVnaXN0ZXIodGhpcy5uYW1lLCB0aGlzLCBzY29wZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGUgUmVnaXN0ZXIgdGhlIGRpYWxvZyB3aXRoIHRoZSBkaWFsb2cgc2VydmljZSBhZnRlciBkaWFsb2cgZGVzdHJ1Y3Rpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZGVSZWdpc3RlcihzY29wZSkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZGVSZWdpc3Rlcih0aGlzLm5hbWUsIHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzdWJjbGFzc2VzIG9mIEJhc2VEaWFsb2cgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSBwcm9wZXIgdGVtcGxhdGUgZWxlbWVudCByZWZcbiAgICAgKiBic01vZGFsIHdpbGwgdXNlIHRoaXMgcmVmZW5jZSB0byBvcGVuIHRoZSBkaWFsb2dcbiAgICAgKiBAcmV0dXJucyB7VGVtcGxhdGVSZWY8YW55Pn1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHByb3RlY3RlZCBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICAvLyBpZ25vcmUgdGhlIGNsYXNzIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gUHJldmVudCB0aGUgZnJhbWV3b3JrIGZyb20gc2V0dGluZyB0aGUgY2xhc3Mgb24gdGhlIGhvc3QgZWxlbWVudC5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCBrZXkgPT09ICduYW1lJyB8fCBrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhbmltYXRpb24nKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyA9IHRoaXMubW9kYWxPcHRpb25zLmNsYXNzLnJlcGxhY2UoJyBhbmltYXRlZCAnICsgb3YsICcnKTtcbiAgICAgICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmNsYXNzID0gdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgKyAnIGFuaW1hdGVkICcgKyBudjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kZVJlZ2lzdGVyKHRoaXMudmlld1BhcmVudCk7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGlhbG9ncy9kZWZhdWx0L3NyYy9iYXNlLWRpYWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUEwQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQWMsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSS9FLE9BQU8sRUFBQyxxQkFBcUIsRUFBZ0IsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFckgsT0FBTyxFQUFFLGFBQWEsRUFBMEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJeEUsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFFN0IsSUFBSSxZQUFZLEdBQUc7SUFDZixhQUFhLEVBQUUsSUFBSTtDQUN0QixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ2pDLElBQUksR0FBRyxFQUFFO1FBQ0wsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QywyRkFBMkY7WUFDM0YsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDN0Q7WUFDRCxHQUFHLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFFLEVB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QUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRixJQUFJLEVBQUUsRUFBRTtnQkFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO2FBQ3pFO1NBQ0o7UUFDRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs7WUF6SkosVUFBVTs7O1lBMURGLFFBQVE7O1lBRW9CLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJzTW9kYWxSZWYsIEJzTW9kYWxTZXJ2aWNlLCBNb2RhbE9wdGlvbnMgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBjbG9zZVBvcG92ZXIsIGZpbmRSb290Q29udGFpbmVyLCBnZW5lcmF0ZUdVSWQsIGlzTW9iaWxlLCBpc01vYmlsZUFwcH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBJRGlhbG9nLCBJV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBjcmVhdGVGb2N1c1RyYXAgfSBmcm9tICdAd2F2ZW1ha2VyL2ZvY3VzLXRyYXAvZGlzdC9mb2N1cy10cmFwJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5sZXQgZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG5sZXQgZm9jdXNUcmFwT2JqID0ge1xuICAgIGFjdGl2ZUVsZW1lbnQ6IG51bGxcbn07XG5cbmNvbnN0IGludm9rZU9wZW5lZENhbGxiYWNrID0gKHJlZikgPT4ge1xuICAgIGlmIChyZWYpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb290ID0gZmluZFJvb3RDb250YWluZXIocmVmLiRlbGVtZW50KTtcbiAgICAgICAgICAgIC8vIGlmIHBhZ2Ugc3R5bGVzIGhhdmUgdG8gYmUgYXBwbGllZCB0byBkaWFsb2cgdGhlbiBkaWFsb2cgaGFzIHRvIGJlIGNoaWxkIG9mIHBhZ2UgZWxlbWVudC5cbiAgICAgICAgICAgIGlmIChyb290KSB7XG4gICAgICAgICAgICAgICAgJCgnYm9keSA+IG1vZGFsLWNvbnRhaW5lciA+IGRpdicpLndyYXAoJzwnICsgcm9vdCArICcvPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVmLmludm9rZUV2ZW50Q2FsbGJhY2soJ29wZW5lZCcsIHskZXZlbnQ6IHt0eXBlOiAnb3BlbmVkJ319KTtcbiAgICAgICAgICAgIC8vIGZvY3VzVHJhcE9iaiB3aWxsIGNyZWF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgYWNjb3JkaW5nIHRvIHRoZSB0aXRsZUlkIGFzc2lnbmVkIHRvIHRoZW0gd2hpY2ggaXMgdW5pcXVlLlxuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gJCgnW2FyaWEtbGFiZWxsZWRieT0gJyArIHJlZi50aXRsZUlkICsgJ10nKVswXTtcblxuICAgICAgICAgICAgY29uc3Qga2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50cyA9IFtjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICAgICAnYSwgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGV0YWlscywgaWZyYW1lLCBlbWJlZCwgb2JqZWN0LCBzdW1tYXJ5IGRpYWxvZywgYXVkaW9bY29udHJvbHNdLCB2aWRlb1tjb250cm9sc10sIFtjb250ZW50ZWRpdGFibGVdLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknXG4gICAgICAgICAgICAgICldLmZpbHRlcihlbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICFlbFswXS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgIWVsWzBdLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJykpXG4gICAgICAgICAgICAgIH0pWzBdO1xuXG4gICAgICAgICAgICAkKGtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNbMF0pLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIGZvY3VzVHJhcE9ialtyZWYudGl0bGVJZF0gPSBjcmVhdGVGb2N1c1RyYXAoY29udGFpbmVyLCB7XG4gICAgICAgICAgICAgICAgb25BY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgICAgIHNldFJldHVybkZvY3VzOiBmb2N1c1RyYXBPYmouYWN0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5hY3RpdmF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5jb25zdCBpbnZva2VDbG9zZWRDYWxsYmFjayA9IChyZWYpID0+IHtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5pbnZva2VFdmVudENhbGxiYWNrKCdjbG9zZScpO1xuICAgICAgICByZWYuZGlhbG9nUmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRGlhbG9nIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElEaWFsb2csIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBic01vZGFsOiBCc01vZGFsU2VydmljZTtcblxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBCc01vZGFsUmVmO1xuICAgIHByaXZhdGUgZGlhbG9nSWQ6IG51bWJlcjtcbiAgICBwdWJsaWMgdGl0bGVJZDpzdHJpbmcgPSAnd21kaWFsb2ctJyArIGdlbmVyYXRlR1VJZCgpO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICB3aWRnZXRDb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByb3RlY3RlZCBtb2RhbE9wdGlvbnM6IE1vZGFsT3B0aW9uc1xuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIHdpZGdldENvbmZpZyk7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IGluai5nZXQoQWJzdHJhY3REaWFsb2dTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5ic01vZGFsID0gaW5qLmdldChCc01vZGFsU2VydmljZSk7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluai5nZXQoUm91dGVyKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vblNob3duLnN1YnNjcmliZSgoe2lkfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHdheXMgZ2V0IHRoZSByZWZlcmVuY2Ugb2YgbGFzdCBwdXNoZWQgZGlhbG9nIGluIHRoZSBhcnJheSBmb3IgY2FsbGluZyBvbk9wZW4gY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlT3BlbmVkQ2FsbGJhY2socmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dJZCA9IGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uU2hvdy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvY3VzVHJhcE9iai5hY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGhpcy5ic01vZGFsLm9uSGlkZGVuLnN1YnNjcmliZSgoY2xvc2VSZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWYgPSAoY2xvc2VSZWFzb24gPT09ICdlc2MnIFxuICAgICAgICAgICAgICAgICAgICB8fCBjbG9zZVJlYXNvbiA9PT0gJ2JhY2tkcm9wLWNsaWNrJ1xuICAgICAgICAgICAgICAgICAgICB8fCAodGhpcy5kaWFsb2dJZCAmJiBjbG9zZVJlYXNvbj8uaWQgPT09IHRoaXMuZGlhbG9nSWQpKSA/IHRoaXMuZGlhbG9nU2VydmljZS5nZXRMYXN0T3BlbmVkRGlhbG9nKCkgOiB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0RGlhbG9nUmVmRnJvbUNsb3NlZERpYWxvZ3MoKTtcbiAgICAgICAgICAgICAgICBpZiAocmVmID09PSB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVtb3ZlRnJvbU9wZW5lZERpYWxvZ3MocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGludm9rZUNsb3NlZENhbGxiYWNrKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWYuY2xvc2VDYWxsQmFja0ZuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWYuY2xvc2VDYWxsQmFja0ZuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMuYnNNb2RhbC5vbkhpZGUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgV2lsbCBkZS1hY3RpdmF0ZSBmb2N1cyB0cmFwIGZvciB0aGUgcmVzcGVjdGl2ZSBkaWFsb2cgd2hlbiB0aGV5IGFyZSBjbG9zZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ1JlZkZyb21DbG9zZWREaWFsb2dzKCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZiAmJiBmb2N1c1RyYXBPYmpbcmVmLnRpdGxlSWRdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9jdXNUcmFwT2JqW3JlZi50aXRsZUlkXS5kZWFjdGl2YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICByb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gey8vIHJlbW92ZSB0aGUgZGlhbG9nIHJlZmVyZW5jZSBmcm9tIG9wZW5lZCBkaWFsb2dzIGFuZCBjbG9zZWQgZGlhbG9nc1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21PcGVuZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlbW92ZUZyb21DbG9zZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGRpYWxvZ1xuICAgICAqIFN1YnNjcmliZSB0byB0aGUgb25TaG93biBldmVudCBlbWl0dGVyIG9mIGJzTW9kYWwgYW5kIHRyaWdnZXIgb24tb3BlbmVkIGV2ZW50IGNhbGxiYWNrXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oaW5pdFN0YXRlPzogYW55KSB7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcblxuICAgICAgICAvLyBkbyBub3Qgb3BlbiB0aGUgZGlhbG9nIGFnYWluIGlmIGl0IGlzIGFscmVhZHkgb3BlbmVkXG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZURpYWxvZ0NoZWNrID0gKG9wZW5lZERpYWxvZykgPT4ge1xuICAgICAgICAgICByZXR1cm4gb3BlbmVkRGlhbG9nID09PSB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0T3BlbmVkRGlhbG9ncygpLnNvbWUoZHVwbGljYXRlRGlhbG9nQ2hlY2spKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkVG9PcGVuZWREaWFsb2dzKHRoaXMpO1xuXG4gICAgICAgIC8vIGV4dGVuZCB0aGUgY29udGV4dCB3aXRoIHRoZSBpbml0U3RhdGVcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbnRleHQsIGluaXRTdGF0ZSk7XG4gICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmFyaWFMYWJlbGxlZEJ5ID0gdGhpcy50aXRsZUlkO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuYnNNb2RhbC5zaG93KHRoaXMuZ2V0VGVtcGxhdGVSZWYoKSwgdGhpcy5tb2RhbE9wdGlvbnMpO1xuICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjM5NDhdOiBGb2N1cyBtb3Zpbmcgb3V0IG9mIGFjdGl2ZSBEaWFsb2cgd2lkZ2V0XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0T3BlbmVkRGlhbG9ncygpLmxlbmd0aCA9PT0gMSAmJiAoaXNNb2JpbGUoKSB8fCBpc01vYmlsZUFwcCgpKSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50U2VsZWN0b3IgPSAkKCdib2R5ID4gYXBwLXJvb3QnKVswXTtcbiAgICAgICAgICAgIHBhcmVudFNlbGVjdG9yLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2VzIHRoZSBkaWFsb2dcbiAgICAgKiBpbnZva2VzIHRoZSBvbi1jbG9zZSBldmVudCBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwb3BvdmVycyBpbiB0aGUgcGFnZSB0byBhdm9pZCB0aGUgb3ZlcmxhcCB3aXRoIGRpYWxvZ1xuICAgICAgICAvLyBjbG9zZVBvcG92ZXIodGhpcy4kZWxlbWVudCk7IENvbW1lbnRpbmcgdGhpcyBsaW5lIGJlY2F1c2UgaXQgaXMgY2F1c2luZyByZWdyZXNzaW9uKGlmIHdlIGhhdmUgZGlhbG9nIGluc2lkZSBwb3BvdmVyIGFzIHBhcnRhaWwgY29udGVudCwgdGhlbiB0aGUgZGlhbG9nIGNsb3NlIGlzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb24gY2xvc2luZyB0aGUgcG9wb3ZlciB0aGUgcGFydGlhbCBnZXQgZGVzdHJveWVkLilcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkVG9DbG9zZWREaWFsb2dzKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuaGlkZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIGRpYWxvZyB3aXRoIHRoZSBkaWFsb2cgc2VydmljZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2Vzc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWdpc3RlcihzY29wZSkge1xuICAgICAgICAvLyBhZGQgc2NvcGUgYWxvbmcgd2l0aCBuYW1lIGluIHRoZSBkaWFsb2dSZWZzQ29sbGVjdGlvbiBNYXAgd2hpbGUgcmVnaXN0ZXJpbmcgZGlhbG9nXG4gICAgICAgIC8vIFNvIHRoYXQgMiBkaWFsb2dzIGhhdmluZyBzYW1lIG5hbWUgb24gZGlmZmVyZW50IHBhZ2VzIHdvbid0IGJlIG92ZXJyaWRkZW4uXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZWdpc3Rlcih0aGlzLm5hbWUsIHRoaXMsIHNjb3BlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZSBSZWdpc3RlciB0aGUgZGlhbG9nIHdpdGggdGhlIGRpYWxvZyBzZXJ2aWNlIGFmdGVyIGRpYWxvZyBkZXN0cnVjdGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkZVJlZ2lzdGVyKHNjb3BlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5kZVJlZ2lzdGVyKHRoaXMubmFtZSwgc2NvcGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHN1YmNsYXNzZXMgb2YgQmFzZURpYWxvZyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlIHByb3BlciB0ZW1wbGF0ZSBlbGVtZW50IHJlZlxuICAgICAqIGJzTW9kYWwgd2lsbCB1c2UgdGhpcyByZWZlbmNlIHRvIG9wZW4gdGhlIGRpYWxvZ1xuICAgICAqIEByZXR1cm5zIHtUZW1wbGF0ZVJlZjxhbnk+fVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJvdGVjdGVkIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIC8vIGlnbm9yZSB0aGUgY2xhc3MgYXR0cmlidXRlLlxuICAgICAgICAvLyBQcmV2ZW50IHRoZSBmcmFtZXdvcmsgZnJvbSBzZXR0aW5nIHRoZSBjbGFzcyBvbiB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3MnIHx8IGtleSA9PT0gJ25hbWUnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2FuaW1hdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcHRpb25zLmNsYXNzID0gdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MucmVwbGFjZSgnIGFuaW1hdGVkICcgKyBvdiwgJycpO1xuICAgICAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbE9wdGlvbnMuY2xhc3MgPSB0aGlzLm1vZGFsT3B0aW9ucy5jbGFzcyArICcgYW5pbWF0ZWQgJyArIG52O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRlUmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Directive, ElementRef, Inject, Renderer2, HostBinding, Injector, Injectable, Component, Input, NgModule } from '@angular/core';
2
2
  import { BsModalService, ModalOptions, ModalModule } from 'ngx-bootstrap/modal';
3
- import { addClass, setCSS, setAttr, findRootContainer, generateGUId, AbstractDialogService, toBoolean } from '@wm/core';
3
+ import { addClass, setCSS, setAttr, findRootContainer, generateGUId, AbstractDialogService, isMobile, isMobileApp, toBoolean } from '@wm/core';
4
4
  import { DialogRef, register, PROP_STRING, PROP_BOOLEAN, BaseComponent, provideAsWidgetRef, WmComponentsModule } from '@wm/components/base';
5
5
  import { Router, NavigationEnd } from '@angular/router';
6
6
  import { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';
@@ -136,18 +136,21 @@ class BaseDialog extends BaseComponent {
136
136
  this.bsModal = inj.get(BsModalService);
137
137
  const router = inj.get(Router);
138
138
  const subscriptions = [
139
- this.bsModal.onShown.subscribe(() => {
139
+ this.bsModal.onShown.subscribe(({ id }) => {
140
140
  const ref = this.dialogService.getLastOpenedDialog();
141
141
  if (ref === this) {
142
142
  // Always get the reference of last pushed dialog in the array for calling onOpen callback
143
143
  invokeOpenedCallback(ref);
144
+ this.dialogId = id;
144
145
  }
145
146
  }),
146
147
  this.bsModal.onShow.subscribe(() => {
147
148
  focusTrapObj.activeElement = document.activeElement;
148
149
  }),
149
150
  this.bsModal.onHidden.subscribe((closeReason) => {
150
- const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
151
+ const ref = (closeReason === 'esc'
152
+ || closeReason === 'backdrop-click'
153
+ || (this.dialogId && (closeReason === null || closeReason === void 0 ? void 0 : closeReason.id) === this.dialogId)) ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();
151
154
  if (ref === this) {
152
155
  // remove the dialog reference from opened dialogs and closed dialogs
153
156
  this.dialogService.removeFromOpenedDialogs(ref);
@@ -196,6 +199,11 @@ class BaseDialog extends BaseComponent {
196
199
  Object.assign(this.context, initState);
197
200
  this.modalOptions.ariaLabelledBy = this.titleId;
198
201
  this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);
202
+ // Fix for [WMS-23948]: Focus moving out of active Dialog widget
203
+ if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {
204
+ const parentSelector = $('body > app-root')[0];
205
+ parentSelector.setAttribute('aria-hidden', 'true');
206
+ }
199
207
  }
200
208
  /**
201
209
  * closes the dialog
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog.module.ts","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n \n }\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n } \n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import { Directive, Injector } from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector) {\n super(inj, WIDGET_INFO);\n }\n}\n","import { Injector, OnDestroy, TemplateRef, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\n\nimport { Subscription } from 'rxjs';\n\nimport {AbstractDialogService, closePopover, findRootContainer, generateGUId} from '@wm/core';\n\nimport { BaseComponent, IDialog, IWidgetConfig } from '@wm/components/base';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\n\ndeclare const _;\n\nlet eventsRegistered = false;\n\nlet focusTrapObj = {\n activeElement: null\n};\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', {$event: {type: 'opened'}});\n // focusTrapObj will create focus trap for the respective dialog according to the titleId assigned to them which is unique.\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'))\n })[0];\n\n $(keyboardFocusableElements[0]).focus();\n\n focusTrapObj[ref.titleId] = createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: true,\n setReturnFocus: focusTrapObj.activeElement,\n });\n focusTrapObj[ref.titleId].activate();\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n public titleId:string = 'wmdialog-' + generateGUId();\n\n protected constructor(\n inj: Injector,\n widgetConfig: IWidgetConfig,\n protected modalOptions: ModalOptions\n ) {\n super(inj, widgetConfig);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(() => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n }\n }),\n this.bsModal.onShow.subscribe(() => {\n focusTrapObj.activeElement = document.activeElement;\n }),\n this.bsModal.onHidden.subscribe((closeReason) => {\n const ref = closeReason === 'esc' || closeReason === 'backdrop-click' ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();\n if (ref === this) {\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {\n // Will de-activate focus trap for the respective dialog when they are closed.\n const ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (ref && focusTrapObj[ref.titleId] !== undefined) {\n focusTrapObj[ref.titleId].deactivate();\n }\n }),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { Component, ElementRef, Inject, Input } from '@angular/core';\n\nimport { addClass, toBoolean } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\nimport { BaseDialog } from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public subheading: string;\n @Input() public titleid:string;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) private dialogRef: BaseDialog) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DialogBodyDirective } from './dialog-body/dialog-body.directive';\nimport { DialogFooterDirective } from './dialog-footer/dialog-footer.directive';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\n\nconst components = [\n DialogBodyDirective,\n DialogFooterDirective,\n DialogHeaderComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ModalModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class DialogModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './dialog-footer/dialog-footer.props';"],"names":["DEFAULT_CLS"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../projects/components/widgets/dialogs/default/src/dialog-body/dialog-body.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.props.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-footer/dialog-footer.directive.ts","../../../../../projects/components/widgets/dialogs/default/src/base-dialog.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog-header/dialog-header.component.ts","../../../../../projects/components/widgets/dialogs/default/src/dialog.module.ts","../../../../../projects/components/widgets/dialogs/default/src/index.ts"],"sourcesContent":["import { Directive, ElementRef, HostBinding, Inject, Renderer2 } from '@angular/core';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { addClass, setAttr, setCSS } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-dialog-body modal-body';\n\n@Directive({\n selector: 'div[wmDialogBody]',\n})\nexport class DialogBodyDirective {\n @HostBinding('style.height') height;\n constructor(\n elRef: ElementRef,\n @Inject(DialogRef) private dialogRef,\n bsModal: BsModalService,\n private renderer: Renderer2\n ) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n\n const subscription = bsModal.onShown.subscribe(() => {\n const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];\n let dialogRootContainer = $('body.wm-app')[0];\n // To identify the microfrontend, if body tag doesn't have wm-app class then app loading as micro-frontend\n if(!dialogRootContainer) {\n const dialogBackrop = $('body > .modal-backdrop')[0];\n const parentContainer = $('body > modal-container')[0];\n dialogRootContainer = $('.wm-app')[0];\n if(dialogRootContainer && parentContainer ){\n if(dialogBackrop){\n this.renderer.appendChild(dialogRootContainer, dialogBackrop);\n }\n this.renderer.appendChild(dialogRootContainer, parentContainer);\n \n }\n }\n const width = this.dialogRef.width;\n const height = this.dialogRef.height;\n if(height){\n setTimeout(e=>{\n setCSS($(elRef.nativeElement)[0], 'height', height);\n });\n } \n if (dialogRoot) {\n if (width) {\n setCSS(dialogRoot, 'width', width);\n }\n setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);\n setAttr(dialogRoot, 'name', this.dialogRef.name);\n\n }\n subscription.unsubscribe();\n });\n }\n}\n","import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-dialogfooter',\n new Map([\n ['class', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ])\n );\n};\n","import { Directive, Injector } from '@angular/core';\n\nimport { BaseComponent, IWidgetConfig, provideAsWidgetRef } from '@wm/components/base';\nimport { registerProps } from './dialog-footer.props';\n\nconst WIDGET_INFO: IWidgetConfig = {\n widgetType: 'wm-dialogfooter',\n hostClass: 'app-dialog-footer modal-footer'\n};\n\n@Directive({\n selector: 'div[wmDialogFooter]',\n providers: [\n provideAsWidgetRef(DialogFooterDirective)\n ]\n})\nexport class DialogFooterDirective extends BaseComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector) {\n super(inj, WIDGET_INFO);\n }\n}\n","import { Injector, OnDestroy, TemplateRef, Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { BsModalRef, BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\n\nimport { Subscription } from 'rxjs';\n\nimport {AbstractDialogService, closePopover, findRootContainer, generateGUId, isMobile, isMobileApp} from '@wm/core';\n\nimport { BaseComponent, IDialog, IWidgetConfig } from '@wm/components/base';\nimport { createFocusTrap } from '@wavemaker/focus-trap/dist/focus-trap';\n\ndeclare const _;\n\nlet eventsRegistered = false;\n\nlet focusTrapObj = {\n activeElement: null\n};\n\nconst invokeOpenedCallback = (ref) => {\n if (ref) {\n setTimeout(() => {\n const root = findRootContainer(ref.$element);\n // if page styles have to be applied to dialog then dialog has to be child of page element.\n if (root) {\n $('body > modal-container > div').wrap('<' + root + '/>');\n }\n ref.invokeEventCallback('opened', {$event: {type: 'opened'}});\n // focusTrapObj will create focus trap for the respective dialog according to the titleId assigned to them which is unique.\n const container = $('[aria-labelledby= ' + ref.titleId + ']')[0];\n\n const keyboardFocusableElements = [container.querySelectorAll(\n 'a, button, input, textarea, select, details, iframe, embed, object, summary dialog, audio[controls], video[controls], [contenteditable], [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => {\n return (\n !el[0].hasAttribute('disabled') && !el[0].hasAttribute('hidden'))\n })[0];\n\n $(keyboardFocusableElements[0]).focus();\n\n focusTrapObj[ref.titleId] = createFocusTrap(container, {\n onActivate: () => container.classList.add('is-active'),\n onDeactivate: () => container.classList.remove('is-active'),\n allowOutsideClick: true,\n setReturnFocus: focusTrapObj.activeElement,\n });\n focusTrapObj[ref.titleId].activate();\n });\n }\n};\n\nconst invokeClosedCallback = (ref) => {\n if (ref) {\n ref.invokeEventCallback('close');\n ref.dialogRef = undefined;\n }\n};\n\n@Injectable()\nexport abstract class BaseDialog extends BaseComponent implements IDialog, OnDestroy {\n\n public name: string;\n\n private readonly dialogService: AbstractDialogService;\n private readonly bsModal: BsModalService;\n\n private dialogRef: BsModalRef;\n private dialogId: number;\n public titleId:string = 'wmdialog-' + generateGUId();\n\n protected constructor(\n inj: Injector,\n widgetConfig: IWidgetConfig,\n protected modalOptions: ModalOptions\n ) {\n super(inj, widgetConfig);\n this.dialogService = inj.get(AbstractDialogService);\n this.bsModal = inj.get(BsModalService);\n const router = inj.get(Router);\n\n const subscriptions: Subscription[] = [\n this.bsModal.onShown.subscribe(({id}) => {\n const ref = this.dialogService.getLastOpenedDialog();\n if (ref === this) {\n // Always get the reference of last pushed dialog in the array for calling onOpen callback\n invokeOpenedCallback(ref);\n this.dialogId = id;\n }\n }),\n this.bsModal.onShow.subscribe(() => {\n focusTrapObj.activeElement = document.activeElement;\n }),\n this.bsModal.onHidden.subscribe((closeReason) => {\n const ref = (closeReason === 'esc' \n || closeReason === 'backdrop-click'\n || (this.dialogId && closeReason?.id === this.dialogId)) ? this.dialogService.getLastOpenedDialog() : this.dialogService.getDialogRefFromClosedDialogs();\n if (ref === this) {\n // remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(ref);\n this.dialogService.removeFromClosedDialogs(ref);\n invokeClosedCallback(ref);\n if (ref.closeCallBackFn) {\n ref.closeCallBackFn();\n }\n }\n }),\n this.bsModal.onHide.subscribe(() => {\n // Will de-activate focus trap for the respective dialog when they are closed.\n const ref = this.dialogService.getDialogRefFromClosedDialogs();\n if (ref && focusTrapObj[ref.titleId] !== undefined) {\n focusTrapObj[ref.titleId].deactivate();\n }\n }),\n router.events.subscribe(e => {\n if (e instanceof NavigationEnd) {\n this.close();\n }\n })\n ];\n this.registerDestroyListener(() => {// remove the dialog reference from opened dialogs and closed dialogs\n this.dialogService.removeFromOpenedDialogs(this);\n this.dialogService.removeFromClosedDialogs(this);\n subscriptions.forEach(s => s.unsubscribe());\n });\n }\n\n /**\n * Opens the dialog\n * Subscribe to the onShown event emitter of bsModal and trigger on-opened event callback\n */\n public open(initState?: any) {\n\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n\n // do not open the dialog again if it is already opened\n const duplicateDialogCheck = (openedDialog) => {\n return openedDialog === this;\n };\n\n if (this.dialogService.getOpenedDialogs().some(duplicateDialogCheck)) {\n return;\n }\n\n this.dialogService.addToOpenedDialogs(this);\n\n // extend the context with the initState\n Object.assign(this.context, initState);\n this.modalOptions.ariaLabelledBy = this.titleId;\n this.dialogRef = this.bsModal.show(this.getTemplateRef(), this.modalOptions);\n // Fix for [WMS-23948]: Focus moving out of active Dialog widget\n if (this.dialogService.getOpenedDialogs().length === 1 && (isMobile() || isMobileApp())) {\n const parentSelector = $('body > app-root')[0];\n parentSelector.setAttribute('aria-hidden', 'true');\n }\n }\n\n /**\n * closes the dialog\n * invokes the on-close event callback\n */\n public close() {\n // remove the popovers in the page to avoid the overlap with dialog\n // closePopover(this.$element); Commenting this line because it is causing regression(if we have dialog inside popover as partail content, then the dialog close is not working because on closing the popover the partial get destroyed.)\n if (this.dialogRef) {\n this.dialogService.addToClosedDialogs(this);\n this.dialogRef.hide();\n }\n }\n\n /**\n * Register the dialog with the dialog service for programmatic access\n */\n protected register(scope) {\n // add scope along with name in the dialogRefsCollection Map while registering dialog\n // So that 2 dialogs having same name on different pages won't be overridden.\n this.dialogService.register(this.name, this, scope);\n }\n\n /**\n * De Register the dialog with the dialog service after dialog destruction\n */\n protected deRegister(scope) {\n this.dialogService.deRegister(this.name, scope);\n }\n\n /**\n * subclasses of BaseDialog must implement this method to return the proper template element ref\n * bsModal will use this refence to open the dialog\n * @returns {TemplateRef<any>}\n */\n protected abstract getTemplateRef(): TemplateRef<any>;\n\n protected onPropertyChange(key: string, nv: any, ov?: any) {\n // ignore the class attribute.\n // Prevent the framework from setting the class on the host element.\n if (key === 'class' || key === 'name' || key === 'tabindex') {\n return;\n } else if (key === 'animation') {\n this.modalOptions.class = this.modalOptions.class.replace(' animated ' + ov, '');\n if (nv) {\n this.modalOptions.class = this.modalOptions.class + ' animated ' + nv;\n }\n }\n super.onPropertyChange(key, nv, ov);\n }\n\n public ngOnDestroy() {\n this.close();\n this.deRegister(this.viewParent);\n super.ngOnDestroy();\n }\n}\n","import { Component, ElementRef, Inject, Input } from '@angular/core';\n\nimport { addClass, toBoolean } from '@wm/core';\n\nimport { DialogRef } from '@wm/components/base';\nimport { BaseDialog } from '../base-dialog';\n\nconst DEFAULT_CLS = 'app-dialog-header modal-header';\nconst DEFAULT_ICON_DIMENSIONS = '21px';\n\n@Component({\n selector: 'div[wmDialogHeader]',\n templateUrl: './dialog-header.component.html'\n})\nexport class DialogHeaderComponent {\n\n @Input() public iconwidth = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconheight = DEFAULT_ICON_DIMENSIONS;\n @Input() public iconmargin: string;\n @Input() public iconclass: string;\n @Input() public iconurl: string;\n @Input() public closable = true;\n @Input() public heading: string;\n @Input() public subheading: string;\n @Input() public titleid:string;\n\n public get isClosable() {\n return toBoolean(this.closable);\n }\n\n constructor(elRef: ElementRef, @Inject(DialogRef) private dialogRef: BaseDialog) {\n addClass(elRef.nativeElement, DEFAULT_CLS);\n }\n\n public closeDialog() {\n this.dialogRef.close();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { DialogBodyDirective } from './dialog-body/dialog-body.directive';\nimport { DialogFooterDirective } from './dialog-footer/dialog-footer.directive';\nimport { DialogHeaderComponent } from './dialog-header/dialog-header.component';\n\nconst components = [\n DialogBodyDirective,\n DialogFooterDirective,\n DialogHeaderComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ModalModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components],\n entryComponents: []\n})\nexport class DialogModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {registerProps as ɵa} from './dialog-footer/dialog-footer.props';"],"names":["DEFAULT_CLS"],"mappings":"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"}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"DialogBodyDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"div[wmDialogBody]"}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":16,"character":5},"arguments":["style.height"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":19,"character":16}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":15},null,{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":20,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":21,"character":27}]}]}},"DialogFooterDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":16,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":10,"character":1},"arguments":[{"selector":"div[wmDialogFooter]","providers":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@wm/components/base","name":"provideAsWidgetRef","line":13,"character":8},"arguments":[{"__symbolic":"reference","name":"DialogFooterDirective"}]}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":21}]}]},"statics":{"initializeProps":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵa"}}}},"DialogHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"div[wmDialogHeader]","template":"<button *ngIf=\"isClosable\" aria-label=\"Close\" class=\"app-dialog-close close\" (click)=\"closeDialog();\" title=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n</button>\n<h4 class=\"app-dialog-title modal-title\">\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\" *ngIf=\"iconclass && !iconurl\"></i>\n <img data-identifier=\"img\" [src]=\"iconurl | image\" *ngIf=\"iconurl\" [ngStyle]=\"{width:iconwidth, height:iconheight, margin:iconmargin}\"/>\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n <span class=\"dialog-sub-heading\" *ngIf=\"subheading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n</h4>\n"}]}],"members":{"iconwidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"iconheight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"iconmargin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":5}}]}],"iconclass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":5}}]}],"iconurl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":5}}]}],"closable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":5}}]}],"heading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":5}}]}],"subheading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":5}}]}],"titleid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":36},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":30,"character":43}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":23},{"__symbolic":"reference","name":"BaseDialog"}]}],"closeDialog":[{"__symbolic":"method"}]}},"BaseDialog":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":59,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":70,"character":13},{"__symbolic":"reference","module":"@wm/components/base","name":"IWidgetConfig","line":71,"character":22},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalOptions","line":72,"character":32}]}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"deRegister":[{"__symbolic":"method"}],"getTemplateRef":[{"__symbolic":"method"}],"onPropertyChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"DialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":8},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":19,"character":8},{"__symbolic":"reference","module":"@wm/components/base","name":"WmComponentsModule","line":20,"character":8}],"declarations":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"exports":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"entryComponents":[]}]}],"members":{}},"ɵa":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":29,"module":"./dialog-footer/dialog-footer.props"}},"origins":{"DialogBodyDirective":"./dialog-body/dialog-body.directive","DialogFooterDirective":"./dialog-footer/dialog-footer.directive","DialogHeaderComponent":"./dialog-header/dialog-header.component","BaseDialog":"./base-dialog","DialogModule":"./dialog.module","ɵa":"./dialog-footer/dialog-footer.props"},"importAs":"@wm/components/dialogs"}
1
+ {"__symbolic":"module","version":4,"metadata":{"DialogBodyDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":12,"character":1},"arguments":[{"selector":"div[wmDialogBody]"}]}],"members":{"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":16,"character":5},"arguments":["style.height"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":9},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":19,"character":16}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":18,"character":15},null,{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":20,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":21,"character":27}]}]}},"DialogFooterDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":16,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":10,"character":1},"arguments":[{"selector":"div[wmDialogFooter]","providers":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@wm/components/base","name":"provideAsWidgetRef","line":13,"character":8},"arguments":[{"__symbolic":"reference","name":"DialogFooterDirective"}]}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":19,"character":21}]}]},"statics":{"initializeProps":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"ɵa"}}}},"DialogHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"div[wmDialogHeader]","template":"<button *ngIf=\"isClosable\" aria-label=\"Close\" class=\"app-dialog-close close\" (click)=\"closeDialog();\" title=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n</button>\n<h4 class=\"app-dialog-title modal-title\">\n <i [ngClass]=\"iconclass\" [ngStyle]=\"{width: iconwidth, height: iconheight, margin: iconmargin}\" *ngIf=\"iconclass && !iconurl\"></i>\n <img data-identifier=\"img\" [src]=\"iconurl | image\" *ngIf=\"iconurl\" [ngStyle]=\"{width:iconwidth, height:iconheight, margin:iconmargin}\"/>\n <span class=\"dialog-heading\" [textContent]=\"heading\" [id]=\"titleid\"></span>\n <span class=\"dialog-sub-heading\" *ngIf=\"subheading\" [title]=\"subheading\" [textContent]=\"subheading\"></span>\n</h4>\n"}]}],"members":{"iconwidth":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"iconheight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":5}}]}],"iconmargin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":5}}]}],"iconclass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":5}}]}],"iconurl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":5}}]}],"closable":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":5}}]}],"heading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":5}}]}],"subheading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":5}}]}],"titleid":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":36},"arguments":[{"__symbolic":"reference","module":"@wm/components/base","name":"DialogRef","line":30,"character":43}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":23},{"__symbolic":"reference","name":"BaseDialog"}]}],"closeDialog":[{"__symbolic":"method"}]}},"BaseDialog":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@wm/components/base","name":"BaseComponent","line":59,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":71,"character":13},{"__symbolic":"reference","module":"@wm/components/base","name":"IWidgetConfig","line":72,"character":22},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalOptions","line":73,"character":32}]}],"open":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"deRegister":[{"__symbolic":"method"}],"getTemplateRef":[{"__symbolic":"method"}],"onPropertyChange":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"DialogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":18,"character":8},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"ModalModule","line":19,"character":8},{"__symbolic":"reference","module":"@wm/components/base","name":"WmComponentsModule","line":20,"character":8}],"declarations":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"exports":[{"__symbolic":"reference","name":"DialogBodyDirective"},{"__symbolic":"reference","name":"DialogFooterDirective"},{"__symbolic":"reference","name":"DialogHeaderComponent"}],"entryComponents":[]}]}],"members":{}},"ɵa":{"__symbolic":"error","message":"Lambda not supported","line":2,"character":29,"module":"./dialog-footer/dialog-footer.props"}},"origins":{"DialogBodyDirective":"./dialog-body/dialog-body.directive","DialogFooterDirective":"./dialog-footer/dialog-footer.directive","DialogHeaderComponent":"./dialog-header/dialog-header.component","BaseDialog":"./base-dialog","DialogModule":"./dialog.module","ɵa":"./dialog-footer/dialog-footer.props"},"importAs":"@wm/components/dialogs"}
@@ -378,22 +378,32 @@
378
378
  configurable: true
379
379
  });
380
380
  DateTimePickerComponent.prototype.validateSelectedDate = function () {
381
- var _a, _b, _c, _d, _e, _f, _g;
381
+ var _a, _b, _c, _d, _e;
382
382
  if (!this.changedValue) {
383
383
  return true;
384
384
  }
385
385
  var cd = moment(this.changedValue);
386
- if (((_a = this._bsDatepickerConfig) === null || _a === void 0 ? void 0 : _a.minDate) && ((_b = this._bsDatepickerConfig) === null || _b === void 0 ? void 0 : _b.minDate) > this.changedValue) {
386
+ var minDate = (_a = this._bsDatepickerConfig) === null || _a === void 0 ? void 0 : _a.minDate;
387
+ var maxDate = (_b = this._bsDatepickerConfig) === null || _b === void 0 ? void 0 : _b.maxDate;
388
+ if (minDate
389
+ && ((this.mode === 'DATE'
390
+ && moment(minDate).startOf('day').toDate() > this.changedValue)
391
+ || (this.mode !== 'DATE'
392
+ && minDate > this.changedValue))) {
387
393
  return false;
388
394
  }
389
- if (((_c = this._bsDatepickerConfig) === null || _c === void 0 ? void 0 : _c.maxDate) && ((_d = this._bsDatepickerConfig) === null || _d === void 0 ? void 0 : _d.maxDate) < this.changedValue) {
395
+ if (maxDate
396
+ && ((this.mode === 'DATE'
397
+ && moment(maxDate).endOf('day').toDate() < this.changedValue)
398
+ || (this.mode !== 'DATE'
399
+ && maxDate < this.changedValue))) {
390
400
  return false;
391
401
  }
392
- if (((_f = (_e = this._bsDatepickerConfig) === null || _e === void 0 ? void 0 : _e.daysDisabled) === null || _f === void 0 ? void 0 : _f.indexOf(cd.day())) >= 0) {
402
+ if (((_d = (_c = this._bsDatepickerConfig) === null || _c === void 0 ? void 0 : _c.daysDisabled) === null || _d === void 0 ? void 0 : _d.indexOf(cd.day())) >= 0) {
393
403
  return false;
394
404
  }
395
405
  var cdSt = cd.startOf('day').toDate().getTime();
396
- if ((_g = this.excludedDatesToDisable) === null || _g === void 0 ? void 0 : _g.find(function (d) { return d.getTime() === cdSt; })) {
406
+ if ((_e = this.excludedDatesToDisable) === null || _e === void 0 ? void 0 : _e.find(function (d) { return d.getTime() === cdSt; })) {
397
407
  return false;
398
408
  }
399
409
  return true;
@@ -442,6 +452,11 @@
442
452
  newVal.setMilliseconds(oldVal.getMilliseconds());
443
453
  }
444
454
  this.changedValue = newVal;
455
+ if (this.mode === 'DATE'
456
+ && oldVal !== newVal
457
+ && this.validateSelectedDate()) {
458
+ this.onOkClick();
459
+ }
445
460
  };
446
461
  DateTimePickerComponent.prototype.onTimeUpdate = function (newVal) {
447
462
  this.changedValue = newVal;
@@ -461,6 +476,10 @@
461
476
  this.triggerChange();
462
477
  this.hideModal();
463
478
  };
479
+ DateTimePickerComponent.prototype.setToday = function () {
480
+ var today = moment().startOf('day').toDate();
481
+ this.onDateUpdate(today);
482
+ };
464
483
  DateTimePickerComponent.prototype.reset = function () {
465
484
  this.changedValue = this._value;
466
485
  };
@@ -495,7 +514,7 @@
495
514
  DateTimePickerComponent.decorators = [
496
515
  { type: core.Component, args: [{
497
516
  selector: 'wm-datetimepicker',
498
- template: " \n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n \n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-secondary clear-btn\"\n (click)=\"clear()\">{{appLocale.MESSAGE_DATE_PICKER_CLEAR || \"Clear\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n (click)=\"onOkClick()\">{{appLocale.MESSAGE_DATE_PICKER_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right cancel-btn\"\n (click)=\"hideModal()\">{{appLocale.MESSAGE_DATE_PICKER_CANCEL || \"Cancel\" }}</button>\n \n </div>\n </div>\n </ng-template>\n "
517
+ template: " \n <ng-template #datetimepickerTemplate>\n <div class=\"app-datetime-picker\">\n <div class=\"modal-body\">\n <div class=\"mobile-datetime-picker-options\">\n \n </div>\n <bs-datepicker-inline\n [bsConfig]=\"bsDatepickerConfig\"\n [datesDisabled]=\"excludedDatesToDisable\"\n bsDatepicker\n [bsValue]=\"changedValue\"\n (bsValueChange)=\"onDateUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\">\n </bs-datepicker-inline>\n <wm-timepicker\n [value]=\"changedValue\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n (change)=\"onTimeUpdate($event)\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"></wm-timepicker>\n <span class=\"text-primary date-picker-value\">\n {{getDateLabel()}}\n </span>\n </div>\n <div class=\"modal-footer\">\n <button\n *ngIf=\"mode === 'DATE_TIME' || mode === 'DATE'\"\n class=\"btn btn-secondary today-btn\"\n (click)=\"setToday()\">{{appLocale.MESSAGE_DATE_PICKER_TODAY || \"Today\" }}</button>\n <button\n class=\"btn btn-primary pull-right ok-btn\"\n *ngIf=\"mode === 'DATE_TIME' || mode === 'TIME'\"\n (click)=\"onOkClick()\">{{appLocale.MESSAGE_DATE_PICKER_OK || \"Ok\" }}</button>\n <button\n class=\"btn btn-secondary pull-right clear-btn\"\n (click)=\"clear()\">{{appLocale.MESSAGE_DATE_PICKER_CLEAR || \"Clear\" }}</button>\n </div>\n </div>\n </ng-template>\n "
499
518
  },] }
500
519
  ];
501
520
  DateTimePickerComponent.ctorParameters = function () { return [
@@ -544,8 +563,8 @@
544
563
  }
545
564
  return arr;
546
565
  };
547
- TimePickerComponent.prototype.set = function (_h, unit) {
548
- var index = _h.index, value = _h.value;
566
+ TimePickerComponent.prototype.set = function (_f, unit) {
567
+ var index = _f.index, value = _f.value;
549
568
  if (unit === 'HOUR') {
550
569
  this.value = moment(this.value).hour(parseInt(value)).toDate();
551
570
  }
@@ -1871,7 +1890,7 @@
1871
1890
  DateComponent.decorators = [
1872
1891
  { type: core.Component, args: [{
1873
1892
  selector: '[wmDate]',
1874
- 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",
1893
+ 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",
1875
1894
  providers: [
1876
1895
  base.provideAs(DateComponent, forms.NG_VALUE_ACCESSOR, true),
1877
1896
  base.provideAs(DateComponent, forms.NG_VALIDATORS, true),