@memberjunction/ng-explorer-core 3.3.0 → 4.0.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 (273) hide show
  1. package/README.md +336 -1
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +11 -0
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generic/Events.types.d.ts +174 -0
  6. package/dist/generic/Events.types.d.ts.map +1 -0
  7. package/dist/generic/Events.types.js +220 -0
  8. package/dist/generic/Events.types.js.map +1 -0
  9. package/dist/lib/app-view/application-view.component.d.ts +65 -0
  10. package/dist/lib/app-view/application-view.component.d.ts.map +1 -0
  11. package/dist/lib/app-view/application-view.component.js +611 -0
  12. package/dist/lib/app-view/application-view.component.js.map +1 -0
  13. package/dist/lib/auth-button/auth-button.component.d.ts +13 -0
  14. package/dist/lib/auth-button/auth-button.component.d.ts.map +1 -0
  15. package/dist/lib/auth-button/auth-button.component.js +36 -0
  16. package/dist/lib/auth-button/auth-button.component.js.map +1 -0
  17. package/dist/lib/base-browser-component/base-browser-component.d.ts +44 -0
  18. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +1 -0
  19. package/dist/lib/base-browser-component/base-browser-component.js +195 -0
  20. package/dist/lib/base-browser-component/base-browser-component.js.map +1 -0
  21. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts +54 -0
  22. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts.map +1 -0
  23. package/dist/lib/chat-wrapper/chat-wrapper.component.js +257 -0
  24. package/dist/lib/chat-wrapper/chat-wrapper.component.js.map +1 -0
  25. package/dist/lib/command-palette/command-palette.component.d.ts +79 -0
  26. package/dist/lib/command-palette/command-palette.component.d.ts.map +1 -0
  27. package/dist/lib/command-palette/command-palette.component.js +326 -0
  28. package/dist/lib/command-palette/command-palette.component.js.map +1 -0
  29. package/dist/lib/command-palette/command-palette.service.d.ts +49 -0
  30. package/dist/lib/command-palette/command-palette.service.d.ts.map +1 -0
  31. package/dist/lib/command-palette/command-palette.service.js +101 -0
  32. package/dist/lib/command-palette/command-palette.service.js.map +1 -0
  33. package/dist/lib/command-palette/index.d.ts +3 -0
  34. package/dist/lib/command-palette/index.d.ts.map +1 -0
  35. package/dist/lib/command-palette/index.js +3 -0
  36. package/dist/lib/command-palette/index.js.map +1 -0
  37. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts +32 -0
  38. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +1 -0
  39. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +244 -0
  40. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js.map +1 -0
  41. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
  42. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +14 -12
  43. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
  44. package/dist/lib/data-browser-component/data-browser.component.d.ts +23 -0
  45. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +1 -0
  46. package/dist/lib/data-browser-component/data-browser.component.js +267 -0
  47. package/dist/lib/data-browser-component/data-browser.component.js.map +1 -0
  48. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts +21 -0
  49. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts.map +1 -0
  50. package/dist/lib/expansion-panel-component/expansion-panel-component.js +158 -0
  51. package/dist/lib/expansion-panel-component/expansion-panel-component.js.map +1 -0
  52. package/dist/lib/favorites/favorites.component.d.ts +15 -0
  53. package/dist/lib/favorites/favorites.component.d.ts.map +1 -0
  54. package/dist/lib/favorites/favorites.component.js +135 -0
  55. package/dist/lib/favorites/favorites.component.js.map +1 -0
  56. package/dist/lib/files/files.component.d.ts +10 -0
  57. package/dist/lib/files/files.component.d.ts.map +1 -0
  58. package/dist/lib/files/files.component.js +41 -0
  59. package/dist/lib/files/files.component.js.map +1 -0
  60. package/dist/lib/generic/form-toolbar.d.ts.map +1 -1
  61. package/dist/lib/generic/form-toolbar.js +56 -38
  62. package/dist/lib/generic/form-toolbar.js.map +1 -1
  63. package/dist/lib/generic/resource-container-component.d.ts.map +1 -1
  64. package/dist/lib/generic/resource-container-component.js +3 -2
  65. package/dist/lib/generic/resource-container-component.js.map +1 -1
  66. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts +30 -0
  67. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts.map +1 -0
  68. package/dist/lib/generic-browse-list/generic-browse-list.component.js +171 -0
  69. package/dist/lib/generic-browse-list/generic-browse-list.component.js.map +1 -0
  70. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +120 -0
  71. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -0
  72. package/dist/lib/generic-browser-list/generic-browser-list.component.js +1093 -0
  73. package/dist/lib/generic-browser-list/generic-browser-list.component.js.map +1 -0
  74. package/dist/lib/header/MSFT_UserImageService.d.ts +12 -0
  75. package/dist/lib/header/MSFT_UserImageService.d.ts.map +1 -0
  76. package/dist/lib/header/MSFT_UserImageService.js +25 -0
  77. package/dist/lib/header/MSFT_UserImageService.js.map +1 -0
  78. package/dist/lib/header/header.component.d.ts +69 -0
  79. package/dist/lib/header/header.component.d.ts.map +1 -0
  80. package/dist/lib/header/header.component.js +342 -0
  81. package/dist/lib/header/header.component.js.map +1 -0
  82. package/dist/lib/home-component/home.component.d.ts +22 -0
  83. package/dist/lib/home-component/home.component.d.ts.map +1 -0
  84. package/dist/lib/home-component/home.component.js +194 -0
  85. package/dist/lib/home-component/home.component.js.map +1 -0
  86. package/dist/lib/home-wrapper/home-wrapper.component.d.ts +7 -0
  87. package/dist/lib/home-wrapper/home-wrapper.component.d.ts.map +1 -0
  88. package/dist/lib/home-wrapper/home-wrapper.component.js +30 -0
  89. package/dist/lib/home-wrapper/home-wrapper.component.js.map +1 -0
  90. package/dist/lib/list-view/list-view.component.d.ts +45 -0
  91. package/dist/lib/list-view/list-view.component.d.ts.map +1 -0
  92. package/dist/lib/list-view/list-view.component.js +329 -0
  93. package/dist/lib/list-view/list-view.component.js.map +1 -0
  94. package/dist/lib/navigation/navigation.component.d.ts +142 -0
  95. package/dist/lib/navigation/navigation.component.d.ts.map +1 -0
  96. package/dist/lib/navigation/navigation.component.js +1212 -0
  97. package/dist/lib/navigation/navigation.component.js.map +1 -0
  98. package/dist/lib/oauth/oauth-callback.component.d.ts +97 -0
  99. package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -0
  100. package/dist/lib/oauth/oauth-callback.component.js +408 -0
  101. package/dist/lib/oauth/oauth-callback.component.js.map +1 -0
  102. package/dist/lib/oauth/oauth.module.d.ts +14 -0
  103. package/dist/lib/oauth/oauth.module.d.ts.map +1 -0
  104. package/dist/lib/oauth/oauth.module.js +43 -0
  105. package/dist/lib/oauth/oauth.module.js.map +1 -0
  106. package/dist/lib/query-browser-component/query-browser.component.d.ts +75 -0
  107. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +1 -0
  108. package/dist/lib/query-browser-component/query-browser.component.js +908 -0
  109. package/dist/lib/query-browser-component/query-browser.component.js.map +1 -0
  110. package/dist/lib/report-browser-component/report-browser.component.d.ts +22 -0
  111. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +1 -0
  112. package/dist/lib/report-browser-component/report-browser.component.js +80 -0
  113. package/dist/lib/report-browser-component/report-browser.component.js.map +1 -0
  114. package/dist/lib/resource-browser/resource-browser.component.d.ts +178 -0
  115. package/dist/lib/resource-browser/resource-browser.component.d.ts.map +1 -0
  116. package/dist/lib/resource-browser/resource-browser.component.js +1012 -0
  117. package/dist/lib/resource-browser/resource-browser.component.js.map +1 -0
  118. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +0 -1
  119. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  120. package/dist/lib/resource-wrappers/artifact-resource.component.js +20 -23
  121. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  122. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +0 -1
  123. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
  124. package/dist/lib/resource-wrappers/chat-collections-resource.component.js +36 -45
  125. package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
  126. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +0 -1
  127. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  128. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +98 -100
  129. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  130. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +0 -1
  131. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
  132. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +21 -24
  133. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
  134. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +0 -1
  135. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  136. package/dist/lib/resource-wrappers/dashboard-resource.component.js +11 -10
  137. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  138. package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts +0 -1
  139. package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts.map +1 -1
  140. package/dist/lib/resource-wrappers/list-detail-resource.component.js +3 -5
  141. package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
  142. package/dist/lib/resource-wrappers/notifications-resource.component.d.ts +0 -1
  143. package/dist/lib/resource-wrappers/notifications-resource.component.d.ts.map +1 -1
  144. package/dist/lib/resource-wrappers/notifications-resource.component.js +3 -5
  145. package/dist/lib/resource-wrappers/notifications-resource.component.js.map +1 -1
  146. package/dist/lib/resource-wrappers/query-resource.component.d.ts +0 -1
  147. package/dist/lib/resource-wrappers/query-resource.component.d.ts.map +1 -1
  148. package/dist/lib/resource-wrappers/query-resource.component.js +3 -5
  149. package/dist/lib/resource-wrappers/query-resource.component.js.map +1 -1
  150. package/dist/lib/resource-wrappers/record-resource.component.d.ts +0 -1
  151. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  152. package/dist/lib/resource-wrappers/record-resource.component.js +3 -5
  153. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  154. package/dist/lib/resource-wrappers/report-resource.component.d.ts +13 -0
  155. package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +1 -0
  156. package/dist/lib/resource-wrappers/report-resource.component.js +49 -0
  157. package/dist/lib/resource-wrappers/report-resource.component.js.map +1 -0
  158. package/dist/lib/resource-wrappers/resource-wrappers-loader.d.ts +0 -1
  159. package/dist/lib/resource-wrappers/resource-wrappers-loader.d.ts.map +1 -1
  160. package/dist/lib/resource-wrappers/resource-wrappers-loader.js +3 -33
  161. package/dist/lib/resource-wrappers/resource-wrappers-loader.js.map +1 -1
  162. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +0 -1
  163. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  164. package/dist/lib/resource-wrappers/search-results-resource.component.js +3 -5
  165. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  166. package/dist/lib/resource-wrappers/view-resource.component.d.ts +0 -1
  167. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  168. package/dist/lib/resource-wrappers/view-resource.component.js +8 -13
  169. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  170. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts +11 -0
  171. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts.map +1 -0
  172. package/dist/lib/shared/custom-icon/custom-icon.component.js +44 -0
  173. package/dist/lib/shared/custom-icon/custom-icon.component.js.map +1 -0
  174. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts +6 -0
  175. package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts.map +1 -1
  176. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +62 -34
  177. package/dist/lib/shell/components/dialogs/app-access-dialog.component.js.map +1 -1
  178. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  179. package/dist/lib/shell/components/header/app-nav.component.js +15 -16
  180. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  181. package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
  182. package/dist/lib/shell/components/header/app-switcher.component.js +36 -35
  183. package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
  184. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  185. package/dist/lib/shell/components/tabs/tab-container.component.js +14 -15
  186. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  187. package/dist/lib/shell/shell.component.d.ts +59 -2
  188. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  189. package/dist/lib/shell/shell.component.js +411 -184
  190. package/dist/lib/shell/shell.component.js.map +1 -1
  191. package/dist/lib/shell/shell.module.d.ts +8 -7
  192. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  193. package/dist/lib/shell/shell.module.js +12 -3
  194. package/dist/lib/shell/shell.module.js.map +1 -1
  195. package/dist/lib/single-application/single-application.component.d.ts +24 -0
  196. package/dist/lib/single-application/single-application.component.d.ts.map +1 -0
  197. package/dist/lib/single-application/single-application.component.js +122 -0
  198. package/dist/lib/single-application/single-application.component.js.map +1 -0
  199. package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
  200. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +56 -61
  201. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
  202. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts.map +1 -1
  203. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +3 -3
  204. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
  205. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
  206. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +21 -22
  207. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
  208. package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
  209. package/dist/lib/single-dashboard/single-dashboard.component.js +84 -83
  210. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  211. package/dist/lib/single-entity/single-entity.component.d.ts +34 -0
  212. package/dist/lib/single-entity/single-entity.component.d.ts.map +1 -0
  213. package/dist/lib/single-entity/single-entity.component.js +245 -0
  214. package/dist/lib/single-entity/single-entity.component.js.map +1 -0
  215. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  216. package/dist/lib/single-list-detail/single-list-detail.component.js +75 -72
  217. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  218. package/dist/lib/single-query/single-query.component.d.ts.map +1 -1
  219. package/dist/lib/single-query/single-query.component.js +4 -4
  220. package/dist/lib/single-query/single-query.component.js.map +1 -1
  221. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  222. package/dist/lib/single-record/single-record.component.js +11 -11
  223. package/dist/lib/single-record/single-record.component.js.map +1 -1
  224. package/dist/lib/single-report/single-report.component.d.ts +17 -0
  225. package/dist/lib/single-report/single-report.component.d.ts.map +1 -0
  226. package/dist/lib/single-report/single-report.component.js +55 -0
  227. package/dist/lib/single-report/single-report.component.js.map +1 -0
  228. package/dist/lib/single-search-result/single-search-result.component.d.ts +2 -5
  229. package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
  230. package/dist/lib/single-search-result/single-search-result.component.js +7 -23
  231. package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
  232. package/dist/lib/single-view/single-view.component.d.ts +43 -0
  233. package/dist/lib/single-view/single-view.component.d.ts.map +1 -0
  234. package/dist/lib/single-view/single-view.component.js +207 -0
  235. package/dist/lib/single-view/single-view.component.js.map +1 -0
  236. package/dist/lib/style-guide-test/style-guide-test.component.d.ts +70 -0
  237. package/dist/lib/style-guide-test/style-guide-test.component.d.ts.map +1 -0
  238. package/dist/lib/style-guide-test/style-guide-test.component.js +1024 -0
  239. package/dist/lib/style-guide-test/style-guide-test.component.js.map +1 -0
  240. package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -1
  241. package/dist/lib/system-validation/system-validation-banner.component.js +85 -65
  242. package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -1
  243. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts +46 -0
  244. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts.map +1 -0
  245. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js +547 -0
  246. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js.map +1 -0
  247. package/dist/lib/user-menu/base-user-menu.d.ts +140 -0
  248. package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -0
  249. package/dist/lib/user-menu/base-user-menu.js +380 -0
  250. package/dist/lib/user-menu/base-user-menu.js.map +1 -0
  251. package/dist/lib/user-menu/index.d.ts +3 -0
  252. package/dist/lib/user-menu/index.d.ts.map +1 -0
  253. package/dist/lib/user-menu/index.js +3 -0
  254. package/dist/lib/user-menu/index.js.map +1 -0
  255. package/dist/lib/user-menu/user-menu.types.d.ts +121 -0
  256. package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -0
  257. package/dist/lib/user-menu/user-menu.types.js +13 -0
  258. package/dist/lib/user-menu/user-menu.types.js.map +1 -0
  259. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  260. package/dist/lib/user-notifications/user-notifications.component.js +14 -15
  261. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  262. package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
  263. package/dist/lib/user-profile/user-profile.component.js +56 -54
  264. package/dist/lib/user-profile/user-profile.component.js.map +1 -1
  265. package/dist/module.d.ts +53 -55
  266. package/dist/module.d.ts.map +1 -1
  267. package/dist/module.js +4 -13
  268. package/dist/module.js.map +1 -1
  269. package/dist/public-api.d.ts +7 -1
  270. package/dist/public-api.d.ts.map +1 -1
  271. package/dist/public-api.js +12 -1
  272. package/dist/public-api.js.map +1 -1
  273. package/package.json +60 -62
