@wavemaker/app-ng-runtime 11.12.1-rc.6244 → 11.13.0-rc.222

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 (61) hide show
  1. package/build-task/bundles/index.umd.js +26 -24
  2. package/build-task/esm2022/containers/repeat-template.build.mjs +4 -2
  3. package/build-task/esm2022/data/form/form.build.mjs +4 -2
  4. package/build-task/esm2022/data/table/table-row/table-row.build.mjs +5 -3
  5. package/build-task/esm2022/page/page-content/page-content.build.mjs +6 -7
  6. package/build-task/esm2022/page/page.build.mjs +6 -7
  7. package/build-task/esm2022/partial/partial.build.mjs +6 -7
  8. package/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +6 -7
  9. package/build-task/fesm2022/index.mjs +26 -24
  10. package/build-task/fesm2022/index.mjs.map +1 -1
  11. package/components/data/live-table/bundles/index.umd.js +4 -2
  12. package/components/data/live-table/esm2022/live-table.component.mjs +5 -3
  13. package/components/data/live-table/fesm2022/index.mjs +4 -2
  14. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  15. package/components/data/pagination/bundles/index.umd.js +4 -4
  16. package/components/data/pagination/esm2022/pagination.component.mjs +5 -5
  17. package/components/data/pagination/fesm2022/index.mjs +4 -4
  18. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  19. package/components/dialogs/design-dialog/bundles/index.umd.js +6 -12
  20. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +7 -13
  21. package/components/dialogs/design-dialog/fesm2022/index.mjs +6 -12
  22. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  23. package/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -16
  24. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +8 -15
  25. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +7 -14
  26. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  27. package/components/input/epoch/base-date-time.component.d.ts +6 -0
  28. package/components/input/epoch/bundles/index.umd.js +54 -31
  29. package/components/input/epoch/esm2022/base-date-time.component.mjs +16 -5
  30. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +22 -15
  31. package/components/input/epoch/esm2022/time/time.component.mjs +19 -14
  32. package/components/input/epoch/fesm2022/index.mjs +54 -31
  33. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  34. package/components/input/slider/bundles/index.umd.js +9 -9
  35. package/components/input/slider/esm2022/slider.component.mjs +10 -10
  36. package/components/input/slider/fesm2022/index.mjs +9 -9
  37. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  38. package/core/bundles/index.umd.js +3 -0
  39. package/core/esm2022/utils/wm-project-properties.mjs +4 -1
  40. package/core/fesm2022/index.mjs +3 -0
  41. package/core/fesm2022/index.mjs.map +1 -1
  42. package/npm-shrinkwrap.json +2 -2
  43. package/package-lock.json +2 -2
  44. package/package.json +1 -1
  45. package/runtime/base/bundles/index.umd.js +1 -1
  46. package/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  47. package/runtime/base/fesm2022/index.mjs +1 -1
  48. package/runtime/base/fesm2022/index.mjs.map +1 -1
  49. package/security/bundles/index.umd.js +2 -2
  50. package/security/esm2022/security.service.mjs +3 -3
  51. package/security/fesm2022/index.mjs +2 -2
  52. package/security/fesm2022/index.mjs.map +1 -1
  53. package/transpiler/bundles/index.umd.js +0 -13
  54. package/transpiler/esm2022/build.mjs +1 -14
  55. package/transpiler/fesm2022/index.mjs +0 -13
  56. package/transpiler/fesm2022/index.mjs.map +1 -1
  57. package/variables/bundles/index.umd.js +1 -1
  58. package/variables/esm2022/service/metadata-service/metadata.service.mjs +2 -2
  59. package/variables/fesm2022/index.mjs +1 -1
  60. package/variables/fesm2022/index.mjs.map +1 -1
  61. package/scripts/hammerjs/hammer.min.js +0 -7
@@ -90,9 +90,11 @@
90
90
  $firstInput.select();
91
91
  }
