aril 1.2.17 → 2.0.1-dev.0

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 (126) 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 +24 -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/table/src/table.component.mjs +10 -10
  47. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +15 -7
  48. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +29 -9
  49. package/fesm2022/aril-app.component-s14ruALV.mjs +183 -0
  50. package/fesm2022/aril-app.component-s14ruALV.mjs.map +1 -0
  51. package/fesm2022/aril-boot-bridge.mjs +35 -4
  52. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  53. package/fesm2022/aril-boot-config-api.mjs +11 -2
  54. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  55. package/fesm2022/aril-boot-config-apps.mjs +1678 -10
  56. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  57. package/fesm2022/aril-boot-config-plugins.mjs +12 -4
  58. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  59. package/fesm2022/aril-boot-host.mjs +21 -7
  60. package/fesm2022/aril-boot-host.mjs.map +1 -1
  61. package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs +183 -0
  62. package/fesm2022/aril-boot-mfe-app.component-a34GeuUv.mjs.map +1 -0
  63. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs +631 -0
  64. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KFO_X7yR.mjs.map +1 -0
  65. package/fesm2022/aril-boot-mfe.mjs +5 -3
  66. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  67. package/fesm2022/aril-keycloak.mjs +16 -1
  68. package/fesm2022/aril-keycloak.mjs.map +1 -1
  69. package/fesm2022/aril-provider.mjs +90 -12
  70. package/fesm2022/aril-provider.mjs.map +1 -1
  71. package/fesm2022/aril-theme-layout.mjs +2630 -2017
  72. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  73. package/fesm2022/aril-ui-business-ref-value.mjs +14 -6
  74. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  75. package/fesm2022/aril-ui-table.mjs +9 -9
  76. package/fesm2022/aril-ui-table.mjs.map +1 -1
  77. package/fesm2022/aril-util-sync-active-tab-route.mjs +28 -8
  78. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  79. package/fesm2022/aril.mjs +354 -25
  80. package/fesm2022/aril.mjs.map +1 -1
  81. package/keycloak/src/auth.interceptor.d.ts +7 -0
  82. package/package.json +188 -188
  83. package/provider/src/prodiveHost.d.ts +1 -0
  84. package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +21 -4
  85. package/theme/layout/app/expandableMenu/expandable-menu.component.html +19 -5
  86. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +69 -9
  87. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.html +1 -0
  88. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.ts +3 -1
  89. package/theme/layout/app/general-search/general-search.component.html +2 -1
  90. package/theme/layout/app/general-search/general-search.component.ts +2 -2
  91. package/theme/layout/app/history/history-sidebar.component.html +3 -1
  92. package/theme/layout/app/history/history-sidebar.component.ts +3 -1
  93. package/theme/layout/app/layout/app.layout.component.d.ts +105 -5
  94. package/theme/layout/app/layout/app.layout.component.html +102 -1
  95. package/theme/layout/app/layout/app.layout.component.scss +372 -0
  96. package/theme/layout/app/layout/app.layout.component.ts +452 -13
  97. package/theme/layout/app/layout/mfe.layout.component.d.ts +7 -5
  98. package/theme/layout/app/layout/mfe.layout.component.ts +13 -39
  99. package/theme/layout/app/site-map/site-map-sidebar.component.html +1 -0
  100. package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -1
  101. package/theme/layout/app/static-sidebar/static-sidebar.component.d.ts +26 -5
  102. package/theme/layout/app/static-sidebar/static-sidebar.component.html +11 -5
  103. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +68 -13
  104. package/theme/layout/app/topbar/app.topbar.component.html +0 -1
  105. package/theme/layout/app/topbar/app.topbar.component.scss +1 -1
  106. package/theme/layout/service/breadcrumb-publisher.service.d.ts +24 -0
  107. package/theme/layout/service/breadcrumb-publisher.service.ts +95 -0
  108. package/theme/layout/service/tab-session.service.d.ts +52 -0
  109. package/theme/layout/service/tab-session.service.ts +138 -0
  110. package/theme/styles/layout/_breadcrumb.scss +95 -0
  111. package/theme/styles/layout/_content.scss +2 -2
  112. package/ui/table/src/table.component.d.ts +2 -2
  113. package/ui-business/ref-value/src/ref-value.component.d.ts +4 -2
  114. package/util/sync-active-tab-route/src/sync-active-tab-route.directive.d.ts +15 -2
  115. package/boot/config/apps/src/reuse-strategy.d.ts +0 -4
  116. package/esm2022/boot/config/apps/src/reuse-strategy.mjs +0 -9
  117. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +0 -107
  118. package/fesm2022/aril-app.component-wxP3y8dg.mjs +0 -81
  119. package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +0 -1
  120. package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs +0 -80
  121. package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +0 -1
  122. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs +0 -315
  123. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +0 -1
  124. package/theme/layout/app/breadcrumb/app.breadcrumb.component.d.ts +0 -25
  125. package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +0 -8
  126. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +0 -127