@@ -2,15 +2,14 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@memberjunction/ng-base-application";
4
4
  import * as i2 from "@memberjunction/ng-shared";
5
- import * as i3 from "@angular/common";
6
- function AppNavComponent_div_1_i_1_Template(rf, ctx) { if (rf & 1) {
5
+ function AppNavComponent_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
7
6
  i0.ɵɵelement(0, "i");
8
7
  } if (rf & 2) {
9
8
  const item_r2 = i0.ɵɵnextContext().$implicit;
10
9
  i0.ɵɵclassMap(item_r2.Icon);
11
10
  } }
12
- function AppNavComponent_div_1_span_4_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "span", 5);
11
+ function AppNavComponent_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "span", 4);
14
13
  i0.ɵɵtext(1);
15
14
  i0.ɵɵelementEnd();
16
15
  } if (rf & 2) {
@@ -18,26 +17,26 @@ function AppNavComponent_div_1_span_4_Template(rf, ctx) { if (rf & 1) {
18
17
  i0.ɵɵadvance();
19
18
  i0.ɵɵtextInterpolate(item_r2.Badge);
20
19
  } }
21
- function AppNavComponent_div_1_Template(rf, ctx) { if (rf & 1) {
20
+ function AppNavComponent_For_2_Template(rf, ctx) { if (rf & 1) {
22
21
  const _r1 = i0.ɵɵgetCurrentView();
23
22
  i0.ɵɵelementStart(0, "div", 2);
24
- i0.ɵɵlistener("click", function AppNavComponent_div_1_Template_div_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onNavClick(item_r2, $event)); })("dblclick", function AppNavComponent_div_1_Template_div_dblclick_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onNavDblClick(item_r2, $event)); });
25
- i0.ɵɵtemplate(1, AppNavComponent_div_1_i_1_Template, 1, 2, "i", 3);
23
+ i0.ɵɵlistener("click", function AppNavComponent_For_2_Template_div_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onNavClick(item_r2, $event)); })("dblclick", function AppNavComponent_For_2_Template_div_dblclick_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onNavDblClick(item_r2, $event)); });
24
+ i0.ɵɵconditionalCreate(1, AppNavComponent_For_2_Conditional_1_Template, 1, 2, "i", 3);
26
25
  i0.ɵɵelementStart(2, "span");
27
26
  i0.ɵɵtext(3);
28
27
  i0.ɵɵelementEnd();
29
- i0.ɵɵtemplate(4, AppNavComponent_div_1_span_4_Template, 2, 1, "span", 4);
28
+ i0.ɵɵconditionalCreate(4, AppNavComponent_For_2_Conditional_4_Template, 2, 1, "span", 4);
30
29
  i0.ɵɵelementEnd();
31
30
  } if (rf & 2) {
32
31
  const item_r2 = ctx.$implicit;
33
32
  const ctx_r2 = i0.ɵɵnextContext();
34
33
  i0.ɵɵclassProp("active", ctx_r2.isActive(item_r2))("no-icon", !item_r2.Icon);
35
34
  i0.ɵɵadvance();
36
- i0.ɵɵproperty("ngIf", item_r2.Icon);
35
+ i0.ɵɵconditional(item_r2.Icon ? 1 : -1);
37
36
  i0.ɵɵadvance(2);
38
37
  i0.ɵɵtextInterpolate(item_r2.Label);
39
38
  i0.ɵɵadvance();
40
- i0.ɵɵproperty("ngIf", item_r2.Badge);
39
+ i0.ɵɵconditional(item_r2.Badge ? 4 : -1);
41
40
  } }