92
92
  onDialogOpen(action) {
93
- if (action == 'update') {
93
+ const attrs = this?.form?.formFields?.[0]?.$attrs ?? new Map();
94
+ const hasDefault = ["defaultvalue", "defaultvalue.bind"].some(key => attrs.has(key));
95
+ if (action == 'update' || !!hasDefault) {
94
96
  const firstFormField = $("form [wmformfield]").first();
95
- if (firstFormField.find("div[widget='autocomplete']").length != 1) { // prevent focusing first form field if widget is autocomplete
97
+ if (firstFormField.find("div[widget='autocomplete']").length != 1 && this?.form?.formFields?.[0]?.widgettype != 'autocomplete') { // prevent focusing first form field if widget is autocomplete
96
98
  this.focusFirstInput();
97
99
  }
98
100
  }
@@ -64,9 +64,11 @@ export class LiveTableComponent extends StylableComponent {
64
64
  $firstInput.select();
65
65
  }
66
66
  onDialogOpen(action) {
67
- if (action == 'update') {
67
+ const attrs = this?.form?.formFields?.[0]?.$attrs ?? new Map();
68
+ const hasDefault = ["defaultvalue", "defaultvalue.bind"].some(key => attrs.has(key));
69
+ if (action == 'update' || !!hasDefault) {
68
70
  const firstFormField = $("form [wmformfield]").first();
69
- if (firstFormField.find("div[widget='autocomplete']").length != 1) { // prevent focusing first form field if widget is autocomplete
71
+ if (firstFormField.find("div[widget='autocomplete']").length != 1 && this?.form?.formFields?.[0]?.widgettype != 'autocomplete') { // prevent focusing first form field if widget is autocomplete
70
72
  this.focusFirstInput();
71
73
  }
72
74
  }
@@ -238,4 +240,4 @@ export class LiveTableComponent extends StylableComponent {
238
240
  args: [TableComponent]
239
241
  }] }); })();
240
242
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LiveTableComponent, { className: "LiveTableComponent", filePath: "live-table.component.ts", lineNumber: 36 }); })();
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9saXZlLXRhYmxlL3NyYy9saXZlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2xpdmUtdGFibGUvc3JjL2xpdmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUVILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsRUFBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVczRSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsaUJBQWlCO2FBQzlDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENB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LEtBQUs7a0JBQWxDLFlBQVk7bUJBQUMsY0FBYzs7a0ZBRm5CLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7JGFwcERpZ2VzdCwgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBBcHAsIGdldENsb25lZE9iamVjdCwgaXNEZWZpbmVkLCB0cmlnZ2VyRm59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7cHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7VGFibGVDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvdGFibGUnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbGl2ZS10YWJsZS5wcm9wcyc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWxpdmVncmlkJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWxpdmV0YWJsZScsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1dtQ29tcG9uZW50c01vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdbd21MaXZlVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGl2ZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihMaXZlVGFibGVDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXZlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgQENvbnRlbnRDaGlsZChUYWJsZUNvbXBvbmVudCkgdGFibGU6IFRhYmxlQ29tcG9uZW50O1xuXG4gICAgZm9ybTtcbiAgICBpc0xheW91dERpYWxvZzogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgZGlhbG9nSWQ7XG4gICAgcHJpdmF0ZSAkcXVldWUgPSBbXTtcblxuICAgIHByaXZhdGUgdGFibGVPcHRpb25zOiBhbnkgPSB7XG4gICAgICAgICdtdWx0aXNlbGVjdCc6IGZhbHNlLFxuICAgICAgICAnc2V0R3JpZEVkaXRNb2RlJzogJydcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZm9ybWxheW91dCcpIGxheW91dFR5cGU6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlhbG9naWQnKSBkaWFsb2dJZDogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgaWYgKGxheW91dFR5cGUgPT09ICdkaWFsb2cnKSB7XG4gICAgICAgICAgICB0aGlzLmlzTGF5b3V0RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSWQgPSBkaWFsb2dJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlLl9saXZlVGFibGVQYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy50YWJsZS5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlKCdvcHRpb24nLCB0aGlzLnRhYmxlT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0ZWRJdGVtQ2hhbmdlJFxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5vblNlbGVjdGVkSXRlbUNoYW5nZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTGF5b3V0RGlhbG9nICYmICF0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmRhdGFncmlkRWxlbWVudC5kYXRhdGFibGUoJ29wdGlvbicsIHtcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd1VwZGF0ZScgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd0RlbGV0ZScgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd0luc2VydCcgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dJZCwgdGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UodGhpcy5kaWFsb2dJZCwgdGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICBmb2N1c0ZpcnN0SW5wdXQoKSB7XG4gICAgICAgIGNvbnN0ICRmaXJzdElucHV0ID0gJCh0aGlzLmZvcm0uJGVsZW1lbnQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKTtcbiAgICAgICAgJGZpcnN0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgJGZpcnN0SW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgb25EaWFsb2dPcGVuKGFjdGlvbikge1xuICAgICAgICBpZiAoYWN0aW9uID09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEZvcm1GaWVsZCA9ICQoXCJmb3JtIFt3bWZvcm1maWVsZF1cIikuZmlyc3QoKTtcbiAgICAgICAgICAgIGlmIChmaXJzdEZvcm1GaWVsZC5maW5kKFwiZGl2W3dpZGdldD0nYXV0b2NvbXBsZXRlJ11cIikubGVuZ3RoICE9IDEpIHsgLy8gcHJldmVudCBmb2N1c2luZyBmaXJzdCBmb3JtIGZpZWxkIGlmIHdpZGdldCBpcyAgYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0SW5wdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdElucHV0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRGb3JtRGF0YSh2YWwpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5nZXRXaWRnZXQoKS5mb3JtZGF0YSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2FkZE5ld1JvdygpIHtcbiAgICAgICAgdGhpcy5mb3JtLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldEZvcm1EYXRhKCcnKTtcblxuICAgICAgICB0aGlzLmZvcm0ubmV3KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMub25EaWFsb2dPcGVuKCdhZGQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZE5ld1JvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgdGhpcy4kcXVldWUucHVzaCh0aGlzLl9hZGROZXdSb3cuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgIHRoaXMuX2FkZE5ld1JvdygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZVJvdyhyb3csIGV2ZW50TmFtZSkge1xuICAgICAgICB0aGlzLnNldEZvcm1EYXRhKHJvdyk7XG4gICAgICAgIHRoaXMuZm9ybS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5mb3JtLmVkaXQoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0xheW91dERpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IChldmVudE5hbWUgPT09ICdkYmxjbGljaycpID8gdGhpcy5mb3JtLnVwZGF0ZU1vZGUgOiB0cnVlO1xuICAgICAgICAgICAgdGhpcy5vbkRpYWxvZ09wZW4oJ3VwZGF0ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUm93KHJvdywgZXZlbnROYW1lKSB7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRpYWxvZygpO1xuICAgICAgICAgICAgdGhpcy4kcXVldWUucHVzaCh0aGlzLl91cGRhdGVSb3cuYmluZCh0aGlzLCByb3csIGV2ZW50TmFtZSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlUm93KHJvdywgZXZlbnROYW1lKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkSXRlbUNoYW5nZShuZXdWYWx1ZSkge1xuICAgICAgICBsZXQgcm93RGF0YTtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMudGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5sZW5ndGggPiAwICYmICF0aGlzLmZvcm0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLypVcGRhdGUgdGhlIHJvd2RhdGEgb2Ygb25seSB0aGF0IGdyaWQgZm9ybSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWMgZ3JpZCBvbiB3aGljaCByb3cgc2VsZWN0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZC4uLlxuICAgICAgICAgKiBTaW5jZSBib3RoIHRoZSBncmlkICYgZ3JpZGZvcm0gYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBcInBhcmVudGdyaWRcIiwgbWF0Y2ggdGhlIHNhbWUqL1xuICAgICAgICBpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFibGUubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICByb3dEYXRhID0gbmV3VmFsdWVbMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd0RhdGEgPSBuZXdWYWx1ZVtuZXdWYWx1ZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtRGF0YShnZXRDbG9uZWRPYmplY3Qocm93RGF0YSkpO1xuICAgICAgICAgICAgLypJZiB0aGUgZm9ybSBpcyBhbHJlYWR5IGluIHVwZGF0ZSBtb2RlLCBjYWxsIHRoZSBmb3JtIHVwZGF0ZSBmdW5jdGlvbiovXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtLmlzVXBkYXRlTW9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lZGl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZXRGb3JtRGF0YSgnJyk7XG4gICAgICAgICAgICB0aGlzLmZvcm0uY2xlYXJEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pc0xheW91dERpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURpYWxvZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZXN1bHQob3BlcmF0aW9uLCByZXNwb25zZSwgbmV3Rm9ybSwgdXBkYXRlTW9kZSkge1xuICAgICAgICB0aGlzLmZvcm0uaXNVcGRhdGVNb2RlID0gaXNEZWZpbmVkKHVwZGF0ZU1vZGUpID8gdXBkYXRlTW9kZSA6IG5ld0Zvcm0gPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdpbnNlcnQnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLmdyaWRPcHRpb25zLmlzTmF2VHlwZVNjcm9sbE9yT25kZW1hbmQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmlzTmV3Um93SW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9ybSkge1xuICAgICAgICAgICAgICAgICAgICAvKmlmIG5ldyBmb3JtIGlzIHRvIGJlIHNob3duIGFmdGVyIGluc2VydCwgc2tpcCB0aGUgaGlnaGxpZ2h0IG9mIHRoZSByb3cqL1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmdyaWRmaXJzdHJvd3NlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRpYXRlU2VsZWN0SXRlbSh0aGlzLnRhYmxlLmdldE5hdmlnYXRpb25UYXJnZXRCeVNvcnRJbmZvKCksIHJlc3BvbnNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvKlRoZSBuZXcgcm93IHdvdWxkIGFsd2F5cyBiZSBpbnNlcnRlZCBhdCB0aGUgZW5kIG9mIGFsbCBleGlzdGluZyByZWNvcmRzLiBIZW5jZSBuYXZpZ2F0ZSB0byB0aGUgbGFzdCBwYWdlIGFuZCBoaWdobGlnaHQgdGhlIGluc2VydGVkIHJvdy4qL1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRpYXRlU2VsZWN0SXRlbSh0aGlzLnRhYmxlLmdldE5hdmlnYXRpb25UYXJnZXRCeVNvcnRJbmZvKCksIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cGRhdGUnOlxuICAgICAgICAgICAgICAgIC8qVGhlIHVwZGF0ZWQgcm93IHdvdWxkIGJlIGZvdW5kIGluIHRoZSBjdXJyZW50IHBhZ2UgaXRzZWxmLiBIZW5jZSBzaW1wbHkgaGlnaGxpZ2h0IHRoZSByb3cgaW4gdGhlIGN1cnJlbnQgcGFnZS4qL1xuICAgICAgICAgICAgICAgIGlmIChuZXdGb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUuZ3JpZGZpcnN0cm93c2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdGlhdGVTZWxlY3RJdGVtKCdjdXJyZW50JywgcmVzcG9uc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGUuaW5pdGlhdGVTZWxlY3RJdGVtKCdjdXJyZW50JywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZS5vblJlY29yZERlbGV0ZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFibGUudXBkYXRlVmFyaWFibGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIC8qaWYgbmV3IGZvcm0gaXMgdG8gYmUgc2hvd24gYWZ0ZXIgdXBkYXRlIG9yIGluc2VydCwgZG9uJ3QgY2xvc2UgdGhlIGRpYWxvZyovXG4gICAgICAgICAgICBpZiAobmV3Rm9ybSkge1xuICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdpbnNlcnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5uZXcoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmVkaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dFcnJvck1lc3NhZ2UoKSB7XG4gICAgICAgIHRoaXMuYXBwLm5vdGlmeUFwcCh0aGlzLmFwcExvY2FsZS5MQUJFTF9BQ0NFU1NfREVOSUVELCAnZXJyb3InKTtcbiAgICB9XG5cbiAgICAvLyBJbiBkaWFsb2cgbW9kZSwgb24gZm9ybSByZW5kZXIgY2FsbCB0aGUgcXVldWVkIGZ1bmN0aW9uc1xuICAgIG9uRm9ybVJlYWR5KGZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0cmlnZ2VyRm4odGhpcy4kcXVldWUucG9wKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+Il19
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9saXZlLXRhYmxlL3NyYy9saXZlLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2xpdmUtdGFibGUvc3JjL2xpdmUtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUVILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBQyxVQUFVLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUlqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFDbkMsTUFBTSxhQUFhLEdBQUcsRUFBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsQ0FBQztBQVczRSxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsaUJBQWlCO2FBQzlDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENB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Q1osVUFBVSx3QkFDYixrQkFBa0I7b0VBdkJyQixrQkFBa0I7d0NBRWIsY0FBYzs7OztnRUFOakI7Z0JBQ1Asa0JBQWtCLENBQUMsa0JBQWtCLENBQUM7YUFDekM7O1lDakNMLGtCQUF5Qjs0QkQ0QmIsa0JBQWtCOztpRkFPakIsa0JBQWtCO2NBVDlCLFNBQVM7NkJBQ0ksSUFBSSxXQUNQLENBQUMsa0JBQWtCLENBQUMsWUFDakIsZUFBZSxhQUVkO29CQUNQLGtCQUFrQixvQkFBb0I7aUJBQ3pDOztzQkF1QkksU0FBUzt1QkFBQyxZQUFZOztzQkFDdEIsU0FBUzt1QkFBQyxVQUFVOztzQkFDcEIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBckJYLEtBQUs7a0JBQWxDLFlBQVk7bUJBQUMsY0FBYzs7a0ZBRm5CLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNlXCI7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7JGFwcERpZ2VzdCwgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLCBBcHAsIGdldENsb25lZE9iamVjdCwgaXNEZWZpbmVkLCB0cmlnZ2VyRm59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7cHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7VGFibGVDb21wb25lbnR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvdGFibGUnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vbGl2ZS10YWJsZS5wcm9wcyc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWxpdmVncmlkJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWxpdmV0YWJsZScsIGhvc3RDbGFzczogREVGQVVMVF9DTFN9O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1dtQ29tcG9uZW50c01vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdbd21MaXZlVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGl2ZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihMaXZlVGFibGVDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXZlVGFibGVDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgQENvbnRlbnRDaGlsZChUYWJsZUNvbXBvbmVudCkgdGFibGU6IFRhYmxlQ29tcG9uZW50O1xuXG4gICAgZm9ybTtcbiAgICBpc0xheW91dERpYWxvZzogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgZGlhbG9nSWQ7XG4gICAgcHJpdmF0ZSAkcXVldWUgPSBbXTtcblxuICAgIHByaXZhdGUgdGFibGVPcHRpb25zOiBhbnkgPSB7XG4gICAgICAgICdtdWx0aXNlbGVjdCc6IGZhbHNlLFxuICAgICAgICAnc2V0R3JpZEVkaXRNb2RlJzogJydcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZm9ybWxheW91dCcpIGxheW91dFR5cGU6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlhbG9naWQnKSBkaWFsb2dJZDogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgaWYgKGxheW91dFR5cGUgPT09ICdkaWFsb2cnKSB7XG4gICAgICAgICAgICB0aGlzLmlzTGF5b3V0RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nSWQgPSBkaWFsb2dJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlLl9saXZlVGFibGVQYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy50YWJsZS5kYXRhZ3JpZEVsZW1lbnQuZGF0YXRhYmxlKCdvcHRpb24nLCB0aGlzLnRhYmxlT3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0ZWRJdGVtQ2hhbmdlJFxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5vblNlbGVjdGVkSXRlbUNoYW5nZS5iaW5kKHRoaXMpKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTGF5b3V0RGlhbG9nICYmICF0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmRhdGFncmlkRWxlbWVudC5kYXRhdGFibGUoJ29wdGlvbicsIHtcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd1VwZGF0ZScgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd0RlbGV0ZScgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZVJvd0luc2VydCcgOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvck1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5kaWFsb2dJZCwgdGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UodGhpcy5kaWFsb2dJZCwgdGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICBmb2N1c0ZpcnN0SW5wdXQoKSB7XG4gICAgICAgIGNvbnN0ICRmaXJzdElucHV0ID0gJCh0aGlzLmZvcm0uJGVsZW1lbnQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKTtcbiAgICAgICAgJGZpcnN0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgJGZpcnN0SW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgb25EaWFsb2dPcGVuKGFjdGlvbikge1xuICAgICAgICBjb25zdCBhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPiA9IHRoaXM/LmZvcm0/LmZvcm1GaWVsZHM/LlswXT8uJGF0dHJzID8/IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgaGFzRGVmYXVsdCA9IFtcImRlZmF1bHR2YWx1ZVwiLCBcImRlZmF1bHR2YWx1ZS5iaW5kXCJdLnNvbWUoa2V5ID0+IGF0dHJzLmhhcyhrZXkpKTtcbiAgICAgICAgaWYgKGFjdGlvbiA9PSAndXBkYXRlJ3x8ISFoYXNEZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEZvcm1GaWVsZCA9ICQoXCJmb3JtIFt3bWZvcm1maWVsZF1cIikuZmlyc3QoKTtcbiAgICAgICAgICAgIGlmIChmaXJzdEZvcm1GaWVsZC5maW5kKFwiZGl2W3dpZGdldD0nYXV0b2NvbXBsZXRlJ11cIikubGVuZ3RoICE9IDEgJiYgdGhpcz8uZm9ybT8uZm9ybUZpZWxkcz8uWzBdPy53aWRnZXR0eXBlICE9ICdhdXRvY29tcGxldGUnKSB7IC8vIHByZXZlbnQgZm9jdXNpbmcgZmlyc3QgZm9ybSBmaWVsZCBpZiB3aWRnZXQgaXMgIGF1dG9jb21wbGV0ZVxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNGaXJzdElucHV0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzRmlyc3RJbnB1dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0Rm9ybURhdGEodmFsKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0V2lkZ2V0KCkuZm9ybWRhdGEgPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hZGROZXdSb3coKSB7XG4gICAgICAgIHRoaXMuZm9ybS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRGF0YSgnJyk7XG5cbiAgICAgICAgdGhpcy5mb3JtLm5ldygpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGF5b3V0RGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLm9uRGlhbG9nT3BlbignYWRkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGROZXdSb3coKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTGF5b3V0RGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coKTtcbiAgICAgICAgICAgIHRoaXMuJHF1ZXVlLnB1c2godGhpcy5fYWRkTmV3Um93LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICB0aGlzLl9hZGROZXdSb3coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVSb3cocm93LCBldmVudE5hbWUpIHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRGF0YShyb3cpO1xuICAgICAgICB0aGlzLmZvcm0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybS5lZGl0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUgPSAoZXZlbnROYW1lID09PSAnZGJsY2xpY2snKSA/IHRoaXMuZm9ybS51cGRhdGVNb2RlIDogdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25EaWFsb2dPcGVuKCd1cGRhdGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVJvdyhyb3csIGV2ZW50TmFtZSkge1xuXG4gICAgICAgIGlmICh0aGlzLmlzTGF5b3V0RGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5EaWFsb2coKTtcbiAgICAgICAgICAgIHRoaXMuJHF1ZXVlLnB1c2godGhpcy5fdXBkYXRlUm93LmJpbmQodGhpcywgcm93LCBldmVudE5hbWUpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVJvdyhyb3csIGV2ZW50TmFtZSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RlZEl0ZW1DaGFuZ2UobmV3VmFsdWUpIHtcbiAgICAgICAgbGV0IHJvd0RhdGE7XG4gICAgICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLnRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV3VmFsdWUgJiYgbmV3VmFsdWUubGVuZ3RoID4gMCAmJiAhdGhpcy5mb3JtLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qVXBkYXRlIHRoZSByb3dkYXRhIG9mIG9ubHkgdGhhdCBncmlkIGZvcm0gdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmljIGdyaWQgb24gd2hpY2ggcm93IHNlbGVjdGlvbiBpcyBiZWluZyBwZXJmb3JtZWQuLi5cbiAgICAgICAgICogU2luY2UgYm90aCB0aGUgZ3JpZCAmIGdyaWRmb3JtIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgXCJwYXJlbnRncmlkXCIsIG1hdGNoIHRoZSBzYW1lKi9cbiAgICAgICAgaWYgKG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgcm93RGF0YSA9IG5ld1ZhbHVlWzBdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByb3dEYXRhID0gbmV3VmFsdWVbbmV3VmFsdWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybURhdGEoZ2V0Q2xvbmVkT2JqZWN0KHJvd0RhdGEpKTtcbiAgICAgICAgICAgIC8qSWYgdGhlIGZvcm0gaXMgYWxyZWFkeSBpbiB1cGRhdGUgbW9kZSwgY2FsbCB0aGUgZm9ybSB1cGRhdGUgZnVuY3Rpb24qL1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZWRpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybURhdGEoJycpO1xuICAgICAgICAgICAgdGhpcy5mb3JtLmNsZWFyRGF0YSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5pc1VwZGF0ZU1vZGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuaXNMYXlvdXREaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uUmVzdWx0KG9wZXJhdGlvbiwgcmVzcG9uc2UsIG5ld0Zvcm0sIHVwZGF0ZU1vZGUpIHtcbiAgICAgICAgdGhpcy5mb3JtLmlzVXBkYXRlTW9kZSA9IGlzRGVmaW5lZCh1cGRhdGVNb2RlKSA/IHVwZGF0ZU1vZGUgOiBuZXdGb3JtID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnaW5zZXJ0JzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YWJsZS5ncmlkT3B0aW9ucy5pc05hdlR5cGVTY3JvbGxPck9uZGVtYW5kKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5pc05ld1Jvd0luc2VydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5ld0Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgLyppZiBuZXcgZm9ybSBpcyB0byBiZSBzaG93biBhZnRlciBpbnNlcnQsIHNraXAgdGhlIGhpZ2hsaWdodCBvZiB0aGUgcm93Ki9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5ncmlkZmlyc3Ryb3dzZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5pbml0aWF0ZVNlbGVjdEl0ZW0odGhpcy50YWJsZS5nZXROYXZpZ2F0aW9uVGFyZ2V0QnlTb3J0SW5mbygpLCByZXNwb25zZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLypUaGUgbmV3IHJvdyB3b3VsZCBhbHdheXMgYmUgaW5zZXJ0ZWQgYXQgdGhlIGVuZCBvZiBhbGwgZXhpc3RpbmcgcmVjb3Jkcy4gSGVuY2UgbmF2aWdhdGUgdG8gdGhlIGxhc3QgcGFnZSBhbmQgaGlnaGxpZ2h0IHRoZSBpbnNlcnRlZCByb3cuKi9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5pbml0aWF0ZVNlbGVjdEl0ZW0odGhpcy50YWJsZS5nZXROYXZpZ2F0aW9uVGFyZ2V0QnlTb3J0SW5mbygpLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXBkYXRlJzpcbiAgICAgICAgICAgICAgICAvKlRoZSB1cGRhdGVkIHJvdyB3b3VsZCBiZSBmb3VuZCBpbiB0aGUgY3VycmVudCBwYWdlIGl0c2VsZi4gSGVuY2Ugc2ltcGx5IGhpZ2hsaWdodCB0aGUgcm93IGluIHRoZSBjdXJyZW50IHBhZ2UuKi9cbiAgICAgICAgICAgICAgICBpZiAobmV3Rm9ybSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmdyaWRmaXJzdHJvd3NlbGVjdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRpYXRlU2VsZWN0SXRlbSgnY3VycmVudCcsIHJlc3BvbnNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmluaXRpYXRlU2VsZWN0SXRlbSgnY3VycmVudCcsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUub25SZWNvcmREZWxldGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlLnVwZGF0ZVZhcmlhYmxlKCk7XG4gICAgICAgIGlmICh0aGlzLmlzTGF5b3V0RGlhbG9nKSB7XG4gICAgICAgICAgICAvKmlmIG5ldyBmb3JtIGlzIHRvIGJlIHNob3duIGFmdGVyIHVwZGF0ZSBvciBpbnNlcnQsIGRvbid0IGNsb3NlIHRoZSBkaWFsb2cqL1xuICAgICAgICAgICAgaWYgKG5ld0Zvcm0pIHtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnaW5zZXJ0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubmV3KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5lZGl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRGlhbG9nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93RXJyb3JNZXNzYWdlKCkge1xuICAgICAgICB0aGlzLmFwcC5ub3RpZnlBcHAodGhpcy5hcHBMb2NhbGUuTEFCRUxfQUNDRVNTX0RFTklFRCwgJ2Vycm9yJyk7XG4gICAgfVxuXG4gICAgLy8gSW4gZGlhbG9nIG1vZGUsIG9uIGZvcm0gcmVuZGVyIGNhbGwgdGhlIHF1ZXVlZCBmdW5jdGlvbnNcbiAgICBvbkZvcm1SZWFkeShmb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdHJpZ2dlckZuKHRoaXMuJHF1ZXVlLnBvcCgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiJdfQ==
@@ -72,9 +72,11 @@ class LiveTableComponent extends StylableComponent {
72
72
  $firstInput.select();
73
73
  }
