@wavemaker-ai/app-ng-runtime 1.0.0-rc.314 → 1.0.0-rc.319

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 (106) hide show
  1. package/build-task/bundles/index.umd.js +16 -7
  2. package/build-task/fesm2022/index.mjs +16 -7
  3. package/build-task/fesm2022/index.mjs.map +1 -1
  4. package/components/base/bundles/index.umd.js +301 -4
  5. package/components/base/fesm2022/index.mjs +300 -4
  6. package/components/base/fesm2022/index.mjs.map +1 -1
  7. package/components/base/index.d.ts +106 -2
  8. package/components/basic/anchor/bundles/index.umd.js +4 -5
  9. package/components/basic/anchor/fesm2022/index.mjs +4 -5
  10. package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
  11. package/components/basic/anchor/index.d.ts +1 -0
  12. package/components/basic/icon/bundles/index.umd.js +3 -3
  13. package/components/basic/icon/fesm2022/index.mjs +4 -4
  14. package/components/basic/icon/fesm2022/index.mjs.map +1 -1
  15. package/components/basic/icon/index.d.ts +1 -0
  16. package/components/basic/search/bundles/index.umd.js +6 -3
  17. package/components/basic/search/fesm2022/index.mjs +7 -4
  18. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  19. package/components/basic/search/index.d.ts +3 -0
  20. package/components/basic/spinner/bundles/index.umd.js +5 -3
  21. package/components/basic/spinner/fesm2022/index.mjs +6 -4
  22. package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
  23. package/components/basic/spinner/index.d.ts +1 -0
  24. package/components/chart/bundles/index.umd.js +4 -3
  25. package/components/chart/fesm2022/index.mjs +5 -4
  26. package/components/chart/fesm2022/index.mjs.map +1 -1
  27. package/components/chart/index.d.ts +1 -0
  28. package/components/containers/accordion/bundles/index.umd.js +4 -3
  29. package/components/containers/accordion/fesm2022/index.mjs +5 -4
  30. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  31. package/components/containers/accordion/index.d.ts +1 -0
  32. package/components/containers/panel/bundles/index.umd.js +3 -3
  33. package/components/containers/panel/fesm2022/index.mjs +4 -4
  34. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  35. package/components/containers/panel/index.d.ts +3 -0
  36. package/components/containers/tabs/bundles/index.umd.js +5 -4
  37. package/components/containers/tabs/fesm2022/index.mjs +6 -5
  38. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  39. package/components/containers/wizard/bundles/index.umd.js +8 -6
  40. package/components/containers/wizard/fesm2022/index.mjs +9 -7
  41. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  42. package/components/containers/wizard/index.d.ts +2 -0
  43. package/components/data/card/bundles/index.umd.js +3 -3
  44. package/components/data/card/fesm2022/index.mjs +4 -4
  45. package/components/data/card/fesm2022/index.mjs.map +1 -1
  46. package/components/data/form/bundles/index.umd.js +6 -3
  47. package/components/data/form/fesm2022/index.mjs +7 -4
  48. package/components/data/form/fesm2022/index.mjs.map +1 -1
  49. package/components/data/form/index.d.ts +2 -0
  50. package/components/data/list/bundles/index.umd.js +5 -3
  51. package/components/data/list/fesm2022/index.mjs +6 -4
  52. package/components/data/list/fesm2022/index.mjs.map +1 -1
  53. package/components/data/list/index.d.ts +2 -0
  54. package/components/data/table/bundles/index.umd.js +4 -3
  55. package/components/data/table/fesm2022/index.mjs +5 -4
  56. package/components/data/table/fesm2022/index.mjs.map +1 -1
  57. package/components/data/table/index.d.ts +1 -0
  58. package/components/dialogs/default/bundles/index.umd.js +2 -2
  59. package/components/dialogs/default/fesm2022/index.mjs +3 -3
  60. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  61. package/components/input/button/bundles/index.umd.js +4 -5
  62. package/components/input/button/fesm2022/index.mjs +4 -5
  63. package/components/input/button/fesm2022/index.mjs.map +1 -1
  64. package/components/input/button/index.d.ts +3 -0
  65. package/components/input/checkbox/bundles/index.umd.js +6 -4
  66. package/components/input/checkbox/fesm2022/index.mjs +7 -5
  67. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  68. package/components/input/checkbox/index.d.ts +2 -0
  69. package/components/input/file-upload/bundles/index.umd.js +5 -3
  70. package/components/input/file-upload/fesm2022/index.mjs +6 -4
  71. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  72. package/components/input/file-upload/index.d.ts +3 -0
  73. package/components/input/rating/bundles/index.umd.js +9 -3
  74. package/components/input/rating/fesm2022/index.mjs +10 -4
  75. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  76. package/components/input/rating/index.d.ts +6 -0
  77. package/components/input/slider/bundles/index.umd.js +5 -3
  78. package/components/input/slider/fesm2022/index.mjs +6 -4
  79. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  80. package/components/input/slider/index.d.ts +2 -0
  81. package/components/input/switch/bundles/index.umd.js +6 -3
  82. package/components/input/switch/fesm2022/index.mjs +7 -4
  83. package/components/input/switch/fesm2022/index.mjs.map +1 -1
  84. package/components/input/switch/index.d.ts +2 -0
  85. package/components/input/text/bundles/index.umd.js +7 -5
  86. package/components/input/text/fesm2022/index.mjs +8 -6
  87. package/components/input/text/fesm2022/index.mjs.map +1 -1
  88. package/components/input/text/index.d.ts +2 -0
  89. package/components/navigation/menu/bundles/index.umd.js +4 -3
  90. package/components/navigation/menu/fesm2022/index.mjs +5 -4
  91. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  92. package/components/navigation/menu/index.d.ts +1 -0
  93. package/components/navigation/navbar/bundles/index.umd.js +5 -5
  94. package/components/navigation/navbar/fesm2022/index.mjs +5 -5
  95. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  96. package/components/navigation/navbar/index.d.ts +1 -0
  97. package/npm-shrinkwrap.json +2 -2
  98. package/package-lock.json +2 -2
  99. package/package.json +1 -1
  100. package/runtime/base/bundles/index.umd.js +23 -1
  101. package/runtime/base/fesm2022/index.mjs +23 -1
  102. package/runtime/base/fesm2022/index.mjs.map +1 -1
  103. package/runtime/base/index.d.ts +5 -0
  104. package/transpiler/bundles/index.umd.js +2 -0
  105. package/transpiler/fesm2022/index.mjs +2 -0
  106. package/transpiler/fesm2022/index.mjs.map +1 -1