42
41
  /**
43
42
  * Horizontal navigation items for the current app.
@@ -127,23 +126,23 @@ export class AppNavComponent {
127
126
  return false;
128
127
  }
129
128
  static ɵfac = function AppNavComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AppNavComponent)(i0.ɵɵdirectiveInject(i1.WorkspaceStateManager), i0.ɵɵdirectiveInject(i2.SharedService)); };
130
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppNavComponent, selectors: [["mj-app-nav"]], inputs: { app: "app" }, outputs: { navItemClick: "navItemClick" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 3, consts: [[1, "nav-list"], ["class", "nav-item", 3, "active", "no-icon", "click", "dblclick", 4, "ngFor", "ngForOf"], [1, "nav-item", 3, "click", "dblclick"], [3, "class", 4, "ngIf"], ["class", "badge", 4, "ngIf"], [1, "badge"]], template: function AppNavComponent_Template(rf, ctx) { if (rf & 1) {
129
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppNavComponent, selectors: [["mj-app-nav"]], inputs: { app: "app" }, outputs: { navItemClick: "navItemClick" }, standalone: false, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[1, "nav-list"], [1, "nav-item", 3, "active", "no-icon"], [1, "nav-item", 3, "click", "dblclick"], [3, "class"], [1, "badge"]], template: function AppNavComponent_Template(rf, ctx) { if (rf & 1) {
131
130
  i0.ɵɵelementStart(0, "nav", 0);
132
- i0.ɵɵtemplate(1, AppNavComponent_div_1_Template, 5, 7, "div", 1);
131
+ i0.ɵɵrepeaterCreate(1, AppNavComponent_For_2_Template, 5, 7, "div", 1, i0.ɵɵrepeaterTrackByIdentity);
133
132
  i0.ɵɵelementEnd();
134
133
  } if (rf & 2) {
135
134
  i0.ɵɵstyleProp("--app-color", ctx.appColor);
136
135
  i0.ɵɵadvance();
137
- i0.ɵɵproperty("ngForOf", ctx.navItems);
138
- } }, dependencies: [i3.NgForOf, i3.NgIf], styles: [".nav-list[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border-radius: 6px;\n text-decoration: none;\n color: #616161;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.15s;\n position: relative;\n cursor: pointer;\n user-select: none;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n color: #424242;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--app-color, #1976d2) 12%, white);\n color: var(--app-color, #1976d2);\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--app-color, #1976d2);\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.no-icon[_ngcontent-%COMP%] {\n padding-left: 12px;\n padding-right: 12px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n background: #f44336;\n color: white;\n border-radius: 10px;\n padding: 2px 6px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n}\n\n\n\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 2px;\n padding: 0 12px;\n}\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-radius: 8px;\n}\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 20px;\n text-align: center;\n}"] });
136
+ i0.ɵɵrepeater(ctx.navItems);
137
+ } }, styles: [".nav-list[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border-radius: 6px;\n text-decoration: none;\n color: #616161;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.15s;\n position: relative;\n cursor: pointer;\n user-select: none;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n color: #424242;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--app-color, #1976d2) 12%, white);\n color: var(--app-color, #1976d2);\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--app-color, #1976d2);\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item.no-icon[_ngcontent-%COMP%] {\n padding-left: 12px;\n padding-right: 12px;\n}\n.nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n background: #f44336;\n color: white;\n border-radius: 10px;\n padding: 2px 6px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n}\n\n\n\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 2px;\n padding: 0 12px;\n}\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-radius: 8px;\n}\n.mobile-nav-content[_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .mobile-nav-content [_nghost-%COMP%] .nav-list[_ngcontent-%COMP%] .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 20px;\n text-align: center;\n}"] });
139
138
  }
140
139
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppNavComponent, [{
141
140
  type: Component,
142
- args: [{ selector: 'mj-app-nav', template: "<nav class=\"nav-list\" [style.--app-color]=\"appColor\">\n <div\n *ngFor=\"let item of navItems\"\n class=\"nav-item\"\n [class.active]=\"isActive(item)\"\n [class.no-icon]=\"!item.Icon\"\n (click)=\"onNavClick(item, $event)\"\n (dblclick)=\"onNavDblClick(item, $event)\">\n <i *ngIf=\"item.Icon\" [class]=\"item.Icon\"></i>\n <span>{{ item.Label }}</span>\n <span *ngIf=\"item.Badge\" class=\"badge\">{{ item.Badge }}</span>\n </div>\n</nav>\n", styles: [".nav-list {\n display: flex;\n gap: 4px;\n}\n.nav-list .nav-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border-radius: 6px;\n text-decoration: none;\n color: #616161;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.15s;\n position: relative;\n cursor: pointer;\n user-select: none;\n}\n.nav-list .nav-item:hover {\n background: #f5f5f5;\n color: #424242;\n}\n.nav-list .nav-item.active {\n background: color-mix(in srgb, var(--app-color, #1976d2) 12%, white);\n color: var(--app-color, #1976d2);\n}\n.nav-list .nav-item.active i {\n color: var(--app-color, #1976d2);\n}\n.nav-list .nav-item i {\n font-size: 16px;\n}\n.nav-list .nav-item.no-icon {\n padding-left: 12px;\n padding-right: 12px;\n}\n.nav-list .nav-item .badge {\n background: #f44336;\n color: white;\n border-radius: 10px;\n padding: 2px 6px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n}\n\n/* Mobile drawer vertical layout */\n:host-context(.mobile-nav-content) .nav-list {\n flex-direction: column;\n gap: 2px;\n padding: 0 12px;\n}\n:host-context(.mobile-nav-content) .nav-list .nav-item {\n padding: 12px 16px;\n border-radius: 8px;\n}\n:host-context(.mobile-nav-content) .nav-list .nav-item i {\n width: 20px;\n text-align: center;\n}\n"] }]
141
+ args: [{ standalone: false, selector: 'mj-app-nav', template: "<nav class=\"nav-list\" [style.--app-color]=\"appColor\">\n @for (item of navItems; track item) {\n <div\n class=\"nav-item\"\n [class.active]=\"isActive(item)\"\n [class.no-icon]=\"!item.Icon\"\n (click)=\"onNavClick(item, $event)\"\n (dblclick)=\"onNavDblClick(item, $event)\">\n @if (item.Icon) {\n <i [class]=\"item.Icon\"></i>\n }\n <span>{{ item.Label }}</span>\n @if (item.Badge) {\n <span class=\"badge\">{{ item.Badge }}</span>\n }\n </div>\n }\n</nav>\n", styles: [".nav-list {\n display: flex;\n gap: 4px;\n}\n.nav-list .nav-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n border-radius: 6px;\n text-decoration: none;\n color: #616161;\n font-weight: 500;\n font-size: 14px;\n transition: all 0.15s;\n position: relative;\n cursor: pointer;\n user-select: none;\n}\n.nav-list .nav-item:hover {\n background: #f5f5f5;\n color: #424242;\n}\n.nav-list .nav-item.active {\n background: color-mix(in srgb, var(--app-color, #1976d2) 12%, white);\n color: var(--app-color, #1976d2);\n}\n.nav-list .nav-item.active i {\n color: var(--app-color, #1976d2);\n}\n.nav-list .nav-item i {\n font-size: 16px;\n}\n.nav-list .nav-item.no-icon {\n padding-left: 12px;\n padding-right: 12px;\n}\n.nav-list .nav-item .badge {\n background: #f44336;\n color: white;\n border-radius: 10px;\n padding: 2px 6px;\n font-size: 11px;\n font-weight: 600;\n min-width: 18px;\n text-align: center;\n}\n\n/* Mobile drawer vertical layout */\n:host-context(.mobile-nav-content) .nav-list {\n flex-direction: column;\n gap: 2px;\n padding: 0 12px;\n}\n:host-context(.mobile-nav-content) .nav-list .nav-item {\n padding: 12px 16px;\n border-radius: 8px;\n}\n:host-context(.mobile-nav-content) .nav-list .nav-item i {\n width: 20px;\n text-align: center;\n}\n"] }]
143
142
  }], () => [{ type: i1.WorkspaceStateManager }, { type: i2.SharedService }], { app: [{
144
143
  type: Input
145
144
  }], navItemClick: [{
146
145
  type: Output
147
146
  }] }); })();
148
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppNavComponent, { className: "AppNavComponent", filePath: "src/lib/shell/components/header/app-nav.component.ts", lineNumber: 22 }); })();
147
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppNavComponent, { className: "AppNavComponent", filePath: "src/lib/shell/components/header/app-nav.component.ts", lineNumber: 23 }); })();
149
148
  //# sourceMappingURL=app-nav.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-nav.component.js","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-nav.component.ts","../../../../../src/lib/shell/components/header/app-nav.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-nav.component.js","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-nav.component.ts","../../../../../src/lib/shell/components/header/app-nav.component.html"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-switcher.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-switcher.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAA2B,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;;AAE9E;;;GAGG;AACH,qBAKa,oBAAoB;IAYnB,OAAO,CAAC,UAAU;IAXrB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAQ;IACzC,kBAAkB,UAAS;IACpC,qEAAqE;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,WAAW,uBAA8B;IAErB,eAAe,EAAG,sBAAsB,CAAC;IAEvE,YAAY,UAAS;IACrB,gBAAgB,UAAS;gBAEL,UAAU,EAAE,kBAAkB;IAElD;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,eAAe,EAAE,CAE5B;IAED;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAOrC;;OAEG;IAEH,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOvC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAWxB;;OAEG;IACH,aAAa,IAAI,IAAI;yCA3EV,oBAAoB;2CAApB,oBAAoB;CAgFhC"}
1
+ {"version":3,"file":"app-switcher.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-switcher.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAA2B,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;;AAE9E;;;GAGG;AACH,qBAMa,oBAAoB;IAYnB,OAAO,CAAC,UAAU;IAXrB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAQ;IACzC,kBAAkB,UAAS;IACpC,qEAAqE;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,WAAW,uBAA8B;IAErB,eAAe,EAAG,sBAAsB,CAAC;IAEvE,YAAY,UAAS;IACrB,gBAAgB,UAAS;gBAEL,UAAU,EAAE,kBAAkB;IAElD;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,eAAe,EAAE,CAE5B;IAED;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAOrC;;OAEG;IAEH,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOvC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAWxB;;OAEG;IACH,aAAa,IAAI,IAAI;yCA3EV,oBAAoB;2CAApB,oBAAoB;CAgFhC"}
@@ -1,33 +1,33 @@
1
1
  import { Component, Input, Output, EventEmitter, HostListener, ViewChild } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@memberjunction/ng-base-application";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@memberjunction/ng-explorer-settings";
4
+ import * as i2 from "@memberjunction/ng-explorer-settings";
6
5
  const _c0 = ["appConfigDialog"];
7
- function AppSwitcherComponent_i_2_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelement(0, "i", 8);
6
+ function AppSwitcherComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelement(0, "i", 3);
9
8
  } }
10
- function AppSwitcherComponent_i_3_Template(rf, ctx) { if (rf & 1) {
11
- i0.ɵɵelement(0, "i", 9);
9
+ function AppSwitcherComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelement(0, "i", 8);
12
11
  } if (rf & 2) {
13
12
  const ctx_r1 = i0.ɵɵnextContext();
14
13
  i0.ɵɵclassMap((ctx_r1.activeApp == null ? null : ctx_r1.activeApp.Icon) || "fa-solid fa-cube");
15
14
  i0.ɵɵstyleProp("color", ctx_r1.activeApp == null ? null : ctx_r1.activeApp.GetColor())("--active-color", ctx_r1.activeApp == null ? null : ctx_r1.activeApp.GetColor());
16
15
  } }
17
- function AppSwitcherComponent_div_5_div_1_i_1_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelement(0, "i", 18);
16
+ function AppSwitcherComponent_Conditional_5_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelement(0, "i", 14);
19
18
  } }
20
- function AppSwitcherComponent_div_5_div_1_i_2_Template(rf, ctx) { if (rf & 1) {
19
+ function AppSwitcherComponent_Conditional_5_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
21
20
  i0.ɵɵelement(0, "i");
22
21
  } if (rf & 2) {
23
22
  const app_r5 = i0.ɵɵnextContext().$implicit;
24
23
  i0.ɵɵclassMap(app_r5.Icon || "fa-solid fa-cube");
25
24
  } }
26
- function AppSwitcherComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
25
+ function AppSwitcherComponent_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
27
26
  const _r4 = i0.ɵɵgetCurrentView();
28
- i0.ɵɵelementStart(0, "div", 15);
29
- i0.ɵɵlistener("click", function AppSwitcherComponent_div_5_div_1_Template_div_click_0_listener() { const app_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectApp(app_r5)); });
30
- i0.ɵɵtemplate(1, AppSwitcherComponent_div_5_div_1_i_1_Template, 1, 0, "i", 16)(2, AppSwitcherComponent_div_5_div_1_i_2_Template, 1, 2, "i", 17);
27
+ i0.ɵɵelementStart(0, "div", 13);
28
+ i0.ɵɵlistener("click", function AppSwitcherComponent_Conditional_5_For_2_Template_div_click_0_listener() { const app_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectApp(app_r5)); });
29
+ i0.ɵɵconditionalCreate(1, AppSwitcherComponent_Conditional_5_For_2_Conditional_1_Template, 1, 0, "i", 14);
30
+ i0.ɵɵconditionalCreate(2, AppSwitcherComponent_Conditional_5_For_2_Conditional_2_Template, 1, 2, "i", 15);
31
31
  i0.ɵɵelementStart(3, "span");
32
32
  i0.ɵɵtext(4);
33
33
  i0.ɵɵelementEnd()();
@@ -37,27 +37,27 @@ function AppSwitcherComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
37
37
  i0.ɵɵstyleProp("--item-color", app_r5.GetColor());
38
38
  i0.ɵɵclassProp("active", app_r5.ID === (ctx_r1.activeApp == null ? null : ctx_r1.activeApp.ID))("loading", app_r5.ID === ctx_r1.loadingAppId);
39
39
  i0.ɵɵadvance();
40
- i0.ɵɵproperty("ngIf", app_r5.ID === ctx_r1.loadingAppId);
40
+ i0.ɵɵconditional(app_r5.ID === ctx_r1.loadingAppId ? 1 : -1);
41
41
  i0.ɵɵadvance();
42
- i0.ɵɵproperty("ngIf", app_r5.ID !== ctx_r1.loadingAppId);
42
+ i0.ɵɵconditional(app_r5.ID !== ctx_r1.loadingAppId ? 2 : -1);
43
43
  i0.ɵɵadvance(2);
44
44
  i0.ɵɵtextInterpolate(app_r5.Name);
45
45
  } }
46
- function AppSwitcherComponent_div_5_Template(rf, ctx) { if (rf & 1) {
46
+ function AppSwitcherComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
47
47
  const _r3 = i0.ɵɵgetCurrentView();
48
- i0.ɵɵelementStart(0, "div", 10);
49
- i0.ɵɵtemplate(1, AppSwitcherComponent_div_5_div_1_Template, 5, 9, "div", 11);
50
- i0.ɵɵelement(2, "div", 12);
51
- i0.ɵɵelementStart(3, "div", 13);
52
- i0.ɵɵlistener("click", function AppSwitcherComponent_div_5_Template_div_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openConfigDialog()); });
53
- i0.ɵɵelement(4, "i", 14);
54
- i0.ɵɵelementStart(5, "span");
55
- i0.ɵɵtext(6, "Configure...");
48
+ i0.ɵɵelementStart(0, "div", 6);
49
+ i0.ɵɵrepeaterCreate(1, AppSwitcherComponent_Conditional_5_For_2_Template, 5, 9, "div", 9, i0.ɵɵrepeaterTrackByIdentity);
50
+ i0.ɵɵelement(3, "div", 10);
51
+ i0.ɵɵelementStart(4, "div", 11);
52
+ i0.ɵɵlistener("click", function AppSwitcherComponent_Conditional_5_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openConfigDialog()); });
53
+ i0.ɵɵelement(5, "i", 12);
54
+ i0.ɵɵelementStart(6, "span");
55
+ i0.ɵɵtext(7, "Configure...");
56
56
  i0.ɵɵelementEnd()()();
