aril 1.2.18 → 2.0.1-dev.1

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 (122) hide show
  1. package/boot/bridge/src/mfe-bridge.d.ts +42 -2
  2. package/boot/config/apps/index.d.ts +7 -1
  3. package/boot/config/apps/src/custom-reuse-outlet.component.d.ts +37 -0
  4. package/boot/config/apps/src/custom-route-reuse-strategy.class.d.ts +156 -0
  5. package/boot/config/apps/src/nav-link-context-menu.service.d.ts +33 -0
  6. package/boot/config/apps/src/nav-link.directive.d.ts +29 -0
  7. package/boot/config/apps/src/nav.service.d.ts +198 -0
  8. package/boot/config/apps/src/route-close.service.d.ts +9 -0
  9. package/boot/config/apps/src/safe-navigate.d.ts +17 -0
  10. package/boot/config/apps/src/tab-aware-url-serializer.d.ts +22 -0
  11. package/boot/config/plugins/src/getNgZone.d.ts +9 -1
  12. package/boot/mfe/src/app.component.d.ts +15 -4
  13. package/boot/mfe/src/isolated-location-strategy.d.ts +57 -0
  14. package/esm2022/boot/bridge/src/mfe-bridge.mjs +36 -5
  15. package/esm2022/boot/config/api/src/api.service.mjs +12 -3
  16. package/esm2022/boot/config/apps/index.mjs +8 -2
  17. package/esm2022/boot/config/apps/src/apps.service.mjs +14 -6
  18. package/esm2022/boot/config/apps/src/custom-reuse-outlet.component.mjs +207 -0
  19. package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +540 -0
  20. package/esm2022/boot/config/apps/src/nav-link-context-menu.service.mjs +105 -0
  21. package/esm2022/boot/config/apps/src/nav-link.directive.mjs +45 -0
  22. package/esm2022/boot/config/apps/src/nav.service.mjs +675 -0
  23. package/esm2022/boot/config/apps/src/route-close.service.mjs +19 -0
  24. package/esm2022/boot/config/apps/src/safe-navigate.mjs +50 -0
  25. package/esm2022/boot/config/apps/src/tab-aware-url-serializer.mjs +50 -0
  26. package/esm2022/boot/config/plugins/src/getNgZone.mjs +13 -5
  27. package/esm2022/boot/host/src/app.component.mjs +1 -2
  28. package/esm2022/boot/host/src/bootstrap.mjs +22 -7
  29. package/esm2022/boot/mfe/src/app.component.mjs +143 -39
  30. package/esm2022/boot/mfe/src/bootstrap.mjs +197 -20
  31. package/esm2022/boot/mfe/src/isolated-location-strategy.mjs +142 -0
  32. package/esm2022/keycloak/src/auth.interceptor.mjs +17 -2
  33. package/esm2022/provider/src/prodiveHost.mjs +3 -5
  34. package/esm2022/provider/src/prodiveHostRouter.mjs +88 -9
  35. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +81 -19
  36. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +6 -4
  37. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  38. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +6 -4
  39. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +422 -20
  40. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +22 -35
  41. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +6 -4
  42. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +85 -27
  43. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +3 -3
  44. package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +86 -0
  45. package/esm2022/theme/layout/service/tab-session.service.mjs +126 -0
  46. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +15 -7
  47. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +29 -9
  48. package/fesm2022/aril-app.component-s14ruALV.mjs +183 -0
  49. package/fesm2022/aril-app.component-s14ruALV.mjs.map +1 -0
  50. package/fesm2022/aril-boot-bridge.mjs +35 -4
  51. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  52. package/fesm2022/aril-boot-config-api.mjs +11 -2
  53. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  54. package/fesm2022/aril-boot-config-apps.mjs +1678 -10
  55. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  56. package/fesm2022/aril-boot-config-plugins.mjs +12 -4
  57. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  58. package/fesm2022/aril-boot-host.mjs +21 -7
  59. package/fesm2022/aril-boot-host.mjs.map +1 -1
  60. package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs +183 -0
  61. package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs.map +1 -0
  62. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs +631 -0
  63. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs.map +1 -0
  64. package/fesm2022/aril-boot-mfe.mjs +5 -3
  65. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  66. package/fesm2022/aril-keycloak.mjs +16 -1
  67. package/fesm2022/aril-keycloak.mjs.map +1 -1
  68. package/fesm2022/aril-provider.mjs +90 -12
  69. package/fesm2022/aril-provider.mjs.map +1 -1
  70. package/fesm2022/aril-theme-layout.mjs +2628 -2017
  71. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  72. package/fesm2022/aril-ui-business-ref-value.mjs +14 -6
  73. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  74. package/fesm2022/aril-util-sync-active-tab-route.mjs +28 -8
  75. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  76. package/fesm2022/aril.mjs +354 -25
  77. package/fesm2022/aril.mjs.map +1 -1
  78. package/keycloak/src/auth.interceptor.d.ts +7 -0
  79. package/package.json +222 -222
  80. package/provider/src/prodiveHost.d.ts +1 -0
  81. package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +21 -4
  82. package/theme/layout/app/expandableMenu/expandable-menu.component.html +19 -5
  83. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +69 -9
  84. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html +1 -0
  85. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts +3 -1
  86. package/theme/layout/app/general-search/general-search.component.html +2 -1
  87. package/theme/layout/app/general-search/general-search.component.ts +2 -2
  88. package/theme/layout/app/history/history-sidebar.component.html +3 -1
  89. package/theme/layout/app/history/history-sidebar.component.ts +3 -1
  90. package/theme/layout/app/layout/app.layout.component.d.ts +105 -5
  91. package/theme/layout/app/layout/app.layout.component.html +102 -1
  92. package/theme/layout/app/layout/app.layout.component.scss +372 -0
  93. package/theme/layout/app/layout/app.layout.component.ts +452 -13
  94. package/theme/layout/app/layout/mfe.layout.component.d.ts +1 -5
  95. package/theme/layout/app/layout/mfe.layout.component.ts +12 -38
  96. package/theme/layout/app/site-map/site-map-sidebar.component.html +1 -0
  97. package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -1
  98. package/theme/layout/app/static-sidebar/static-sidebar.component.d.ts +26 -5
  99. package/theme/layout/app/static-sidebar/static-sidebar.component.html +11 -5
  100. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +68 -13
  101. package/theme/layout/app/topbar/app.topbar.component.html +0 -1
  102. package/theme/layout/app/topbar/app.topbar.component.scss +1 -1
  103. package/theme/layout/service/breadcrumb-publisher.service.d.ts +24 -0
  104. package/theme/layout/service/breadcrumb-publisher.service.ts +95 -0
  105. package/theme/layout/service/tab-session.service.d.ts +52 -0
  106. package/theme/layout/service/tab-session.service.ts +138 -0
  107. package/theme/styles/layout/_breadcrumb.scss +95 -0
  108. package/theme/styles/layout/_content.scss +2 -2
  109. package/ui-business/ref-value/src/ref-value.component.d.ts +4 -2
  110. package/util/sync-active-tab-route/src/sync-active-tab-route.directive.d.ts +15 -2
  111. package/boot/config/apps/src/reuse-strategy.d.ts +0 -4
  112. package/esm2022/boot/config/apps/src/reuse-strategy.mjs +0 -9
  113. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +0 -107
  114. package/fesm2022/aril-app.component-wxP3y8dg.mjs +0 -81
  115. package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +0 -1
  116. package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs +0 -80
  117. package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +0 -1
  118. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs +0 -315
  119. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +0 -1
  120. package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +0 -25
  121. package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +0 -8
  122. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +0 -127
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, EventEmitter, Component, ChangeDetectionStrategy, Output } from '@angular/core';
3
+ import { RouterLink } from '@angular/router';
3
4
  import * as i1 from 'primeng/tag';