@@ -34,7 +34,7 @@
34
34
  }
35
35
  calibrate() {
36
36
  const activeTabIndex = this.tabs.getActiveTabIndex();
37
- const panes = this._$el.find('>.tab-pane');
37
+ const panes = this._$el.find('div[wmTabPane]');
38
38
  let activeTabVisibleIndex = 0;
39
39
  let noOfVisiblePanes = 0;
40
40
  let visiblePanes = [];
@@ -139,6 +139,7 @@
139
139
  ['isdynamic', base.PROP_BOOLEAN], // internal property
140
140
  ['name', base.PROP_STRING],
141
141
  ['paneicon', base.PROP_STRING],
142
+ ['paneiconurl', base.PROP_STRING],
142
143
  ['show', { value: true, ...base.PROP_BOOLEAN }],
143
144
  ['smoothscroll', { value: false, ...base.PROP_BOOLEAN }],
144
145
  ['title', { value: 'Tab Title', ...base.PROP_STRING }],
@@ -757,13 +758,13 @@
757
758
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: TabsComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.DynamicComponentRefProvider }, { token: 'transition', attribute: true }, { token: 'tabsposition', attribute: true }, { token: i1__namespace.StatePersistence }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
758
759
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: TabsComponent, isStandalone: true, selector: "div[wmTabs]", host: { properties: { "attr.icon-position": "this.iconposition" } }, providers: [
759
760
  base.provideAsWidgetRef(TabsComponent)
760
- ], queries: [{ propertyName: "panes", predicate: exports.TabPaneComponent }], exportAs: ["wmTabs"], usesInheritance: true, ngImport: i0__namespace, template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: i2.CommonModule }, { kind: "directive", type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }] }); }
761
+ ], queries: [{ propertyName: "panes", predicate: exports.TabPaneComponent }], exportAs: ["wmTabs"], usesInheritance: true, ngImport: i0__namespace, template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <wm-app-icon [iconclass]=\"pane.paneicon\" [iconurl]=\"pane.paneiconurl\" alt=\"Tab icon\"></wm-app-icon>\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: i2.CommonModule }, { kind: "directive", type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: base.WmAppIconComponent, selector: "wm-app-icon", inputs: ["iconclass", "iconurl", "defaultIconClass", "defaultClasses", "iconStyle", "alt"] }] }); }
761
762
  }