57
57
  } if (rf & 2) {
58
58
  const ctx_r1 = i0.ɵɵnextContext();
59
59
  i0.ɵɵadvance();
60
- i0.ɵɵproperty("ngForOf", ctx_r1.apps);
60
+ i0.ɵɵrepeater(ctx_r1.apps);
61
61
  } }
62
62
  /**
63
63
  * App switcher dropdown in the header.
@@ -142,15 +142,16 @@ export class AppSwitcherComponent {
142
142
  let _t;
143
143
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.appConfigDialog = _t.first);
144
144
  } }, hostBindings: function AppSwitcherComponent_HostBindings(rf, ctx) { if (rf & 1) {
145
- i0.ɵɵlistener("click", function AppSwitcherComponent_click_HostBindingHandler($event) { return ctx.onClickOutside($event); }, false, i0.ɵɵresolveDocument);
146
- } }, inputs: { activeApp: "activeApp", isViewingSystemTab: "isViewingSystemTab", loadingAppId: "loadingAppId" }, outputs: { appSelected: "appSelected" }, decls: 8, vars: 6, consts: [["appConfigDialog", ""], [1, "app-switcher-container"], [1, "app-switcher-button", 3, "click"], ["class", "app-icon loading-spinner fa-solid fa-spinner fa-spin", 4, "ngIf"], ["class", "app-icon", 3, "class", "color", "--active-color", 4, "ngIf"], [1, "dropdown-arrow", "fa-solid", "fa-chevron-down"], ["class", "app-switcher-dropdown", 4, "ngIf"], [3, "showDialogChange", "configSaved", "showDialog"], [1, "app-icon", "loading-spinner", "fa-solid", "fa-spinner", "fa-spin"], [1, "app-icon"], [1, "app-switcher-dropdown"], ["class", "app-switcher-item", 3, "active", "loading", "--item-color", "click", 4, "ngFor", "ngForOf"], [1, "app-switcher-divider"], [1, "app-switcher-item", "configure-item", 3, "click"], [1, "fa-solid", "fa-gear"], [1, "app-switcher-item", 3, "click"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function AppSwitcherComponent_Template(rf, ctx) { if (rf & 1) {
145
+ i0.ɵɵlistener("click", function AppSwitcherComponent_click_HostBindingHandler($event) { return ctx.onClickOutside($event); }, i0.ɵɵresolveDocument);
146
+ } }, inputs: { activeApp: "activeApp", isViewingSystemTab: "isViewingSystemTab", loadingAppId: "loadingAppId" }, outputs: { appSelected: "appSelected" }, standalone: false, decls: 8, vars: 6, consts: [["appConfigDialog", ""], [1, "app-switcher-container"], [1, "app-switcher-button", 3, "click"], [1, "app-icon", "loading-spinner", "fa-solid", "fa-spinner", "fa-spin"], [1, "app-icon", 3, "class", "color", "--active-color"], [1, "dropdown-arrow", "fa-solid", "fa-chevron-down"], [1, "app-switcher-dropdown"], [3, "showDialogChange", "configSaved", "showDialog"], [1, "app-icon"], [1, "app-switcher-item", 3, "active", "loading", "--item-color"], [1, "app-switcher-divider"], [1, "app-switcher-item", "configure-item", 3, "click"], [1, "fa-solid", "fa-gear"], [1, "app-switcher-item", 3, "click"], [1, "fa-solid", "fa-spinner", "fa-spin"], [3, "class"]], template: function AppSwitcherComponent_Template(rf, ctx) { if (rf & 1) {
147
147
  const _r1 = i0.ɵɵgetCurrentView();
148
148
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
149
149
  i0.ɵɵlistener("click", function AppSwitcherComponent_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.toggleDropdown()); });
150
- i0.ɵɵtemplate(2, AppSwitcherComponent_i_2_Template, 1, 0, "i", 3)(3, AppSwitcherComponent_i_3_Template, 1, 6, "i", 4);
150
+ i0.ɵɵconditionalCreate(2, AppSwitcherComponent_Conditional_2_Template, 1, 0, "i", 3);
151
+ i0.ɵɵconditionalCreate(3, AppSwitcherComponent_Conditional_3_Template, 1, 6, "i", 4);
151
152
  i0.ɵɵelement(4, "i", 5);
152
153
  i0.ɵɵelementEnd();
153
- i0.ɵɵtemplate(5, AppSwitcherComponent_div_5_Template, 7, 1, "div", 6);
154
+ i0.ɵɵconditionalCreate(5, AppSwitcherComponent_Conditional_5_Template, 8, 0, "div", 6);
154
155
  i0.ɵɵelementEnd();
155
156
  i0.ɵɵelementStart(6, "mj-user-app-config", 7, 0);
156
157
  i0.ɵɵtwoWayListener("showDialogChange", function AppSwitcherComponent_Template_mj_user_app_config_showDialogChange_6_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.showConfigDialog, $event) || (ctx.showConfigDialog = $event); return i0.ɵɵresetView($event); });
@@ -159,18 +160,18 @@ export class AppSwitcherComponent {
159
160
  } if (rf & 2) {
160
161
  i0.ɵɵclassProp("loading", ctx.isLoading);
161
162
  i0.ɵɵadvance(2);
162
- i0.ɵɵproperty("ngIf", ctx.isLoading);
163
+ i0.ɵɵconditional(ctx.isLoading ? 2 : -1);
163
164
  i0.ɵɵadvance();
164
- i0.ɵɵproperty("ngIf", !ctx.isLoading);
165
+ i0.ɵɵconditional(!ctx.isLoading ? 3 : -1);
165
166
  i0.ɵɵadvance(2);
166
- i0.ɵɵproperty("ngIf", ctx.showDropdown);
167
+ i0.ɵɵconditional(ctx.showDropdown ? 5 : -1);
167
168
  i0.ɵɵadvance();
168
169
  i0.ɵɵtwoWayProperty("showDialog", ctx.showConfigDialog);
169
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.UserAppConfigComponent], styles: [".app-switcher-container[_ngcontent-%COMP%] {\n position: relative;\n margin-left: -2px; \n\n}\n\n.app-switcher-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n}\n.app-switcher-button[_ngcontent-%COMP%] .app-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n width: 24px;\n text-align: center;\n position: relative;\n}\n\n\n.app-switcher-button[_ngcontent-%COMP%] .app-icon[_ngcontent-%COMP%]::after {\n content: \"\";\n position: absolute;\n bottom: -6px;\n left: 2px;\n right: 2px;\n height: 3px;\n border-radius: 2px;\n background-color: var(--active-color, #757575);\n}\n.app-switcher-button[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n.app-switcher-button[_ngcontent-%COMP%] .dropdown-arrow[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #9e9e9e;\n}\n\n.app-switcher-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 220px;\n width: max-content;\n overflow: hidden;\n z-index: 10000;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.15s;\n font-weight: 500;\n color: #616161;\n position: relative;\n white-space: nowrap;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 8px;\n bottom: 8px;\n width: 3px;\n border-radius: 2px;\n background-color: var(--item-color, #757575);\n opacity: 0.8;\n transition: all 0.15s;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--item-color, #757575);\n width: 20px;\n text-align: center;\n opacity: 1;\n transition: all 0.15s;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--item-color, #1976d2) 10%, white);\n color: var(--item-color, #1976d2);\n font-weight: 600;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.active[_ngcontent-%COMP%]::before {\n width: 4px;\n left: 3px;\n opacity: 1;\n}\n\n\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%] {\n color: #616161;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]::before {\n display: none;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #757575;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]:hover {\n color: #424242;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #424242;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 12px;\n}\n\n\n\n.app-switcher-button[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n color: #757575;\n}\n.app-switcher-button[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%]::after {\n \n\n display: none;\n}\n\n\n\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.loading[_ngcontent-%COMP%] {\n pointer-events: none;\n opacity: 0.7;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--item-color, #757575);\n}"] });
170
+ } }, dependencies: [i2.UserAppConfigComponent], styles: [".app-switcher-container[_ngcontent-%COMP%] {\n position: relative;\n margin-left: -2px; \n\n}\n\n.app-switcher-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n}\n.app-switcher-button[_ngcontent-%COMP%] .app-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n width: 24px;\n text-align: center;\n position: relative;\n}\n\n\n.app-switcher-button[_ngcontent-%COMP%] .app-icon[_ngcontent-%COMP%]::after {\n content: \"\";\n position: absolute;\n bottom: -6px;\n left: 2px;\n right: 2px;\n height: 3px;\n border-radius: 2px;\n background-color: var(--active-color, #757575);\n}\n.app-switcher-button[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n.app-switcher-button[_ngcontent-%COMP%] .dropdown-arrow[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #9e9e9e;\n}\n\n.app-switcher-dropdown[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 220px;\n width: max-content;\n overflow: hidden;\n z-index: 10000;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.15s;\n font-weight: 500;\n color: #616161;\n position: relative;\n white-space: nowrap;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 8px;\n bottom: 8px;\n width: 3px;\n border-radius: 2px;\n background-color: var(--item-color, #757575);\n opacity: 0.8;\n transition: all 0.15s;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--item-color, #757575);\n width: 20px;\n text-align: center;\n opacity: 1;\n transition: all 0.15s;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--item-color, #1976d2) 10%, white);\n color: var(--item-color, #1976d2);\n font-weight: 600;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.active[_ngcontent-%COMP%]::before {\n width: 4px;\n left: 3px;\n opacity: 1;\n}\n\n\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%] {\n color: #616161;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]::before {\n display: none;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #757575;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]:hover {\n color: #424242;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.configure-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #424242;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 12px;\n}\n\n\n\n.app-switcher-button[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n color: #757575;\n}\n.app-switcher-button[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%]::after {\n \n\n display: none;\n}\n\n\n\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.loading[_ngcontent-%COMP%] {\n pointer-events: none;\n opacity: 0.7;\n}\n.app-switcher-dropdown[_ngcontent-%COMP%] .app-switcher-item.loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--item-color, #757575);\n}"] });
170
171
  }
171
172
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppSwitcherComponent, [{
172
173
  type: Component,
173
- args: [{ selector: 'mj-app-switcher', template: "<div class=\"app-switcher-container\" [class.loading]=\"isLoading\">\n <div class=\"app-switcher-button\"\n (click)=\"toggleDropdown()\">\n <!-- Show spinner when loading, otherwise show app icon -->\n <i *ngIf=\"isLoading\" class=\"app-icon loading-spinner fa-solid fa-spinner fa-spin\"></i>\n <i *ngIf=\"!isLoading\" class=\"app-icon\" [class]=\"activeApp?.Icon || 'fa-solid fa-cube'\"\n [style.color]=\"activeApp?.GetColor()\"\n [style.--active-color]=\"activeApp?.GetColor()\"></i>\n <i class=\"dropdown-arrow fa-solid fa-chevron-down\"></i>\n </div>\n\n <div class=\"app-switcher-dropdown\" *ngIf=\"showDropdown\">\n <div\n *ngFor=\"let app of apps\"\n class=\"app-switcher-item\"\n [class.active]=\"app.ID === activeApp?.ID\"\n [class.loading]=\"app.ID === loadingAppId\"\n [style.--item-color]=\"app.GetColor()\"\n (click)=\"selectApp(app)\">\n <i *ngIf=\"app.ID === loadingAppId\" class=\"fa-solid fa-spinner fa-spin\"></i>\n <i *ngIf=\"app.ID !== loadingAppId\" [class]=\"app.Icon || 'fa-solid fa-cube'\"></i>\n <span>{{ app.Name }}</span>\n </div>\n\n <!-- Divider -->\n <div class=\"app-switcher-divider\"></div>\n\n <!-- Configure option -->\n <div class=\"app-switcher-item configure-item\" (click)=\"openConfigDialog()\">\n <i class=\"fa-solid fa-gear\"></i>\n <span>Configure...</span>\n </div>\n </div>\n</div>\n\n<!-- App Configuration Dialog -->\n<mj-user-app-config\n #appConfigDialog\n [(showDialog)]=\"showConfigDialog\"\n (configSaved)=\"onConfigSaved()\">\n</mj-user-app-config>\n", styles: [".app-switcher-container {\n position: relative;\n margin-left: -2px; /* Fine-tune alignment when no nav-bar icons to the left */\n}\n\n.app-switcher-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n}\n.app-switcher-button .app-icon {\n font-size: 20px;\n width: 24px;\n text-align: center;\n position: relative;\n}\n/* Color underline under the icon only, not the caret */\n.app-switcher-button .app-icon::after {\n content: \"\";\n position: absolute;\n bottom: -6px;\n left: 2px;\n right: 2px;\n height: 3px;\n border-radius: 2px;\n background-color: var(--active-color, #757575);\n}\n.app-switcher-button:hover {\n background: #f5f5f5;\n}\n.app-switcher-button .dropdown-arrow {\n font-size: 10px;\n color: #9e9e9e;\n}\n\n.app-switcher-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 220px;\n width: max-content;\n overflow: hidden;\n z-index: 10000;\n}\n.app-switcher-dropdown .app-switcher-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.15s;\n font-weight: 500;\n color: #616161;\n position: relative;\n white-space: nowrap;\n}\n.app-switcher-dropdown .app-switcher-item::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 8px;\n bottom: 8px;\n width: 3px;\n border-radius: 2px;\n background-color: var(--item-color, #757575);\n opacity: 0.8;\n transition: all 0.15s;\n}\n.app-switcher-dropdown .app-switcher-item i {\n font-size: 18px;\n color: var(--item-color, #757575);\n width: 20px;\n text-align: center;\n opacity: 1;\n transition: all 0.15s;\n}\n.app-switcher-dropdown .app-switcher-item:hover {\n background: #f5f5f5;\n}\n.app-switcher-dropdown .app-switcher-item:hover::before {\n opacity: 1;\n}\n.app-switcher-dropdown .app-switcher-item.active {\n background: color-mix(in srgb, var(--item-color, #1976d2) 10%, white);\n color: var(--item-color, #1976d2);\n font-weight: 600;\n}\n.app-switcher-dropdown .app-switcher-item.active::before {\n width: 4px;\n left: 3px;\n opacity: 1;\n}\n/* Configure option - no color line, neutral gray styling */\n.app-switcher-dropdown .app-switcher-item.configure-item {\n color: #616161;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item::before {\n display: none;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item i {\n color: #757575;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item:hover {\n color: #424242;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item:hover i {\n color: #424242;\n}\n.app-switcher-dropdown .app-switcher-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 12px;\n}\n\n/* Loading state for app switcher button */\n.app-switcher-button .loading-spinner {\n color: #757575;\n}\n.app-switcher-button .loading-spinner::after {\n /* Hide the underline when showing spinner */\n display: none;\n}\n\n/* Loading state for dropdown items */\n.app-switcher-dropdown .app-switcher-item.loading {\n pointer-events: none;\n opacity: 0.7;\n}\n.app-switcher-dropdown .app-switcher-item.loading i {\n color: var(--item-color, #757575);\n}\n"] }]
174
+ args: [{ standalone: false, selector: 'mj-app-switcher', template: "<div class=\"app-switcher-container\" [class.loading]=\"isLoading\">\n <div class=\"app-switcher-button\"\n (click)=\"toggleDropdown()\">\n <!-- Show spinner when loading, otherwise show app icon -->\n @if (isLoading) {\n <i class=\"app-icon loading-spinner fa-solid fa-spinner fa-spin\"></i>\n }\n @if (!isLoading) {\n <i class=\"app-icon\" [class]=\"activeApp?.Icon || 'fa-solid fa-cube'\"\n [style.color]=\"activeApp?.GetColor()\"\n [style.--active-color]=\"activeApp?.GetColor()\"></i>\n }\n <i class=\"dropdown-arrow fa-solid fa-chevron-down\"></i>\n </div>\n\n @if (showDropdown) {\n <div class=\"app-switcher-dropdown\">\n @for (app of apps; track app) {\n <div\n class=\"app-switcher-item\"\n [class.active]=\"app.ID === activeApp?.ID\"\n [class.loading]=\"app.ID === loadingAppId\"\n [style.--item-color]=\"app.GetColor()\"\n (click)=\"selectApp(app)\">\n @if (app.ID === loadingAppId) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n @if (app.ID !== loadingAppId) {\n <i [class]=\"app.Icon || 'fa-solid fa-cube'\"></i>\n }\n <span>{{ app.Name }}</span>\n </div>\n }\n <!-- Divider -->\n <div class=\"app-switcher-divider\"></div>\n <!-- Configure option -->\n <div class=\"app-switcher-item configure-item\" (click)=\"openConfigDialog()\">\n <i class=\"fa-solid fa-gear\"></i>\n <span>Configure...</span>\n </div>\n </div>\n }\n</div>\n\n<!-- App Configuration Dialog -->\n<mj-user-app-config\n #appConfigDialog\n [(showDialog)]=\"showConfigDialog\"\n (configSaved)=\"onConfigSaved()\">\n</mj-user-app-config>\n", styles: [".app-switcher-container {\n position: relative;\n margin-left: -2px; /* Fine-tune alignment when no nav-bar icons to the left */\n}\n\n.app-switcher-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n cursor: pointer;\n transition: background 0.15s;\n user-select: none;\n position: relative;\n}\n.app-switcher-button .app-icon {\n font-size: 20px;\n width: 24px;\n text-align: center;\n position: relative;\n}\n/* Color underline under the icon only, not the caret */\n.app-switcher-button .app-icon::after {\n content: \"\";\n position: absolute;\n bottom: -6px;\n left: 2px;\n right: 2px;\n height: 3px;\n border-radius: 2px;\n background-color: var(--active-color, #757575);\n}\n.app-switcher-button:hover {\n background: #f5f5f5;\n}\n.app-switcher-button .dropdown-arrow {\n font-size: 10px;\n color: #9e9e9e;\n}\n\n.app-switcher-dropdown {\n position: absolute;\n top: calc(100% + 8px);\n left: 0;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 220px;\n width: max-content;\n overflow: hidden;\n z-index: 10000;\n}\n.app-switcher-dropdown .app-switcher-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.15s;\n font-weight: 500;\n color: #616161;\n position: relative;\n white-space: nowrap;\n}\n.app-switcher-dropdown .app-switcher-item::before {\n content: \"\";\n position: absolute;\n left: 4px;\n top: 8px;\n bottom: 8px;\n width: 3px;\n border-radius: 2px;\n background-color: var(--item-color, #757575);\n opacity: 0.8;\n transition: all 0.15s;\n}\n.app-switcher-dropdown .app-switcher-item i {\n font-size: 18px;\n color: var(--item-color, #757575);\n width: 20px;\n text-align: center;\n opacity: 1;\n transition: all 0.15s;\n}\n.app-switcher-dropdown .app-switcher-item:hover {\n background: #f5f5f5;\n}\n.app-switcher-dropdown .app-switcher-item:hover::before {\n opacity: 1;\n}\n.app-switcher-dropdown .app-switcher-item.active {\n background: color-mix(in srgb, var(--item-color, #1976d2) 10%, white);\n color: var(--item-color, #1976d2);\n font-weight: 600;\n}\n.app-switcher-dropdown .app-switcher-item.active::before {\n width: 4px;\n left: 3px;\n opacity: 1;\n}\n/* Configure option - no color line, neutral gray styling */\n.app-switcher-dropdown .app-switcher-item.configure-item {\n color: #616161;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item::before {\n display: none;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item i {\n color: #757575;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item:hover {\n color: #424242;\n}\n.app-switcher-dropdown .app-switcher-item.configure-item:hover i {\n color: #424242;\n}\n.app-switcher-dropdown .app-switcher-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 12px;\n}\n\n/* Loading state for app switcher button */\n.app-switcher-button .loading-spinner {\n color: #757575;\n}\n.app-switcher-button .loading-spinner::after {\n /* Hide the underline when showing spinner */\n display: none;\n}\n\n/* Loading state for dropdown items */\n.app-switcher-dropdown .app-switcher-item.loading {\n pointer-events: none;\n opacity: 0.7;\n}\n.app-switcher-dropdown .app-switcher-item.loading i {\n color: var(--item-color, #757575);\n}\n"] }]
174
175
  }], () => [{ type: i1.ApplicationManager }], { activeApp: [{
175
176
  type: Input
176
177
  }], isViewingSystemTab: [{
@@ -186,5 +187,5 @@ export class AppSwitcherComponent {
186
187
  type: HostListener,
187
188
  args: ['document:click', ['$event']]
188
189
  }] }); })();