@@ -0,0 +1,105 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { TranslocoService } from '@ngneat/transloco';
3
+ import { NavService } from './nav.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Cross-injector singleton slot. `NavLinkContextMenuService` `providedIn: 'root'` olduğu
7
+ * için host ve her MFE remote'unda AYRI instance yaşar — `register(cm)` sadece host
8
+ * shell'de çağrılır, MFE'lerden gelen `open(...)` çağrıları kendi instance'ında `cm`
9
+ * bulamaz. Bu yüzden register sırasında host instance'ı global slot'a yazar; MFE
10
+ * instance'ları `cm` null ise bu slot üzerinden host'a delege eder.
11
+ *
12
+ * `bridge` modülündeki `__arilMfeBridge__` ile aynı pattern.
13
+ */
14
+ const SLOT = '__arilNavLinkContextMenuOpen';
15
+ const COMMAND_SLOT = '__arilNavCommand';
16
+ /**
17
+ * Tab navigasyonu yapan tüm linkli yapılar için ortak sağ-tık context menu servisi.
18
+ * Tek bir global PrimeNG `ContextMenu` instance'ı host shell (`AppLayoutComponent`)
19
+ * template'inde yaşar; her sayfa kendi `ContextMenu` enstantiate etmek yerine bu
20
+ * service üzerinden `open(event, navItem)` çağırır.
21
+ *
22
+ * Servis hangi link tıklandıysa onun `NavItem`'iyle menü modelini yeniden inşa eder
23
+ * ve `cm.show(event)` ile açar — tüm tüketiciler için tek source-of-truth.
24
+ *
25
+ * **Kayıt sözleşmesi**: shell mount olunca `register(cm)` çağırır. MFE'lerden gelen
26
+ * çağrılar global slot üzerinden host'a delege edilir.
27
+ */
28
+ export class NavLinkContextMenuService {
29
+ constructor() {
30
+ this.navService = inject(NavService);
31
+ this.translocoService = inject(TranslocoService);
32
+ this.cm = null;
33
+ }
34
+ register(cm) {
35
+ this.cm = cm;
36
+ // MFE'lerden gelen open çağrıları için cross-injector slot kur — bu instance'ın
37
+ // `openLocal`'ını sarmalayan bir function global slot'a yazılır.
38
+ const slotHost = globalThis;
39
+ slotHost[SLOT] = (event, navItem) => this.openLocal(event, navItem);
40
+ // Programatik "yeni tab aç ve geç" — MFE'lerden (eski `window.open('#'+url,'_blank')`
41
+ // yerine) host NavService'e delege için cross-injector slot.
42
+ slotHost[COMMAND_SLOT] = (navItem) => this.navService.openInNewTabAndFocus(navItem);
43
+ }
44
+ open(event, navItem) {
45
+ // Kendi cm'imiz varsa (host instance) doğrudan aç
46
+ if (this.cm) {
47
+ this.openLocal(event, navItem);
48
+ return;
49
+ }
50
+ // MFE instance: global slot üzerinden host'a delege
51
+ const slotHost = globalThis;
52
+ const hostOpen = slotHost[SLOT];
53
+ if (hostOpen) {
54
+ hostOpen(event, navItem);
55
+ }
56
+ }
57
+ /**
58
+ * Programatik "yeni tab aç ve geç" — MFE component'lerinden çağrılır (eski
59
+ * `window.open('#'+url,'_blank')` yerine). Host instance'ta (`cm` set) doğrudan
60
+ * `NavService.openInNewTabAndFocus`'u çağırır; MFE instance'ında `__arilNavCommand`
61
+ * global slot'u üzerinden host'a delege eder. Host shell henüz mount olmadıysa
62
+ * (slot boş) sessizce no-op olur.
63
+ */
64
+ openInNewTabAndFocus(navItem) {
65
+ if (this.cm) {
66
+ this.navService.openInNewTabAndFocus(navItem);
67
+ return;
68
+ }
69
+ const slotHost = globalThis;
70
+ const hostCommand = slotHost[COMMAND_SLOT];
71
+ if (hostCommand) {
72
+ hostCommand(navItem);
73
+ }
74
+ }
75
+ openLocal(event, navItem) {
76
+ if (!this.cm)
77
+ return;
78
+ const t = (key) => this.translocoService.translate(key);
79
+ this.cm.model = [
80
+ {
81
+ label: t('navLink.openHere'),
82
+ icon: 'pi pi-arrow-right',
83
+ command: () => this.navService.navigateInCurrentTab(navItem)
84
+ },
85
+ {
86
+ label: t('navLink.openInNewTab'),
87
+ icon: 'pi pi-external-link',
88
+ command: () => this.navService.openInBackgroundTab(navItem)
89
+ },
90
+ {
91
+ label: t('navLink.openInNewTabAndFocus'),
92
+ icon: 'pi pi-clone',
93
+ command: () => this.navService.openInNewTabAndFocus(navItem)
94
+ }
95
+ ];
96
+ this.cm.show(event);
97
+ }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
99
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, providedIn: 'root' }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkContextMenuService, decorators: [{
102
+ type: Injectable,
103
+ args: [{ providedIn: 'root' }]
104
+ }] });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL25hdi1saW5rLWNvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJELE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxJQUFJLEdBQUcsOEJBQThCLENBQUM7QUFDNUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFLeEM7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBRWtCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsT0FBRSxHQUF1QixJQUFJLENBQUM7S0FvRXRDO0lBbEVBLFFBQVEsQ0FBQyxFQUFlO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0ZBQWdGO1FBQ2hGLGlFQUFpRTtRQUNqRSxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BFLHNGQUFzRjtRQUN0Riw2REFBNkQ7UUFDN0QsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBaUIsRUFBRSxPQUFnQjtRQUN2QyxrREFBa0Q7UUFDbEQsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQixPQUFPO1FBQ1IsQ0FBQztRQUNELG9EQUFvRDtRQUNwRCxNQUFNLFFBQVEsR0FBRyxVQUF1QyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9CQUFvQixDQUFDLE9BQWdCO1FBQ3BDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxPQUFPO1FBQ1IsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLFVBQXVDLENBQUM7UUFDekQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDRixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWlCLEVBQUUsT0FBZ0I7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRztZQUNmO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVCLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQzthQUM1RDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2hDLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQzthQUMzRDtZQUNEO2dCQUNDLEtBQUssRUFBRSxDQUFDLENBQUMsOEJBQThCLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxhQUFhO2dCQUNuQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7YUFDNUQ7U0FDRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQzs4R0F0RVcseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FEWixNQUFNOzsyRkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnUgfSBmcm9tICdwcmltZW5nL2NvbnRleHRtZW51JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBOYXZJdGVtLCBOYXZTZXJ2aWNlIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQ3Jvc3MtaW5qZWN0b3Igc2luZ2xldG9uIHNsb3QuIGBOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlYCBgcHJvdmlkZWRJbjogJ3Jvb3QnYCBvbGR1xJ91XHJcbiAqIGnDp2luIGhvc3QgdmUgaGVyIE1GRSByZW1vdGUndW5kYSBBWVJJIGluc3RhbmNlIHlhxZ9hciDigJQgYHJlZ2lzdGVyKGNtKWAgc2FkZWNlIGhvc3RcclxuICogc2hlbGwnZGUgw6dhxJ9yxLFsxLFyLCBNRkUnbGVyZGVuIGdlbGVuIGBvcGVuKC4uLilgIMOnYcSfcsSxbGFyxLEga2VuZGkgaW5zdGFuY2UnxLFuZGEgYGNtYFxyXG4gKiBidWxhbWF6LiBCdSB5w7x6ZGVuIHJlZ2lzdGVyIHPEsXJhc8SxbmRhIGhvc3QgaW5zdGFuY2UnxLEgZ2xvYmFsIHNsb3QnYSB5YXphcjsgTUZFXHJcbiAqIGluc3RhbmNlJ2xhcsSxIGBjbWAgbnVsbCBpc2UgYnUgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci5cclxuICpcclxuICogYGJyaWRnZWAgbW9kw7xsw7xuZGVraSBgX19hcmlsTWZlQnJpZGdlX19gIGlsZSBheW7EsSBwYXR0ZXJuLlxyXG4gKi9cclxuY29uc3QgU0xPVCA9ICdfX2FyaWxOYXZMaW5rQ29udGV4dE1lbnVPcGVuJztcclxuY29uc3QgQ09NTUFORF9TTE9UID0gJ19fYXJpbE5hdkNvbW1hbmQnO1xyXG50eXBlIEdsb2JhbE9wZW5GbiA9IChldmVudDogTW91c2VFdmVudCwgbmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxDb21tYW5kRm4gPSAobmF2SXRlbTogTmF2SXRlbSkgPT4gdm9pZDtcclxudHlwZSBHbG9iYWxTbG90SG9zdCA9IHsgW1NMT1RdPzogR2xvYmFsT3BlbkZuOyBbQ09NTUFORF9TTE9UXT86IEdsb2JhbENvbW1hbmRGbiB9O1xyXG5cclxuLyoqXHJcbiAqIFRhYiBuYXZpZ2FzeW9udSB5YXBhbiB0w7xtIGxpbmtsaSB5YXDEsWxhciBpw6dpbiBvcnRhayBzYcSfLXTEsWsgY29udGV4dCBtZW51IHNlcnZpc2kuXHJcbiAqIFRlayBiaXIgZ2xvYmFsIFByaW1lTkcgYENvbnRleHRNZW51YCBpbnN0YW5jZSfEsSBob3N0IHNoZWxsIChgQXBwTGF5b3V0Q29tcG9uZW50YClcclxuICogdGVtcGxhdGUnaW5kZSB5YcWfYXI7IGhlciBzYXlmYSBrZW5kaSBgQ29udGV4dE1lbnVgIGVuc3RhbnRpYXRlIGV0bWVrIHllcmluZSBidVxyXG4gKiBzZXJ2aWNlIMO8emVyaW5kZW4gYG9wZW4oZXZlbnQsIG5hdkl0ZW0pYCDDp2HEn8SxcsSxci5cclxuICpcclxuICogU2VydmlzIGhhbmdpIGxpbmsgdMSxa2xhbmTEsXlzYSBvbnVuIGBOYXZJdGVtYCdpeWxlIG1lbsO8IG1vZGVsaW5pIHllbmlkZW4gaW7Fn2EgZWRlclxyXG4gKiB2ZSBgY20uc2hvdyhldmVudClgIGlsZSBhw6dhciDigJQgdMO8bSB0w7xrZXRpY2lsZXIgacOnaW4gdGVrIHNvdXJjZS1vZi10cnV0aC5cclxuICpcclxuICogKipLYXnEsXQgc8O2emxlxZ9tZXNpKio6IHNoZWxsIG1vdW50IG9sdW5jYSBgcmVnaXN0ZXIoY20pYCDDp2HEn8SxcsSxci4gTUZFJ2xlcmRlbiBnZWxlblxyXG4gKiDDp2HEn3LEsWxhciBnbG9iYWwgc2xvdCDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRpbGlyLlxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIE5hdkxpbmtDb250ZXh0TWVudVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF2U2VydmljZSA9IGluamVjdChOYXZTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblx0cHJpdmF0ZSBjbTogQ29udGV4dE1lbnUgfCBudWxsID0gbnVsbDtcclxuXHJcblx0cmVnaXN0ZXIoY206IENvbnRleHRNZW51KTogdm9pZCB7XHJcblx0XHR0aGlzLmNtID0gY207XHJcblx0XHQvLyBNRkUnbGVyZGVuIGdlbGVuIG9wZW4gw6dhxJ9yxLFsYXLEsSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90IGt1ciDigJQgYnUgaW5zdGFuY2UnxLFuXHJcblx0XHQvLyBgb3BlbkxvY2FsYCfEsW7EsSBzYXJtYWxheWFuIGJpciBmdW5jdGlvbiBnbG9iYWwgc2xvdCdhIHlhesSxbMSxci5cclxuXHRcdGNvbnN0IHNsb3RIb3N0ID0gZ2xvYmFsVGhpcyBhcyB1bmtub3duIGFzIEdsb2JhbFNsb3RIb3N0O1xyXG5cdFx0c2xvdEhvc3RbU0xPVF0gPSAoZXZlbnQsIG5hdkl0ZW0pID0+IHRoaXMub3BlbkxvY2FsKGV2ZW50LCBuYXZJdGVtKTtcclxuXHRcdC8vIFByb2dyYW1hdGlrIFwieWVuaSB0YWIgYcOnIHZlIGdlw6dcIiDigJQgTUZFJ2xlcmRlbiAoZXNraSBgd2luZG93Lm9wZW4oJyMnK3VybCwnX2JsYW5rJylgXHJcblx0XHQvLyB5ZXJpbmUpIGhvc3QgTmF2U2VydmljZSdlIGRlbGVnZSBpw6dpbiBjcm9zcy1pbmplY3RvciBzbG90LlxyXG5cdFx0c2xvdEhvc3RbQ09NTUFORF9TTE9UXSA9IChuYXZJdGVtKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbSk7XHJcblx0fVxyXG5cclxuXHRvcGVuKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHQvLyBLZW5kaSBjbSdpbWl6IHZhcnNhIChob3N0IGluc3RhbmNlKSBkb8SfcnVkYW4gYcOnXHJcblx0XHRpZiAodGhpcy5jbSkge1xyXG5cdFx0XHR0aGlzLm9wZW5Mb2NhbChldmVudCwgbmF2SXRlbSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdC8vIE1GRSBpbnN0YW5jZTogZ2xvYmFsIHNsb3Qgw7x6ZXJpbmRlbiBob3N0J2EgZGVsZWdlXHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RPcGVuID0gc2xvdEhvc3RbU0xPVF07XHJcblx0XHRpZiAoaG9zdE9wZW4pIHtcclxuXHRcdFx0aG9zdE9wZW4oZXZlbnQsIG5hdkl0ZW0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJvZ3JhbWF0aWsgXCJ5ZW5pIHRhYiBhw6cgdmUgZ2XDp1wiIOKAlCBNRkUgY29tcG9uZW50J2xlcmluZGVuIMOnYcSfcsSxbMSxciAoZXNraVxyXG5cdCAqIGB3aW5kb3cub3BlbignIycrdXJsLCdfYmxhbmsnKWAgeWVyaW5lKS4gSG9zdCBpbnN0YW5jZSd0YSAoYGNtYCBzZXQpIGRvxJ9ydWRhblxyXG5cdCAqIGBOYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzYCd1IMOnYcSfxLFyxLFyOyBNRkUgaW5zdGFuY2UnxLFuZGEgYF9fYXJpbE5hdkNvbW1hbmRgXHJcblx0ICogZ2xvYmFsIHNsb3QndSDDvHplcmluZGVuIGhvc3QnYSBkZWxlZ2UgZWRlci4gSG9zdCBzaGVsbCBoZW7DvHogbW91bnQgb2xtYWTEsXlzYVxyXG5cdCAqIChzbG90IGJvxZ8pIHNlc3NpemNlIG5vLW9wIG9sdXIuXHJcblx0ICovXHJcblx0b3BlbkluTmV3VGFiQW5kRm9jdXMobmF2SXRlbTogTmF2SXRlbSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY20pIHtcclxuXHRcdFx0dGhpcy5uYXZTZXJ2aWNlLm9wZW5Jbk5ld1RhYkFuZEZvY3VzKG5hdkl0ZW0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBzbG90SG9zdCA9IGdsb2JhbFRoaXMgYXMgdW5rbm93biBhcyBHbG9iYWxTbG90SG9zdDtcclxuXHRcdGNvbnN0IGhvc3RDb21tYW5kID0gc2xvdEhvc3RbQ09NTUFORF9TTE9UXTtcclxuXHRcdGlmIChob3N0Q29tbWFuZCkge1xyXG5cdFx0XHRob3N0Q29tbWFuZChuYXZJdGVtKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb3BlbkxvY2FsKGV2ZW50OiBNb3VzZUV2ZW50LCBuYXZJdGVtOiBOYXZJdGVtKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY20pIHJldHVybjtcclxuXHRcdGNvbnN0IHQgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0dGhpcy5jbS5tb2RlbCA9IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5IZXJlJyksXHJcblx0XHRcdFx0aWNvbjogJ3BpIHBpLWFycm93LXJpZ2h0JyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2UubmF2aWdhdGVJbkN1cnJlbnRUYWIobmF2SXRlbSlcclxuXHRcdFx0fSxcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGxhYmVsOiB0KCduYXZMaW5rLm9wZW5Jbk5ld1RhYicpLFxyXG5cdFx0XHRcdGljb246ICdwaSBwaS1leHRlcm5hbC1saW5rJyxcclxuXHRcdFx0XHRjb21tYW5kOiAoKSA9PiB0aGlzLm5hdlNlcnZpY2Uub3BlbkluQmFja2dyb3VuZFRhYihuYXZJdGVtKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0bGFiZWw6IHQoJ25hdkxpbmsub3BlbkluTmV3VGFiQW5kRm9jdXMnKSxcclxuXHRcdFx0XHRpY29uOiAncGkgcGktY2xvbmUnLFxyXG5cdFx0XHRcdGNvbW1hbmQ6ICgpID0+IHRoaXMubmF2U2VydmljZS5vcGVuSW5OZXdUYWJBbmRGb2N1cyhuYXZJdGVtKVxyXG5cdFx0XHR9XHJcblx0XHRdO1xyXG5cdFx0dGhpcy5jbS5zaG93KGV2ZW50KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,45 @@
1
+ import { Directive, HostListener, Input, inject } from '@angular/core';
2
+ import { NavLinkContextMenuService } from './nav-link-context-menu.service';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Linkli her HTML elementine sağ-tık → tab context menüsü ekleyen directive.
6
+ *
7
+ * **Kullanım**: navLink/navName (ve opsiyonel icon) bilgisini object literal olarak verin:
8
+ * ```html
9
+ * <a [attr.href]="'#/' + path"
10
+ * [arilNavLink]="{ tabId: '', navLink: path, navName: 'Sayfa Adı', icon: 'pi pi-cog' }"
11
+ * (click)="...">
12
+ * ```
13
+ *
14
+ * Sağ tık → "Bu sekmede aç / Yeni sekmede aç / Yeni sekmede aç ve geç" menüsü açılır;
15
+ * komutlar `NavService` üzerinden ilgili tab eylemini tetikler. Ctrl+Click / Middle Click
16
+ * gibi mevcut shortcut'lar değişmez — bu menü onlara klavye/fare bilgisi olmayan
17
+ * kullanıcılar için keşfedilebilir bir alternatif.
18
+ */
19
+ export class NavLinkDirective {
20
+ constructor() {
21
+ this.contextMenuService = inject(NavLinkContextMenuService);
22
+ }
23
+ onContextMenu(event) {
24
+ if (!this.navItem?.navLink)
25
+ return;
26
+ event.preventDefault();
27
+ this.contextMenuService.open(event, this.navItem);
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: NavLinkDirective, isStandalone: true, selector: "[arilNavLink]", inputs: { navItem: ["arilNavLink", "navItem"] }, host: { listeners: { "contextmenu": "onContextMenu($event)" } }, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NavLinkDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ standalone: true,
36
+ selector: '[arilNavLink]'
37
+ }]
38
+ }], propDecorators: { navItem: [{
39
+ type: Input,
40
+ args: ['arilNavLink']
41
+ }], onContextMenu: [{
42
+ type: HostListener,
43
+ args: ['contextmenu', ['$event']]
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWxpbmsuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9uYXYtbGluay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHNUU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFLSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBWWtCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0tBUXhFO0lBTEEsYUFBYSxDQUFDLEtBQWlCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU87WUFBRSxPQUFPO1FBQ25DLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0FmVyxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7aUJBQ3pCOzhCQU9zQixPQUFPO3NCQUE1QixLQUFLO3VCQUFDLGFBQWE7Z0JBS3BCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmF2TGlua0NvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4vbmF2LWxpbmstY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogTGlua2xpIGhlciBIVE1MIGVsZW1lbnRpbmUgc2HEny10xLFrIOKGkiB0YWIgY29udGV4dCBtZW7DvHPDvCBla2xleWVuIGRpcmVjdGl2ZS5cclxuICpcclxuICogKipLdWxsYW7EsW0qKjogbmF2TGluay9uYXZOYW1lICh2ZSBvcHNpeW9uZWwgaWNvbikgYmlsZ2lzaW5pIG9iamVjdCBsaXRlcmFsIG9sYXJhayB2ZXJpbjpcclxuICogYGBgaHRtbFxyXG4gKiA8YSBbYXR0ci5ocmVmXT1cIicjLycgKyBwYXRoXCJcclxuICogICAgW2FyaWxOYXZMaW5rXT1cInsgdGFiSWQ6ICcnLCBuYXZMaW5rOiBwYXRoLCBuYXZOYW1lOiAnU2F5ZmEgQWTEsScsIGljb246ICdwaSBwaS1jb2cnIH1cIlxyXG4gKiAgICAoY2xpY2spPVwiLi4uXCI+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBTYcSfIHTEsWsg4oaSIFwiQnUgc2VrbWVkZSBhw6cgLyBZZW5pIHNla21lZGUgYcOnIC8gWWVuaSBzZWttZWRlIGHDpyB2ZSBnZcOnXCIgbWVuw7xzw7wgYcOnxLFsxLFyO1xyXG4gKiBrb211dGxhciBgTmF2U2VydmljZWAgw7x6ZXJpbmRlbiBpbGdpbGkgdGFiIGV5bGVtaW5pIHRldGlrbGVyLiBDdHJsK0NsaWNrIC8gTWlkZGxlIENsaWNrXHJcbiAqIGdpYmkgbWV2Y3V0IHNob3J0Y3V0J2xhciBkZcSfacWfbWV6IOKAlCBidSBtZW7DvCBvbmxhcmEga2xhdnllL2ZhcmUgYmlsZ2lzaSBvbG1heWFuXHJcbiAqIGt1bGxhbsSxY8SxbGFyIGnDp2luIGtlxZ9mZWRpbGViaWxpciBiaXIgYWx0ZXJuYXRpZi5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdbYXJpbE5hdkxpbmtdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2TGlua0RpcmVjdGl2ZSB7XHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgw6fDvG5rw7wgc2l0ZS1tYXAgZ2liaSBjb25kaXRpb25hbCB5YXDEsWxhcmRhIHRlbXBsYXRlIGJpbmRpbmcnaSBgbm9kZS5yb3V0ZXJMaW5rID8gey4uLn0gOiBudWxsYFxyXG5cdCAqIMWfZWtsaW5kZSDDp2FsxLHFn8SxeW9yIOKAlCByZXF1aXJlZCBpxZ9hcmV0bGVtZWsgYG51bGwvdW5kZWZpbmVkYCBkdXJ1bXVuZGEgVFMgaGF0YXPEsSB2ZXJpci4gQm/FnyB2ZXlhXHJcblx0ICogYG5hdkxpbmtgJ2kgb2xtYXlhbiBuYXZJdGVtIGnDp2luIGBvbkNvbnRleHRNZW51YCBuby1vcCDDp2FsxLHFn8Sxci5cclxuXHQgKi9cclxuXHRASW5wdXQoJ2FyaWxOYXZMaW5rJykgbmF2SXRlbT86IE5hdkl0ZW0gfCBudWxsO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGNvbnRleHRNZW51U2VydmljZSA9IGluamVjdChOYXZMaW5rQ29udGV4dE1lbnVTZXJ2aWNlKTtcclxuXHJcblx0QEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxyXG5cdG9uQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5uYXZJdGVtPy5uYXZMaW5rKSByZXR1cm47XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0dGhpcy5jb250ZXh0TWVudVNlcnZpY2Uub3BlbihldmVudCwgdGhpcy5uYXZJdGVtKTtcclxuXHR9XHJcbn1cclxuIl19