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
@@ -0,0 +1,372 @@
1
+ // =====================================================================
2
+ // Aril Tab Bar
3
+ // =====================================================================
4
+ // Yapı:
5
+ // [topbar]
6
+ // [breadcrumb-strip] ← yeni katman: aktif route'un menü zinciri
7
+ // [tabs-bar] ← lavender tinted, rounded "kart tab"lar
8
+ // [router-outlet]
9
+ //
10
+ // Renkler/spacing Aril temasının CSS variable'ları üzerinden okunur;
11
+ // Light/Dim/Dark tema otomatik takip eder.
12
+ // =====================================================================
13
+
14
+ $tab-radius: 10px;
15
+ $tab-height: 32px;
16
+ $tabs-bar-height: 48px;
17
+ $breadcrumb-height: 38px;
18
+ $transition-fast: 140ms cubic-bezier(0.4, 0, 0.2, 1);
19
+ $transition-std: 200ms cubic-bezier(0.4, 0, 0.2, 1);
20
+
21
+ :host {
22
+ display: flex;
23
+ flex-direction: column;
24
+ height: 100vh;
25
+ }
26
+
27
+ .layout-content {
28
+ display: flex;
29
+ flex-direction: column;
30
+ height: 100%;
31
+ width: 100%;
32
+ overflow: hidden;
33
+ }
34
+
35
+ // --- BREADCRUMB STRIP ------------------------------------------------
36
+ // Stiller global `styles/layout/_breadcrumb.scss` içinde `.p-breadcrumb.breadcrumb-strip`
37
+ // selector'ı altında. PrimeNG override'ı tek bir yerden; component SCSS'inde
38
+ // ::ng-deep gürültüsüne gerek yok.
39
+
40
+ // --- TABS BAR --------------------------------------------------------
41
+ // Hafif lavender tint zemin. Inactive tab'lar bar'a kaynaşır,
42
+ // active tab beyaz + soft shadow ile yukarı "kaldırılmış" görünür.
43
+
44
+ .tabs-bar {
45
+ position: relative;
46
+ display: flex;
47
+ align-items: center;
48
+ background: var(--surface-section, #f4f6fb);
49
+ border-bottom: 1px solid var(--surface-border, #e5e7eb);
50
+ padding: 0 12px;
51
+ min-height: $tabs-bar-height;
52
+ flex-shrink: 0;
53
+ z-index: 1;
54
+ gap: 4px;
55
+ }
56
+
57
+ .tabs-container {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 4px;
61
+ flex: 1;
62
+ overflow-x: auto;
63
+ overflow-y: hidden;
64
+ scroll-behavior: smooth;
65
+ scrollbar-width: none;
66
+ min-width: 0;
67
+ padding: 8px 0;
68
+
69
+ &::-webkit-scrollbar {
70
+ display: none;
71
+ }
72
+ }
73
+
74
+ // --- PAGE WRAPPER ----------------------------------------------------
75
+ // router-outlet'in render ettiği sayfa içeriği. Tabs-bar ve sidebar
76
+ // ile arasında nefes alınacak boşluk verir; aşan içerik scroll olur.
77
+
78
+ .layout-page {
79
+ flex: 1;
80
+ min-height: 0;
81
+ overflow: auto;
82
+ padding: 16px;
83
+ }
84
+
85
+ // --- TAB ITEM (rounded-all "kart") -----------------------------------
86
+
87
+ .tab-item {
88
+ position: relative;
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 8px;
92
+ height: $tab-height;
93
+ min-width: 130px;
94
+ max-width: 240px;
95
+ padding: 0 10px 0 12px;
96
+ margin: 0 4px;
97
+ background: transparent;
98
+ color: var(--text-color-secondary, #6b7280);
99
+ cursor: pointer;
100
+ user-select: none;
101
+ font-family: inherit;
102
+ font-size: 0.8125rem; // 13px
103
+ font-weight: 500;
104
+ line-height: 1;
105
+ border-radius: $tab-radius;
106
+ transition:
107
+ background-color $transition-fast,
108
+ color $transition-fast,
109
+ box-shadow $transition-fast;
110
+
111
+ &:hover:not(.active) {
112
+ background: var(--surface-hover, rgba(15, 23, 42, 0.04));
113
+ color: var(--text-color, #475569);
114
+
115
+ .tab-close-btn,
116
+ .tab-icon {
117
+ opacity: 1;
118
+ }
119
+ }
120
+
121
+ &.active {
122
+ background: var(--surface-card, #ffffff);
123
+ color: var(--text-color, #1e293b);
124
+ font-weight: 600;
125
+ // Soft elevation — Aril'in lavender shadow paleti
126
+ box-shadow:
127
+ 0 1px 2px rgba(15, 23, 42, 0.06),
128
+ 0 0 0 1px rgba(217, 221, 252, 0.5);
129
+
130
+ .tab-close-btn {
131
+ opacity: 1;
132
+ }
133
+
134
+ .tab-icon {
135
+ opacity: 1;
136
+ color: var(--primary-color, #6366f1);
137
+ }
138
+ }
139
+
140
+ .tab-icon {
141
+ flex-shrink: 0;
142
+ font-size: 0.875rem; // 14px
143
+ opacity: 0.7;
144
+ transition:
145
+ opacity $transition-fast,
146
+ color $transition-std;
147
+ }
148
+
149
+ .tab-title {
150
+ flex: 1;
151
+ white-space: nowrap;
152
+ overflow: hidden;
153
+ text-overflow: ellipsis;
154
+ min-width: 0;
155
+ }
156
+
157
+ .tab-close-btn {
158
+ flex-shrink: 0;
159
+ display: flex;
160
+ align-items: center;
161
+ justify-content: center;
162
+ width: 18px;
163
+ height: 18px;
164
+ padding: 0;
165
+ border: none;
166
+ border-radius: 50%;
167
+ background: transparent;
168
+ color: inherit;
169
+ cursor: pointer;
170
+ opacity: 0; // hover/active'de görünür
171
+ line-height: 1;
172
+ transition:
173
+ opacity $transition-fast,
174
+ background-color $transition-fast;
175
+
176
+ &:hover {
177
+ background: rgba(15, 23, 42, 0.08);
178
+ }
179
+
180
+ i {
181
+ font-size: 10px;
182
+ }
183
+ }
184
+
185
+ // --- PINNED tab — kompakt görünüm (Chrome-vari) ----------------------
186
+ // Sadece icon, başlık + close button gizli. Genişlik dar, padding sıkı.
187
+ &.pinned {
188
+ min-width: 36px;
189
+ max-width: 36px;
190
+ padding: 0;
191
+ justify-content: center;
192
+ gap: 0;
193
+
194
+ .tab-icon {
195
+ opacity: 1;
196
+ margin: 0;
197
+ }
198
+ }
199
+ }
200
+
201
+ // Pinned segment'i normal segment'ten görsel olarak ayır — pinned bloğun sağına
202
+ // dikey ayrac. Chrome'daki tab strip'inin pin separator'ına benzer.
203
+ .tabs-container .tab-item.pinned + .tab-item:not(.pinned) {
204
+ margin-left: 12px;
205
+ position: relative;
206
+
207
+ &::before {
208
+ content: '';
209
+ position: absolute;
210
+ left: -8px;
211
+ top: 6px;
212
+ bottom: 6px;
213
+ width: 1px;
214
+ background: var(--surface-border, #e5e7eb);
215
+ }
216
+ }
217
+
218
+ // --- CONTROLS (scroll chevrons + add button) -------------------------
219
+
220
+ .tabs-scroll-btn,
221
+ .tabs-add-btn {
222
+ flex-shrink: 0;
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ width: 28px;
227
+ height: 28px;
228
+ padding: 0;
229
+ border: none;
230
+ border-radius: 6px;
231
+ background: transparent;
232
+ color: var(--text-color-secondary, #6b7280);
233
+ cursor: pointer;
234
+ transition:
235
+ background-color $transition-fast,
236
+ color $transition-fast;
237
+
238
+ &:hover {
239
+ background: var(--surface-hover, rgba(15, 23, 42, 0.04));
240
+ color: var(--text-color, #475569);
241
+ }
242
+
243
+ i {
244
+ font-size: 11px;
245
+ }
246
+ }
247
+
248
+ .tabs-add-btn {
249
+ margin-left: 4px;
250
+ }
251
+
252
+ // --- DRAG & DROP -----------------------------------------------------
253
+
254
+ .cdk-drag-preview {
255
+ box-sizing: border-box;
256
+ height: $tab-height;
257
+ padding: 0 12px;
258
+ display: flex;
259
+ align-items: center;
260
+ gap: 8px;
261
+ background: var(--surface-card, #ffffff);
262
+ color: var(--text-color, #1e293b);
263
+ border: 1px solid var(--surface-border, #e5e7eb);
264
+ border-radius: $tab-radius;
265
+ box-shadow:
266
+ 0 4px 30px rgba(221, 224, 255, 0.54),
267
+ 0 2px 6px rgba(15, 23, 42, 0.06);
268
+ font-size: 0.8125rem;
269
+ font-weight: 600;
270
+ line-height: 1;
271
+ opacity: 0.96;
272
+ z-index: 1000;
273
+
274
+ .tab-icon {
275
+ font-size: 0.875rem;
276
+ opacity: 0.85;
277
+ flex-shrink: 0;
278
+ }
279
+
280
+ .tab-title {
281
+ white-space: nowrap;
282
+ overflow: hidden;
283
+ text-overflow: ellipsis;
284
+ max-width: 180px;
285
+ }
286
+
287
+ .tab-close-btn {
288
+ display: none;
289
+ }
290
+ }
291
+
292
+ // Drop hedefini gösteren placeholder — tab şeklini koruyarak yarı görünür ve dashed kenarlı.
293
+ // Kullanıcı sürükleme sırasında bırakacağı konumu net görür; tamamen gizli olduğunda
294
+ // diğer tab'ların kayışı tek ipucuydu.
295
+ .cdk-drag-placeholder {
296
+ opacity: 0.5;
297
+ background: var(--surface-section, #f4f6fb);
298
+ border: 1px dashed var(--primary-color, #6366f1);
299
+ box-shadow: none;
300
+
301
+ .tab-icon,
302
+ .tab-title {
303
+ opacity: 0.55;
304
+ }
305
+
306
+ .tab-close-btn {
307
+ visibility: hidden;
308
+ }
309
+ }
310
+
311
+ .cdk-drag-animating {
312
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
313
+ }
314
+
315
+ .tabs-container.cdk-drop-list-dragging .tab-item:not(.cdk-drag-placeholder) {
316
+ transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
317
+ }
318
+
319
+ // --- DARK / DIM ------------------------------------------------------
320
+
321
+ :host-context(.layout-dark),
322
+ :host-context(.layout-dim) {
323
+ .tabs-bar {
324
+ background: var(--surface-section, #111827);
325
+ border-bottom-color: var(--surface-border, #334155);
326
+ }
327
+
328
+ .tab-item {
329
+ color: var(--text-color-secondary, rgba(255, 255, 255, 0.6));
330
+
331
+ &:hover:not(.active) {
332
+ background: var(--surface-hover, rgba(255, 255, 255, 0.05));
333
+ color: var(--text-color, rgba(255, 255, 255, 0.87));
334
+ }
335
+
336
+ &.active {
337
+ background: var(--surface-card, #1e293b);
338
+ color: var(--text-color, rgba(255, 255, 255, 0.87));
339
+ box-shadow:
340
+ 0 1px 2px rgba(0, 0, 0, 0.3),
341
+ 0 0 0 1px rgba(255, 255, 255, 0.06);
342
+ }
343
+
344
+ .tab-close-btn:hover {
345
+ background: rgba(255, 255, 255, 0.1);
346
+ }
347
+ }
348
+
349
+ .tabs-scroll-btn,
350
+ .tabs-add-btn {
351
+ color: var(--text-color-secondary, rgba(255, 255, 255, 0.6));
352
+
353
+ &:hover {
354
+ background: var(--surface-hover, rgba(255, 255, 255, 0.05));
355
+ color: var(--text-color, rgba(255, 255, 255, 0.87));
356
+ }
357
+ }
358
+
359
+ .cdk-drag-preview {
360
+ background: var(--surface-card, #1e293b);
361
+ color: var(--text-color, rgba(255, 255, 255, 0.87));
362
+ border-color: var(--surface-border, #334155);
363
+ box-shadow:
364
+ 0 10px 28px rgba(0, 0, 0, 0.4),
365
+ 0 2px 6px rgba(0, 0, 0, 0.2);
366
+ }
367
+
368
+ .cdk-drag-placeholder {
369
+ background: var(--surface-section, #111827);
370
+ border-color: var(--primary-color, #818cf8);
371
+ }
372
+ }