189
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppSwitcherComponent, { className: "AppSwitcherComponent", filePath: "src/lib/shell/components/header/app-switcher.component.ts", lineNumber: 14 }); })();
190
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AppSwitcherComponent, { className: "AppSwitcherComponent", filePath: "src/lib/shell/components/header/app-switcher.component.ts", lineNumber: 15 }); })();
190
191
  //# sourceMappingURL=app-switcher.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-switcher.component.js","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-switcher.component.ts","../../../../../src/lib/shell/components/header/app-switcher.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-switcher.component.js","sourceRoot":"","sources":["../../../../../src/lib/shell/components/header/app-switcher.component.ts","../../../../../src/lib/shell/components/header/app-switcher.component.html"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tab-container.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/shell/components/tabs/tab-container.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tab-container.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/shell/components/tabs/tab-container.component.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ import { LogError, Metadata } from '@memberjunction/core';
6
6
  import { ComponentCacheManager } from './component-cache-manager';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@memberjunction/ng-base-application";
9
- import * as i2 from "@angular/common";
10
9
  const _c0 = ["glContainer"];
11
10
  const _c1 = ["directContentContainer"];
12
11
  function TabContainerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
@@ -15,29 +14,29 @@ function TabContainerComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
15
14
  function TabContainerComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
16
15
  i0.ɵɵelement(0, "div", 4, 1);
17
16
  } }
18
- function TabContainerComponent_div_3_Template(rf, ctx) { if (rf & 1) {
17
+ function TabContainerComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
19
18
  const _r1 = i0.ɵɵgetCurrentView();
20
19
  i0.ɵɵelementStart(0, "div", 6)(1, "div", 7);
21
- i0.ɵɵlistener("click", function TabContainerComponent_div_3_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextPin()); });
20
+ i0.ɵɵlistener("click", function TabContainerComponent_Conditional_3_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextPin()); });
22
21
  i0.ɵɵelement(2, "i", 8);
23
22
  i0.ɵɵelementStart(3, "span");
24
23
  i0.ɵɵtext(4);
25
24
  i0.ɵɵelementEnd()();
26
25
  i0.ɵɵelement(5, "div", 9);
27
26
  i0.ɵɵelementStart(6, "div", 7);
28
- i0.ɵɵlistener("click", function TabContainerComponent_div_3_Template_div_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextClose()); });
27
+ i0.ɵɵlistener("click", function TabContainerComponent_Conditional_3_Template_div_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextClose()); });
29
28
  i0.ɵɵelement(7, "i", 10);
30
29
  i0.ɵɵelementStart(8, "span");