762
763
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: TabsComponent, decorators: [{
763
764
  type: i0.Component,
764
- args: [{ standalone: true, imports: [i2.CommonModule, base.TextContentDirective], selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
765
+ args: [{ standalone: true, imports: [i2.CommonModule, base.TextContentDirective, base.WmAppIconComponent], selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
765
766
  base.provideAsWidgetRef(TabsComponent)
766
- ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n" }]
767
+ ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <wm-app-icon [iconclass]=\"pane.paneicon\" [iconurl]=\"pane.paneiconurl\" alt=\"Tab icon\"></wm-app-icon>\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n" }]
767
768
  }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: i1__namespace.DynamicComponentRefProvider }, { type: undefined, decorators: [{
768
769
  type: i0.Attribute,
769
770
  args: ['transition']
@@ -1,6 +1,6 @@
1
1
  import * as i2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
- import { PROP_STRING, PROP_ANY, PROP_NUMBER, PROP_BOOLEAN, register, AUTO_LAYOUT_PROPS, StylableComponent, getCurrentWidgets, styler, APPLY_STYLES_TYPE, RedrawableDirective, provideAsWidgetRef, AutoLayout, createArrayFrom, TextContentDirective } from '@wm/components/base';
3
+ import { PROP_STRING, PROP_ANY, PROP_NUMBER, PROP_BOOLEAN, register, AUTO_LAYOUT_PROPS, StylableComponent, getCurrentWidgets, styler, APPLY_STYLES_TYPE, RedrawableDirective, provideAsWidgetRef, AutoLayout, createArrayFrom, TextContentDirective, WmAppIconComponent } from '@wm/components/base';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, Injector, ContentChildren, HostBinding, Attribute, Inject, Optional, Component } from '@angular/core';
6
6
  import * as i1 from '@wm/core';
@@ -18,7 +18,7 @@ class TabsAnimator extends SwipeAnimation {
18
18
  }
19
19
  calibrate() {
20
20
  const activeTabIndex = this.tabs.getActiveTabIndex();
21
- const panes = this._$el.find('>.tab-pane');
21
+ const panes = this._$el.find('div[wmTabPane]');
22
22
  let activeTabVisibleIndex = 0;
23
23
  let noOfVisiblePanes = 0;
24
24
  let visiblePanes = [];
@@ -123,6 +123,7 @@ const registerProps = () => {
123
123
  ['isdynamic', PROP_BOOLEAN], // internal property
124
124
  ['name', PROP_STRING],
125
125
  ['paneicon', PROP_STRING],
126
+ ['paneiconurl', PROP_STRING],
126
127
  ['show', { value: true, ...PROP_BOOLEAN }],
127
128
  ['smoothscroll', { value: false, ...PROP_BOOLEAN }],
128
129
  ['title', { value: 'Tab Title', ...PROP_STRING }],
@@ -741,13 +742,13 @@ class TabsComponent extends StylableComponent {
741
742
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: TabsComponent, deps: [{ token: i0.Injector }, { token: i1.DynamicComponentRefProvider }, { token: 'transition', attribute: true }, { token: 'tabsposition', attribute: true }, { token: i1.StatePersistence }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
742
743
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: TabsComponent, isStandalone: true, selector: "div[wmTabs]", host: { properties: { "attr.icon-position": "this.iconposition" } }, providers: [
743
744
  provideAsWidgetRef(TabsComponent)
744
- ], queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["wmTabs"], usesInheritance: true, ngImport: i0, template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }] }); }
745
+ ], queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["wmTabs"], usesInheritance: true, ngImport: i0, template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <wm-app-icon [iconclass]=\"pane.paneicon\" [iconurl]=\"pane.paneiconurl\" alt=\"Tab icon\"></wm-app-icon>\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: WmAppIconComponent, selector: "wm-app-icon", inputs: ["iconclass", "iconurl", "defaultIconClass", "defaultClasses", "iconStyle", "alt"] }] }); }
745
746
  }
746
747
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: TabsComponent, decorators: [{
747
748
  type: Component,
748
- args: [{ standalone: true, imports: [CommonModule, TextContentDirective], selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
749
+ args: [{ standalone: true, imports: [CommonModule, TextContentDirective, WmAppIconComponent], selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
749
750
  provideAsWidgetRef(TabsComponent)
750
- ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n" }]
751
+ ], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <wm-app-icon [iconclass]=\"pane.paneicon\" [iconurl]=\"pane.paneiconurl\" alt=\"Tab icon\"></wm-app-icon>\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n" }]
751
752
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.DynamicComponentRefProvider }, { type: undefined, decorators: [{
752
753
  type: Attribute,
753
754
  args: ['transition']
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['autotabactivation', {value: true, ...PROP_BOOLEAN}]\n ]\n );\n register('wm-tabs', props);\n};\n","import { AUTO_LAYOUT_PROPS, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}],\n ...AUTO_LAYOUT_PROPS\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n inject,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {App, noop, removeAttr} from '@wm/core';\n\nimport {\n APPLY_STYLES_TYPE,\n AutoLayout,\n getCurrentWidgets,\n IWidgetConfig,\n provideAsWidgetRef,\n RedrawableDirective,\n StylableComponent,\n styler\n} from '@wm/components/base';\nimport {registerProps} from './tab-pane.props';\nimport {TabsComponent} from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@AutoLayout({ targetSelector: '.tab-body' })\n@Component({\n standalone: true,\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n private _currentTabWidgets = {};\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n private tabsRef = inject(TabsComponent);\n constructor(\n inj: Injector,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n private app: App\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n get currentTabWidgets () {\n return getCurrentWidgets(this.nativeElement, this._currentTabWidgets);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n if (this.reDrawableComponents) {\n this.reDrawableComponents = null;\n }\n\n // MEMORY LEAK FIX: Clear lazy load function reference\n this.$lazyLoad = null;\n\n super.ngOnDestroy();\n }\n}\n","<div class=\"tab-body\" partial-container-target >\n <ng-content></ng-content>\n</div>","import {CommonModule} from '@angular/common';\nimport {\n APPLY_STYLES_TYPE,\n createArrayFrom,\n IWidgetConfig,\n provideAsWidgetRef,\n StylableComponent,\n styler,\n TextContentDirective\n} from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n isDefined,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\n\nimport {TabsAnimator} from './tabs.animator';\nimport {registerProps} from './tabs.props';\nimport {TabPaneComponent} from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective],\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n public autoActivation:boolean;\n private panesChangesSubscription: any;\n private dynamicComponentRefs: any[] = [];\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n // MEMORY LEAK FIX: Store component reference for cleanup\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj})\n .then(componentRef => {\n if (componentRef) {\n this.dynamicComponentRefs.push(componentRef);\n }\n });\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n public getWidgets(widgteName: string, index?: number) {\n let $target;\n const retVal = [];\n\n if (!widgteName) {\n return;\n }\n\n if (!isDefined(index)) {\n forEach(this.panes.toArray(), (el) => {\n $target = get(el.currentTabWidgets, widgteName);\n if ($target) {\n retVal.push($target);\n }\n });\n\n return retVal;\n }\n index = +index || 0;\n\n $target = get(this.panes.toArray(), index);\n\n if ($target) {\n return [get($target.currentTabWidgets, widgteName)];\n }\n }\n\n get currentTabPaneIndex() {\n return this.getActiveTabIndex();\n }\n\n get isFirstTabPane(): boolean {\n return this.panes.first.widgetId === this.activeTab.widgetId;\n }\n\n get isLastTabPane(): boolean {\n return this.panes.last.widgetId === this.activeTab.widgetId;\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else if (key === 'autotabactivation'){\n this.autoActivation = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n let newPane;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n newPane = this.autoActivation ? (this.prev(null, true), null) : this.getSelectableTabBeforeIndex(this.getSelectedPaneIndex());\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n newPane = this.autoActivation ? (this.next(null, true), null) : this.getSelectableTabAfterIndex(this.getSelectedPaneIndex());\n break;\n\n case 'Enter': {\n const pane = this.getSelectableTabAfterIndex(this.getSelectedPaneIndex()-1);\n if (pane) {\n const enterEvent = new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', bubbles: true, cancelable: true});\n pane.nativeElement.dispatchEvent(enterEvent);\n pane.select(enterEvent, true);\n }\n event.preventDefault();\n return ;\n }\n default:\n return;\n }\n if (newPane) {\n this.nativeElement.querySelector('li.select')?.classList.remove('select');\n this.nativeElement.querySelector(`li[data-paneid=\"${newPane.widgetId}\"]`)?.classList.add('select');\n }\n event.preventDefault();\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panesChangesSubscription = this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n\n getSelectedPaneIndex() {\n const index = this.panes.toArray().findIndex(pane =>\n this.nativeElement.querySelector(`li[data-paneid=\"${pane.widgetId}\"]`)?.classList.contains(\"select\"));\n return index >= 0 ? index : this.getActiveTabIndex();\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Unsubscribe from panes changes\n if (this.panesChangesSubscription) {\n this.panesChangesSubscription.unsubscribe();\n this.panesChangesSubscription = null;\n }\n\n // MEMORY LEAK FIX: Destroy all dynamically created component instances\n if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {\n this.dynamicComponentRefs.forEach(componentRef => {\n if (componentRef && componentRef.destroy) {\n componentRef.destroy();\n }\n });\n this.dynamicComponentRefs = [];\n }\n\n // MEMORY LEAK FIX: Clear dynamic context\n if (this._dynamicContext) {\n Object.keys(this._dynamicContext).forEach(key => {\n delete this._dynamicContext[key];\n });\n this._dynamicContext = null;\n }\n\n // MEMORY LEAK FIX: Clear dynamic tabs array\n if (this.dynamicTabs) {\n this.dynamicTabs = [];\n }\n\n // MEMORY LEAK FIX: Destroy tabs animator\n if (this.tabsAnimator) {\n // TabsAnimator may have internal subscriptions or timers\n this.tabsAnimator = null;\n }\n\n // MEMORY LEAK FIX: Clear field definitions and references\n this.fieldDefs = null;\n this.activeTab = null;\n\n super.ngOnDestroy();\n }\n}\n","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('div[wmTabPane]');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['autotabactivation', {value: true, ...PROP_BOOLEAN}]\n ]\n );\n register('wm-tabs', props);\n};\n","import { AUTO_LAYOUT_PROPS, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['paneiconurl', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}],\n ...AUTO_LAYOUT_PROPS\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n inject,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {App, noop, removeAttr} from '@wm/core';\n\nimport {\n APPLY_STYLES_TYPE,\n AutoLayout,\n getCurrentWidgets,\n IWidgetConfig,\n provideAsWidgetRef,\n RedrawableDirective,\n StylableComponent,\n styler\n} from '@wm/components/base';\nimport {registerProps} from './tab-pane.props';\nimport {TabsComponent} from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@AutoLayout({ targetSelector: '.tab-body' })\n@Component({\n standalone: true,\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n private _currentTabWidgets = {};\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n private tabsRef = inject(TabsComponent);\n constructor(\n inj: Injector,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n private app: App\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n get currentTabWidgets () {\n return getCurrentWidgets(this.nativeElement, this._currentTabWidgets);\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n if (this.reDrawableComponents) {\n this.reDrawableComponents = null;\n }\n\n // MEMORY LEAK FIX: Clear lazy load function reference\n this.$lazyLoad = null;\n\n super.ngOnDestroy();\n }\n}\n","<div class=\"tab-body\" partial-container-target >\n <ng-content></ng-content>\n</div>","import {CommonModule} from '@angular/common';\nimport {\n APPLY_STYLES_TYPE,\n createArrayFrom,\n IWidgetConfig,\n provideAsWidgetRef,\n StylableComponent,\n styler,\n TextContentDirective,\n WmAppIconComponent\n} from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n isDefined,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\n\nimport {TabsAnimator} from './tabs.animator';\nimport {registerProps} from './tabs.props';\nimport {TabPaneComponent} from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective, WmAppIconComponent],\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n public autoActivation:boolean;\n private panesChangesSubscription: any;\n private dynamicComponentRefs: any[] = [];\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n // MEMORY LEAK FIX: Store component reference for cleanup\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj})\n .then(componentRef => {\n if (componentRef) {\n this.dynamicComponentRefs.push(componentRef);\n }\n });\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n public getWidgets(widgteName: string, index?: number) {\n let $target;\n const retVal = [];\n\n if (!widgteName) {\n return;\n }\n\n if (!isDefined(index)) {\n forEach(this.panes.toArray(), (el) => {\n $target = get(el.currentTabWidgets, widgteName);\n if ($target) {\n retVal.push($target);\n }\n });\n\n return retVal;\n }\n index = +index || 0;\n\n $target = get(this.panes.toArray(), index);\n\n if ($target) {\n return [get($target.currentTabWidgets, widgteName)];\n }\n }\n\n get currentTabPaneIndex() {\n return this.getActiveTabIndex();\n }\n\n get isFirstTabPane(): boolean {\n return this.panes.first.widgetId === this.activeTab.widgetId;\n }\n\n get isLastTabPane(): boolean {\n return this.panes.last.widgetId === this.activeTab.widgetId;\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else if (key === 'autotabactivation'){\n this.autoActivation = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n let newPane;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n newPane = this.autoActivation ? (this.prev(null, true), null) : this.getSelectableTabBeforeIndex(this.getSelectedPaneIndex());\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n newPane = this.autoActivation ? (this.next(null, true), null) : this.getSelectableTabAfterIndex(this.getSelectedPaneIndex());\n break;\n\n case 'Enter': {\n const pane = this.getSelectableTabAfterIndex(this.getSelectedPaneIndex()-1);\n if (pane) {\n const enterEvent = new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', bubbles: true, cancelable: true});\n pane.nativeElement.dispatchEvent(enterEvent);\n pane.select(enterEvent, true);\n }\n event.preventDefault();\n return ;\n }\n default:\n return;\n }\n if (newPane) {\n this.nativeElement.querySelector('li.select')?.classList.remove('select');\n this.nativeElement.querySelector(`li[data-paneid=\"${newPane.widgetId}\"]`)?.classList.add('select');\n }\n event.preventDefault();\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panesChangesSubscription = this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n\n getSelectedPaneIndex() {\n const index = this.panes.toArray().findIndex(pane =>\n this.nativeElement.querySelector(`li[data-paneid=\"${pane.widgetId}\"]`)?.classList.contains(\"select\"));\n return index >= 0 ? index : this.getActiveTabIndex();\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Unsubscribe from panes changes\n if (this.panesChangesSubscription) {\n this.panesChangesSubscription.unsubscribe();\n this.panesChangesSubscription = null;\n }\n\n // MEMORY LEAK FIX: Destroy all dynamically created component instances\n if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {\n this.dynamicComponentRefs.forEach(componentRef => {\n if (componentRef && componentRef.destroy) {\n componentRef.destroy();\n }\n });\n this.dynamicComponentRefs = [];\n }\n\n // MEMORY LEAK FIX: Clear dynamic context\n if (this._dynamicContext) {\n Object.keys(this._dynamicContext).forEach(key => {\n delete this._dynamicContext[key];\n });\n this._dynamicContext = null;\n }\n\n // MEMORY LEAK FIX: Clear dynamic tabs array\n if (this.dynamicTabs) {\n this.dynamicTabs = [];\n }\n\n // MEMORY LEAK FIX: Destroy tabs animator\n if (this.tabsAnimator) {\n // TabsAnimator may have internal subscriptions or timers\n this.tabsAnimator = null;\n }\n\n // MEMORY LEAK FIX: Clear field definitions and references\n this.fieldDefs = null;\n this.activeTab = null;\n\n super.ngOnDestroy();\n }\n}\n","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <wm-app-icon [iconclass]=\"pane.paneicon\" [iconurl]=\"pane.paneiconurl\" alt=\"Tab icon\"></wm-app-icon>\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
@@ -52,9 +52,11 @@
52
52
  ['class', base.PROP_STRING],
53
53
  ['content', base.PROP_STRING],
54
54
  ['doneiconclass', { value: 'wi wi-done', ...base.PROP_STRING }],
55
+ ['doneiconurl', base.PROP_STRING],
55
56
  ['dynamicStepIndex', base.PROP_NUMBER], // internal property
56
57
  ['enableskip', { value: false, ...base.PROP_BOOLEAN }],
57
58
  ['iconclass', { value: 'wi wi-person', ...base.PROP_STRING }],
59
+ ['iconurl', base.PROP_STRING],
58
60
  ['isdynamic', base.PROP_STRING], // internal property
59
61
  ['name', base.PROP_STRING],
60
62
  ['show', { value: true, ...base.PROP_BOOLEAN }],
@@ -293,11 +295,11 @@
293
295
  }
294
296
  /** Default matches wm-wizardstep props; used for icon stepper when iconclass is empty. */
295
297
  stepIconClassOrDefault(step) {
296
- const c = step?.iconclass;
298
+ const c = step?.iconclass || step?.iconurl;
297
299
  return typeof c === 'string' && c.trim() ? c.trim() : 'wi wi-person';
298
300
  }
299
301
  hasNonEmptyIconClass(step) {
300
- const ic = step?.iconclass;
302
+ const ic = step?.iconclass || step?.iconurl;
301
303
  return typeof ic === 'string' && ic.trim() !== '';
302
304
  }
303
305
  /**
@@ -342,7 +344,7 @@
342
344
  }
343
345
  /** Avoid `String()` in templates (strict mode treats it as a component property). */
344
346
  hasNonEmptyDoneIconClass(step) {
345
- const d = step?.doneiconclass;
347
+ const d = step?.doneiconclass || step?.doneiconurl;
346
348
  return typeof d === 'string' && d.trim() !== '';
347
349
  }
348
350
  get enableDone() {
@@ -1002,14 +1004,14 @@
1002
1004
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: WizardComponent, isStandalone: true, selector: "div[wmWizard]", providers: [
1003
1005
  base.provideAsWidgetRef(WizardComponent),
1004
1006
  { provide: base.Context, useFactory: () => { return {}; }, multi: true }
1005
- ], queries: [{ propertyName: "wizardAction", first: true, predicate: ["wizardAction"], read: i0.TemplateRef }, { propertyName: "steps", predicate: WizardStepComponent }], exportAs: ["wmWizard"], usesInheritance: true, ngImport: i0__namespace, template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n @for (step of steps; track step; let i = $index) {\n <li class=\"app-wizard-step\" [hidden]=\"!step.show\"\n [ngClass]=\"{finished: step.done, active: step.active, default: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\" [attr.data-stepid]=\"step.widgetId\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.aria-label]='step.subtitle ? \"step \" + (i + 1) + \" \" + step.title + \" \" + step.subtitle : \"step \" + (i + 1) + \" \" + step.title' [attr.title]= \"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\" [tabindex]=\"step.active ? '0' : '-1'\" (keydown)=\"onkeydown($event)\">\n @if (class && class.includes('classic')) {\n <span class=\"arrow\"></span>\n }\n @if (shouldRenderWizardStepNumberSpan(step)) {\n <span class=\"wizard-step-number\">\n @if (class && class.includes('number') && !step.isDone && !showWizardStepIcons) {\n <span class=\"count\">{{i+1}}</span>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('text-inline') && !showWizardStepIcons) && !step.isDone) {\n <i class=\"dottedstepper\"></i>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone) {\n <i class=\"app-icon wi wi-done\"></i>\n }\n @if (shouldShowPrimaryStepIcon(step)) {\n <i class=\"app-icon {{ stepIconClassOrDefault(step) }}\"></i>\n }\n @if (showWizardStepIcons && step.isDone && hasNonEmptyDoneIconClass(step)) {\n <i class=\"app-icon {{ step.doneiconclass }}\"></i>\n }\n </span>\n }\n <span class=\"title-wrapper\">\n @if (class && class.includes('text-inline')) {\n <span>{{'0' + (i+1)}}</span>\n }\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n @if (step.subtitle) {\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n }\n </a>\n </li>\n }\n </ul>\n</div>\n@if (type !== 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if (message.caption) {\n <p wmMessage caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n }\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n}\n@if (type === 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if(!fieldDefs?.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n}\n@if(fieldDefs && fieldDefs.length || type !== 'dynamic') {\n <ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n}\n", dependencies: [{ kind: "ngmodule", type: i2.CommonModule }, { kind: "directive", type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }] }); }
1007
+ ], queries: [{ propertyName: "wizardAction", first: true, predicate: ["wizardAction"], read: i0.TemplateRef }, { propertyName: "steps", predicate: WizardStepComponent }], exportAs: ["wmWizard"], usesInheritance: true, ngImport: i0__namespace, template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n @for (step of steps; track step; let i = $index) {\n <li class=\"app-wizard-step\" [hidden]=\"!step.show\"\n [ngClass]=\"{finished: step.done, active: step.active, default: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\" [attr.data-stepid]=\"step.widgetId\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.aria-label]='step.subtitle ? \"step \" + (i + 1) + \" \" + step.title + \" \" + step.subtitle : \"step \" + (i + 1) + \" \" + step.title' [attr.title]= \"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\" [tabindex]=\"step.active ? '0' : '-1'\" (keydown)=\"onkeydown($event)\">\n @if (class && class.includes('classic')) {\n <span class=\"arrow\"></span>\n }\n @if (shouldRenderWizardStepNumberSpan(step)) {\n <span class=\"wizard-step-number\">\n @if (class && class.includes('number') && !step.isDone && !showWizardStepIcons) {\n <span class=\"count\">{{i+1}}</span>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('text-inline') && !showWizardStepIcons) && !step.isDone) {\n <i class=\"dottedstepper\"></i>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone) {\n <i class=\"app-icon wi wi-done\"></i>\n }\n @if (shouldShowPrimaryStepIcon(step)) {\n <wm-app-icon [iconclass]=\"stepIconClassOrDefault(step)\" [iconurl]=\"step.iconurl\"></wm-app-icon>\n }\n @if (showWizardStepIcons && step.isDone && hasNonEmptyDoneIconClass(step)) {\n <wm-app-icon [iconclass]=\"step.doneiconclass\" [iconurl]=\"step.doneiconurl\"></wm-app-icon>\n }\n </span>\n }\n <span class=\"title-wrapper\">\n @if (class && class.includes('text-inline')) {\n <span>{{'0' + (i+1)}}</span>\n }\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n @if (step.subtitle) {\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n }\n </a>\n </li>\n }\n </ul>\n</div>\n@if (type !== 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if (message.caption) {\n <p wmMessage caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n }\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n}\n@if (type === 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if(!fieldDefs?.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n}\n@if(fieldDefs && fieldDefs.length || type !== 'dynamic') {\n <ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n}\n", dependencies: [{ kind: "ngmodule", type: i2.CommonModule }, { kind: "directive", type: i2__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: base.TextContentDirective, selector: "[textContent]", inputs: ["textContent"] }, { kind: "component", type: base.WmAppIconComponent, selector: "wm-app-icon", inputs: ["iconclass", "iconurl", "defaultIconClass", "defaultClasses", "iconStyle", "alt"] }] }); }
1006
1008
  }