74
74
  onDialogOpen(action) {
75
- if (action == 'update') {
75
+ const attrs = this?.form?.formFields?.[0]?.$attrs ?? new Map();
76
+ const hasDefault = ["defaultvalue", "defaultvalue.bind"].some(key => attrs.has(key));
77
+ if (action == 'update' || !!hasDefault) {
76
78
  const firstFormField = $("form [wmformfield]").first();
77
- if (firstFormField.find("div[widget='autocomplete']").length != 1) { // prevent focusing first form field if widget is autocomplete
79
+ if (firstFormField.find("div[widget='autocomplete']").length != 1 && this?.form?.formFields?.[0]?.widgettype != 'autocomplete') { // prevent focusing first form field if widget is autocomplete
78
80
  this.focusFirstInput();
79
81
  }
80
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/live-table/src/live-table.props.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.html","../../../../../projects/components/widgets/data/live-table/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-livetable',\n new Map(\n [\n ['class', PROP_STRING],\n ['formlayout', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ]\n )\n );\n};\n","import { WmComponentsModule } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Inject,\n Injector,\n Optional\n} from '@angular/core';\n\nimport {debounceTime} from 'rxjs/operators';\n\nimport {$appDigest, AbstractDialogService, App, getClonedObject, isDefined, triggerFn} from '@wm/core';\nimport {provideAsWidgetRef, StylableComponent, styler} from '@wm/components/base';\nimport {TableComponent} from '@wm/components/data/table';\n\nimport {registerProps} from './live-table.props';\n\ndeclare var $: any;\n\nconst DEFAULT_CLS = 'app-livegrid';\nconst WIDGET_CONFIG = {widgetType: 'wm-livetable', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n imports: [WmComponentsModule],\n selector: '[wmLiveTable]',\n templateUrl: './live-table.component.html',\n providers: [\n provideAsWidgetRef(LiveTableComponent)\n ]\n})\nexport class LiveTableComponent extends StylableComponent implements AfterContentInit {\n static initializeProps = registerProps();\n @ContentChild(TableComponent) table: TableComponent;\n\n form;\n isLayoutDialog: boolean;\n\n private dialogId;\n private $queue = [];\n\n private tableOptions: any = {\n 'multiselect': false,\n 'setGridEditMode': ''\n };\n\n constructor(\n inj: Injector,\n elRef: ElementRef,\n cdr: ChangeDetectorRef,\n private dialogService: AbstractDialogService,\n private app: App,\n @Attribute('formlayout') layoutType: string,\n @Attribute('dialogid') dialogId: string,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n if (layoutType === 'dialog') {\n this.isLayoutDialog = true;\n this.dialogId = dialogId;\n }\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n if (this.table) {\n this.table._liveTableParent = this;\n this.table.datagridElement.datatable('option', this.tableOptions);\n\n this.table.selectedItemChange$\n .pipe(debounceTime(250))\n .subscribe(this.onSelectedItemChange.bind(this));\n\n if (!this.isLayoutDialog && !this.form) {\n this.table.datagridElement.datatable('option', {\n 'beforeRowUpdate' : () => {\n this.showErrorMessage();\n },\n 'beforeRowDelete' : () => {\n this.showErrorMessage();\n },\n 'beforeRowInsert' : () => {\n this.showErrorMessage();\n }\n });\n }\n }\n }\n\n openDialog() {\n this.dialogService.open(this.dialogId, this.viewParent);\n $appDigest();\n }\n\n closeDialog() {\n this.dialogService.close(this.dialogId, this.viewParent);\n }\n\n focusFirstInput() {\n const $firstInput = $(this.form.$element).find('input').first();\n $firstInput.focus();\n $firstInput.select();\n }\n\n onDialogOpen(action) {\n if (action == 'update') {\n const firstFormField = $(\"form [wmformfield]\").first();\n if (firstFormField.find(\"div[widget='autocomplete']\").length != 1) { // prevent focusing first form field if widget is autocomplete\n this.focusFirstInput();\n }\n } else {\n this.focusFirstInput();\n }\n }\n\n setFormData(val) {\n if (!this.form.isDestroyed) {\n this.form.getWidget().formdata = val;\n }\n }\n\n private _addNewRow() {\n this.form.isSelected = true;\n this.setFormData('');\n\n this.form.new();\n\n if (this.isLayoutDialog) {\n this.onDialogOpen('add');\n }\n }\n\n addNewRow() {\n if (this.isLayoutDialog) {\n this.openDialog();\n this.$queue.push(this._addNewRow.bind(this));\n return;\n }\n\n this._addNewRow();\n }\n\n private _updateRow(row, eventName) {\n this.setFormData(row);\n this.form.isSelected = true;\n this.form.edit();\n\n if (this.isLayoutDialog) {\n this.form.isUpdateMode = (eventName === 'dblclick') ? this.form.updateMode : true;\n this.onDialogOpen('update');\n }\n }\n\n updateRow(row, eventName) {\n\n if (this.isLayoutDialog) {\n this.openDialog();\n this.$queue.push(this._updateRow.bind(this, row, eventName));\n return;\n }\n\n this._updateRow(row, eventName);\n }\n\n onSelectedItemChange(newValue) {\n let rowData;\n if (!this.form || !this.table) {\n return;\n }\n\n if (newValue && newValue.length > 0 && !this.form.isSelected) {\n this.form.isSelected = true;\n }\n\n /*Update the rowdata of only that grid form that is associated with the specific grid on which row selection is being performed...\n * Since both the grid & gridform are associated with the same \"parentgrid\", match the same*/\n if (newValue && newValue.length > 0) {\n if (this.table.multiselect) {\n rowData = newValue[0];\n } else {\n rowData = newValue[newValue.length - 1];\n }\n\n this.setFormData(getClonedObject(rowData));\n /*If the form is already in update mode, call the form update function*/\n if (this.form.isUpdateMode) {\n this.form.edit();\n }\n } else {\n this.form.isSelected = false;\n this.setFormData('');\n this.form.clearData();\n }\n }\n\n onCancel() {\n this.form.isUpdateMode = false;\n if (this.isLayoutDialog) {\n this.closeDialog();\n }\n }\n\n onResult(operation, response, newForm, updateMode) {\n this.form.isUpdateMode = isDefined(updateMode) ? updateMode : newForm ? true : false;\n switch (operation) {\n case 'insert':\n if (this.table.gridOptions.isNavTypeScrollOrOndemand()) {\n this.table.isNewRowInserted = true;\n }\n if (newForm) {\n /*if new form is to be shown after insert, skip the highlight of the row*/\n this.table.gridfirstrowselect = false;\n this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response, true);\n } else {\n /*The new row would always be inserted at the end of all existing records. Hence navigate to the last page and highlight the inserted row.*/\n this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response);\n }\n break;\n case 'update':\n /*The updated row would be found in the current page itself. Hence simply highlight the row in the current page.*/\n if (newForm) {\n this.table.gridfirstrowselect = false;\n this.table.initiateSelectItem('current', response, true);\n } else {\n this.table.initiateSelectItem('current', response);\n }\n break;\n case 'delete':\n this.table.onRecordDelete();\n break;\n }\n this.table.updateVariable();\n if (this.isLayoutDialog) {\n /*if new form is to be shown after update or insert, don't close the dialog*/\n if (newForm) {\n if (operation === 'insert') {\n this.form.new();\n } else if (operation === 'update') {\n this.form.edit();\n }\n } else {\n this.closeDialog();\n }\n }\n }\n\n showErrorMessage() {\n this.app.notifyApp(this.appLocale.LABEL_ACCESS_DENIED, 'error');\n }\n\n // In dialog mode, on form render call the queued functions\n onFormReady(form) {\n this.form = form;\n setTimeout(() => {\n triggerFn(this.$queue.pop());\n });\n }\n}\n","<ng-content></ng-content>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/data/live-table/src/live-table.props.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.ts","../../../../../projects/components/widgets/data/live-table/src/live-table.component.html","../../../../../projects/components/widgets/data/live-table/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-livetable',\n new Map(\n [\n ['class', PROP_STRING],\n ['formlayout', PROP_STRING],\n ['name', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ]\n )\n );\n};\n","import { WmComponentsModule } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n Inject,\n Injector,\n Optional\n} from '@angular/core';\n\nimport {debounceTime} from 'rxjs/operators';\n\nimport {$appDigest, AbstractDialogService, App, getClonedObject, isDefined, triggerFn} from '@wm/core';\nimport {provideAsWidgetRef, StylableComponent, styler} from '@wm/components/base';\nimport {TableComponent} from '@wm/components/data/table';\n\nimport {registerProps} from './live-table.props';\n\ndeclare var $: any;\n\nconst DEFAULT_CLS = 'app-livegrid';\nconst WIDGET_CONFIG = {widgetType: 'wm-livetable', hostClass: DEFAULT_CLS};\n\n@Component({\n standalone: true,\n imports: [WmComponentsModule],\n selector: '[wmLiveTable]',\n templateUrl: './live-table.component.html',\n providers: [\n provideAsWidgetRef(LiveTableComponent)\n ]\n})\nexport class LiveTableComponent extends StylableComponent implements AfterContentInit {\n static initializeProps = registerProps();\n @ContentChild(TableComponent) table: TableComponent;\n\n form;\n isLayoutDialog: boolean;\n\n private dialogId;\n private $queue = [];\n\n private tableOptions: any = {\n 'multiselect': false,\n 'setGridEditMode': ''\n };\n\n constructor(\n inj: Injector,\n elRef: ElementRef,\n cdr: ChangeDetectorRef,\n private dialogService: AbstractDialogService,\n private app: App,\n @Attribute('formlayout') layoutType: string,\n @Attribute('dialogid') dialogId: string,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this);\n if (layoutType === 'dialog') {\n this.isLayoutDialog = true;\n this.dialogId = dialogId;\n }\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n if (this.table) {\n this.table._liveTableParent = this;\n this.table.datagridElement.datatable('option', this.tableOptions);\n\n this.table.selectedItemChange$\n .pipe(debounceTime(250))\n .subscribe(this.onSelectedItemChange.bind(this));\n\n if (!this.isLayoutDialog && !this.form) {\n this.table.datagridElement.datatable('option', {\n 'beforeRowUpdate' : () => {\n this.showErrorMessage();\n },\n 'beforeRowDelete' : () => {\n this.showErrorMessage();\n },\n 'beforeRowInsert' : () => {\n this.showErrorMessage();\n }\n });\n }\n }\n }\n\n openDialog() {\n this.dialogService.open(this.dialogId, this.viewParent);\n $appDigest();\n }\n\n closeDialog() {\n this.dialogService.close(this.dialogId, this.viewParent);\n }\n\n focusFirstInput() {\n const $firstInput = $(this.form.$element).find('input').first();\n $firstInput.focus();\n $firstInput.select();\n }\n\n onDialogOpen(action) {\n const attrs: Map<string, string> = this?.form?.formFields?.[0]?.$attrs ?? new Map();\n const hasDefault = [\"defaultvalue\", \"defaultvalue.bind\"].some(key => attrs.has(key));\n if (action == 'update'||!!hasDefault) {\n const firstFormField = $(\"form [wmformfield]\").first();\n if (firstFormField.find(\"div[widget='autocomplete']\").length != 1 && this?.form?.formFields?.[0]?.widgettype != 'autocomplete') { // prevent focusing first form field if widget is autocomplete\n this.focusFirstInput();\n }\n } else {\n this.focusFirstInput();\n }\n }\n\n setFormData(val) {\n if (!this.form.isDestroyed) {\n this.form.getWidget().formdata = val;\n }\n }\n\n private _addNewRow() {\n this.form.isSelected = true;\n this.setFormData('');\n\n this.form.new();\n\n if (this.isLayoutDialog) {\n this.onDialogOpen('add');\n }\n }\n\n addNewRow() {\n if (this.isLayoutDialog) {\n this.openDialog();\n this.$queue.push(this._addNewRow.bind(this));\n return;\n }\n\n this._addNewRow();\n }\n\n private _updateRow(row, eventName) {\n this.setFormData(row);\n this.form.isSelected = true;\n this.form.edit();\n\n if (this.isLayoutDialog) {\n this.form.isUpdateMode = (eventName === 'dblclick') ? this.form.updateMode : true;\n this.onDialogOpen('update');\n }\n }\n\n updateRow(row, eventName) {\n\n if (this.isLayoutDialog) {\n this.openDialog();\n this.$queue.push(this._updateRow.bind(this, row, eventName));\n return;\n }\n\n this._updateRow(row, eventName);\n }\n\n onSelectedItemChange(newValue) {\n let rowData;\n if (!this.form || !this.table) {\n return;\n }\n\n if (newValue && newValue.length > 0 && !this.form.isSelected) {\n this.form.isSelected = true;\n }\n\n /*Update the rowdata of only that grid form that is associated with the specific grid on which row selection is being performed...\n * Since both the grid & gridform are associated with the same \"parentgrid\", match the same*/\n if (newValue && newValue.length > 0) {\n if (this.table.multiselect) {\n rowData = newValue[0];\n } else {\n rowData = newValue[newValue.length - 1];\n }\n\n this.setFormData(getClonedObject(rowData));\n /*If the form is already in update mode, call the form update function*/\n if (this.form.isUpdateMode) {\n this.form.edit();\n }\n } else {\n this.form.isSelected = false;\n this.setFormData('');\n this.form.clearData();\n }\n }\n\n onCancel() {\n this.form.isUpdateMode = false;\n if (this.isLayoutDialog) {\n this.closeDialog();\n }\n }\n\n onResult(operation, response, newForm, updateMode) {\n this.form.isUpdateMode = isDefined(updateMode) ? updateMode : newForm ? true : false;\n switch (operation) {\n case 'insert':\n if (this.table.gridOptions.isNavTypeScrollOrOndemand()) {\n this.table.isNewRowInserted = true;\n }\n if (newForm) {\n /*if new form is to be shown after insert, skip the highlight of the row*/\n this.table.gridfirstrowselect = false;\n this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response, true);\n } else {\n /*The new row would always be inserted at the end of all existing records. Hence navigate to the last page and highlight the inserted row.*/\n this.table.initiateSelectItem(this.table.getNavigationTargetBySortInfo(), response);\n }\n break;\n case 'update':\n /*The updated row would be found in the current page itself. Hence simply highlight the row in the current page.*/\n if (newForm) {\n this.table.gridfirstrowselect = false;\n this.table.initiateSelectItem('current', response, true);\n } else {\n this.table.initiateSelectItem('current', response);\n }\n break;\n case 'delete':\n this.table.onRecordDelete();\n break;\n }\n this.table.updateVariable();\n if (this.isLayoutDialog) {\n /*if new form is to be shown after update or insert, don't close the dialog*/\n if (newForm) {\n if (operation === 'insert') {\n this.form.new();\n } else if (operation === 'update') {\n this.form.edit();\n }\n } else {\n this.closeDialog();\n }\n }\n }\n\n showErrorMessage() {\n this.app.notifyApp(this.appLocale.LABEL_ACCESS_DENIED, 'error');\n }\n\n // In dialog mode, on form render call the queued functions\n onFormReady(form) {\n this.form = form;\n setTimeout(() => {\n triggerFn(this.$queue.pop());\n });\n }\n}\n","<ng-content></ng-content>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -237,7 +237,7 @@
237
237
  const ctx_r1 = i0__namespace.ɵɵnextContext();
238
238
  i0__namespace.ɵɵclassMapInterpolate1("pagination advanced ", ctx_r1.navigationClass, "");
239
239
  i0__namespace.ɵɵadvance();
240
- i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange ? 1 : -1);
240
+ i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange && (ctx_r1.pageSizeOptions == null ? null : ctx_r1.pageSizeOptions[0]) < (ctx_r1.rowSummary == null ? null : ctx_r1.rowSummary.totalRecords) ? 1 : -1);
241
241
  i0__namespace.ɵɵadvance();