31
30
  i0.ɵɵtext(9, "Close Tab");
32
31
  i0.ɵɵelementEnd()();
33
32
  i0.ɵɵelementStart(10, "div", 7);
34
- i0.ɵɵlistener("click", function TabContainerComponent_div_3_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextCloseOthers()); });
33
+ i0.ɵɵlistener("click", function TabContainerComponent_Conditional_3_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextCloseOthers()); });
35
34
  i0.ɵɵelement(11, "i", 11);
36
35
  i0.ɵɵelementStart(12, "span");
37
36
  i0.ɵɵtext(13, "Close Others");
38
37
  i0.ɵɵelementEnd()();
39
38
  i0.ɵɵelementStart(14, "div", 7);
40
- i0.ɵɵlistener("click", function TabContainerComponent_div_3_Template_div_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextCloseToRight()); });
39
+ i0.ɵɵlistener("click", function TabContainerComponent_Conditional_3_Template_div_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onContextCloseToRight()); });
41
40
  i0.ɵɵelement(15, "i", 12);
42
41
  i0.ɵɵelementStart(16, "span");
43
42
  i0.ɵɵtext(17, "Close to Right");
@@ -955,28 +954,28 @@ export class TabContainerComponent {
955
954
  }
956
955
  static ɵfac = function TabContainerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TabContainerComponent)(i0.ɵɵdirectiveInject(i1.GoldenLayoutManager), i0.ɵɵdirectiveInject(i1.WorkspaceStateManager), i0.ɵɵdirectiveInject(i1.ApplicationManager), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.EnvironmentInjector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
957
956
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TabContainerComponent, selectors: [["mj-tab-container"]], viewQuery: function TabContainerComponent_Query(rf, ctx) { if (rf & 1) {
958
- i0.ɵɵviewQuery(_c0, 5);
959
- i0.ɵɵviewQuery(_c1, 5);
957
+ i0.ɵɵviewQuery(_c0, 5)(_c1, 5);
960
958
  } if (rf & 2) {
961
959
  let _t;
962
960
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.glContainer = _t.first);
963
961
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.directContentContainer = _t.first);
964
962
  } }, hostBindings: function TabContainerComponent_HostBindings(rf, ctx) { if (rf & 1) {
965
- i0.ɵɵlistener("resize", function TabContainerComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, false, i0.ɵɵresolveWindow);
966
- } }, outputs: { firstResourceLoadComplete: "firstResourceLoadComplete", layoutInitError: "layoutInitError" }, decls: 4, vars: 2, consts: [["directContentContainer", ""], ["glContainer", ""], [1, "tab-container"], [1, "direct-content-container"], [1, "gl-container"], ["class", "context-menu", 3, "left", "top", 4, "ngIf"], [1, "context-menu"], [1, "context-menu-item", 3, "click"], [1, "fa-solid", "fa-thumbtack"], [1, "context-menu-divider"], [1, "fa-solid", "fa-xmark"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-angles-right"]], template: function TabContainerComponent_Template(rf, ctx) { if (rf & 1) {
963
+ i0.ɵɵlistener("resize", function TabContainerComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow);
964
+ } }, outputs: { firstResourceLoadComplete: "firstResourceLoadComplete", layoutInitError: "layoutInitError" }, standalone: false, decls: 4, vars: 2, consts: [["directContentContainer", ""], ["glContainer", ""], [1, "tab-container"], [1, "direct-content-container"], [1, "gl-container"], [1, "context-menu", 3, "left", "top"], [1, "context-menu"], [1, "context-menu-item", 3, "click"], [1, "fa-solid", "fa-thumbtack"], [1, "context-menu-divider"], [1, "fa-solid", "fa-xmark"], [1, "fa-solid", "fa-layer-group"], [1, "fa-solid", "fa-angles-right"]], template: function TabContainerComponent_Template(rf, ctx) { if (rf & 1) {
967
965
  i0.ɵɵelementStart(0, "div", 2);
968
- i0.ɵɵtemplate(1, TabContainerComponent_Conditional_1_Template, 2, 0, "div", 3)(2, TabContainerComponent_Conditional_2_Template, 2, 0, "div", 4)(3, TabContainerComponent_div_3_Template, 18, 5, "div", 5);
966
+ i0.ɵɵconditionalCreate(1, TabContainerComponent_Conditional_1_Template, 2, 0, "div", 3)(2, TabContainerComponent_Conditional_2_Template, 2, 0, "div", 4);
967
+ i0.ɵɵconditionalCreate(3, TabContainerComponent_Conditional_3_Template, 18, 5, "div", 5);
969
968
  i0.ɵɵelementEnd();
970
969
  } if (rf & 2) {
971
970
  i0.ɵɵadvance();
972
971
  i0.ɵɵconditional(ctx.useSingleResourceMode ? 1 : 2);
973
972
  i0.ɵɵadvance(2);
974
- i0.ɵɵproperty("ngIf", ctx.contextMenuVisible);
975
- } }, dependencies: [i2.NgIf], styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.tab-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n\n.gl-container {\n flex: 1;\n width: 100%;\n height: 100%;\n position: relative;\n background: white;\n}\n\n/* Direct content container for single-resource mode */\n/* Renders components directly without Golden Layout overhead */\n.direct-content-container {\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n overflow: hidden;\n}\n\n.tab-content-container {\n background: white;\n color: #333;\n padding: 20px;\n}\n\n/* Context Menu */\n.context-menu {\n position: fixed;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 150px;\n z-index: 10001;\n overflow: hidden;\n}\n\n.context-menu .context-menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 13px;\n color: #424242;\n transition: background 0.15s;\n}\n\n.context-menu .context-menu-item i {\n width: 16px;\n text-align: center;\n color: #757575;\n}\n\n.context-menu .context-menu-item:hover {\n background: #f5f5f5;\n}\n\n.context-menu .context-menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n}\n\n/* Override Golden Layout styles */\n/* Global overrides */\n\n/* Ensure GL root container fills available space */\nmj-tab-container .lm_goldenlayout {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure the root layout item fills space */\nmj-tab-container .lm_root {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure proper box-sizing for all GL layout elements */\nmj-tab-container .lm_item,\nmj-tab-container .lm_content,\nmj-tab-container .lm_stack,\nmj-tab-container .lm_row,\nmj-tab-container .lm_column {\n box-sizing: border-box !important;\n}\n\n/* Ensure layout items don't overflow */\nmj-tab-container .lm_item {\n overflow: hidden !important;\n}\n\n/* Fix for .lm_items - the content container inside stacks */\n/* This is separate from .lm_item - it holds the actual tab content */\nmj-tab-container .lm_items {\n width: 100% !important;\n height: calc(100% - 38px) !important; /* Account for header height (38px) */\n box-sizing: border-box !important;\n position: relative !important;\n}\n\n/* When tabs are maximized, no header visible */\nmj-tab-container .lm_stack.lm_maximised > .lm_items {\n height: 100% !important;\n}\n\n/* Target the anonymous ComponentItem div inside lm_items (has no class) */\n/* Created in golden-layout/src/ts/items/component-item.ts:51 without a class */\n/* NOTE: Do NOT set display here - GL uses display:none to hide inactive tabs */\nmj-tab-container .lm_items > div {\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box !important;\n flex-direction: column !important;\n}\n\n/* Only apply flex display to the active/visible tab content div */\nmj-tab-container .lm_items > div:not([style*=\"display: none\"]) {\n display: flex !important;\n}\n\n/* Clearfix for float-based row layout - GL uses float:left for horizontal panes */\nmj-tab-container .lm_row::after {\n content: \"\" !important;\n display: table !important;\n clear: both !important;\n}\n\n/* Force content children to respect parent bounds (GL sets pixel widths inline) */\nmj-tab-container .lm_content > * {\n max-width: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_content {\n background: white !important;\n display: flex !important;\n flex-direction: column !important;\n height: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_item_container {\n background: white !important;\n}\n\n/* Tab content wrapper - allow scrolling */\n.tab-content-wrapper {\n overflow: auto !important;\n}\n\n/* Make tabs larger and easier to click */\nmj-tab-container .lm_header {\n height: 38px !important;\n padding-top: 2px !important;\n padding-left: 4px !important;\n background: #f5f5f5 !important;\n border-bottom: 1px solid #ebebeb !important;\n overflow: visible !important;\n box-sizing: border-box !important;\n}\n\nmj-tab-container .lm_tabs {\n height: 36px !important;\n}\n\n/* Hide Golden Layout window controls */\nmj-tab-container .lm_controls {\n display: none !important;\n}\n\nmj-tab-container .lm_header .lm_tab {\n padding: 0 16px !important;\n font-size: 13px !important;\n height: 35px !important;\n line-height: 35px !important;\n box-sizing: border-box !important;\n cursor: pointer !important;\n user-select: none !important;\n background: transparent !important;\n border: none !important;\n border-bottom: 1px solid #ebebeb !important;\n transition: all 0.15s ease !important;\n position: relative !important;\n z-index: 1 !important;\n margin-right: 1px !important;\n}\n\n/* App color accent - left edge indicator */\nmj-tab-container .lm_header .lm_tab::before {\n content: '' !important;\n position: absolute !important;\n left: 0 !important;\n top: 4px !important;\n bottom: 4px !important;\n width: 3px !important;\n border-radius: 0 2px 2px 0 !important;\n background-color: var(--app-color, transparent) !important;\n opacity: 0.6 !important;\n transition: all 0.15s ease !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover {\n background: #e8e8e8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover::before {\n opacity: 0.8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab.lm_active {\n background: white !important;\n height: 36px !important;\n margin-bottom: -1px !important;\n margin-right: 0 !important;\n border: 1px solid #ebebeb !important;\n border-bottom-color: white !important;\n border-radius: 4px 4px 0 0 !important;\n z-index: 2 !important;\n}\n\n/* Enhanced app color accent for active tab */\nmj-tab-container .lm_header .lm_tab.lm_active::before {\n opacity: 1 !important;\n width: 3px !important;\n top: 2px !important;\n bottom: 2px !important;\n box-shadow: 0 0 6px var(--app-color, transparent) !important;\n}\n\nmj-tab-container .lm_title {\n cursor: pointer !important;\n user-select: none !important;\n}\n\nmj-tab-container .lm_close_tab {\n position: absolute !important;\n right: 4px !important;\n top: 50% !important;\n transform: translateY(-50%) !important;\n width: 16px !important;\n height: 16px !important;\n cursor: pointer !important;\n opacity: 0 !important;\n transition: all 0.15s ease !important;\n flex-shrink: 0 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n font-size: 10px !important;\n color: #757575 !important;\n}\n\nmj-tab-container .lm_close_tab:hover {\n opacity: 1 !important;\n color: #c62828 !important;\n}\n\n/* Show close button on hover (except pinned) */\nmj-tab-container .lm_header .lm_tab:hover:not(.pinned) .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Pinned tabs never show close button */\nmj-tab-container .lm_header .lm_tab.pinned .lm_close_tab {\n display: none !important;\n}\n\n/* Hide close button on active tab by default */\nmj-tab-container .lm_active .lm_close_tab {\n opacity: 0 !important;\n}\n\n/* Show close button when hovering active tab */\nmj-tab-container .lm_active:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Adjust padding for close button */\nmj-tab-container .lm_header .lm_tab {\n padding-right: 24px !important;\n}\n"], encapsulation: 2 });
973
+ i0.ɵɵconditional(ctx.contextMenuVisible ? 3 : -1);
974
+ } }, styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.tab-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n\n.gl-container {\n flex: 1;\n width: 100%;\n height: 100%;\n position: relative;\n background: white;\n}\n\n/* Direct content container for single-resource mode */\n/* Renders components directly without Golden Layout overhead */\n.direct-content-container {\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n overflow: hidden;\n}\n\n.tab-content-container {\n background: white;\n color: #333;\n padding: 20px;\n}\n\n/* Context Menu */\n.context-menu {\n position: fixed;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 150px;\n z-index: 10001;\n overflow: hidden;\n}\n\n.context-menu .context-menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 13px;\n color: #424242;\n transition: background 0.15s;\n}\n\n.context-menu .context-menu-item i {\n width: 16px;\n text-align: center;\n color: #757575;\n}\n\n.context-menu .context-menu-item:hover {\n background: #f5f5f5;\n}\n\n.context-menu .context-menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n}\n\n/* Override Golden Layout styles */\n/* Global overrides */\n\n/* Ensure GL root container fills available space */\nmj-tab-container .lm_goldenlayout {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure the root layout item fills space */\nmj-tab-container .lm_root {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure proper box-sizing for all GL layout elements */\nmj-tab-container .lm_item,\nmj-tab-container .lm_content,\nmj-tab-container .lm_stack,\nmj-tab-container .lm_row,\nmj-tab-container .lm_column {\n box-sizing: border-box !important;\n}\n\n/* Ensure layout items don't overflow */\nmj-tab-container .lm_item {\n overflow: hidden !important;\n}\n\n/* Fix for .lm_items - the content container inside stacks */\n/* This is separate from .lm_item - it holds the actual tab content */\nmj-tab-container .lm_items {\n width: 100% !important;\n height: calc(100% - 38px) !important; /* Account for header height (38px) */\n box-sizing: border-box !important;\n position: relative !important;\n}\n\n/* When tabs are maximized, no header visible */\nmj-tab-container .lm_stack.lm_maximised > .lm_items {\n height: 100% !important;\n}\n\n/* Target the anonymous ComponentItem div inside lm_items (has no class) */\n/* Created in golden-layout/src/ts/items/component-item.ts:51 without a class */\n/* NOTE: Do NOT set display here - GL uses display:none to hide inactive tabs */\nmj-tab-container .lm_items > div {\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box !important;\n flex-direction: column !important;\n}\n\n/* Only apply flex display to the active/visible tab content div */\nmj-tab-container .lm_items > div:not([style*=\"display: none\"]) {\n display: flex !important;\n}\n\n/* Clearfix for float-based row layout - GL uses float:left for horizontal panes */\nmj-tab-container .lm_row::after {\n content: \"\" !important;\n display: table !important;\n clear: both !important;\n}\n\n/* Force content children to respect parent bounds (GL sets pixel widths inline) */\nmj-tab-container .lm_content > * {\n max-width: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_content {\n background: white !important;\n display: flex !important;\n flex-direction: column !important;\n height: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_item_container {\n background: white !important;\n}\n\n/* Tab content wrapper - allow scrolling */\n.tab-content-wrapper {\n overflow: auto !important;\n}\n\n/* Make tabs larger and easier to click */\nmj-tab-container .lm_header {\n height: 38px !important;\n padding-top: 2px !important;\n padding-left: 4px !important;\n background: #f5f5f5 !important;\n border-bottom: 1px solid #ebebeb !important;\n overflow: visible !important;\n box-sizing: border-box !important;\n}\n\nmj-tab-container .lm_tabs {\n height: 36px !important;\n}\n\n/* Hide Golden Layout window controls */\nmj-tab-container .lm_controls {\n display: none !important;\n}\n\nmj-tab-container .lm_header .lm_tab {\n padding: 0 16px !important;\n font-size: 13px !important;\n height: 35px !important;\n line-height: 35px !important;\n box-sizing: border-box !important;\n cursor: pointer !important;\n user-select: none !important;\n background: transparent !important;\n border: none !important;\n border-bottom: 1px solid #ebebeb !important;\n transition: all 0.15s ease !important;\n position: relative !important;\n z-index: 1 !important;\n margin-right: 1px !important;\n}\n\n/* App color accent - left edge indicator */\nmj-tab-container .lm_header .lm_tab::before {\n content: '' !important;\n position: absolute !important;\n left: 0 !important;\n top: 4px !important;\n bottom: 4px !important;\n width: 3px !important;\n border-radius: 0 2px 2px 0 !important;\n background-color: var(--app-color, transparent) !important;\n opacity: 0.6 !important;\n transition: all 0.15s ease !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover {\n background: #e8e8e8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover::before {\n opacity: 0.8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab.lm_active {\n background: white !important;\n height: 36px !important;\n margin-bottom: -1px !important;\n margin-right: 0 !important;\n border: 1px solid #ebebeb !important;\n border-bottom-color: white !important;\n border-radius: 4px 4px 0 0 !important;\n z-index: 2 !important;\n}\n\n/* Enhanced app color accent for active tab */\nmj-tab-container .lm_header .lm_tab.lm_active::before {\n opacity: 1 !important;\n width: 3px !important;\n top: 2px !important;\n bottom: 2px !important;\n box-shadow: 0 0 6px var(--app-color, transparent) !important;\n}\n\nmj-tab-container .lm_title {\n cursor: pointer !important;\n user-select: none !important;\n}\n\nmj-tab-container .lm_close_tab {\n position: absolute !important;\n right: 4px !important;\n top: 50% !important;\n transform: translateY(-50%) !important;\n width: 16px !important;\n height: 16px !important;\n cursor: pointer !important;\n opacity: 0 !important;\n transition: all 0.15s ease !important;\n flex-shrink: 0 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n font-size: 10px !important;\n color: #757575 !important;\n}\n\nmj-tab-container .lm_close_tab:hover {\n opacity: 1 !important;\n color: #c62828 !important;\n}\n\n/* Show close button on hover (except pinned) */\nmj-tab-container .lm_header .lm_tab:hover:not(.pinned) .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Pinned tabs never show close button */\nmj-tab-container .lm_header .lm_tab.pinned .lm_close_tab {\n display: none !important;\n}\n\n/* Hide close button on active tab by default */\nmj-tab-container .lm_active .lm_close_tab {\n opacity: 0 !important;\n}\n\n/* Show close button when hovering active tab */\nmj-tab-container .lm_active:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Adjust padding for close button */\nmj-tab-container .lm_header .lm_tab {\n padding-right: 24px !important;\n}\n"], encapsulation: 2 });
976
975
  }