1007
1009
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0__namespace, type: WizardComponent, decorators: [{
1008
1010
  type: i0.Component,
1009
- args: [{ standalone: true, imports: [i2.CommonModule, base.TextContentDirective], selector: 'div[wmWizard]', providers: [
1011
+ args: [{ standalone: true, imports: [i2.CommonModule, base.TextContentDirective, base.WmAppIconComponent], selector: 'div[wmWizard]', providers: [
1010
1012
  base.provideAsWidgetRef(WizardComponent),
1011
1013
  { provide: base.Context, useFactory: () => { return {}; }, multi: true }
1012
- ], exportAs: 'wmWizard', template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n @for (step of steps; track step; let i = $index) {\n <li class=\"app-wizard-step\" [hidden]=\"!step.show\"\n [ngClass]=\"{finished: step.done, active: step.active, default: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\" [attr.data-stepid]=\"step.widgetId\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.aria-label]='step.subtitle ? \"step \" + (i + 1) + \" \" + step.title + \" \" + step.subtitle : \"step \" + (i + 1) + \" \" + step.title' [attr.title]= \"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\" [tabindex]=\"step.active ? '0' : '-1'\" (keydown)=\"onkeydown($event)\">\n @if (class && class.includes('classic')) {\n <span class=\"arrow\"></span>\n }\n @if (shouldRenderWizardStepNumberSpan(step)) {\n <span class=\"wizard-step-number\">\n @if (class && class.includes('number') && !step.isDone && !showWizardStepIcons) {\n <span class=\"count\">{{i+1}}</span>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('text-inline') && !showWizardStepIcons) && !step.isDone) {\n <i class=\"dottedstepper\"></i>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone) {\n <i class=\"app-icon wi wi-done\"></i>\n }\n @if (shouldShowPrimaryStepIcon(step)) {\n <i class=\"app-icon {{ stepIconClassOrDefault(step) }}\"></i>\n }\n @if (showWizardStepIcons && step.isDone && hasNonEmptyDoneIconClass(step)) {\n <i class=\"app-icon {{ step.doneiconclass }}\"></i>\n }\n </span>\n }\n <span class=\"title-wrapper\">\n @if (class && class.includes('text-inline')) {\n <span>{{'0' + (i+1)}}</span>\n }\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n @if (step.subtitle) {\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n }\n </a>\n </li>\n }\n </ul>\n</div>\n@if (type !== 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if (message.caption) {\n <p wmMessage caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n }\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n}\n@if (type === 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if(!fieldDefs?.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n}\n@if(fieldDefs && fieldDefs.length || type !== 'dynamic') {\n <ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n}\n" }]
1014
+ ], exportAs: 'wmWizard', template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n @for (step of steps; track step; let i = $index) {\n <li class=\"app-wizard-step\" [hidden]=\"!step.show\"\n [ngClass]=\"{finished: step.done, active: step.active, default: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\" [attr.data-stepid]=\"step.widgetId\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.aria-label]='step.subtitle ? \"step \" + (i + 1) + \" \" + step.title + \" \" + step.subtitle : \"step \" + (i + 1) + \" \" + step.title' [attr.title]= \"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\" [tabindex]=\"step.active ? '0' : '-1'\" (keydown)=\"onkeydown($event)\">\n @if (class && class.includes('classic')) {\n <span class=\"arrow\"></span>\n }\n @if (shouldRenderWizardStepNumberSpan(step)) {\n <span class=\"wizard-step-number\">\n @if (class && class.includes('number') && !step.isDone && !showWizardStepIcons) {\n <span class=\"count\">{{i+1}}</span>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('text-inline') && !showWizardStepIcons) && !step.isDone) {\n <i class=\"dottedstepper\"></i>\n }\n @if (class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone) {\n <i class=\"app-icon wi wi-done\"></i>\n }\n @if (shouldShowPrimaryStepIcon(step)) {\n <wm-app-icon [iconclass]=\"stepIconClassOrDefault(step)\" [iconurl]=\"step.iconurl\"></wm-app-icon>\n }\n @if (showWizardStepIcons && step.isDone && hasNonEmptyDoneIconClass(step)) {\n <wm-app-icon [iconclass]=\"step.doneiconclass\" [iconurl]=\"step.doneiconurl\"></wm-app-icon>\n }\n </span>\n }\n <span class=\"title-wrapper\">\n @if (class && class.includes('text-inline')) {\n <span>{{'0' + (i+1)}}</span>\n }\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n @if (step.subtitle) {\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n }\n </a>\n </li>\n }\n </ul>\n</div>\n@if (type !== 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if (message.caption) {\n <p wmMessage caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n }\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n}\n@if (type === 'dynamic') {\n<div class=\"app-wizard-body panel-body\">\n @if(!fieldDefs?.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n}\n@if(fieldDefs && fieldDefs.length || type !== 'dynamic') {\n <ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n}\n" }]
1013
1015
  }], ctorParameters: () => [{ type: i0__namespace.Injector }, { type: i1$1__namespace.DynamicComponentRefProvider }, { type: Array, decorators: [{
1014
1016
  type: i0.Self
1015
1017
  }, {