4
5
  import { TagModule } from 'primeng/tag';
6
+ import { NavLinkDirective } from 'aril/boot/config/apps';
5
7
  import { DetailedOverlayPanelComponent } from 'aril/ui-business/detailed-overlay-panel';
6
8
  import { ValueComponent } from 'aril/ui/value';
7
9
 
@@ -23,18 +25,24 @@ class RefValueComponent {
23
25
  getDisplayValue() {
24
26
  return this.valueDesc() ?? this.assetId().toString();
25
27
  }
26
- get url() {
27
- return `${globalThis.location.host}/#/`;
28
+ getRouterLink() {
29
+ const path = this.detailPageUrl() ?? '';
30
+ return path.startsWith('/') ? `${path}/${this.assetId()}` : `/${path}/${this.assetId()}`;
28
31
  }
29
- getFullUrl() {
30
- return 'http://' + this.url + this.detailPageUrl() + '/' + this.assetId();
32
+ /** `[arilNavLink]` directive'i için NavItem — sağ-tık tab context menüsü açılır. */
33
+ getNavItem() {
34
+ return {
35
+ tabId: '',
36
+ navLink: this.getRouterLink(),
37
+ navName: this.getDisplayValue()
38
+ };
31
39
  }
32
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RefValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RefValueComponent, isStandalone: true, selector: "aril-ref-value", inputs: { overlayPanelShow: { classPropertyName: "overlayPanelShow", publicName: "overlayPanelShow", isSignal: true, isRequired: false, transformFunction: null }, assetId: { classPropertyName: "assetId", publicName: "assetId", isSignal: true, isRequired: true, transformFunction: null }, valueDesc: { classPropertyName: "valueDesc", publicName: "valueDesc", isSignal: true, isRequired: true, transformFunction: null }, detailPageUrl: { classPropertyName: "detailPageUrl", publicName: "detailPageUrl", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n", dependencies: [{ kind: "component", type: ValueComponent, selector: "aril-value", inputs: ["model", "type", "format", "isClickable", "groupName", "parentSelectionKey", "isTextClamp", "textClampCharacters", "style", "copyable", "shouldShowCopyForClampedText", "arrayTypeDisplayName", "arrayTypeMaxBadgeCount", "bigDecimalRoundingMode", "bigDecimalScale"] }, { kind: "component", type: DetailedOverlayPanelComponent, selector: "aril-detailed-oveylay-panel", inputs: ["assetId", "style", "styleClass", "columns"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: RefValueComponent, isStandalone: true, selector: "aril-ref-value", inputs: { overlayPanelShow: { classPropertyName: "overlayPanelShow", publicName: "overlayPanelShow", isSignal: true, isRequired: false, transformFunction: null }, assetId: { classPropertyName: "assetId", publicName: "assetId", isSignal: true, isRequired: true, transformFunction: null }, valueDesc: { classPropertyName: "valueDesc", publicName: "valueDesc", isSignal: true, isRequired: true, transformFunction: null }, detailPageUrl: { classPropertyName: "detailPageUrl", publicName: "detailPageUrl", isSignal: true, isRequired: true, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n", dependencies: [{ kind: "component", type: ValueComponent, selector: "aril-value", inputs: ["model", "type", "format", "isClickable", "groupName", "parentSelectionKey", "isTextClamp", "textClampCharacters", "style", "copyable", "shouldShowCopyForClampedText", "arrayTypeDisplayName", "arrayTypeMaxBadgeCount", "bigDecimalRoundingMode", "bigDecimalScale"] }, { kind: "component", type: DetailedOverlayPanelComponent, selector: "aril-detailed-oveylay-panel", inputs: ["assetId", "style", "styleClass", "columns"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NavLinkDirective, selector: "[arilNavLink]", inputs: ["arilNavLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
42
  }
35
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: RefValueComponent, decorators: [{
36
44
  type: Component,
37
- args: [{ standalone: true, selector: 'aril-ref-value', imports: [ValueComponent, DetailedOverlayPanelComponent, TagModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n" }]
45
+ args: [{ standalone: true, selector: 'aril-ref-value', imports: [ValueComponent, DetailedOverlayPanelComponent, TagModule, RouterLink, NavLinkDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n" }]
38
46
  }], propDecorators: { clickEvent: [{
39
47
  type: Output
40
48
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"aril-ui-business-ref-value.mjs","sources":["../../projects/aril/ui-business/ref-value/src/ref-value.component.ts","../../projects/aril/ui-business/ref-value/src/ref-value.component.html","../../projects/aril/ui-business/ref-value/aril-ui-business-ref-value.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Output, input } from '@angular/core';\r\n\r\nimport { TagModule } from 'primeng/tag';\r\n\r\nimport { DetailedOverlayPanelComponent } from 'aril/ui-business/detailed-overlay-panel';\r\nimport { ValueComponent } from 'aril/ui/value';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-ref-value',\r\n\ttemplateUrl: './ref-value.component.html',\r\n\timports: [ValueComponent, DetailedOverlayPanelComponent, TagModule],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class RefValueComponent {\r\n\toverlayPanelShow = input<boolean>(true);\r\n\tassetId = input.required<number>();\r\n\tvalueDesc = input.required<string>();\r\n\tdetailPageUrl = input.required<string | undefined>();\r\n\ttarget = input<string>('_self');\r\n\r\n\t@Output() clickEvent = new EventEmitter();\r\n\r\n\tprotected readonly tagStyle = {\r\n\t\tbackground: '#f0f0f0',\r\n\t\tcolor: '-webkit-link',\r\n\t\t'font-size': '0.9rem',\r\n\t\t'text-decoration': 'underline'\r\n\t};\r\n\r\n\tprotected getDisplayValue(): string {\r\n\t\treturn this.valueDesc() ?? this.assetId().toString();\r\n\t}\r\n\r\n\tget url(): string {\r\n\t\treturn `${globalThis.location.host}/#/`;\r\n\t}\r\n\r\n\tprotected getFullUrl(): string {\r\n\t\treturn 'http://' + this.url + this.detailPageUrl() + '/' + this.assetId();\r\n\r\n\t}\r\n\r\n}\r\n","@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [href]=\"getFullUrl()\" [target]=\"target()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAca,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AAQC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;AACnC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAsB,CAAC;AACrD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AAEtB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,QAAQ,GAAG;AAC7B,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,iBAAiB,EAAE,WAAW;SAC9B,CAAC;AAeF,KAAA;IAbU,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;KACrD;AAED,IAAA,IAAI,GAAG,GAAA;AACN,QAAA,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;KACxC;IAES,UAAU,GAAA;AACnB,QAAA,OAAO,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;KAE1E;8GA3BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gyBCd9B,qlCA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBW,cAAc,EAAE,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,6BAA6B,8HAAE,SAAS,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,gBAAgB,EAEjB,OAAA,EAAA,CAAC,cAAc,EAAE,6BAA6B,EAAE,SAAS,CAAC,EAClD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qlCAAA,EAAA,CAAA;8BASrC,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;AErBR;;AAEG;;;;"}
1
+ {"version":3,"file":"aril-ui-business-ref-value.mjs","sources":["../../projects/aril/ui-business/ref-value/src/ref-value.component.ts","../../projects/aril/ui-business/ref-value/src/ref-value.component.html","../../projects/aril/ui-business/ref-value/aril-ui-business-ref-value.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Output, input } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\n\r\nimport { TagModule } from 'primeng/tag';\r\n\r\nimport { NavItem, NavLinkDirective } from 'aril/boot/config/apps';\r\nimport { DetailedOverlayPanelComponent } from 'aril/ui-business/detailed-overlay-panel';\r\nimport { ValueComponent } from 'aril/ui/value';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-ref-value',\r\n\ttemplateUrl: './ref-value.component.html',\r\n\timports: [ValueComponent, DetailedOverlayPanelComponent, TagModule, RouterLink, NavLinkDirective],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class RefValueComponent {\r\n\toverlayPanelShow = input<boolean>(true);\r\n\tassetId = input.required<number>();\r\n\tvalueDesc = input.required<string>();\r\n\tdetailPageUrl = input.required<string | undefined>();\r\n\ttarget = input<string>('_self');\r\n\r\n\t@Output() clickEvent = new EventEmitter();\r\n\r\n\tprotected readonly tagStyle = {\r\n\t\tbackground: '#f0f0f0',\r\n\t\tcolor: '-webkit-link',\r\n\t\t'font-size': '0.9rem',\r\n\t\t'text-decoration': 'underline'\r\n\t};\r\n\r\n\tprotected getDisplayValue(): string {\r\n\t\treturn this.valueDesc() ?? this.assetId().toString();\r\n\t}\r\n\r\n\tprotected getRouterLink(): string {\r\n\t\tconst path = this.detailPageUrl() ?? '';\r\n\t\treturn path.startsWith('/') ? `${path}/${this.assetId()}` : `/${path}/${this.assetId()}`;\r\n\t}\r\n\r\n\t/** `[arilNavLink]` directive'i için NavItem — sağ-tık tab context menüsü açılır. */\r\n\tprotected getNavItem(): NavItem {\r\n\t\treturn {\r\n\t\t\ttabId: '',\r\n\t\t\tnavLink: this.getRouterLink(),\r\n\t\t\tnavName: this.getDisplayValue()\r\n\t\t};\r\n\t}\r\n}\r\n","@if (detailPageUrl() && valueDesc() && assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t\t</a>\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<a [routerLink]=\"getRouterLink()\" [target]=\"target()\" [arilNavLink]=\"getNavItem()\">\r\n\t\t\t<p-tag [value]=\"getDisplayValue()\" [style]=\"tagStyle\" />\r\n\t\t</a>\r\n\t}\r\n} @else if (valueDesc() || assetId()) {\r\n\t@if (overlayPanelShow()) {\r\n\t\t<aril-detailed-oveylay-panel [assetId]=\"assetId()\">\r\n\t\t\t<p-tag\r\n\t\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t\t[style]=\"tagStyle\"\r\n\t\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t\t</aril-detailed-oveylay-panel>\r\n\t} @else {\r\n\t\t<p-tag\r\n\t\t\t[value]=\"getDisplayValue()\"\r\n\t\t\t[style]=\"tagStyle\"\r\n\t\t\t(click)=\"clickEvent.emit({ assetId: assetId(), valueDesc: valueDesc() })\" />\r\n\t}\r\n} @else {\r\n\t<aril-value type=\"text\" [model]=\"null\" />\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,36 +1,56 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, HostListener } from '@angular/core';
3
3
  import { Subscription } from 'rxjs';
4
+ import { bridge } from 'aril/boot/bridge';
4
5
  import * as i1 from '@angular/router';
5
6
  import * as i2 from 'primeng/tabview';
6
7
  import * as i3 from '@angular/common';
7
8
 
8
9
  class SyncActiveTabRouteDirective {
9
- constructor(router, tabView, location) {
10
+ constructor(router, tabView, location, urlSerializer) {
10
11
  this.router = router;
11
12
  this.tabView = tabView;
12
13
  this.location = location;
14
+ this.urlSerializer = urlSerializer;
13
15
  this.subscription = new Subscription();
16
+ /**
17
+ * Host (shell) modunda MFE Router `IsolatedLocationStrategy` kullanır — browser hash'ına
18
+ * YAZMAZ (tab izolasyonu, bkz. `isolated-location-strategy.ts`). Bu yüzden `?activeTab`
19
+ * adres çubuğunda görünsün/okunsun diye HOST Router + HOST Location'a köprüleriz.
20
+ * Standalone MFE modunda (`bridge.hostRouter` null) eski davranış korunur: enjekte edilen
21
+ * child Router + child Location (gerçek `LocationStrategy` adres çubuğuna yazar).
22
+ *
23
+ * `replaceState` (navigate DEĞİL) kullanılır: NavigationEnd fire ETMEZ → app.component'in
24
+ * host-NavigationEnd handler'ı tetiklenmez → MFE yeniden navigate olmaz (döngü yok).
25
+ */
26
+ this.hostRouter = bridge.hostRouter;
27
+ this.effectiveRouter = this.hostRouter ?? this.router;
14
28
  }
15
29
  ngOnInit() {
16
- this.subscription.add(this.router.routerState.root.queryParamMap.subscribe((params) => {
30
+ this.subscription.add(this.effectiveRouter.routerState.root.queryParamMap.subscribe((params) => {
17
31
  if (params.has('activeTab')) {
18
32
  this.tabView.activeIndex = Number(params.get('activeTab'));
19
33
  }
20
34
  }));
21
35
  }
22
36
  onTabChange(e) {
23
- this.location.replaceState(this.router
24
- .createUrlTree([], {
37
+ // `UrlTree.toString()` built-in `DefaultUrlSerializer` kullanır → `_tab` adres çubuğunda
38
+ // görünür kalırdı. Router'a kayıtlı `UrlSerializer` (child injector'da
39
+ // `TabAwareUrlSerializer`) ile serialize edip `_tab`'ı gizliyoruz; `activeTab` korunur.
40
+ const url = this.urlSerializer.serialize(this.effectiveRouter.createUrlTree([], {
25
41
  queryParams: { activeTab: e },
26
42
  queryParamsHandling: 'merge'
27
- })
28
- .toString());
43
+ }));
44
+ const location = this.hostRouter ? bridge.hostLocation : this.location;
45
+ // `history.state` (içindeki `_tab`) KORUNMALI: `Location.replaceState(path, query, state)`
46
+ // default `state=null` — 3. argüman verilmezse `_tab` silinir ve tab tespiti
47
+ // (`nav.service`/`app.component` `history.state._tab` okur) bozulur.
48
+ location?.replaceState(url, '', window.history.state);
29
49
  }
30
50
  ngOnDestroy() {
31
51
  this.subscription.unsubscribe();
32
52
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SyncActiveTabRouteDirective, deps: [{ token: i1.Router }, { token: i2.TabView }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Directive }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SyncActiveTabRouteDirective, deps: [{ token: i1.Router }, { token: i2.TabView }, { token: i3.Location }, { token: i1.UrlSerializer }], target: i0.ɵɵFactoryTarget.Directive }); }
34
54
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: SyncActiveTabRouteDirective, isStandalone: true, selector: "[syncActiveTabRoute]", host: { listeners: { "activeIndexChange": "onTabChange($event)" } }, ngImport: i0 }); }
35
55
  }
36
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SyncActiveTabRouteDirective, decorators: [{
@@ -39,7 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
39
59
  selector: '[syncActiveTabRoute]',
40
60
  standalone: true
41
61
  }]
42
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TabView }, { type: i3.Location }], propDecorators: { onTabChange: [{
62
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TabView }, { type: i3.Location }, { type: i1.UrlSerializer }], propDecorators: { onTabChange: [{
43
63
  type: HostListener,
44
64
  args: ['activeIndexChange', ['$event']]
45
65
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"aril-util-sync-active-tab-route.mjs","sources":["../../projects/aril/util/sync-active-tab-route/src/sync-active-tab-route.directive.ts","../../projects/aril/util/sync-active-tab-route/aril-util-sync-active-tab-route.ts"],"sourcesContent":["import { Location } from '@angular/common';\r\nimport { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { TabView } from 'primeng/tabview';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n\tselector: '[syncActiveTabRoute]',\r\n\tstandalone: true\r\n})\r\nexport class SyncActiveTabRouteDirective implements OnInit, OnDestroy {\r\n\tprivate readonly subscription = new Subscription();\r\n\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly tabView: TabView,\r\n\t\tprivate readonly location: Location\r\n\t) {}\r\n\r\n\tngOnInit() {\r\n\t\tthis.subscription.add(\r\n\t\t\tthis.router.routerState.root.queryParamMap.subscribe((params) => {\r\n\t\t\t\tif (params.has('activeTab')) {\r\n\t\t\t\t\tthis.tabView.activeIndex = Number(params.get('activeTab'));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t@HostListener('activeIndexChange', ['$event'])\r\n\tonTabChange(e: number) {\r\n\t\tthis.location.replaceState(\r\n\t\t\tthis.router\r\n\t\t\t\t.createUrlTree([], {\r\n\t\t\t\t\tqueryParams: { activeTab: e },\r\n\t\t\t\t\tqueryParamsHandling: 'merge'\r\n\t\t\t\t})\r\n\t\t\t\t.toString()\r\n\t\t);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscription.unsubscribe();\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAYa,2BAA2B,CAAA;AAGvC,IAAA,WAAA,CACkB,MAAc,EACd,OAAgB,EAChB,QAAkB,EAAA;QAFlB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AALnB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KAM/C;IAEJ,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC/D,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;aAC3D;SACD,CAAC,CACF,CAAC;KACF;AAGD,IAAA,WAAW,CAAC,CAAS,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACzB,IAAI,CAAC,MAAM;aACT,aAAa,CAAC,EAAE,EAAE;AAClB,YAAA,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;AAC7B,YAAA,mBAAmB,EAAE,OAAO;SAC5B,CAAC;aACD,QAAQ,EAAE,CACZ,CAAC;KACF;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KAChC;8GAjCW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;wHAqBA,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC/B9C;;AAEG;;;;"}
1
+ {"version":3,"file":"aril-util-sync-active-tab-route.mjs","sources":["../../projects/aril/util/sync-active-tab-route/src/sync-active-tab-route.directive.ts","../../projects/aril/util/sync-active-tab-route/aril-util-sync-active-tab-route.ts"],"sourcesContent":["import { Location } from '@angular/common';\r\nimport { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router, UrlSerializer } from '@angular/router';\r\n\r\nimport { TabView } from 'primeng/tabview';\r\n\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\n\r\n@Directive({\r\n\tselector: '[syncActiveTabRoute]',\r\n\tstandalone: true\r\n})\r\nexport class SyncActiveTabRouteDirective implements OnInit, OnDestroy {\r\n\tprivate readonly subscription = new Subscription();\r\n\r\n\t/**\r\n\t * Host (shell) modunda MFE Router `IsolatedLocationStrategy` kullanır — browser hash'ına\r\n\t * YAZMAZ (tab izolasyonu, bkz. `isolated-location-strategy.ts`). Bu yüzden `?activeTab`\r\n\t * adres çubuğunda görünsün/okunsun diye HOST Router + HOST Location'a köprüleriz.\r\n\t * Standalone MFE modunda (`bridge.hostRouter` null) eski davranış korunur: enjekte edilen\r\n\t * child Router + child Location (gerçek `LocationStrategy` adres çubuğuna yazar).\r\n\t *\r\n\t * `replaceState` (navigate DEĞİL) kullanılır: NavigationEnd fire ETMEZ → app.component'in\r\n\t * host-NavigationEnd handler'ı tetiklenmez → MFE yeniden navigate olmaz (döngü yok).\r\n\t */\r\n\tprivate readonly hostRouter = bridge.hostRouter;\r\n\tprivate readonly effectiveRouter: Router;\r\n\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly tabView: TabView,\r\n\t\tprivate readonly location: Location,\r\n\t\tprivate readonly urlSerializer: UrlSerializer\r\n\t) {\r\n\t\tthis.effectiveRouter = this.hostRouter ?? this.router;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.subscription.add(\r\n\t\t\tthis.effectiveRouter.routerState.root.queryParamMap.subscribe((params) => {\r\n\t\t\t\tif (params.has('activeTab')) {\r\n\t\t\t\t\tthis.tabView.activeIndex = Number(params.get('activeTab'));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t@HostListener('activeIndexChange', ['$event'])\r\n\tonTabChange(e: number) {\r\n\t\t// `UrlTree.toString()` built-in `DefaultUrlSerializer` kullanır → `_tab` adres çubuğunda\r\n\t\t// görünür kalırdı. Router'a kayıtlı `UrlSerializer` (child injector'da\r\n\t\t// `TabAwareUrlSerializer`) ile serialize edip `_tab`'ı gizliyoruz; `activeTab` korunur.\r\n\t\tconst url = this.urlSerializer.serialize(\r\n\t\t\tthis.effectiveRouter.createUrlTree([], {\r\n\t\t\t\tqueryParams: { activeTab: e },\r\n\t\t\t\tqueryParamsHandling: 'merge'\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tconst location = this.hostRouter ? bridge.hostLocation : this.location;\r\n\t\t// `history.state` (içindeki `_tab`) KORUNMALI: `Location.replaceState(path, query, state)`\r\n\t\t// default `state=null` — 3. argüman verilmezse `_tab` silinir ve tab tespiti\r\n\t\t// (`nav.service`/`app.component` `history.state._tab` okur) bozulur.\r\n\t\tlocation?.replaceState(url, '', window.history.state);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.subscription.unsubscribe();\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAca,2BAA2B,CAAA;AAgBvC,IAAA,WAAA,CACkB,MAAc,EACd,OAAgB,EAChB,QAAkB,EAClB,aAA4B,EAAA;QAH5B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAnB7B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAEnD;;;;;;;;;AASG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAS/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC;KACtD;IAED,QAAQ,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACxE,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;aAC3D;SACD,CAAC,CACF,CAAC;KACF;AAGD,IAAA,WAAW,CAAC,CAAS,EAAA;;;;AAIpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACvC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE;AACtC,YAAA,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;AAC7B,YAAA,mBAAmB,EAAE,OAAO;AAC5B,SAAA,CAAC,CACF,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;;;;AAIvE,QAAA,QAAQ,EAAE,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KAChC;8GAxDW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA,CAAA;oJAqCA,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACjD9C;;AAEG;;;;"}