242
242
  i0__namespace.ɵɵconditional(!(ctx_r1.dataSize <= ctx_r1.maxResults) ? 2 : -1);
243
243
  i0__namespace.ɵɵadvance();
@@ -346,7 +346,7 @@
346
346
  const ctx_r1 = i0__namespace.ɵɵnextContext();
347
347
  i0__namespace.ɵɵclassMapInterpolate1("pager ", ctx_r1.navigationClass, "");
348
348
  i0__namespace.ɵɵadvance();
349
- i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange ? 1 : -1);
349
+ i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange && (ctx_r1.pageSizeOptions == null ? null : ctx_r1.pageSizeOptions[0]) < (ctx_r1.rowSummary == null ? null : ctx_r1.rowSummary.totalRecords) ? 1 : -1);
350
350
  i0__namespace.ɵɵadvance();
351
351
  i0__namespace.ɵɵproperty("ngClass", i0__namespace.ɵɵpureFunction1(12, _c2, ctx_r1.isDisablePrevious));
352
352
  i0__namespace.ɵɵadvance();
@@ -448,7 +448,7 @@
448
448
  i0__namespace.ɵɵtemplate(0, PaginationComponent_Conditional_2_Conditional_0_Template, 9, 4)(1, PaginationComponent_Conditional_2_Conditional_1_Template, 1, 13, "pagination", 36);