977
976
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TabContainerComponent, [{
978
977
  type: Component,
979
- args: [{ selector: 'mj-tab-container', encapsulation: ViewEncapsulation.None, template: "<div class=\"tab-container\">\n\n <!-- Single-Resource Mode: Direct component rendering without Golden Layout -->\n <!-- This avoids the 20px height issue when GL header is hidden -->\n @if (useSingleResourceMode) {\n <div #directContentContainer class=\"direct-content-container\"></div>\n } @else {\n <!-- Multi-Tab Mode: Golden Layout Container -->\n <div #glContainer class=\"gl-container\"></div>\n }\n\n <!-- Context Menu (only relevant in multi-tab mode) -->\n <div\n class=\"context-menu\"\n *ngIf=\"contextMenuVisible\"\n [style.left.px]=\"contextMenuX\"\n [style.top.px]=\"contextMenuY\">\n <div class=\"context-menu-item\" (click)=\"onContextPin()\">\n <i class=\"fa-solid fa-thumbtack\"></i>\n <span>{{ isContextTabPinned ? 'Unpin Tab' : 'Pin Tab' }}</span>\n </div>\n <div class=\"context-menu-divider\"></div>\n <div class=\"context-menu-item\" (click)=\"onContextClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n <span>Close Tab</span>\n </div>\n <div class=\"context-menu-item\" (click)=\"onContextCloseOthers()\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Close Others</span>\n </div>\n <div class=\"context-menu-item\" (click)=\"onContextCloseToRight()\">\n <i class=\"fa-solid fa-angles-right\"></i>\n <span>Close to Right</span>\n </div>\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.tab-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n\n.gl-container {\n flex: 1;\n width: 100%;\n height: 100%;\n position: relative;\n background: white;\n}\n\n/* Direct content container for single-resource mode */\n/* Renders components directly without Golden Layout overhead */\n.direct-content-container {\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n overflow: hidden;\n}\n\n.tab-content-container {\n background: white;\n color: #333;\n padding: 20px;\n}\n\n/* Context Menu */\n.context-menu {\n position: fixed;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 150px;\n z-index: 10001;\n overflow: hidden;\n}\n\n.context-menu .context-menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 13px;\n color: #424242;\n transition: background 0.15s;\n}\n\n.context-menu .context-menu-item i {\n width: 16px;\n text-align: center;\n color: #757575;\n}\n\n.context-menu .context-menu-item:hover {\n background: #f5f5f5;\n}\n\n.context-menu .context-menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n}\n\n/* Override Golden Layout styles */\n/* Global overrides */\n\n/* Ensure GL root container fills available space */\nmj-tab-container .lm_goldenlayout {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure the root layout item fills space */\nmj-tab-container .lm_root {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure proper box-sizing for all GL layout elements */\nmj-tab-container .lm_item,\nmj-tab-container .lm_content,\nmj-tab-container .lm_stack,\nmj-tab-container .lm_row,\nmj-tab-container .lm_column {\n box-sizing: border-box !important;\n}\n\n/* Ensure layout items don't overflow */\nmj-tab-container .lm_item {\n overflow: hidden !important;\n}\n\n/* Fix for .lm_items - the content container inside stacks */\n/* This is separate from .lm_item - it holds the actual tab content */\nmj-tab-container .lm_items {\n width: 100% !important;\n height: calc(100% - 38px) !important; /* Account for header height (38px) */\n box-sizing: border-box !important;\n position: relative !important;\n}\n\n/* When tabs are maximized, no header visible */\nmj-tab-container .lm_stack.lm_maximised > .lm_items {\n height: 100% !important;\n}\n\n/* Target the anonymous ComponentItem div inside lm_items (has no class) */\n/* Created in golden-layout/src/ts/items/component-item.ts:51 without a class */\n/* NOTE: Do NOT set display here - GL uses display:none to hide inactive tabs */\nmj-tab-container .lm_items > div {\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box !important;\n flex-direction: column !important;\n}\n\n/* Only apply flex display to the active/visible tab content div */\nmj-tab-container .lm_items > div:not([style*=\"display: none\"]) {\n display: flex !important;\n}\n\n/* Clearfix for float-based row layout - GL uses float:left for horizontal panes */\nmj-tab-container .lm_row::after {\n content: \"\" !important;\n display: table !important;\n clear: both !important;\n}\n\n/* Force content children to respect parent bounds (GL sets pixel widths inline) */\nmj-tab-container .lm_content > * {\n max-width: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_content {\n background: white !important;\n display: flex !important;\n flex-direction: column !important;\n height: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_item_container {\n background: white !important;\n}\n\n/* Tab content wrapper - allow scrolling */\n.tab-content-wrapper {\n overflow: auto !important;\n}\n\n/* Make tabs larger and easier to click */\nmj-tab-container .lm_header {\n height: 38px !important;\n padding-top: 2px !important;\n padding-left: 4px !important;\n background: #f5f5f5 !important;\n border-bottom: 1px solid #ebebeb !important;\n overflow: visible !important;\n box-sizing: border-box !important;\n}\n\nmj-tab-container .lm_tabs {\n height: 36px !important;\n}\n\n/* Hide Golden Layout window controls */\nmj-tab-container .lm_controls {\n display: none !important;\n}\n\nmj-tab-container .lm_header .lm_tab {\n padding: 0 16px !important;\n font-size: 13px !important;\n height: 35px !important;\n line-height: 35px !important;\n box-sizing: border-box !important;\n cursor: pointer !important;\n user-select: none !important;\n background: transparent !important;\n border: none !important;\n border-bottom: 1px solid #ebebeb !important;\n transition: all 0.15s ease !important;\n position: relative !important;\n z-index: 1 !important;\n margin-right: 1px !important;\n}\n\n/* App color accent - left edge indicator */\nmj-tab-container .lm_header .lm_tab::before {\n content: '' !important;\n position: absolute !important;\n left: 0 !important;\n top: 4px !important;\n bottom: 4px !important;\n width: 3px !important;\n border-radius: 0 2px 2px 0 !important;\n background-color: var(--app-color, transparent) !important;\n opacity: 0.6 !important;\n transition: all 0.15s ease !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover {\n background: #e8e8e8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover::before {\n opacity: 0.8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab.lm_active {\n background: white !important;\n height: 36px !important;\n margin-bottom: -1px !important;\n margin-right: 0 !important;\n border: 1px solid #ebebeb !important;\n border-bottom-color: white !important;\n border-radius: 4px 4px 0 0 !important;\n z-index: 2 !important;\n}\n\n/* Enhanced app color accent for active tab */\nmj-tab-container .lm_header .lm_tab.lm_active::before {\n opacity: 1 !important;\n width: 3px !important;\n top: 2px !important;\n bottom: 2px !important;\n box-shadow: 0 0 6px var(--app-color, transparent) !important;\n}\n\nmj-tab-container .lm_title {\n cursor: pointer !important;\n user-select: none !important;\n}\n\nmj-tab-container .lm_close_tab {\n position: absolute !important;\n right: 4px !important;\n top: 50% !important;\n transform: translateY(-50%) !important;\n width: 16px !important;\n height: 16px !important;\n cursor: pointer !important;\n opacity: 0 !important;\n transition: all 0.15s ease !important;\n flex-shrink: 0 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n font-size: 10px !important;\n color: #757575 !important;\n}\n\nmj-tab-container .lm_close_tab:hover {\n opacity: 1 !important;\n color: #c62828 !important;\n}\n\n/* Show close button on hover (except pinned) */\nmj-tab-container .lm_header .lm_tab:hover:not(.pinned) .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Pinned tabs never show close button */\nmj-tab-container .lm_header .lm_tab.pinned .lm_close_tab {\n display: none !important;\n}\n\n/* Hide close button on active tab by default */\nmj-tab-container .lm_active .lm_close_tab {\n opacity: 0 !important;\n}\n\n/* Show close button when hovering active tab */\nmj-tab-container .lm_active:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Adjust padding for close button */\nmj-tab-container .lm_header .lm_tab {\n padding-right: 24px !important;\n}\n"] }]
978
+ args: [{ standalone: false, selector: 'mj-tab-container', encapsulation: ViewEncapsulation.None, template: "<div class=\"tab-container\">\n\n <!-- Single-Resource Mode: Direct component rendering without Golden Layout -->\n <!-- This avoids the 20px height issue when GL header is hidden -->\n @if (useSingleResourceMode) {\n <div #directContentContainer class=\"direct-content-container\"></div>\n } @else {\n <!-- Multi-Tab Mode: Golden Layout Container -->\n <div #glContainer class=\"gl-container\"></div>\n }\n\n <!-- Context Menu (only relevant in multi-tab mode) -->\n @if (contextMenuVisible) {\n <div\n class=\"context-menu\"\n [style.left.px]=\"contextMenuX\"\n [style.top.px]=\"contextMenuY\">\n <div class=\"context-menu-item\" (click)=\"onContextPin()\">\n <i class=\"fa-solid fa-thumbtack\"></i>\n <span>{{ isContextTabPinned ? 'Unpin Tab' : 'Pin Tab' }}</span>\n </div>\n <div class=\"context-menu-divider\"></div>\n <div class=\"context-menu-item\" (click)=\"onContextClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n <span>Close Tab</span>\n </div>\n <div class=\"context-menu-item\" (click)=\"onContextCloseOthers()\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Close Others</span>\n </div>\n <div class=\"context-menu-item\" (click)=\"onContextCloseToRight()\">\n <i class=\"fa-solid fa-angles-right\"></i>\n <span>Close to Right</span>\n </div>\n </div>\n }\n</div>\n", styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.tab-container {\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n overflow: hidden;\n}\n\n.gl-container {\n flex: 1;\n width: 100%;\n height: 100%;\n position: relative;\n background: white;\n}\n\n/* Direct content container for single-resource mode */\n/* Renders components directly without Golden Layout overhead */\n.direct-content-container {\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background: white;\n overflow: hidden;\n}\n\n.tab-content-container {\n background: white;\n color: #333;\n padding: 20px;\n}\n\n/* Context Menu */\n.context-menu {\n position: fixed;\n background: white;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n min-width: 150px;\n z-index: 10001;\n overflow: hidden;\n}\n\n.context-menu .context-menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n font-size: 13px;\n color: #424242;\n transition: background 0.15s;\n}\n\n.context-menu .context-menu-item i {\n width: 16px;\n text-align: center;\n color: #757575;\n}\n\n.context-menu .context-menu-item:hover {\n background: #f5f5f5;\n}\n\n.context-menu .context-menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n}\n\n/* Override Golden Layout styles */\n/* Global overrides */\n\n/* Ensure GL root container fills available space */\nmj-tab-container .lm_goldenlayout {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure the root layout item fills space */\nmj-tab-container .lm_root {\n width: 100% !important;\n height: 100% !important;\n}\n\n/* Ensure proper box-sizing for all GL layout elements */\nmj-tab-container .lm_item,\nmj-tab-container .lm_content,\nmj-tab-container .lm_stack,\nmj-tab-container .lm_row,\nmj-tab-container .lm_column {\n box-sizing: border-box !important;\n}\n\n/* Ensure layout items don't overflow */\nmj-tab-container .lm_item {\n overflow: hidden !important;\n}\n\n/* Fix for .lm_items - the content container inside stacks */\n/* This is separate from .lm_item - it holds the actual tab content */\nmj-tab-container .lm_items {\n width: 100% !important;\n height: calc(100% - 38px) !important; /* Account for header height (38px) */\n box-sizing: border-box !important;\n position: relative !important;\n}\n\n/* When tabs are maximized, no header visible */\nmj-tab-container .lm_stack.lm_maximised > .lm_items {\n height: 100% !important;\n}\n\n/* Target the anonymous ComponentItem div inside lm_items (has no class) */\n/* Created in golden-layout/src/ts/items/component-item.ts:51 without a class */\n/* NOTE: Do NOT set display here - GL uses display:none to hide inactive tabs */\nmj-tab-container .lm_items > div {\n width: 100% !important;\n height: 100% !important;\n box-sizing: border-box !important;\n flex-direction: column !important;\n}\n\n/* Only apply flex display to the active/visible tab content div */\nmj-tab-container .lm_items > div:not([style*=\"display: none\"]) {\n display: flex !important;\n}\n\n/* Clearfix for float-based row layout - GL uses float:left for horizontal panes */\nmj-tab-container .lm_row::after {\n content: \"\" !important;\n display: table !important;\n clear: both !important;\n}\n\n/* Force content children to respect parent bounds (GL sets pixel widths inline) */\nmj-tab-container .lm_content > * {\n max-width: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_content {\n background: white !important;\n display: flex !important;\n flex-direction: column !important;\n height: 100% !important;\n width: 100% !important;\n}\n\nmj-tab-container .lm_item_container {\n background: white !important;\n}\n\n/* Tab content wrapper - allow scrolling */\n.tab-content-wrapper {\n overflow: auto !important;\n}\n\n/* Make tabs larger and easier to click */\nmj-tab-container .lm_header {\n height: 38px !important;\n padding-top: 2px !important;\n padding-left: 4px !important;\n background: #f5f5f5 !important;\n border-bottom: 1px solid #ebebeb !important;\n overflow: visible !important;\n box-sizing: border-box !important;\n}\n\nmj-tab-container .lm_tabs {\n height: 36px !important;\n}\n\n/* Hide Golden Layout window controls */\nmj-tab-container .lm_controls {\n display: none !important;\n}\n\nmj-tab-container .lm_header .lm_tab {\n padding: 0 16px !important;\n font-size: 13px !important;\n height: 35px !important;\n line-height: 35px !important;\n box-sizing: border-box !important;\n cursor: pointer !important;\n user-select: none !important;\n background: transparent !important;\n border: none !important;\n border-bottom: 1px solid #ebebeb !important;\n transition: all 0.15s ease !important;\n position: relative !important;\n z-index: 1 !important;\n margin-right: 1px !important;\n}\n\n/* App color accent - left edge indicator */\nmj-tab-container .lm_header .lm_tab::before {\n content: '' !important;\n position: absolute !important;\n left: 0 !important;\n top: 4px !important;\n bottom: 4px !important;\n width: 3px !important;\n border-radius: 0 2px 2px 0 !important;\n background-color: var(--app-color, transparent) !important;\n opacity: 0.6 !important;\n transition: all 0.15s ease !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover {\n background: #e8e8e8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\nmj-tab-container .lm_header .lm_tab:hover::before {\n opacity: 0.8 !important;\n}\n\nmj-tab-container .lm_header .lm_tab.lm_active {\n background: white !important;\n height: 36px !important;\n margin-bottom: -1px !important;\n margin-right: 0 !important;\n border: 1px solid #ebebeb !important;\n border-bottom-color: white !important;\n border-radius: 4px 4px 0 0 !important;\n z-index: 2 !important;\n}\n\n/* Enhanced app color accent for active tab */\nmj-tab-container .lm_header .lm_tab.lm_active::before {\n opacity: 1 !important;\n width: 3px !important;\n top: 2px !important;\n bottom: 2px !important;\n box-shadow: 0 0 6px var(--app-color, transparent) !important;\n}\n\nmj-tab-container .lm_title {\n cursor: pointer !important;\n user-select: none !important;\n}\n\nmj-tab-container .lm_close_tab {\n position: absolute !important;\n right: 4px !important;\n top: 50% !important;\n transform: translateY(-50%) !important;\n width: 16px !important;\n height: 16px !important;\n cursor: pointer !important;\n opacity: 0 !important;\n transition: all 0.15s ease !important;\n flex-shrink: 0 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n font-size: 10px !important;\n color: #757575 !important;\n}\n\nmj-tab-container .lm_close_tab:hover {\n opacity: 1 !important;\n color: #c62828 !important;\n}\n\n/* Show close button on hover (except pinned) */\nmj-tab-container .lm_header .lm_tab:hover:not(.pinned) .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Pinned tabs never show close button */\nmj-tab-container .lm_header .lm_tab.pinned .lm_close_tab {\n display: none !important;\n}\n\n/* Hide close button on active tab by default */\nmj-tab-container .lm_active .lm_close_tab {\n opacity: 0 !important;\n}\n\n/* Show close button when hovering active tab */\nmj-tab-container .lm_active:hover .lm_close_tab {\n opacity: 0.7 !important;\n}\n\n/* Adjust padding for close button */\nmj-tab-container .lm_header .lm_tab {\n padding-right: 24px !important;\n}\n"] }]
980
979
  }], () => [{ type: i1.GoldenLayoutManager }, { type: i1.WorkspaceStateManager }, { type: i1.ApplicationManager }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i0.ChangeDetectorRef }], { glContainer: [{
981
980
  type: ViewChild,
982
981
  args: ['glContainer', { static: false }]
@@ -991,5 +990,5 @@ export class TabContainerComponent {
991
990
  type: HostListener,
992
991
  args: ['window:resize']
993
992
  }] }); })();
994
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TabContainerComponent, { className: "TabContainerComponent", filePath: "src/lib/shell/components/tabs/tab-container.component.ts", lineNumber: 50 }); })();
993
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TabContainerComponent, { className: "TabContainerComponent", filePath: "src/lib/shell/components/tabs/tab-container.component.ts", lineNumber: 51 }); })();
995
994
  //# sourceMappingURL=tab-container.component.js.map