449
449
  } if (rf & 2) {
450
450
  const ctx_r1 = i0__namespace.ɵɵnextContext();
451
- i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange ? 0 : -1);
451
+ i0__namespace.ɵɵconditional(ctx_r1.allowpagesizechange && (ctx_r1.pageSizeOptions == null ? null : ctx_r1.pageSizeOptions[0]) < (ctx_r1.rowSummary == null ? null : ctx_r1.rowSummary.totalRecords) ? 0 : -1);
452
452
  i0__namespace.ɵɵadvance();
453
453
  i0__namespace.ɵɵconditional(!(ctx_r1.dataSize <= ctx_r1.maxResults) ? 1 : -1);
454
454
  } }
@@ -1216,7 +1216,7 @@
1216
1216
  type: i0.Component,
1217
1217
  args: [{ standalone: true, imports: [i1.CommonModule, base.WmComponentsModule, i2.FormsModule, i3.PaginationModule, i4.BsDropdownModule, menu.MenuComponent], selector: '[wmPagination]', providers: [
1218
1218
  base.provideAsWidgetRef(PaginationComponent)
1219
- ], template: "\n@if (navcontrols === 'Classic') {\n<ul class=\"pagination advanced {{navigationClass}}\">\n @if (allowpagesizechange) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\" aria-label=\"Change Page Number\">\n <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n [ngModelOptions]=\"{standalone: true}\"\n type=\"number\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (showrecordcount) {\n <li class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n }\n</ul>\n}\n@if (navcontrols === 'Pager') {\n <ul class=\"pager {{navigationClass}}\">\n @if (allowpagesizechange) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n </ul>\n}\n\n@if (navcontrols === 'Basic') {\n @if (allowpagesizechange) {\n <div class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE }} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </div>\n @if (rowSummary?.totalRecords) {\n <div class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </div>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n }\n}\n\n@if (navcontrols === 'Basic' && showrecordcount) {\n <ul class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n </ul>\n}\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n @if (page.active) {\n <span class=\"sr-only\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n }\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n" }]
1219
+ ], template: "\n@if (navcontrols === 'Classic') {\n<ul class=\"pagination advanced {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableFirst}\">\n <a [title]=\"appLocale.LABEL_FIRST\" name=\"first\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableFirst\"\n (click)=\"navigatePage('first', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-first-page\"></i></span>\n <span class=\"sr-only\">Go to first page {{ isDisableFirst ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a [title]=\"appLocale.LABEL_PREVIOUS\" name=\"prev\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisablePrevious\"\n (click)=\"navigatePage('prev', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n <span class=\"sr-only\">Go to previous page {{ isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"pagecount disabled\">\n <a href=\"javascript:void(0);\" aria-label=\"Change Page Number\">\n <input [(ngModel)]=\"dn.currentPage\" [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount\" [disabled]=\"isDisableCurrent\"\n [ngModelOptions]=\"{standalone: true}\"\n type=\"number\"\n (keydown)=\"onKeyDown($event)\" (change)=\"onModelChange($event)\" class=\"form-control\"/>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li class=\"disabled\">\n <a [hidden]=\"isDisableCount\"> / {{pageCount}}</a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableNext}\">\n <a [title]=\"appLocale.LABEL_NEXT\" name=\"next\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableNext\"\n (click)=\"navigatePage('next', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n <span class=\"sr-only\">Go to next page {{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (!(dataSize<=maxResults)) {\n <li [ngClass]=\"{'disabled':isDisableLast}\">\n <a [title]=\"appLocale.LABEL_LAST\" name=\"last\" href=\"javascript:void(0);\"\n [attr.aria-disabled]=\"isDisableLast\"\n (click)=\"navigatePage('last', $event)\">\n <span aria-hidden=\"true\"><i class=\"wi wi-last-page\"></i></span>\n <span class=\"sr-only\">Go to last page {{ isDisableLast ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n }\n @if (showrecordcount) {\n <li class=\"totalcount disabled\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n }\n</ul>\n}\n@if (navcontrols === 'Pager') {\n <ul class=\"pager {{navigationClass}}\">\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <li class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE}} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </li>\n @if (rowSummary?.totalRecords) {\n <li class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </li>\n }\n }\n\n <li class=\"previous\" [ngClass]=\"{'disabled':isDisablePrevious}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"isDisablePrevious\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-left\"></i></span>\n {{appLocale.LABEL_PREVIOUS}}\n <span class=\"sr-only\">{{ isDisablePrevious ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n <li class=\"next\" [ngClass]=\"{'disabled':isDisableNext}\">\n <a href=\"javascript:void(0);\" (click)=\"navigatePage('next', $event)\"\n [attr.aria-disabled]=\"isDisableNext\">\n <span aria-hidden=\"true\"><i class=\"wi wi-chevron-right\"></i></span>\n {{appLocale.LABEL_NEXT}}\n <span class=\"sr-only\">{{ isDisableNext ? ' , Disabled' : ''}}</span>\n </a>\n </li>\n </ul>\n}\n\n@if (navcontrols === 'Basic') {\n @if (allowpagesizechange && pageSizeOptions?.[0]<rowSummary?.totalRecords) {\n <div class=\"items-per-page\">\n <label [title]=\"appLocale.LABEL_ITEMS_PER_PAGE\" class=\"app-label\">{{appLocale.LABEL_ITEMS_PER_PAGE }} :</label>\n\n <div class=\"btn-group\" dropdown container=\"body\" (isOpenChange)=\"onOpenChange($event)\">\n <button id=\"button-basic\" dropdownToggle type=\"button\" class=\"btn app-button dropdown-toggle\"\n aria-controls=\"dropdown-basic\">\n {{maxResults}} <span class=\"caret\"></span>\n </button>\n <ul id=\"dropdown-basic\" *dropdownMenu class=\"dropdown-menu pagesize-options\"\n role=\"menu\" aria-labelledby=\"button-basic\">\n @for (option of pageSizeOptions; track option; let i = $index) {\n <li role=\"menuitem\" [ngClass]=\"{ 'active': option == maxResults }\">\n <a class=\"dropdown-item\" (click)=\"onPageSizeChange($event, option)\" (keydown)=\"onDropdownKeydown($event, i)\"\n [attr.tabindex]=\"i === focusedIndex ? 0 : -1\">{{option}}</a>\n </li>\n }\n </ul>\n </div>\n </div>\n @if (rowSummary?.totalRecords) {\n <div class=\"item-range\">\n <div>\n <span>{{rowSummary.startIndex}} - {{rowSummary.endIndex}}</span>\n <span>of</span>\n <span>{{rowSummary.totalRecords}}</span>\n </div>\n </div>\n }\n }\n @if (!(dataSize<=maxResults)) {\n <pagination class=\"pagination basic\" [ngClass]=\"navigationClass\" role=\"navigation\"\n [itemsPerPage]=\"maxResults\" [totalItems]=\"dataSize\"\n (pageChanged)=\"pageChanged($event)\" [ngModelOptions]=\"{standalone:true}\" [ngModel]=\"dn.currentPage\"\n [attr.aria-label]=\"'Showing Page ' + dn.currentPage + ' of ' + pageCount + ' pages'\"\n [boundaryLinks]=\"boundarylinks\" [maxSize]=\"maxsize\"\n [directionLinks]=\"directionlinks\"\n firstText=\"Firtst\" lastText=\"Last\"\n [customPreviousTemplate]=\"prevTemplate\"\n [customNextTemplate]=\"nextTemplate\"\n [customPageTemplate]=\"pageTemplate\"></pagination>\n }\n}\n\n@if (navcontrols === 'Basic' && showrecordcount) {\n <ul class=\"pagination\">\n <li class=\"totalcount disabled basiccount\">\n <a href=\"javascript:void(0);\" tabindex=\"-1\" aria-disabled=\"true\">{{appLocale.LABEL_TOTAL_RECORDS}}: {{dataSize}}</a>\n </li>\n </ul>\n}\n\n<ng-template #pageTemplate let-page>\n <span class=\"sr-only\" [attr.data-isacitvepage]=\"page.active\">{{'Page '}}</span>\n {{page.number}}\n @if (page.active) {\n <span class=\"sr-only\"> {{', Showing page ' + page.number + ' of ' + pageCount}}</span>\n }\n</ng-template>\n<ng-template #prevTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Previous page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n<ng-template #nextTemplate let-disabled=\"disabled\">\n <span class=\"sr-only\" [attr.data-isdisabled]=\"disabled\">Go to Next page {{disabled ? ', Disabled' : ''}}</span>\n</ng-template>\n" }]
1220
1220
  }], () => [{ type: i0__namespace.Injector }, { type: undefined, decorators: [{
1221
1221
  type: i0.SkipSelf
1222
1222
  }, {