aril 1.2.35 → 1.2.37

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 (389) hide show
  1. package/esm2022/boot/config/apps/src/apps.service.mjs +4 -4
  2. package/esm2022/boot/config/apps/src/auth.guard.mjs +4 -4
  3. package/esm2022/boot/config/apps/src/showdowDOMWrapper.mjs +4 -4
  4. package/esm2022/boot/host/src/app.component.mjs +4 -4
  5. package/esm2022/boot/mfe/src/app.component.mjs +4 -4
  6. package/esm2022/boot/pages/src/forbidden.component.mjs +4 -4
  7. package/esm2022/boot/pages/src/notFound.component.mjs +4 -4
  8. package/esm2022/http/src/httpBackend.mjs +4 -4
  9. package/esm2022/i18n/src/i18n.module.mjs +5 -5
  10. package/esm2022/i18n/src/loader.mjs +4 -4
  11. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -4
  12. package/esm2022/theme/layout/app/environment-banner/environment-banner.component.mjs +4 -4
  13. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +4 -4
  14. package/esm2022/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.mjs +4 -4
  15. package/esm2022/theme/layout/app/favorite-pages/favorite-pages.service.mjs +4 -4
  16. package/esm2022/theme/layout/app/favorite-pages/modals/add-edit-favorite-modal/add-edit-favorite-modal.component.mjs +4 -4
  17. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +4 -4
  18. package/esm2022/theme/layout/app/history/history-sidebar.component.mjs +4 -4
  19. package/esm2022/theme/layout/app/history/history.service.mjs +4 -4
  20. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +4 -4
  21. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +4 -4
  22. package/esm2022/theme/layout/app/notifications/notifications-sidebar.component.mjs +148 -51
  23. package/esm2022/theme/layout/app/profileSidebar/app.profilesidebar.component.mjs +4 -4
  24. package/esm2022/theme/layout/app/profileSidebar/modals/change-password-modal/change-password-modal.component.mjs +4 -4
  25. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +4 -4
  26. package/esm2022/theme/layout/app/profileSidebar/profile.service.mjs +4 -4
  27. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +4 -4
  28. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +4 -4
  29. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +4 -4
  30. package/esm2022/theme/layout/service/app.layout.service.mjs +4 -4
  31. package/esm2022/theme/layout/service/app.menu.service.mjs +4 -4
  32. package/esm2022/theme/layout/service/breadcrumb.service.mjs +4 -4
  33. package/esm2022/theme/layout/service/interfaces/interfaces.mjs +1 -1
  34. package/esm2022/theme/layout/service/notifications.service.mjs +11 -5
  35. package/esm2022/theme/layout/service/search.service.mjs +4 -4
  36. package/esm2022/theme/layout/service/selection-group.service.mjs +4 -4
  37. package/esm2022/ui/autoComplete/src/auto-complete.component.mjs +4 -4
  38. package/esm2022/ui/badge/src/badge.component.mjs +6 -5
  39. package/esm2022/ui/button/src/button.component.mjs +4 -4
  40. package/esm2022/ui/button/src/split-button.component.mjs +4 -4
  41. package/esm2022/ui/calendar/src/calendar.component.mjs +4 -4
  42. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +4 -4
  43. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +4 -4
  44. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +4 -4
  45. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +4 -4
  46. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +4 -4
  47. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +4 -4
  48. package/esm2022/ui/charts/src/highCharts/gauge/solid-gauge.component.mjs +4 -4
  49. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +4 -4
  50. package/esm2022/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.mjs +4 -4
  51. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +4 -4
  52. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +4 -4
  53. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +4 -4
  54. package/esm2022/ui/checkbox/src/check-box.component.mjs +4 -4
  55. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +4 -4
  56. package/esm2022/ui/chip/src/chip.component.mjs +4 -4
  57. package/esm2022/ui/collapse-reorder-list/src/collapse-reorder-list.component.mjs +4 -4
  58. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +4 -4
  59. package/esm2022/ui/dxField/src/dx-field.component.mjs +4 -4
  60. package/esm2022/ui/editor/src/aril-editor.component.mjs +4 -4
  61. package/esm2022/ui/field/src/field.component.mjs +4 -4
  62. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +4 -4
  63. package/esm2022/ui/form/index.mjs +5 -5
  64. package/esm2022/ui/form/src/form-submit-button.component.mjs +4 -4
  65. package/esm2022/ui/form/src/form.component.mjs +4 -4
  66. package/esm2022/ui/img-viewer/src/img-viewer.component.mjs +4 -4
  67. package/esm2022/ui/json-diff-comparison/src/json-diff.component.mjs +4 -4
  68. package/esm2022/ui/lib/index.mjs +3 -1
  69. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +4 -4
  70. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +4 -4
  71. package/esm2022/ui/lib/src/grid/enum-color-picker.pipe.mjs +4 -4
  72. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +4 -4
  73. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +4 -4
  74. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +4 -4
  75. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +4 -4
  76. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +4 -4
  77. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +4 -4
  78. package/esm2022/ui/lib/src/tooltip/tooltip-on-overflow.directive.mjs +43 -0
  79. package/esm2022/ui/loader/src/loader.component.mjs +4 -4
  80. package/esm2022/ui/mask/src/mask.component.mjs +4 -4
  81. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +4 -4
  82. package/esm2022/ui/number/src/number.component.mjs +4 -4
  83. package/esm2022/ui/operation-types-dialog/src/operation-types-dialog.component.mjs +4 -4
  84. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +4 -4
  85. package/esm2022/ui/panel/src/panel.component.mjs +4 -4
  86. package/esm2022/ui/password/src/password.component.mjs +4 -4
  87. package/esm2022/ui/pdf-viewer/src/pdf-viewer.component.mjs +4 -4
  88. package/esm2022/ui/progressbar/src/progressbar.component.mjs +4 -4
  89. package/esm2022/ui/radioButton/src/radio-button.component.mjs +4 -4
  90. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +4 -4
  91. package/esm2022/ui/selectBox/src/select-box.component.mjs +4 -4
  92. package/esm2022/ui/switch/src/switch.component.mjs +4 -4
  93. package/esm2022/ui/table/index.mjs +5 -5
  94. package/esm2022/ui/table/src/export-overlay-panel.component.mjs +4 -4
  95. package/esm2022/ui/table/src/table-column.component.mjs +4 -4
  96. package/esm2022/ui/table/src/table.component.mjs +4 -4
  97. package/esm2022/ui/table-expand/index.mjs +5 -5
  98. package/esm2022/ui/table-expand/src/table-column.component.mjs +4 -4
  99. package/esm2022/ui/table-expand/src/table-expand-area.component.mjs +4 -4
  100. package/esm2022/ui/table-expand/src/table.component.mjs +4 -4
  101. package/esm2022/ui/tag/src/tag.component.mjs +4 -4
  102. package/esm2022/ui/tagBox/src/tag-box.component.mjs +4 -4
  103. package/esm2022/ui/text/src/text.component.mjs +4 -4
  104. package/esm2022/ui/textArea/src/text-area.component.mjs +4 -4
  105. package/esm2022/ui/toggle-button/src/toggle-button.component.mjs +4 -4
  106. package/esm2022/ui/tooltip/src/tooltip-component.mjs +4 -4
  107. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +4 -4
  108. package/esm2022/ui/translate-input/src/aril-translate-input.component.mjs +4 -4
  109. package/esm2022/ui/tree/src/tree.component.mjs +4 -4
  110. package/esm2022/ui/treeSelect/src/treeSelect.component.mjs +4 -4
  111. package/esm2022/ui/treeTable/src/tree-table.component.mjs +4 -4
  112. package/esm2022/ui/value/src/value.component.mjs +7 -6
  113. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +4 -4
  114. package/esm2022/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.mjs +4 -4
  115. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +4 -4
  116. package/esm2022/ui-business/image-viewer/src/aril-image-viewer.component.mjs +4 -4
  117. package/esm2022/ui-business/multiAssetPicker/src/multi-asset-picker.component.mjs +4 -4
  118. package/esm2022/ui-business/multiple-ref-value/src/multiple-ref-value.component.mjs +4 -4
  119. package/esm2022/ui-business/notification-templates-dialog/src/notification-templates-dialog.component.mjs +4 -4
  120. package/esm2022/ui-business/pdf-preview-modal/src/pdf-preview-modal.component.mjs +4 -4
  121. package/esm2022/ui-business/ref-value/src/ref-value.component.mjs +4 -4
  122. package/esm2022/ui-business/rolePicker/src/role-picker.component.mjs +4 -4
  123. package/esm2022/ui-business/trace-drawer/src/app-log.service.mjs +4 -4
  124. package/esm2022/ui-business/trace-drawer/src/trace-drawer.component.mjs +4 -4
  125. package/esm2022/ui-business/trace-drawer/src/trace-log.service.mjs +4 -4
  126. package/esm2022/ui-business/trace-id/src/trace-id.component.mjs +4 -4
  127. package/esm2022/ui-business/userPicker/src/user-picker.component.mjs +4 -4
  128. package/esm2022/util/activity/src/activity.service.mjs +4 -4
  129. package/esm2022/util/block/src/block.mjs +7 -7
  130. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -4
  131. package/esm2022/util/directives/src/dialog-component/plugin-dialog.component.mjs +4 -4
  132. package/esm2022/util/directives/src/dialog-service/plugin-dialog.service.mjs +4 -4
  133. package/esm2022/util/lib/src/module-router.mjs +4 -4
  134. package/esm2022/util/pipes/src/distance-to-now.pipe.mjs +4 -4
  135. package/esm2022/util/pipes/src/get-column-by-field.pipe.mjs +4 -4
  136. package/esm2022/util/pipes/src/parse.pipe.mjs +4 -4
  137. package/esm2022/util/pipes/src/round-number.pipe.mjs +4 -4
  138. package/esm2022/util/pipes/src/safe.pipe.mjs +4 -4
  139. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +4 -4
  140. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +4 -4
  141. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +4 -4
  142. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +4 -4
  143. package/fesm2022/{aril-app.component-W3wwVSp1.mjs → aril-app.component-CwZZhJcO.mjs} +4 -4
  144. package/fesm2022/{aril-app.component-W3wwVSp1.mjs.map → aril-app.component-CwZZhJcO.mjs.map} +1 -1
  145. package/fesm2022/aril-boot-base.mjs +1 -1
  146. package/fesm2022/aril-boot-base.mjs.map +1 -1
  147. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  148. package/fesm2022/aril-boot-config-api.mjs +1 -1
  149. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  150. package/fesm2022/aril-boot-config-apps.mjs +10 -10
  151. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  152. package/fesm2022/aril-boot-config-plugins.mjs +1 -1
  153. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  154. package/fesm2022/aril-boot-config-translate.mjs.map +1 -1
  155. package/fesm2022/aril-boot-host.mjs +4 -4
  156. package/fesm2022/aril-boot-host.mjs.map +1 -1
  157. package/fesm2022/{aril-boot-mfe-app.component-D1w8I2ug.mjs → aril-boot-mfe-app.component-DwYgUUdL.mjs} +5 -5
  158. package/fesm2022/{aril-boot-mfe-app.component-D1w8I2ug.mjs.map → aril-boot-mfe-app.component-DwYgUUdL.mjs.map} +1 -1
  159. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-JHrhKvhU.mjs → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs} +4 -4
  160. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-JHrhKvhU.mjs.map → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map} +1 -1
  161. package/fesm2022/aril-boot-mfe.mjs +1 -1
  162. package/fesm2022/aril-boot-pages.mjs +6 -6
  163. package/fesm2022/aril-boot-pages.mjs.map +1 -1
  164. package/fesm2022/aril-http.mjs +3 -3
  165. package/fesm2022/aril-http.mjs.map +1 -1
  166. package/fesm2022/aril-i18n.mjs +7 -7
  167. package/fesm2022/aril-i18n.mjs.map +1 -1
  168. package/fesm2022/aril-keycloak.mjs.map +1 -1
  169. package/fesm2022/aril-provider.mjs +1 -1
  170. package/fesm2022/aril-provider.mjs.map +1 -1
  171. package/fesm2022/aril-theme-layout.mjs +219 -113
  172. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  173. package/fesm2022/aril-ui-autoComplete.mjs +6 -6
  174. package/fesm2022/aril-ui-autoComplete.mjs.map +1 -1
  175. package/fesm2022/aril-ui-badge.mjs +6 -5
  176. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  177. package/fesm2022/aril-ui-business-assetPicker.mjs +5 -5
  178. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  179. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs +5 -5
  180. package/fesm2022/aril-ui-business-detailed-overlay-panel.mjs.map +1 -1
  181. package/fesm2022/aril-ui-business-enumPicker.mjs +5 -5
  182. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  183. package/fesm2022/aril-ui-business-image-viewer.mjs +3 -3
  184. package/fesm2022/aril-ui-business-image-viewer.mjs.map +1 -1
  185. package/fesm2022/aril-ui-business-multiAssetPicker.mjs +4 -4
  186. package/fesm2022/aril-ui-business-multiAssetPicker.mjs.map +1 -1
  187. package/fesm2022/aril-ui-business-multiple-ref-value.mjs +4 -4
  188. package/fesm2022/aril-ui-business-multiple-ref-value.mjs.map +1 -1
  189. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs +3 -3
  190. package/fesm2022/aril-ui-business-notification-templates-dialog.mjs.map +1 -1
  191. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs +3 -3
  192. package/fesm2022/aril-ui-business-pdf-preview-modal.mjs.map +1 -1
  193. package/fesm2022/aril-ui-business-ref-value.mjs +4 -4
  194. package/fesm2022/aril-ui-business-ref-value.mjs.map +1 -1
  195. package/fesm2022/aril-ui-business-rolePicker.mjs +4 -4
  196. package/fesm2022/aril-ui-business-rolePicker.mjs.map +1 -1
  197. package/fesm2022/aril-ui-business-trace-drawer.mjs +10 -10
  198. package/fesm2022/aril-ui-business-trace-drawer.mjs.map +1 -1
  199. package/fesm2022/aril-ui-business-trace-id.mjs +4 -4
  200. package/fesm2022/aril-ui-business-trace-id.mjs.map +1 -1
  201. package/fesm2022/aril-ui-business-userPicker.mjs +3 -3
  202. package/fesm2022/aril-ui-business-userPicker.mjs.map +1 -1
  203. package/fesm2022/aril-ui-button.mjs +7 -7
  204. package/fesm2022/aril-ui-button.mjs.map +1 -1
  205. package/fesm2022/aril-ui-calendar.mjs +3 -3
  206. package/fesm2022/aril-ui-calendar.mjs.map +1 -1
  207. package/fesm2022/aril-ui-charts.mjs +37 -37
  208. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  209. package/fesm2022/aril-ui-checkbox.mjs +6 -6
  210. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  211. package/fesm2022/aril-ui-chip.mjs +4 -4
  212. package/fesm2022/aril-ui-chip.mjs.map +1 -1
  213. package/fesm2022/aril-ui-collapse-reorder-list.mjs +4 -4
  214. package/fesm2022/aril-ui-collapse-reorder-list.mjs.map +1 -1
  215. package/fesm2022/aril-ui-dxEditor.mjs +4 -4
  216. package/fesm2022/aril-ui-dxEditor.mjs.map +1 -1
  217. package/fesm2022/aril-ui-dxField.mjs +4 -4
  218. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  219. package/fesm2022/aril-ui-editor.mjs +4 -4
  220. package/fesm2022/aril-ui-editor.mjs.map +1 -1
  221. package/fesm2022/aril-ui-field.mjs +4 -4
  222. package/fesm2022/aril-ui-field.mjs.map +1 -1
  223. package/fesm2022/aril-ui-fileUpload.mjs +4 -4
  224. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  225. package/fesm2022/aril-ui-form.mjs +11 -11
  226. package/fesm2022/aril-ui-form.mjs.map +1 -1
  227. package/fesm2022/aril-ui-img-viewer.mjs +3 -3
  228. package/fesm2022/aril-ui-img-viewer.mjs.map +1 -1
  229. package/fesm2022/aril-ui-json-diff-comparison.mjs +4 -4
  230. package/fesm2022/aril-ui-json-diff-comparison.mjs.map +1 -1
  231. package/fesm2022/aril-ui-lib.mjs +70 -29
  232. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  233. package/fesm2022/aril-ui-loader.mjs +3 -3
  234. package/fesm2022/aril-ui-loader.mjs.map +1 -1
  235. package/fesm2022/aril-ui-mask.mjs +3 -3
  236. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  237. package/fesm2022/aril-ui-multiSelect.mjs +3 -3
  238. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  239. package/fesm2022/aril-ui-number.mjs +3 -3
  240. package/fesm2022/aril-ui-number.mjs.map +1 -1
  241. package/fesm2022/aril-ui-operation-types-dialog.mjs +3 -3
  242. package/fesm2022/aril-ui-operation-types-dialog.mjs.map +1 -1
  243. package/fesm2022/aril-ui-overlayPanel.mjs +4 -4
  244. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  245. package/fesm2022/aril-ui-panel.mjs +4 -4
  246. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  247. package/fesm2022/aril-ui-password.mjs +3 -3
  248. package/fesm2022/aril-ui-password.mjs.map +1 -1
  249. package/fesm2022/aril-ui-pdf-viewer.mjs +3 -3
  250. package/fesm2022/aril-ui-pdf-viewer.mjs.map +1 -1
  251. package/fesm2022/aril-ui-progressbar.mjs +3 -3
  252. package/fesm2022/aril-ui-progressbar.mjs.map +1 -1
  253. package/fesm2022/aril-ui-radioButton.mjs +3 -3
  254. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  255. package/fesm2022/aril-ui-relativeDateSelector.mjs +4 -4
  256. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  257. package/fesm2022/aril-ui-selectBox.mjs +5 -5
  258. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  259. package/fesm2022/aril-ui-switch.mjs +3 -3
  260. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  261. package/fesm2022/aril-ui-table-expand.mjs +14 -14
  262. package/fesm2022/aril-ui-table-expand.mjs.map +1 -1
  263. package/fesm2022/aril-ui-table.mjs +15 -15
  264. package/fesm2022/aril-ui-table.mjs.map +1 -1
  265. package/fesm2022/aril-ui-tag.mjs +3 -3
  266. package/fesm2022/aril-ui-tag.mjs.map +1 -1
  267. package/fesm2022/aril-ui-tagBox.mjs +5 -5
  268. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  269. package/fesm2022/aril-ui-text.mjs +3 -3
  270. package/fesm2022/aril-ui-text.mjs.map +1 -1
  271. package/fesm2022/aril-ui-textArea.mjs +3 -3
  272. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  273. package/fesm2022/aril-ui-toggle-button.mjs +4 -4
  274. package/fesm2022/aril-ui-toggle-button.mjs.map +1 -1
  275. package/fesm2022/aril-ui-tooltip.mjs +3 -3
  276. package/fesm2022/aril-ui-tooltip.mjs.map +1 -1
  277. package/fesm2022/aril-ui-translate-input.mjs +6 -6
  278. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  279. package/fesm2022/aril-ui-tree.mjs +4 -4
  280. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  281. package/fesm2022/aril-ui-treeSelect.mjs +4 -4
  282. package/fesm2022/aril-ui-treeSelect.mjs.map +1 -1
  283. package/fesm2022/aril-ui-treeTable.mjs +4 -4
  284. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  285. package/fesm2022/aril-ui-value.mjs +8 -7
  286. package/fesm2022/aril-ui-value.mjs.map +1 -1
  287. package/fesm2022/aril-util-activity.mjs +3 -3
  288. package/fesm2022/aril-util-activity.mjs.map +1 -1
  289. package/fesm2022/aril-util-block.mjs +6 -6
  290. package/fesm2022/aril-util-block.mjs.map +1 -1
  291. package/fesm2022/aril-util-directives.mjs +10 -10
  292. package/fesm2022/aril-util-directives.mjs.map +1 -1
  293. package/fesm2022/aril-util-lib.mjs +3 -3
  294. package/fesm2022/aril-util-lib.mjs.map +1 -1
  295. package/fesm2022/aril-util-pipes.mjs +18 -18
  296. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  297. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  298. package/fesm2022/aril-util-pub-sub.mjs +3 -3
  299. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  300. package/fesm2022/aril-util-sync-active-tab-route.mjs +4 -4
  301. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  302. package/fesm2022/aril-util-unwrap.mjs +3 -3
  303. package/fesm2022/aril-util-unwrap.mjs.map +1 -1
  304. package/fesm2022/aril.mjs +6 -6
  305. package/fesm2022/aril.mjs.map +1 -1
  306. package/package.json +125 -125
  307. package/theme/layout/app/favorite-pages/favorite-pages-sidebar.component.d.ts +16 -0
  308. package/theme/layout/app/history/history-sidebar.component.d.ts +16 -0
  309. package/theme/layout/app/notifications/notifications-sidebar.component.d.ts +2304 -2267
  310. package/theme/layout/app/notifications/notifications-sidebar.component.html +66 -68
  311. package/theme/layout/app/notifications/notifications-sidebar.component.scss +234 -120
  312. package/theme/layout/app/notifications/notifications-sidebar.component.ts +182 -56
  313. package/theme/layout/app/site-map/site-map-sidebar.component.d.ts +16 -0
  314. package/theme/layout/service/interfaces/interfaces.d.ts +5 -1
  315. package/theme/layout/service/interfaces/interfaces.ts +6 -1
  316. package/theme/layout/service/notifications.service.d.ts +1 -0
  317. package/theme/layout/service/notifications.service.ts +5 -0
  318. package/ui/autoComplete/src/auto-complete.component.d.ts +8 -8
  319. package/ui/badge/src/badge.component.d.ts +9 -9
  320. package/ui/button/src/button.component.d.ts +12 -12
  321. package/ui/button/src/split-button.component.d.ts +1 -1
  322. package/ui/calendar/src/calendar.component.d.ts +22 -22
  323. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +4 -4
  324. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +5 -5
  325. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +4 -4
  326. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +3 -3
  327. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +7 -7
  328. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +9 -9
  329. package/ui/charts/src/highCharts/gauge/solid-gauge.component.d.ts +3 -3
  330. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +4 -4
  331. package/ui/charts/src/highCharts/line/line-chart-datetime-axis.component.d.ts +5 -5
  332. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +4 -4
  333. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +4 -4
  334. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +7 -7
  335. package/ui/checkbox/src/check-box.component.d.ts +3 -3
  336. package/ui/checkbox/src/tri-state-checkbox.component.d.ts +2 -2
  337. package/ui/chip/src/chip.component.d.ts +7 -7
  338. package/ui/collapse-reorder-list/src/collapse-reorder-list.component.d.ts +4 -4
  339. package/ui/dxEditor/src/dx-editor.component.d.ts +5 -5
  340. package/ui/dxField/src/dx-field.component.d.ts +5 -5
  341. package/ui/editor/src/aril-editor.component.d.ts +3 -3
  342. package/ui/field/src/field.component.d.ts +9 -9
  343. package/ui/fileUpload/src/file-upload.component.d.ts +14 -14
  344. package/ui/form/src/form-submit-button.component.d.ts +1 -1
  345. package/ui/form/src/form.component.d.ts +1 -1
  346. package/ui/img-viewer/src/img-viewer.component.d.ts +1 -1
  347. package/ui/lib/index.d.ts +1 -0
  348. package/ui/lib/src/form/form-error-message.directive.d.ts +1 -1
  349. package/ui/lib/src/tooltip/tooltip-on-overflow.directive.d.ts +18 -0
  350. package/ui/mask/src/mask.component.d.ts +6 -6
  351. package/ui/multiSelect/src/multi-select.component.d.ts +13 -13
  352. package/ui/number/src/number.component.d.ts +15 -15
  353. package/ui/overlayPanel/src/overlay-panel.component.d.ts +1 -1
  354. package/ui/panel/src/panel.component.d.ts +6 -6
  355. package/ui/password/src/password.component.d.ts +4 -4
  356. package/ui/pdf-viewer/src/pdf-viewer.component.d.ts +12 -12
  357. package/ui/progressbar/src/progressbar.component.d.ts +3 -3
  358. package/ui/radioButton/src/radio-button.component.d.ts +3 -3
  359. package/ui/selectBox/src/select-box.component.d.ts +10 -10
  360. package/ui/switch/src/switch.component.d.ts +1 -1
  361. package/ui/table/src/export-overlay-panel.component.d.ts +2 -2
  362. package/ui/table/src/table-column.component.d.ts +11 -11
  363. package/ui/table/src/table.component.d.ts +35 -35
  364. package/ui/table-expand/src/table-column.component.d.ts +6 -6
  365. package/ui/table-expand/src/table.component.d.ts +20 -20
  366. package/ui/tag/src/tag.component.d.ts +4 -6
  367. package/ui/tagBox/src/tag-box.component.d.ts +7 -7
  368. package/ui/text/src/text.component.d.ts +5 -5
  369. package/ui/textArea/src/text-area.component.d.ts +5 -5
  370. package/ui/toggle-button/src/toggle-button.component.d.ts +1 -1
  371. package/ui/tooltip/src/tooltip-component.d.ts +8 -8
  372. package/ui/translate-input/src/aril-translate-input.component.d.ts +2 -2
  373. package/ui/tree/src/tree.component.d.ts +8 -8
  374. package/ui/treeSelect/src/treeSelect.component.d.ts +12 -12
  375. package/ui/treeTable/src/tree-table.component.d.ts +5 -5
  376. package/ui/value/src/value.component.d.ts +15 -15
  377. package/ui-business/assetPicker/src/asset-picker.component.d.ts +11 -11
  378. package/ui-business/detailed-overlay-panel/src/detailed-overlay-panel.component.d.ts +3 -6
  379. package/ui-business/enumPicker/src/enum-picker.component.d.ts +24 -24
  380. package/ui-business/image-viewer/src/aril-image-viewer.component.d.ts +8 -8
  381. package/ui-business/multiAssetPicker/src/multi-asset-picker.component.d.ts +15 -15
  382. package/ui-business/multiple-ref-value/src/multiple-ref-value.component.d.ts +2 -5
  383. package/ui-business/ref-value/src/ref-value.component.d.ts +5 -5
  384. package/ui-business/rolePicker/src/role-picker.component.d.ts +7 -7
  385. package/ui-business/trace-drawer/src/trace-drawer.component.d.ts +8 -8
  386. package/ui-business/trace-id/src/trace-id.component.d.ts +6 -6
  387. package/ui-business/userPicker/src/user-picker.component.d.ts +3 -3
  388. package/util/block/src/block.d.ts +4 -4
  389. package/util/lib/src/types.d.ts +16 -0
@@ -1,7 +1,7 @@
1
1
  import * as i3$1 from '@angular/common';
2
2
  import { CommonModule, UpperCasePipe, NgClass, NgTemplateOutlet } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Injectable, effect, signal, computed, inject, ViewChild, HostListener } from '@angular/core';
4
+ import { Component, Injectable, effect, signal, computed, inject, ViewChild, HostListener, untracked } from '@angular/core';
5
5
  import * as i1$2 from '@angular/router';
6
6
  import { Router, RouterModule, NavigationEnd, RouterLink, RouterOutlet, NavigationCancel, NavigationError, NavigationSkipped } from '@angular/router';
7
7
  import * as i8$1 from 'primeng/confirmdialog';
@@ -14,7 +14,7 @@ import * as i7$4 from 'primeng/messages';
14
14
  import { MessagesModule } from 'primeng/messages';
15
15
  import * as i8$3 from 'primeng/toast';
16
16
  import { ToastModule } from 'primeng/toast';
17
- import { Observable, Subject, switchMap, BehaviorSubject, takeUntil, of, startWith, filter as filter$1, map as map$1, take } from 'rxjs';
17
+ import { Observable, Subject, switchMap, BehaviorSubject, takeUntil, of, startWith, filter as filter$1, mergeMap, map as map$1, take } from 'rxjs';
18
18
  import * as i5 from '@ngneat/transloco';
19
19
  import { TranslocoModule, TranslocoService } from '@ngneat/transloco';
20
20
  import { API_CONFIGS } from 'aril/boot/config/api';
@@ -75,6 +75,9 @@ import * as i6$2 from 'primeng/autocomplete';
75
75
  import { AutoCompleteModule } from 'primeng/autocomplete';
76
76
  import { map, filter, switchMap as switchMap$1, catchError } from 'rxjs/operators';
77
77
  import * as i7$3 from '@angular/common/http';
78
+ import * as i10$2 from 'primeng/menu';
79
+ import { MenuModule } from 'primeng/menu';
80
+ import { SwitchComponent } from 'aril/ui/switch';
78
81
  import * as i4$1 from 'primeng/breadcrumb';
79
82
  import { BreadcrumbModule } from 'primeng/breadcrumb';
80
83
 
@@ -100,10 +103,10 @@ class EnvironmentBannerComponent {
100
103
  this.username = '';
101
104
  }
102
105
  }
103
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EnvironmentBannerComponent, deps: [{ token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: EnvironmentBannerComponent, isStandalone: true, selector: "app-environment-banner", ngImport: i0, template: "@if (code) {\r\n\t<div class=\"env-banner env-{{ variant }}\" *transloco=\"let t; read: 'envBanner'\">\r\n\t\t<span class=\"env-dot\"></span>\r\n\t\t<span class=\"env-label\">{{ t(variant) }}</span>\r\n\t\t@if (username) {\r\n\t\t\t<span class=\"env-sep\">\u2014</span>\r\n\t\t\t<span class=\"env-user\">{{ username }}</span>\r\n\t\t}\r\n\t</div>\r\n}\r\n", styles: [".env-banner{position:fixed;top:0;left:0;right:0;height:30px;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px;font-size:12px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#fff;box-shadow:0 2px 8px #00000047;z-index:1101}.env-banner.env-prod{background:#b91c1c}.env-banner.env-prod .env-dot{background:#fde047}.env-banner.env-preprod{background:#c2410c}.env-banner.env-preprod .env-dot{background:#fed7aa}.env-banner.env-stage{background:#1d4ed8}.env-banner.env-stage .env-dot{background:#bfdbfe}.env-banner.env-uat{background:#7e22ce}.env-banner.env-uat .env-dot{background:#e9d5ff}.env-banner.env-dev{background:#15803d}.env-banner.env-dev .env-dot{background:#bbf7d0}.env-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;animation:env-pulse 1.4s ease-in-out infinite}.env-label{font-weight:800;white-space:nowrap}.env-sep{opacity:.7}.env-user{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes env-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}@media (prefers-reduced-motion: reduce){.env-dot{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnvironmentBannerComponent, deps: [{ token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: EnvironmentBannerComponent, isStandalone: true, selector: "app-environment-banner", ngImport: i0, template: "@if (code) {\r\n\t<div class=\"env-banner env-{{ variant }}\" *transloco=\"let t; read: 'envBanner'\">\r\n\t\t<span class=\"env-dot\"></span>\r\n\t\t<span class=\"env-label\">{{ t(variant) }}</span>\r\n\t\t@if (username) {\r\n\t\t\t<span class=\"env-sep\">\u2014</span>\r\n\t\t\t<span class=\"env-user\">{{ username }}</span>\r\n\t\t}\r\n\t</div>\r\n}\r\n", styles: [".env-banner{position:fixed;top:0;left:0;right:0;height:30px;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px;font-size:12px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#fff;box-shadow:0 2px 8px #00000047;z-index:1101}.env-banner.env-prod{background:#b91c1c}.env-banner.env-prod .env-dot{background:#fde047}.env-banner.env-preprod{background:#c2410c}.env-banner.env-preprod .env-dot{background:#fed7aa}.env-banner.env-stage{background:#1d4ed8}.env-banner.env-stage .env-dot{background:#bfdbfe}.env-banner.env-uat{background:#7e22ce}.env-banner.env-uat .env-dot{background:#e9d5ff}.env-banner.env-dev{background:#15803d}.env-banner.env-dev .env-dot{background:#bbf7d0}.env-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;animation:env-pulse 1.4s ease-in-out infinite}.env-label{font-weight:800;white-space:nowrap}.env-sep{opacity:.7}.env-user{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes env-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}@media (prefers-reduced-motion: reduce){.env-dot{animation:none}}\n"], dependencies: [{ kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
105
108
  }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EnvironmentBannerComponent, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EnvironmentBannerComponent, decorators: [{
107
110
  type: Component,
108
111
  args: [{ standalone: true, selector: 'app-environment-banner', imports: [TranslocoModule], template: "@if (code) {\r\n\t<div class=\"env-banner env-{{ variant }}\" *transloco=\"let t; read: 'envBanner'\">\r\n\t\t<span class=\"env-dot\"></span>\r\n\t\t<span class=\"env-label\">{{ t(variant) }}</span>\r\n\t\t@if (username) {\r\n\t\t\t<span class=\"env-sep\">\u2014</span>\r\n\t\t\t<span class=\"env-user\">{{ username }}</span>\r\n\t\t}\r\n\t</div>\r\n}\r\n", styles: [".env-banner{position:fixed;top:0;left:0;right:0;height:30px;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px;font-size:12px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:#fff;box-shadow:0 2px 8px #00000047;z-index:1101}.env-banner.env-prod{background:#b91c1c}.env-banner.env-prod .env-dot{background:#fde047}.env-banner.env-preprod{background:#c2410c}.env-banner.env-preprod .env-dot{background:#fed7aa}.env-banner.env-stage{background:#1d4ed8}.env-banner.env-stage .env-dot{background:#bfdbfe}.env-banner.env-uat{background:#7e22ce}.env-banner.env-uat .env-dot{background:#e9d5ff}.env-banner.env-dev{background:#15803d}.env-banner.env-dev .env-dot{background:#bbf7d0}.env-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;animation:env-pulse 1.4s ease-in-out infinite}.env-label{font-weight:800;white-space:nowrap}.env-sep{opacity:.7}.env-user{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes env-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}@media (prefers-reduced-motion: reduce){.env-dot{animation:none}}\n"] }]
109
112
  }], ctorParameters: () => [{ type: i1.KeycloakService }] });
@@ -160,8 +163,8 @@ class ProfileService extends RestClient {
160
163
  getAllApp(post) {
161
164
  return new Observable();
162
165
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ProfileService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
166
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
167
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
165
168
  }
166
169
  __decorate([
167
170
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, profileEndpoints.getUser, {}, Apps.MW)
@@ -184,7 +187,7 @@ __decorate([
184
187
  __decorate([
185
188
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'user-management/clients', {}, Apps.MW)
186
189
  ], ProfileService.prototype, "getAllApp", null);
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ProfileService, decorators: [{
190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProfileService, decorators: [{
188
191
  type: Injectable,
189
192
  args: [{ providedIn: 'root' }]
190
193
  }], propDecorators: { getUser: [], updateUser: [], resetPassword: [], getAllClientsList: [], getAllUserType: [], getAuthorityTree: [], getAllApp: [] } });
@@ -293,10 +296,10 @@ class ChangePasswordModalComponent {
293
296
  cancel() {
294
297
  this.dialogRef.close('cancel');
295
298
  }
296
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChangePasswordModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: ProfileService }, { token: i5.TranslocoService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
297
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ChangePasswordModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"change-password-modal\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"passwordForm\">\r\n\t\t<aril-field [label]=\"t('newPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"newPassword\"\r\n\t\t\t\t[placeholder]=\"t('newPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('newPassword')?.invalid && passwordForm.get('newPassword')?.touched ? getErrorMessage('newPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('confirmPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"confirmPassword\"\r\n\t\t\t\t[placeholder]=\"t('confirmPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('confirmPassword')?.invalid && passwordForm.get('confirmPassword')?.touched ? getErrorMessage('confirmPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\t[raised]=\"false\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t(clickEvent)=\"submit()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", styles: [".change-password-modal :host ::ng-deep .p-password.ng-invalid.ng-touched .p-inputtext{border-color:var(--red-500, #ef4444);box-shadow:0 0 0 1px var(--red-500, #ef4444)}.change-password-modal :host ::ng-deep .p-password.ng-valid.ng-touched .p-inputtext{border-color:var(--green-500, #22c55e);box-shadow:0 0 0 1px var(--green-500, #22c55e)}.change-password-modal :host ::ng-deep .tooltipErrorMessage{background-color:var(--red-500, #ef4444)!important;color:#fff!important;font-size:.75rem!important;font-weight:500!important;border-radius:4px!important;padding:.5rem .75rem!important;box-shadow:0 2px 4px #0000001a!important}.change-password-modal :host ::ng-deep .tooltipErrorMessage .p-tooltip-arrow{border-top-color:var(--red-500, #ef4444)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i7.Password, selector: "p-password", inputs: ["ariaLabel", "ariaLabelledBy", "label", "disabled", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "appendTo", "toggleMask", "inputStyleClass", "styleClass", "style", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "variant"], outputs: ["onFocus", "onBlur", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
299
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangePasswordModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: ProfileService }, { token: i5.TranslocoService }, { token: i3.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
300
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChangePasswordModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div class=\"change-password-modal\" *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"passwordForm\">\r\n\t\t<aril-field [label]=\"t('newPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"newPassword\"\r\n\t\t\t\t[placeholder]=\"t('newPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('newPassword')?.invalid && passwordForm.get('newPassword')?.touched ? getErrorMessage('newPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('confirmPassword')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<p-password \r\n\t\t\t\tformControlName=\"confirmPassword\"\r\n\t\t\t\t[placeholder]=\"t('confirmPassword')\"\r\n\t\t\t\t[feedback]=\"false\"\r\n\t\t\t\t[toggleMask]=\"true\"\r\n\t\t\t\tstyleClass=\"w-full\"\r\n\t\t\t\tautocomplete=\"new-password\"\r\n\t\t\t\t[pTooltip]=\"passwordForm.get('confirmPassword')?.invalid && passwordForm.get('confirmPassword')?.touched ? getErrorMessage('confirmPassword') : ''\"\r\n\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\ttooltipStyleClass=\"tooltipErrorMessage\">\r\n\t\t\t</p-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\t[raised]=\"false\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t(clickEvent)=\"submit()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", styles: [".change-password-modal :host ::ng-deep .p-password.ng-invalid.ng-touched .p-inputtext{border-color:var(--red-500, #ef4444);box-shadow:0 0 0 1px var(--red-500, #ef4444)}.change-password-modal :host ::ng-deep .p-password.ng-valid.ng-touched .p-inputtext{border-color:var(--green-500, #22c55e);box-shadow:0 0 0 1px var(--green-500, #22c55e)}.change-password-modal :host ::ng-deep .tooltipErrorMessage{background-color:var(--red-500, #ef4444)!important;color:#fff!important;font-size:.75rem!important;font-weight:500!important;border-radius:4px!important;padding:.5rem .75rem!important;box-shadow:0 2px 4px #0000001a!important}.change-password-modal :host ::ng-deep .tooltipErrorMessage .p-tooltip-arrow{border-top-color:var(--red-500, #ef4444)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i7.Password, selector: "p-password", inputs: ["ariaLabel", "ariaLabelledBy", "label", "disabled", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "appendTo", "toggleMask", "inputStyleClass", "styleClass", "style", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "variant"], outputs: ["onFocus", "onBlur", "onClear"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
298
301
  }
299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChangePasswordModalComponent, decorators: [{
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangePasswordModalComponent, decorators: [{
300
303
  type: Component,
301
304
  args: [{ standalone: true, imports: [
302
305
  CommonModule,
@@ -465,10 +468,10 @@ class EditProfileModalComponent {
465
468
  clear() {
466
469
  this.levelPairs = [];
467
470
  }
468
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EditProfileModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i3.MessageService }, { token: ProfileService }, { token: i2.DynamicDialogConfig }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
469
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: EditProfileModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"profileForm\">\r\n\t\t<aril-field [label]=\"t('userStatus')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"enabled\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUser')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"systemUser\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userType')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-select-box formControlName=\"userTypeId\" [items]=\"userTypeItems\" itemKey=\"value\" itemText=\"label\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUserApp')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-select-box formControlName=\"clientOfSystemUser\" [items]=\"clientList\" itemText=\"text\" itemKey=\"key\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('username')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"userName\" [disabled]=\"true\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userPassword')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-password formControlName=\"password\" [placeholder]=\"'&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;'\"></aril-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('firstName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"firstName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('lastName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"lastName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('email')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"email\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('phone')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-mask mask=\"(999) 999 99 99\" [placeholder]=\"t('phoneExample')\" formControlName=\"phone\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('tcNumber')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-mask mask=\"99999999999\" formControlName=\"tckn\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('responsibleRegions')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-treeSelect\r\n\t\t\t\t[options]=\"treeItems\"\r\n\t\t\t\tformControlName=\"regions\"\r\n\t\t\t\t[placeholder]=\"t('select')\"\r\n\t\t\t\t(nodeSelect)=\"nodeSelect($event)\"\r\n\t\t\t\t(nodeUnselect)=\"nodeUnselect($event)\"\r\n\t\t\t\t(cleared)=\"clear()\">\r\n\t\t\t</aril-treeSelect>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('notes')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text-area [rows]=\"3\" [cols]=\"40\" formControlName=\"notes\"></aril-text-area>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('photoUrl')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"photoUrl\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-3 gap-1\">\r\n\t\t\t<aril-button color=\"danger\" [label]=\"t('cancel')\" [outlined]=\"true\" icon=\"TIMES\" (clickEvent)=\"cancel()\"></aril-button>\r\n\t\t\t<aril-form-submit [label]=\"t('save')\" color=\"success\" icon=\"CHECK\" [formGroup]=\"profileForm\" (validEvent)=\"submit()\"></aril-form-submit>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i6.FormSubmitButtonComponent, selector: "aril-form-submit:not([click])", inputs: ["formGroup"], outputs: ["validEvent", "inValidEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TreeSelectModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: MaskComponent, selector: "aril-mask[ngModel], aril-mask[formControl], aril-mask[formControlName]", inputs: ["mask", "slotChar", "placeholder", "maxlength", "usageInGrid", "tabindex"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextAreaComponent, selector: "aril-text-area[ngModel], aril-text-area[formControl], aril-text-area[formControlName]", inputs: ["rows", "cols", "isAutoResize", "tabindex", "placeholder"] }, { kind: "component", type: CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "labelAsYesNo", "tabindex"] }, { kind: "component", type: PasswordComponent, selector: "aril-password[ngModel], aril-password[formControl], aril-password[formControlName]", inputs: ["feedback", "passwordCriterias", "placeholder", "tabindex"] }, { kind: "component", type: SelectBoxComponent, selector: "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "grouped", "showClearButton", "placeholder", "searchExpr"], outputs: ["onSelectionChanged"] }, { kind: "component", type: TreeSelectComponent, selector: "aril-treeSelect", inputs: ["options", "modelValue", "placeholder", "selectionMode", "display", "showClear", "filter", "filterPlaceholder", "propagateSelectionUp", "propagateSelectionDown", "metaKeySelection", "formControlName"], outputs: ["modelValueChange", "nodeSelect", "nodeUnselect", "cleared"] }] }); }
471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditProfileModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i3.MessageService }, { token: ProfileService }, { token: i2.DynamicDialogConfig }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditProfileModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div *transloco=\"let t; read: 'profileSidebar'\">\r\n\t<aril-form [formGroup]=\"profileForm\">\r\n\t\t<aril-field [label]=\"t('userStatus')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"enabled\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUser')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-checkbox [label]=\"' '\" formControlName=\"systemUser\" [disabled]=\"true\"></aril-checkbox>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userType')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-select-box formControlName=\"userTypeId\" [items]=\"userTypeItems\" itemKey=\"value\" itemText=\"label\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('systemUserApp')\" [cols]=\"{ xl: 6, lg: 6, md: 12, sm: 12 }\">\r\n\t\t\t<aril-select-box formControlName=\"clientOfSystemUser\" [items]=\"clientList\" itemText=\"text\" itemKey=\"key\" [placeholder]=\"t('select')\"></aril-select-box>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('username')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"userName\" [disabled]=\"true\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('userPassword')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-password formControlName=\"password\" [placeholder]=\"'&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;&#8728;'\"></aril-password>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('firstName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"firstName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('lastName')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"lastName\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('email')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"email\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('phone')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-mask mask=\"(999) 999 99 99\" [placeholder]=\"t('phoneExample')\" formControlName=\"phone\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('tcNumber')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-mask mask=\"99999999999\" formControlName=\"tckn\"></aril-mask>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('responsibleRegions')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-treeSelect\r\n\t\t\t\t[options]=\"treeItems\"\r\n\t\t\t\tformControlName=\"regions\"\r\n\t\t\t\t[placeholder]=\"t('select')\"\r\n\t\t\t\t(nodeSelect)=\"nodeSelect($event)\"\r\n\t\t\t\t(nodeUnselect)=\"nodeUnselect($event)\"\r\n\t\t\t\t(cleared)=\"clear()\">\r\n\t\t\t</aril-treeSelect>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('notes')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text-area [rows]=\"3\" [cols]=\"40\" formControlName=\"notes\"></aril-text-area>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('photoUrl')\" [cols]=\"{ xl: 6, lg: 6, md: 6, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"photoUrl\"></aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-3 gap-1\">\r\n\t\t\t<aril-button color=\"danger\" [label]=\"t('cancel')\" [outlined]=\"true\" icon=\"TIMES\" (clickEvent)=\"cancel()\"></aril-button>\r\n\t\t\t<aril-form-submit [label]=\"t('save')\" color=\"success\" icon=\"CHECK\" [formGroup]=\"profileForm\" (validEvent)=\"submit()\"></aril-form-submit>\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i6.FormSubmitButtonComponent, selector: "aril-form-submit:not([click])", inputs: ["formGroup"], outputs: ["validEvent", "inValidEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TreeSelectModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: MaskComponent, selector: "aril-mask[ngModel], aril-mask[formControl], aril-mask[formControlName]", inputs: ["mask", "slotChar", "placeholder", "maxlength", "usageInGrid", "tabindex"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextAreaComponent, selector: "aril-text-area[ngModel], aril-text-area[formControl], aril-text-area[formControlName]", inputs: ["rows", "cols", "isAutoResize", "tabindex", "placeholder"] }, { kind: "component", type: CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "labelAsYesNo", "tabindex"] }, { kind: "component", type: PasswordComponent, selector: "aril-password[ngModel], aril-password[formControl], aril-password[formControlName]", inputs: ["feedback", "passwordCriterias", "placeholder", "tabindex"] }, { kind: "component", type: SelectBoxComponent, selector: "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "grouped", "showClearButton", "placeholder", "searchExpr"], outputs: ["onSelectionChanged"] }, { kind: "component", type: TreeSelectComponent, selector: "aril-treeSelect", inputs: ["options", "modelValue", "placeholder", "selectionMode", "display", "showClear", "filter", "filterPlaceholder", "propagateSelectionUp", "propagateSelectionDown", "metaKeySelection", "formControlName"], outputs: ["modelValueChange", "nodeSelect", "nodeUnselect", "cleared"] }] }); }
470
473
  }
471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: EditProfileModalComponent, decorators: [{
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditProfileModalComponent, decorators: [{
472
475
  type: Component,
473
476
  args: [{ standalone: true, imports: [
474
477
  CommonModule,
@@ -707,10 +710,10 @@ class LayoutService {
707
710
  changeScale(value) {
708
711
  document.documentElement.style.fontSize = `${value}px`;
709
712
  }
710
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
711
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, providedIn: 'root' }); }
713
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
714
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutService, providedIn: 'root' }); }
712
715
  }
713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LayoutService, decorators: [{
716
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutService, decorators: [{
714
717
  type: Injectable,
715
718
  args: [{
716
719
  providedIn: 'root'
@@ -856,10 +859,10 @@ class AppProfileSidebarComponent {
856
859
  });
857
860
  ref.onClose.subscribe();
858
861
  }
859
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppProfileSidebarComponent, deps: [{ token: LayoutService }, { token: i1.KeycloakService }, { token: ProfileService }, { token: i2.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
860
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppProfileSidebarComponent, isStandalone: true, selector: "app-profilemenu", providers: [DialogService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[showCloseIcon]=\"false\"\r\n\t[transitionOptions]=\"'.45s cubic-bezier(0.22, 0.61, 0.36, 1)'\"\r\n\tstyleClass=\"layout-profile-sidebar\">\r\n\t<ng-container *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t<div class=\"profile-panel\" [attr.data-co]=\"envCode\">\r\n\t\t\t<div class=\"panel-hero\">\r\n\t\t\t\t<div class=\"hero-top\">\r\n\t\t\t\t\t<div class=\"hero-title\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user\"></i>\r\n\t\t\t\t\t\t<span>{{ t('personalInfo') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button type=\"button\" class=\"hero-close\" [attr.aria-label]=\"t('close')\" (click)=\"visible = false\">\r\n\t\t\t\t\t\t<i class=\"pi pi-times\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"hero-profile\">\r\n\t\t\t\t\t<div class=\"hero-avatar\">{{ initials() }}</div>\r\n\t\t\t\t\t<div class=\"hero-identity\">\r\n\t\t\t\t\t\t<div class=\"hero-name\">{{ displayName() }}</div>\r\n\t\t\t\t\t\t<div class=\"hero-username\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-at\"></i>\r\n\t\t\t\t\t\t\t<span>{{ userProfile()?.userName || username }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"info-list\">\r\n\t\t\t\t@for (row of rows(); track row.labelKey) {\r\n\t\t\t\t\t<div class=\"info-row\">\r\n\t\t\t\t\t\t<div class=\"row-icon tint-{{ row.tint }}\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ row.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row-body\">\r\n\t\t\t\t\t\t\t<div class=\"row-label\">{{ t(row.labelKey) }}</div>\r\n\t\t\t\t\t\t\t@if (row.badge) {\r\n\t\t\t\t\t\t\t\t<span class=\"row-badge tone-{{ row.badge.tone }}\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"badge-dot\"></span>\r\n\t\t\t\t\t\t\t\t\t{{ row.badge.label || t(row.badge.labelKey!) }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<div class=\"row-value\" [class.empty]=\"!row.value\">{{ row.value || t('notSpecified') }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"panel-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"logout-btn\" (click)=\"logout()\">\r\n\t\t\t\t\t<i class=\"pi pi-sign-out\"></i>\r\n\t\t\t\t\t{{ t('logout') }}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-profile-sidebar{width:330px;max-width:100vw;box-shadow:-24px 0 60px -24px #181c2647}:host ::ng-deep .layout-profile-sidebar .p-sidebar-header{display:none}:host ::ng-deep .layout-profile-sidebar .p-sidebar-content{padding:0;height:100%;overflow:hidden}.profile-panel{--pf-accent: var(--primary-color, #4c63c7);height:100%;display:flex;flex-direction:column;background:#fff}.profile-panel[data-co=depsas]{--pf-accent: rgb(252 80 0)}.profile-panel[data-co=dedas]{--pf-accent: rgb(0 173 186)}.panel-hero{position:relative;flex-shrink:0;padding:14px 24px 20px;background:var(--pf-accent);color:#fff;overflow:hidden}.panel-hero:before,.panel-hero:after{content:\"\";position:absolute;border-radius:50%}.panel-hero:before{top:-70px;right:-50px;width:200px;height:200px;background:#ffffff14}.panel-hero:after{bottom:-90px;left:-40px;width:180px;height:180px;background:#ffffff0f}.hero-top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between}.hero-title{display:flex;align-items:center;gap:9px}.hero-title i{font-size:20px;opacity:.9}.hero-title span{font-size:13px;font-weight:600;letter-spacing:.02em;opacity:.92}.hero-close{width:30px;height:30px;border:none;border-radius:10px;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s}.hero-close i{font-size:14px}.hero-close:hover{background:#ffffff47}.hero-close:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}.hero-profile{position:relative;z-index:1;display:flex;align-items:center;gap:16px;margin-top:22px}.hero-avatar{width:66px;height:66px;flex-shrink:0;border-radius:20px;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;letter-spacing:.01em}.hero-identity{min-width:0}.hero-name{font-size:18px;font-weight:700;line-height:1.2}.hero-username{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:12px;opacity:.85}.hero-username i{font-size:14px;flex-shrink:0}.hero-username span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-list{flex:1;min-height:0;overflow-y:auto;padding:8px 12px 12px}.info-row{display:flex;align-items:center;gap:14px;padding:13px 12px;border-radius:14px;transition:background .16s}.info-row:hover{background:#f6f7f9}.row-icon{width:40px;height:40px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center}.row-icon i{font-size:21px}.row-icon.tint-cool{background:#eef1fb;color:#4c63c7}.row-icon.tint-accent{background:color-mix(in srgb,var(--pf-accent) 9%,transparent);color:var(--pf-accent)}.row-icon.tint-teal{background:#e7f4f3;color:#1d8a82}.row-body{min-width:0;flex:1}.row-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#98a0ad}.row-value{font-size:14px;font-weight:500;color:#242a33;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-value.empty{color:#b4bac3}.row-badge{display:inline-flex;align-items:center;gap:5px;margin-top:5px;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:600}.row-badge .badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.row-badge.tone-green{background:#e7f5ec;color:#1e8a4c}.row-badge.tone-red{background:#fdecec;color:#d0342c}.row-badge.tone-neutral{background:#eef0f3;color:#6b7480}.panel-footer{flex-shrink:0;padding:14px 20px 20px;border-top:1px solid #eef0f3}.logout-btn{width:100%;height:40px;border:none;border-radius:6px;background:var(--pf-accent);color:#fff;font-family:inherit;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,box-shadow .2s}.logout-btn i{font-size:16px}.logout-btn:hover{background:color-mix(in srgb,var(--pf-accent) 92%,#000)}.logout-btn:active{background:color-mix(in srgb,var(--pf-accent) 85%,#000)}.logout-btn:focus-visible{outline:2px solid var(--pf-accent);outline-offset:3px}@media (prefers-reduced-motion: reduce){.info-row,.hero-close,.logout-btn{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
862
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppProfileSidebarComponent, deps: [{ token: LayoutService }, { token: i1.KeycloakService }, { token: ProfileService }, { token: i2.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
863
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppProfileSidebarComponent, isStandalone: true, selector: "app-profilemenu", providers: [DialogService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[showCloseIcon]=\"false\"\r\n\t[transitionOptions]=\"'.45s cubic-bezier(0.22, 0.61, 0.36, 1)'\"\r\n\tstyleClass=\"layout-profile-sidebar\">\r\n\t<ng-container *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t<div class=\"profile-panel\" [attr.data-co]=\"envCode\">\r\n\t\t\t<div class=\"panel-hero\">\r\n\t\t\t\t<div class=\"hero-top\">\r\n\t\t\t\t\t<div class=\"hero-title\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user\"></i>\r\n\t\t\t\t\t\t<span>{{ t('personalInfo') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button type=\"button\" class=\"hero-close\" [attr.aria-label]=\"t('close')\" (click)=\"visible = false\">\r\n\t\t\t\t\t\t<i class=\"pi pi-times\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"hero-profile\">\r\n\t\t\t\t\t<div class=\"hero-avatar\">{{ initials() }}</div>\r\n\t\t\t\t\t<div class=\"hero-identity\">\r\n\t\t\t\t\t\t<div class=\"hero-name\">{{ displayName() }}</div>\r\n\t\t\t\t\t\t<div class=\"hero-username\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-at\"></i>\r\n\t\t\t\t\t\t\t<span>{{ userProfile()?.userName || username }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"info-list\">\r\n\t\t\t\t@for (row of rows(); track row.labelKey) {\r\n\t\t\t\t\t<div class=\"info-row\">\r\n\t\t\t\t\t\t<div class=\"row-icon tint-{{ row.tint }}\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ row.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row-body\">\r\n\t\t\t\t\t\t\t<div class=\"row-label\">{{ t(row.labelKey) }}</div>\r\n\t\t\t\t\t\t\t@if (row.badge) {\r\n\t\t\t\t\t\t\t\t<span class=\"row-badge tone-{{ row.badge.tone }}\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"badge-dot\"></span>\r\n\t\t\t\t\t\t\t\t\t{{ row.badge.label || t(row.badge.labelKey!) }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<div class=\"row-value\" [class.empty]=\"!row.value\">{{ row.value || t('notSpecified') }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"panel-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"logout-btn\" (click)=\"logout()\">\r\n\t\t\t\t\t<i class=\"pi pi-sign-out\"></i>\r\n\t\t\t\t\t{{ t('logout') }}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-profile-sidebar{width:330px;max-width:100vw;box-shadow:-24px 0 60px -24px #181c2647}:host ::ng-deep .layout-profile-sidebar .p-sidebar-header{display:none}:host ::ng-deep .layout-profile-sidebar .p-sidebar-content{padding:0;height:100%;overflow:hidden}.profile-panel{--pf-accent: var(--primary-color, #4c63c7);height:100%;display:flex;flex-direction:column;background:#fff}.profile-panel[data-co=depsas]{--pf-accent: rgb(252 80 0)}.profile-panel[data-co=dedas]{--pf-accent: rgb(0 173 186)}.panel-hero{position:relative;flex-shrink:0;padding:14px 24px 20px;background:var(--pf-accent);color:#fff;overflow:hidden}.panel-hero:before,.panel-hero:after{content:\"\";position:absolute;border-radius:50%}.panel-hero:before{top:-70px;right:-50px;width:200px;height:200px;background:#ffffff14}.panel-hero:after{bottom:-90px;left:-40px;width:180px;height:180px;background:#ffffff0f}.hero-top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between}.hero-title{display:flex;align-items:center;gap:9px}.hero-title i{font-size:20px;opacity:.9}.hero-title span{font-size:13px;font-weight:600;letter-spacing:.02em;opacity:.92}.hero-close{width:30px;height:30px;border:none;border-radius:10px;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s}.hero-close i{font-size:14px}.hero-close:hover{background:#ffffff47}.hero-close:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}.hero-profile{position:relative;z-index:1;display:flex;align-items:center;gap:16px;margin-top:22px}.hero-avatar{width:66px;height:66px;flex-shrink:0;border-radius:20px;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;letter-spacing:.01em}.hero-identity{min-width:0}.hero-name{font-size:18px;font-weight:700;line-height:1.2}.hero-username{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:12px;opacity:.85}.hero-username i{font-size:14px;flex-shrink:0}.hero-username span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-list{flex:1;min-height:0;overflow-y:auto;padding:8px 12px 12px}.info-row{display:flex;align-items:center;gap:14px;padding:13px 12px;border-radius:14px;transition:background .16s}.info-row:hover{background:#f6f7f9}.row-icon{width:40px;height:40px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center}.row-icon i{font-size:21px}.row-icon.tint-cool{background:#eef1fb;color:#4c63c7}.row-icon.tint-accent{background:color-mix(in srgb,var(--pf-accent) 9%,transparent);color:var(--pf-accent)}.row-icon.tint-teal{background:#e7f4f3;color:#1d8a82}.row-body{min-width:0;flex:1}.row-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#98a0ad}.row-value{font-size:14px;font-weight:500;color:#242a33;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-value.empty{color:#b4bac3}.row-badge{display:inline-flex;align-items:center;gap:5px;margin-top:5px;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:600}.row-badge .badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.row-badge.tone-green{background:#e7f5ec;color:#1e8a4c}.row-badge.tone-red{background:#fdecec;color:#d0342c}.row-badge.tone-neutral{background:#eef0f3;color:#6b7480}.panel-footer{flex-shrink:0;padding:14px 20px 20px;border-top:1px solid #eef0f3}.logout-btn{width:100%;height:40px;border:none;border-radius:6px;background:var(--pf-accent);color:#fff;font-family:inherit;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,box-shadow .2s}.logout-btn i{font-size:16px}.logout-btn:hover{background:color-mix(in srgb,var(--pf-accent) 92%,#000)}.logout-btn:active{background:color-mix(in srgb,var(--pf-accent) 85%,#000)}.logout-btn:focus-visible{outline:2px solid var(--pf-accent);outline-offset:3px}@media (prefers-reduced-motion: reduce){.info-row,.hero-close,.logout-btn{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
861
864
  }
862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppProfileSidebarComponent, decorators: [{
865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppProfileSidebarComponent, decorators: [{
863
866
  type: Component,
864
867
  args: [{ standalone: true, selector: 'app-profilemenu', imports: [SidebarModule, TranslocoModule], providers: [DialogService], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[showCloseIcon]=\"false\"\r\n\t[transitionOptions]=\"'.45s cubic-bezier(0.22, 0.61, 0.36, 1)'\"\r\n\tstyleClass=\"layout-profile-sidebar\">\r\n\t<ng-container *transloco=\"let t; read: 'profileSidebar'\">\r\n\t\t<div class=\"profile-panel\" [attr.data-co]=\"envCode\">\r\n\t\t\t<div class=\"panel-hero\">\r\n\t\t\t\t<div class=\"hero-top\">\r\n\t\t\t\t\t<div class=\"hero-title\">\r\n\t\t\t\t\t\t<i class=\"pi pi-user\"></i>\r\n\t\t\t\t\t\t<span>{{ t('personalInfo') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<button type=\"button\" class=\"hero-close\" [attr.aria-label]=\"t('close')\" (click)=\"visible = false\">\r\n\t\t\t\t\t\t<i class=\"pi pi-times\"></i>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"hero-profile\">\r\n\t\t\t\t\t<div class=\"hero-avatar\">{{ initials() }}</div>\r\n\t\t\t\t\t<div class=\"hero-identity\">\r\n\t\t\t\t\t\t<div class=\"hero-name\">{{ displayName() }}</div>\r\n\t\t\t\t\t\t<div class=\"hero-username\">\r\n\t\t\t\t\t\t\t<i class=\"pi pi-at\"></i>\r\n\t\t\t\t\t\t\t<span>{{ userProfile()?.userName || username }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"info-list\">\r\n\t\t\t\t@for (row of rows(); track row.labelKey) {\r\n\t\t\t\t\t<div class=\"info-row\">\r\n\t\t\t\t\t\t<div class=\"row-icon tint-{{ row.tint }}\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ row.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"row-body\">\r\n\t\t\t\t\t\t\t<div class=\"row-label\">{{ t(row.labelKey) }}</div>\r\n\t\t\t\t\t\t\t@if (row.badge) {\r\n\t\t\t\t\t\t\t\t<span class=\"row-badge tone-{{ row.badge.tone }}\">\r\n\t\t\t\t\t\t\t\t\t<span class=\"badge-dot\"></span>\r\n\t\t\t\t\t\t\t\t\t{{ row.badge.label || t(row.badge.labelKey!) }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<div class=\"row-value\" [class.empty]=\"!row.value\">{{ row.value || t('notSpecified') }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"panel-footer\">\r\n\t\t\t\t<button type=\"button\" class=\"logout-btn\" (click)=\"logout()\">\r\n\t\t\t\t\t<i class=\"pi pi-sign-out\"></i>\r\n\t\t\t\t\t{{ t('logout') }}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-container>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-profile-sidebar{width:330px;max-width:100vw;box-shadow:-24px 0 60px -24px #181c2647}:host ::ng-deep .layout-profile-sidebar .p-sidebar-header{display:none}:host ::ng-deep .layout-profile-sidebar .p-sidebar-content{padding:0;height:100%;overflow:hidden}.profile-panel{--pf-accent: var(--primary-color, #4c63c7);height:100%;display:flex;flex-direction:column;background:#fff}.profile-panel[data-co=depsas]{--pf-accent: rgb(252 80 0)}.profile-panel[data-co=dedas]{--pf-accent: rgb(0 173 186)}.panel-hero{position:relative;flex-shrink:0;padding:14px 24px 20px;background:var(--pf-accent);color:#fff;overflow:hidden}.panel-hero:before,.panel-hero:after{content:\"\";position:absolute;border-radius:50%}.panel-hero:before{top:-70px;right:-50px;width:200px;height:200px;background:#ffffff14}.panel-hero:after{bottom:-90px;left:-40px;width:180px;height:180px;background:#ffffff0f}.hero-top{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between}.hero-title{display:flex;align-items:center;gap:9px}.hero-title i{font-size:20px;opacity:.9}.hero-title span{font-size:13px;font-weight:600;letter-spacing:.02em;opacity:.92}.hero-close{width:30px;height:30px;border:none;border-radius:10px;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .18s}.hero-close i{font-size:14px}.hero-close:hover{background:#ffffff47}.hero-close:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}.hero-profile{position:relative;z-index:1;display:flex;align-items:center;gap:16px;margin-top:22px}.hero-avatar{width:66px;height:66px;flex-shrink:0;border-radius:20px;background:#ffffff2e;border:1px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;letter-spacing:.01em}.hero-identity{min-width:0}.hero-name{font-size:18px;font-weight:700;line-height:1.2}.hero-username{display:flex;align-items:center;gap:6px;margin-top:5px;font-size:12px;opacity:.85}.hero-username i{font-size:14px;flex-shrink:0}.hero-username span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-list{flex:1;min-height:0;overflow-y:auto;padding:8px 12px 12px}.info-row{display:flex;align-items:center;gap:14px;padding:13px 12px;border-radius:14px;transition:background .16s}.info-row:hover{background:#f6f7f9}.row-icon{width:40px;height:40px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center}.row-icon i{font-size:21px}.row-icon.tint-cool{background:#eef1fb;color:#4c63c7}.row-icon.tint-accent{background:color-mix(in srgb,var(--pf-accent) 9%,transparent);color:var(--pf-accent)}.row-icon.tint-teal{background:#e7f4f3;color:#1d8a82}.row-body{min-width:0;flex:1}.row-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#98a0ad}.row-value{font-size:14px;font-weight:500;color:#242a33;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-value.empty{color:#b4bac3}.row-badge{display:inline-flex;align-items:center;gap:5px;margin-top:5px;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:600}.row-badge .badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.row-badge.tone-green{background:#e7f5ec;color:#1e8a4c}.row-badge.tone-red{background:#fdecec;color:#d0342c}.row-badge.tone-neutral{background:#eef0f3;color:#6b7480}.panel-footer{flex-shrink:0;padding:14px 20px 20px;border-top:1px solid #eef0f3}.logout-btn{width:100%;height:40px;border:none;border-radius:6px;background:var(--pf-accent);color:#fff;font-family:inherit;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:background-color .2s,box-shadow .2s}.logout-btn i{font-size:16px}.logout-btn:hover{background:color-mix(in srgb,var(--pf-accent) 92%,#000)}.logout-btn:active{background:color-mix(in srgb,var(--pf-accent) 85%,#000)}.logout-btn:focus-visible{outline:2px solid var(--pf-accent);outline-offset:3px}@media (prefers-reduced-motion: reduce){.info-row,.hero-close,.logout-btn{transition:none}}\n"] }]
865
868
  }], ctorParameters: () => [{ type: LayoutService }, { type: i1.KeycloakService }, { type: ProfileService }, { type: i2.DialogService }, { type: i5.TranslocoService }] });
@@ -979,10 +982,10 @@ class HistoryService {
979
982
  item.url.toLocaleLowerCase(currentLang).includes(lowerSearchTerm));
980
983
  });
981
984
  }
982
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
983
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistoryService, providedIn: 'root' }); }
985
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
986
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HistoryService, providedIn: 'root' }); }
984
987
  }
985
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistoryService, decorators: [{
988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HistoryService, decorators: [{
986
989
  type: Injectable,
987
990
  args: [{
988
991
  providedIn: 'root'
@@ -1074,10 +1077,10 @@ class HistorySidebarComponent {
1074
1077
  // Fallback to original title
1075
1078
  return item.title;
1076
1079
  }
1077
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistorySidebarComponent, deps: [{ token: LayoutService }, { token: HistoryService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1078
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: HistorySidebarComponent, isStandalone: true, selector: "app-history-sidebar", providers: [ConfirmationService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-history-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'history'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-history text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('pageHistory') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"history-content\">\r\n\t\t@if (history().length > 0) {\r\n\t\t\t<div class=\"search-section\">\r\n\t\t\t\t<div class=\"flex justify-content-center align-items-center grid p-fluid m-0\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\tclass=\"col-10\"\r\n\t\t\t\t\t\t[placeholder]=\"t('searchHistory')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\">\r\n\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('confirmClearAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"clearAllHistory($event)\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t@if (filteredHistory().length > 0) {\r\n\t\t\t<div class=\"history-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"history-items\">\r\n\t\t\t\t\t\t@for (item of filteredHistory(); track trackByItemId($index, item)) {\r\n\t\t\t\t\t\t\t<div class=\"history-item\" (click)=\"navigateToItem(item)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"title-info\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ getLocalizedTitle(item) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"route-text\">{{ item.url }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-history empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noHistory') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : t('startBrowsing') }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-history-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-history-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-history-sidebar .p-sidebar-header i{color:var(--primary-color-text);font-size:1.1rem}:host ::ng-deep .layout-history-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600;color:var(--primary-color-text)}.history-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.history-list{flex:1;overflow:hidden}.history-items{padding:.5rem}.history-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.history-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.history-item:hover .remove-btn{opacity:1}.history-item:last-child{margin-bottom:0}.item-content{padding:1rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-info{display:flex;flex-direction:column;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-title .route-text{font-size:.75rem;color:var(--text-color-secondary);font-weight:400;line-height:1.2;margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.8}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.history-content{height:calc(100vh - 3.5rem)}.search-section{padding:.75rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HistorySidebarComponent, deps: [{ token: LayoutService }, { token: HistoryService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1081
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HistorySidebarComponent, isStandalone: true, selector: "app-history-sidebar", providers: [ConfirmationService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-history-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'history'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-history text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('pageHistory') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"history-content\">\r\n\t\t@if (history().length > 0) {\r\n\t\t\t<div class=\"search-section\">\r\n\t\t\t\t<div class=\"flex justify-content-center align-items-center grid p-fluid m-0\">\r\n\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\tclass=\"col-10\"\r\n\t\t\t\t\t\t[placeholder]=\"t('searchHistory')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\">\r\n\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('confirmClearAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"clearAllHistory($event)\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t@if (filteredHistory().length > 0) {\r\n\t\t\t<div class=\"history-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"history-items\">\r\n\t\t\t\t\t\t@for (item of filteredHistory(); track trackByItemId($index, item)) {\r\n\t\t\t\t\t\t\t<div class=\"history-item\" (click)=\"navigateToItem(item)\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"title-info\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ getLocalizedTitle(item) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"route-text\">{{ item.url }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-history empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noHistory') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : t('startBrowsing') }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-history-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-history-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-history-sidebar .p-sidebar-header i{color:var(--primary-color-text);font-size:1.1rem}:host ::ng-deep .layout-history-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600;color:var(--primary-color-text)}.history-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.history-list{flex:1;overflow:hidden}.history-items{padding:.5rem}.history-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.history-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.history-item:hover .remove-btn{opacity:1}.history-item:last-child{margin-bottom:0}.item-content{padding:1rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-info{display:flex;flex-direction:column;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-title .route-text{font-size:.75rem;color:var(--text-color-secondary);font-weight:400;line-height:1.2;margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.8}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.history-content{height:calc(100vh - 3.5rem)}.search-section{padding:.75rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1079
1082
  }
1080
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HistorySidebarComponent, decorators: [{
1083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HistorySidebarComponent, decorators: [{
1081
1084
  type: Component,
1082
1085
  args: [{ standalone: true, selector: 'app-history-sidebar', imports: [
1083
1086
  CommonModule,
@@ -1218,10 +1221,10 @@ class SiteMapSidebarComponent {
1218
1221
  trackByKey(index, node) {
1219
1222
  return node.key || `${index}`;
1220
1223
  }
1221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: LayoutService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiteMapSidebarComponent, deps: [{ token: LayoutService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SiteMapSidebarComponent, isStandalone: true, selector: "app-site-map-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-sitemap-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'siteMap'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between gap-2 w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-sitemap text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('siteMap') }}</span>\r\n\t\t\t\t<span class=\"total-pages\">{{ totalPages() }} {{ t('pages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"sitemap-content\">\r\n\t\t<div class=\"search-section grid p-fluid m-0\">\r\n\t\t\t<aril-text\r\n\t\t\t\t[placeholder]=\"t('searchPages')\"\r\n\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\tclass=\"col-10 m-0\">\r\n\t\t\t</aril-text>\r\n\t\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"col-2 flex align-items-center m-0 p-0\">\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesDown\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--primary-color)\"\r\n\t\t\t\t\t\tclass=\"col-1 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('expandAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"expandAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t[icon]=\"solidIcons.faAnglesUp\"\r\n\t\t\t\t\t\tsize=\"xl\"\r\n\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\tclass=\"col-1 ml-3 cursor-pointer\"\r\n\t\t\t\t\t\t[pTooltip]=\"t('collapseAll')\"\r\n\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t(click)=\"collapseAll()\">\r\n\t\t\t\t\t</fa-icon>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t<!-- Site Map Tree -->\r\n\t\t@if (filteredNodes().length > 0) {\r\n\t\t\t<div class=\"sitemap-tree\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t\t@for (node of filteredNodes(); track trackByKey($index, node)) {\r\n\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-sitemap empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('noSearchResults') : t('noPages') }}\r\n\t\t\t\t\t</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">\r\n\t\t\t\t\t\t{{ searchTerm() ? t('tryDifferentKeywords') : '' }}\r\n\t\t\t\t\t</p>\r\n\t\t\t\t\t@if (searchTerm()) {\r\n\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t[label]=\"t('clearSearch')\"\r\n\t\t\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\t\t\tcolor=\"secondary\"\r\n\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t(clickEvent)=\"searchTerm.set(''); onSearchChange()\">\r\n\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!-- Recursive Tree Node Template -->\r\n\t\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t\t<div class=\"tree-node\" [style.margin-left.px]=\"level * 20\">\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t(click)=\"!node.routerLink ? toggleNode(node) : (visible = false)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ node.label | translateJson }}</span>\r\n\r\n\t\t\t\t\t\t@if (node.routerLink) {\r\n\t\t\t\t\t\t\t<i class=\"external-icon pi pi-external-link\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- Recursive Children -->\r\n\t\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t\t@for (child of node.children; track trackByKey($index, child)) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-sitemap-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem .5rem}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-sitemap-sidebar .p-sidebar-header .total-pages{background:#fff3;color:#ffffffe6;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.sitemap-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.search-section{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.sitemap-tree{flex:1;overflow:hidden}.tree-container{padding:.5rem 0}.tree-node .node-item{display:flex;align-items:center;padding:.5rem 1rem;border-radius:6px;margin:.1rem .5rem;cursor:pointer;transition:all .2s ease;border:1px solid transparent}.tree-node .node-item:hover{background:var(--surface-hover);border-color:var(--surface-border)}.tree-node .node-item.is-page:hover{background:var(--primary-50);border-color:var(--primary-200)}.tree-node .node-item.is-page:hover .external-icon{opacity:1}.tree-node .node-item.has-children{font-weight:500}.tree-node .node-content{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.tree-node .toggle-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;border-radius:4px;color:var(--text-color-secondary);cursor:pointer;transition:all .2s ease;flex-shrink:0}.tree-node .toggle-btn:hover{background:var(--surface-hover);color:var(--primary-color)}.tree-node .toggle-btn i{font-size:.7rem}.tree-node .node-icon{color:var(--primary-color);font-size:.9rem;flex-shrink:0}.tree-node .node-label{flex:1;font-size:.9rem;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-node .external-icon{color:var(--text-color-secondary);font-size:.7rem;opacity:.6;transition:opacity .2s ease;flex-shrink:0}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}:host ::ng-deep .p-scrollpanel-bar-y{background:var(--primary-200);width:4px;border-radius:2px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:var(--primary-300)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: TranslateJsonPipe, name: "translateJson" }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1223
1226
  }
1224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
1227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SiteMapSidebarComponent, decorators: [{
1225
1228
  type: Component,
1226
1229
  args: [{ standalone: true, selector: 'app-site-map-sidebar', imports: [
1227
1230
  CommonModule,
@@ -1272,8 +1275,8 @@ class FavoritePagesService extends RestClient {
1272
1275
  deleteFavoritePage(id) {
1273
1276
  return new Observable();
1274
1277
  }
1275
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1276
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, providedIn: 'root' }); }
1278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1279
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesService, providedIn: 'root' }); }
1277
1280
  }
1278
1281
  __decorate([
1279
1282
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, favoritePageEndpoints.filter)
@@ -1287,7 +1290,7 @@ __decorate([
1287
1290
  __decorate([
1288
1291
  ServiceCall(HTTPMethods.DELETE, ProxyTypes.ClientSide, favoritePageEndpoints.favorite)
1289
1292
  ], FavoritePagesService.prototype, "deleteFavoritePage", null);
1290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesService, decorators: [{
1293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesService, decorators: [{
1291
1294
  type: Injectable,
1292
1295
  args: [{ providedIn: 'root' }]
1293
1296
  }], ctorParameters: () => [{ type: i1$2.Router }], propDecorators: { filterFavoritePages: [], saveFavoritePage: [], updateFavoritePage: [], deleteFavoritePage: [] } });
@@ -1387,10 +1390,10 @@ class AddEditFavoriteModalComponent {
1387
1390
  cancel() {
1388
1391
  this.dialogRef.close('cancel');
1389
1392
  }
1390
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AddEditFavoriteModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: FavoritePagesService }, { token: i3.MessageService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1391
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AddEditFavoriteModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div *transloco=\"let t; read: 'favoritePages'\">\r\n\t<aril-form [formGroup]=\"favoriteForm\">\r\n\t\t<aril-field [label]=\"t('label')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"label\" [placeholder]=\"t('labelPlaceholder')\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('path')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"url\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-form-submit\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t[formGroup]=\"favoriteForm\"\r\n\t\t\t\t(validEvent)=\"submit()\" />\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i6.FormSubmitButtonComponent, selector: "aril-form-submit:not([click])", inputs: ["formGroup"], outputs: ["validEvent", "inValidEvent"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
1393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddEditFavoriteModalComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: FavoritePagesService }, { token: i3.MessageService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1394
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddEditFavoriteModalComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div *transloco=\"let t; read: 'favoritePages'\">\r\n\t<aril-form [formGroup]=\"favoriteForm\">\r\n\t\t<aril-field [label]=\"t('label')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\" [markAsRequired]=\"true\">\r\n\t\t\t<aril-text formControlName=\"label\" [placeholder]=\"t('labelPlaceholder')\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<aril-field [label]=\"t('path')\" [cols]=\"{ xl: 12, lg: 12, md: 12, sm: 12 }\">\r\n\t\t\t<aril-text formControlName=\"url\"> </aril-text>\r\n\t\t</aril-field>\r\n\r\n\t\t<div class=\"col-12 flex justify-content-end mt-4 gap-2\">\r\n\t\t\t<aril-button\r\n\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t[label]=\"t('cancel')\"\r\n\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t(clickEvent)=\"cancel()\">\r\n\t\t\t</aril-button>\r\n\t\t\t<aril-form-submit\r\n\t\t\t\t[label]=\"t('save')\"\r\n\t\t\t\tcolor=\"success\"\r\n\t\t\t\ticon=\"CHECK\"\r\n\t\t\t\t[formGroup]=\"favoriteForm\"\r\n\t\t\t\t(validEvent)=\"submit()\" />\r\n\t\t</div>\r\n\t</aril-form>\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ARiLFormModule }, { kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i6.FormSubmitButtonComponent, selector: "aril-form-submit:not([click])", inputs: ["formGroup"], outputs: ["validEvent", "inValidEvent"] }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
1392
1395
  }
1393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AddEditFavoriteModalComponent, decorators: [{
1396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddEditFavoriteModalComponent, decorators: [{
1394
1397
  type: Component,
1395
1398
  args: [{ standalone: true, imports: [
1396
1399
  CommonModule,
@@ -1574,10 +1577,10 @@ class FavoritePagesSidebarComponent {
1574
1577
  getFullUrl(url) {
1575
1578
  return this.favoritePagesService.getFullUrl(url);
1576
1579
  }
1577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, deps: [{ token: LayoutService }, { token: FavoritePagesService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i2.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1578
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: FavoritePagesSidebarComponent, isStandalone: true, selector: "app-favorite-pages-sidebar", providers: [ConfirmationService, DialogService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;padding:.5rem .2rem}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i9.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "ngmodule", type: DynamicDialogModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1580
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesSidebarComponent, deps: [{ token: LayoutService }, { token: FavoritePagesService }, { token: i3.ConfirmationService }, { token: i3.MessageService }, { token: i2.DialogService }, { token: i5.TranslocoService }], target: i0.ɵɵFactoryTarget.Component }); }
1581
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FavoritePagesSidebarComponent, isStandalone: true, selector: "app-favorite-pages-sidebar", providers: [ConfirmationService, DialogService], ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-favorite-pages-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'favoritePages'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-heart text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('favoritePages') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"favorite-pages-content\">\r\n\t\t@if (isCurrentPageFavorited()) {\r\n\t\t\t<div class=\"current-favorited-message\">\r\n\t\t\t\t<div class=\"message-content\">\r\n\t\t\t\t\t<i class=\"pi pi-check-circle text-green-500\"></i>\r\n\t\t\t\t\t<span>{{ t('currentPageFavorited') }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"add-section\">\r\n\t\t\t@if (!isCurrentPageFavorited()) {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('addCurrentPage')\"\r\n\t\t\t\t\ticon=\"PLUS\"\r\n\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"addCurrentPageToFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t} @else {\r\n\t\t\t\t<aril-button\r\n\t\t\t\t\t[label]=\"t('removeCurrentPage')\"\r\n\t\t\t\t\ticon=\"TIMES\"\r\n\t\t\t\t\tcolor=\"danger\"\r\n\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t(clickEvent)=\"removeCurrentPageFromFavorites()\">\r\n\t\t\t\t</aril-button>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t\t@if (favoritePages().length > 0) {\r\n\t\t\t<div class=\"favorites-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"favorites-items\">\r\n\t\t\t\t\t\t@for (favorite of favoritePages(); track trackByFavoriteId($index, favorite)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"favorite-item\"\r\n\t\t\t\t\t\t\t\t[class.default-item]=\"favorite.id < 0\"\r\n\t\t\t\t\t\t\t\t(click)=\"navigateToFavorite(favorite)\"\r\n\t\t\t\t\t\t\t\t[pTooltip]=\"getFullUrl(favorite.url)\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-external-link text-primary mr-2\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"title-text\">{{ favorite.label }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faPenToSquare\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--yellow-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"editFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faTrash\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"lg\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--red-500)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"col-2 cursor-pointer\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"deleteFavorite(favorite, $event)\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-heart empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noFavorites') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('startAddingFavorites') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div>\r\n\t\t\t<p-paginator\r\n\t\t\t\t[first]=\"(currentPage() - 1) * pageSize()\"\r\n\t\t\t\t[rows]=\"pageSize()\"\r\n\t\t\t\t[totalRecords]=\"totalItems()\"\r\n\t\t\t\t[showCurrentPageReport]=\"true\"\r\n\t\t\t\t[currentPageReportTemplate]=\"t('paginatorTemplate')\"\r\n\t\t\t\t[showFirstLastIcon]=\"false\"\r\n\t\t\t\t[showPageLinks]=\"false\"\r\n\t\t\t\t(onPageChange)=\"onPageChange($event)\">\r\n\t\t\t</p-paginator>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-favorite-pages-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.favorite-pages-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.current-favorited-message{padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--green-50)}.current-favorited-message .message-content{display:flex;align-items:center;gap:.5rem;color:var(--green-700);font-size:.9rem;font-weight:500}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.favorites-list{flex:1;overflow:hidden}.favorites-items{padding:.5rem}.favorite-item{background:var(--surface-0);border:1px solid var(--surface-border);border-radius:8px;margin-bottom:.5rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;padding:.5rem .2rem}.favorite-item:hover{border-color:var(--primary-200);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.favorite-item:hover .action-btn{opacity:1}.favorite-item:last-child{margin-bottom:0}.favorite-item.default-item{background:var(--blue-50);border-left:3px solid var(--blue-500)}.favorite-item.default-item:hover{background:var(--blue-100);border-color:var(--blue-300)}.favorite-item.default-item .title-text{font-weight:600;color:var(--blue-700)}.item-content{padding:.5rem .75rem}.item-header{display:flex;align-items:center;justify-content:space-between}.item-title{display:flex;align-items:center;flex:1;min-width:0}.item-title .title-text{font-weight:600;color:var(--text-color);font-size:1rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.empty-content{text-align:center;max-width:300px}.empty-content .empty-icon{font-size:3rem;color:var(--text-color-secondary);margin-bottom:1rem;opacity:.5}.empty-content .empty-title{font-size:1.1rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-content .empty-message{font-size:.9rem;color:var(--text-color-secondary);line-height:1.4;margin-bottom:1.5rem}@media (max-width: 768px){.add-section{padding:.75rem}.add-section .button-label{font-size:.8rem}.item-content{padding:.5rem}.item-title .title-text{font-size:.85rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: i9.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "ngmodule", type: DynamicDialogModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] }); }
1579
1582
  }
1580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: FavoritePagesSidebarComponent, decorators: [{
1583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FavoritePagesSidebarComponent, decorators: [{
1581
1584
  type: Component,
1582
1585
  args: [{ standalone: true, selector: 'app-favorite-pages-sidebar', imports: [
1583
1586
  CommonModule,
@@ -1741,13 +1744,13 @@ class SearchService extends RestClient {
1741
1744
  searchForAssets(post) {
1742
1745
  return new Observable();
1743
1746
  }
1744
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1745
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SearchService, providedIn: 'root' }); }
1747
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1748
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchService, providedIn: 'root' }); }
1746
1749
  }
1747
1750
  __decorate([
1748
1751
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'master-data/cache-search', {}, Apps.MNG)
1749
1752
  ], SearchService.prototype, "searchForAssets", null);
1750
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SearchService, decorators: [{
1753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SearchService, decorators: [{
1751
1754
  type: Injectable,
1752
1755
  args: [{ providedIn: 'root' }]
1753
1756
  }], ctorParameters: () => [], propDecorators: { searchForAssets: [] } });
@@ -1801,10 +1804,10 @@ class GeneralSearchComponent {
1801
1804
  onResultClick(item) {
1802
1805
  this.goToDetail(item.value);
1803
1806
  }
1804
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GeneralSearchComponent, deps: [{ token: i1$2.Router }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
1805
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: GeneralSearchComponent, isStandalone: true, selector: "app-general-search", ngImport: i0, template: "<ng-container *transloco=\"let g\">\r\n\t<ng-container *transloco=\"let t; read: 'generalSearch'\">\r\n\t\t<div class=\"global-search\">\r\n\t\t\t<p-autoComplete\r\n\t\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t\toptionLabel=\"title\"\r\n\t\t\t\tminLength=\"3\"\r\n\t\t\t\t[delay]=\"500\"\r\n\t\t\t\t(completeMethod)=\"search($event.query)\"\r\n\t\t\t\t[suggestions]=\"presentableData\"\r\n\t\t\t\t[placeholder]=\"t('placeholder')\"\r\n\t\t\t\t(onSelect)=\"onResultClick($event)\">\r\n\t\t\t\t<ng-template pTemplate=\"empty\">\r\n\t\t\t\t\t<div class=\"px-3\">\r\n\t\t\t\t\t\t{{ t('noResults') }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<div class=\"tabs flex gap-2 overflow-x-auto white-space-nowrap p-2 border-bottom-1 border-gray-200\">\r\n\t\t\t\t\t\t<span (click)=\"setTab('all')\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === 'all'\">\r\n\t\t\t\t\t\t\t{{ t('all') }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t@for (tab of data | keyvalue; track tab) {\r\n\t\t\t\t\t\t\t<span (click)=\"setTab(tab.key)\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === tab.key\">\r\n\t\t\t\t\t\t\t\t{{ data[tab.key].result[0].assetDefinitionName }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template let-result pTemplate=\"item\">\r\n\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t<div class=\"result-icon\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ result.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"result-text\">\r\n\t\t\t\t\t\t\t<div class=\"title mb-2\">{{ result.title }}</div>\r\n\t\t\t\t\t\t\t@if (result.subtitle) {\r\n\t\t\t\t\t\t\t\t<div class=\"subtitle\">{{ result.subtitle }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t@if (result.url) {\r\n\t\t\t\t\t\t\t<div class=\"open-btn ml-auto align-self-center\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t\t\t<div class=\"px-3 py-3 border-top-1 border-gray-200\">\r\n\t\t\t\t\t\t<span>{{ presentableData.length }} {{ t('results') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-autoComplete>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .p-autocomplete,:host ::ng-deep .p-autocomplete-input{width:100%;max-width:100%}:host ::ng-deep .p-overlay{width:100%!important;max-width:100%!important}:host ::ng-deep .p-autocomplete-item.p-focus{background:var(--gray-100)}:host ::ng-deep .tabs span.active{font-weight:700;border-bottom:2px solid var(--gray-900)}.global-search{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3$1.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i6$2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
1807
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GeneralSearchComponent, deps: [{ token: i1$2.Router }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
1808
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: GeneralSearchComponent, isStandalone: true, selector: "app-general-search", ngImport: i0, template: "<ng-container *transloco=\"let g\">\r\n\t<ng-container *transloco=\"let t; read: 'generalSearch'\">\r\n\t\t<div class=\"global-search\">\r\n\t\t\t<p-autoComplete\r\n\t\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t\toptionLabel=\"title\"\r\n\t\t\t\tminLength=\"3\"\r\n\t\t\t\t[delay]=\"500\"\r\n\t\t\t\t(completeMethod)=\"search($event.query)\"\r\n\t\t\t\t[suggestions]=\"presentableData\"\r\n\t\t\t\t[placeholder]=\"t('placeholder')\"\r\n\t\t\t\t(onSelect)=\"onResultClick($event)\">\r\n\t\t\t\t<ng-template pTemplate=\"empty\">\r\n\t\t\t\t\t<div class=\"px-3\">\r\n\t\t\t\t\t\t{{ t('noResults') }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<div class=\"tabs flex gap-2 overflow-x-auto white-space-nowrap p-2 border-bottom-1 border-gray-200\">\r\n\t\t\t\t\t\t<span (click)=\"setTab('all')\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === 'all'\">\r\n\t\t\t\t\t\t\t{{ t('all') }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t@for (tab of data | keyvalue; track tab) {\r\n\t\t\t\t\t\t\t<span (click)=\"setTab(tab.key)\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === tab.key\">\r\n\t\t\t\t\t\t\t\t{{ data[tab.key].result[0].assetDefinitionName }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template let-result pTemplate=\"item\">\r\n\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t<div class=\"result-icon\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ result.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"result-text\">\r\n\t\t\t\t\t\t\t<div class=\"title mb-2\">{{ result.title }}</div>\r\n\t\t\t\t\t\t\t@if (result.subtitle) {\r\n\t\t\t\t\t\t\t\t<div class=\"subtitle\">{{ result.subtitle }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t@if (result.url) {\r\n\t\t\t\t\t\t\t<div class=\"open-btn ml-auto align-self-center\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t\t\t<div class=\"px-3 py-3 border-top-1 border-gray-200\">\r\n\t\t\t\t\t\t<span>{{ presentableData.length }} {{ t('results') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-autoComplete>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .p-autocomplete,:host ::ng-deep .p-autocomplete-input{width:100%;max-width:100%}:host ::ng-deep .p-overlay{width:100%!important;max-width:100%!important}:host ::ng-deep .p-autocomplete-item.p-focus{background:var(--gray-100)}:host ::ng-deep .tabs span.active{font-weight:700;border-bottom:2px solid var(--gray-900)}.global-search{position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3$1.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i6$2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
1806
1809
  }
1807
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: GeneralSearchComponent, decorators: [{
1810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GeneralSearchComponent, decorators: [{
1808
1811
  type: Component,
1809
1812
  args: [{ selector: 'app-general-search', standalone: true, imports: [CommonModule, FormsModule, TranslocoModule, AutoCompleteModule], template: "<ng-container *transloco=\"let g\">\r\n\t<ng-container *transloco=\"let t; read: 'generalSearch'\">\r\n\t\t<div class=\"global-search\">\r\n\t\t\t<p-autoComplete\r\n\t\t\t\t[(ngModel)]=\"query\"\r\n\t\t\t\toptionLabel=\"title\"\r\n\t\t\t\tminLength=\"3\"\r\n\t\t\t\t[delay]=\"500\"\r\n\t\t\t\t(completeMethod)=\"search($event.query)\"\r\n\t\t\t\t[suggestions]=\"presentableData\"\r\n\t\t\t\t[placeholder]=\"t('placeholder')\"\r\n\t\t\t\t(onSelect)=\"onResultClick($event)\">\r\n\t\t\t\t<ng-template pTemplate=\"empty\">\r\n\t\t\t\t\t<div class=\"px-3\">\r\n\t\t\t\t\t\t{{ t('noResults') }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"header\">\r\n\t\t\t\t\t<div class=\"tabs flex gap-2 overflow-x-auto white-space-nowrap p-2 border-bottom-1 border-gray-200\">\r\n\t\t\t\t\t\t<span (click)=\"setTab('all')\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === 'all'\">\r\n\t\t\t\t\t\t\t{{ t('all') }}\r\n\t\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t\t@for (tab of data | keyvalue; track tab) {\r\n\t\t\t\t\t\t\t<span (click)=\"setTab(tab.key)\" class=\"cursor-pointer py-1 px-2\" [class.active]=\"activeTab === tab.key\">\r\n\t\t\t\t\t\t\t\t{{ data[tab.key].result[0].assetDefinitionName }}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template let-result pTemplate=\"item\">\r\n\t\t\t\t\t<div class=\"flex items-center gap-2\">\r\n\t\t\t\t\t\t<div class=\"result-icon\">\r\n\t\t\t\t\t\t\t<i class=\"pi {{ result.icon }}\"></i>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"result-text\">\r\n\t\t\t\t\t\t\t<div class=\"title mb-2\">{{ result.title }}</div>\r\n\t\t\t\t\t\t\t@if (result.subtitle) {\r\n\t\t\t\t\t\t\t\t<div class=\"subtitle\">{{ result.subtitle }}</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t@if (result.url) {\r\n\t\t\t\t\t\t\t<div class=\"open-btn ml-auto align-self-center\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi pi-chevron-right\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t\t<ng-template pTemplate=\"footer\">\r\n\t\t\t\t\t<div class=\"px-3 py-3 border-top-1 border-gray-200\">\r\n\t\t\t\t\t\t<span>{{ presentableData.length }} {{ t('results') }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</p-autoComplete>\r\n\t\t</div>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [":host ::ng-deep .p-autocomplete,:host ::ng-deep .p-autocomplete-input{width:100%;max-width:100%}:host ::ng-deep .p-overlay{width:100%!important;max-width:100%!important}:host ::ng-deep .p-autocomplete-item.p-focus{background:var(--gray-100)}:host ::ng-deep .tabs span.active{font-weight:700;border-bottom:2px solid var(--gray-900)}.global-search{position:relative}\n"] }]
1810
1813
  }], ctorParameters: () => [{ type: i1$2.Router }, { type: SearchService }] });
@@ -1937,10 +1940,10 @@ class AppTopbarComponent {
1937
1940
  return null;
1938
1941
  }
1939
1942
  }
1940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i5.TranslocoService }, { token: i2$1.PubSubService }, { token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
1941
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" (click)=\"onLogoClick()\" />\r\n\t\t@if (environmentBadge) {\r\n\t\t\t<span class=\"env-indicator\" [attr.data-co]=\"environmentBadge.code\">{{ environmentBadge.label }}</span>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\r\n", styles: [".layout-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:.5rem;padding:0 1rem;box-shadow:0 1px 2px #00000013}@media (max-width: 768px){.layout-topbar{padding:0 .5rem;gap:.25rem}}.topbar-start{display:flex}.topbar-logo{height:36px;width:auto;cursor:pointer}@media (max-width: 768px){.topbar-logo{display:none}}.env-indicator{align-self:center;display:inline-flex;align-items:center;margin-left:.85rem;padding:.6rem 1.6rem;border-radius:999px;color:#fff;font-weight:700;font-size:1.3rem;line-height:1;letter-spacing:.07em;white-space:nowrap;text-transform:uppercase;box-shadow:0 1px 2px #0000002e;text-shadow:0 1px 1px rgba(0,0,0,.18)}.env-indicator[data-co=depsas]{background:#fc5000}.env-indicator[data-co=dedas]{background:#00adba}@media (max-width: 768px){.env-indicator{display:none}}.topbar-search{flex:1;max-width:50rem;margin:0 1rem}@media (max-width: 1024px){.topbar-search{max-width:30rem}}@media (max-width: 768px){.topbar-search{max-width:20rem;margin:0 .5rem}}@media (max-width: 480px){.topbar-search{max-width:15rem;margin:0 .25rem}}.topbar-search .p-input-icon-left{width:100%}.topbar-end{flex-shrink:0}.topbar-menu{display:flex;align-items:center;gap:.5rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.topbar-menu{gap:.25rem}}@media (max-width: 480px){.topbar-menu{gap:.1rem}}.topbar-menu-item{display:flex;align-items:center}@media (max-width: 1024px){.desktop-only{display:none!important}}.mobile-only{display:none!important}@media (max-width: 1024px){.mobile-only{display:flex!important}}.custom-dropdown .p-dropdown{border-radius:50px;padding:.5rem 1rem;border:1px solid #c8c8c8;background-color:#f4f4f4}@media (max-width: 768px){.custom-dropdown .p-dropdown{padding:.4rem .8rem}}@media (max-width: 480px){.custom-dropdown .p-dropdown{padding:.3rem .6rem}}.custom-dropdown .p-dropdown-label{padding:0;line-height:1.5}.custom-dropdown .p-dropdown-trigger{border-radius:50px}.flag-icon{width:18px;height:18px;display:inline-block;vertical-align:middle}@media (max-width: 768px){.flag-icon{width:16px;height:16px}}@media (max-width: 480px){.language-text{display:none}}@media (max-width: 768px){.topbar-menubutton{padding:.4rem!important}}@media (max-width: 480px){.topbar-menubutton{padding:.3rem!important}}@media (max-width: 768px){.topbar-menu-item p-button{min-width:auto}.topbar-menu-item p-button .p-button-icon{margin:0}.topbar-menu-item p-button .p-button-label{font-size:.9rem}}@media (max-width: 480px){.topbar-menu-item p-button .p-button-label{font-size:.8rem}.topbar-menu-item p-divider{display:none}}.notification-icon{cursor:pointer;padding:.2rem;border-radius:50%;transition:background-color .2s}.notification-icon:hover{background-color:var(--surface-hover)}@media (max-width: 480px){.notification-icon{font-size:.9rem;padding:.4rem}}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i7$2.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8$2.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i9$1.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: GeneralSearchComponent, selector: "app-general-search" }] }); }
1943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i5.TranslocoService }, { token: i2$1.PubSubService }, { token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
1944
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"logoPath\" class=\"topbar-logo\" alt=\"logo\" (click)=\"onLogoClick()\" />\r\n\t\t@if (environmentBadge) {\r\n\t\t\t<span class=\"env-indicator\" [attr.data-co]=\"environmentBadge.code\">{{ environmentBadge.label }}</span>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" *transloco=\"let t; read: ''\">\r\n\t\t<span class=\"p-input-icon-left\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<app-general-search></app-general-search>\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-sitemap\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onSiteMapButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-history\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onHistoryButtonClick()\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button\r\n\t\t\t\t\ticon=\"pi pi-heart\"\r\n\t\t\t\t\tseverity=\"secondary\"\r\n\t\t\t\t\t[text]=\"true\"\r\n\t\t\t\t\t[rounded]=\"true\"\r\n\t\t\t\t\t(click)=\"onFavoritePagesButtonClick()\" />\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<i\r\n\t\t\t\t\tclass=\"pi pi-bell notification-icon\"\r\n\t\t\t\t\tpBadge\r\n\t\t\t\t\t[value]=\"unreadCount > 0 ? unreadCount.toString() : '0'\"\r\n\t\t\t\t\t(click)=\"onNotificationsButtonClick()\"></i>\r\n\t\t\t</li>\r\n\t\t\t<li class=\"topbar-menu-item\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[options]=\"languages\"\r\n\t\t\t\t\t[(ngModel)]=\"currentLang\"\r\n\t\t\t\t\t(onChange)=\"onLanguageChange()\"\r\n\t\t\t\t\toptionLabel=\"name\"\r\n\t\t\t\t\toptionValue=\"code\"\r\n\t\t\t\t\t[showClear]=\"false\"\r\n\t\t\t\t\tclass=\"custom-dropdown ml-3\">\r\n\t\t\t\t\t<ng-template pTemplate=\"selectedItem\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"currentFlagPath\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span class=\"language-text\">{{ currentLang | uppercase }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t\t\t\t<img [src]=\"item.flag\" class=\"flag-icon\" alt=\"flag\" />\r\n\t\t\t\t\t\t\t<span>{{ item.name }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<!-- <app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb> -->\r\n", styles: [".layout-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:.5rem;padding:0 1rem;box-shadow:0 1px 2px #00000013}@media (max-width: 768px){.layout-topbar{padding:0 .5rem;gap:.25rem}}.topbar-start{display:flex}.topbar-logo{height:36px;width:auto;cursor:pointer}@media (max-width: 768px){.topbar-logo{display:none}}.env-indicator{align-self:center;display:inline-flex;align-items:center;margin-left:.85rem;padding:.6rem 1.6rem;border-radius:999px;color:#fff;font-weight:700;font-size:1.3rem;line-height:1;letter-spacing:.07em;white-space:nowrap;text-transform:uppercase;box-shadow:0 1px 2px #0000002e;text-shadow:0 1px 1px rgba(0,0,0,.18)}.env-indicator[data-co=depsas]{background:#fc5000}.env-indicator[data-co=dedas]{background:#00adba}@media (max-width: 768px){.env-indicator{display:none}}.topbar-search{flex:1;max-width:50rem;margin:0 1rem}@media (max-width: 1024px){.topbar-search{max-width:30rem}}@media (max-width: 768px){.topbar-search{max-width:20rem;margin:0 .5rem}}@media (max-width: 480px){.topbar-search{max-width:15rem;margin:0 .25rem}}.topbar-search .p-input-icon-left{width:100%}.topbar-end{flex-shrink:0}.topbar-menu{display:flex;align-items:center;gap:.5rem;margin:0;padding:0;list-style:none}@media (max-width: 768px){.topbar-menu{gap:.25rem}}@media (max-width: 480px){.topbar-menu{gap:.1rem}}.topbar-menu-item{display:flex;align-items:center}@media (max-width: 1024px){.desktop-only{display:none!important}}.mobile-only{display:none!important}@media (max-width: 1024px){.mobile-only{display:flex!important}}.custom-dropdown .p-dropdown{border-radius:50px;padding:.5rem 1rem;border:1px solid #c8c8c8;background-color:#f4f4f4}@media (max-width: 768px){.custom-dropdown .p-dropdown{padding:.4rem .8rem}}@media (max-width: 480px){.custom-dropdown .p-dropdown{padding:.3rem .6rem}}.custom-dropdown .p-dropdown-label{padding:0;line-height:1.5}.custom-dropdown .p-dropdown-trigger{border-radius:50px}.flag-icon{width:18px;height:18px;display:inline-block;vertical-align:middle}@media (max-width: 768px){.flag-icon{width:16px;height:16px}}@media (max-width: 480px){.language-text{display:none}}@media (max-width: 768px){.topbar-menubutton{padding:.4rem!important}}@media (max-width: 480px){.topbar-menubutton{padding:.3rem!important}}@media (max-width: 768px){.topbar-menu-item p-button{min-width:auto}.topbar-menu-item p-button .p-button-icon{margin:0}.topbar-menu-item p-button .p-button-label{font-size:.9rem}}@media (max-width: 480px){.topbar-menu-item p-button .p-button-label{font-size:.8rem}.topbar-menu-item p-divider{display:none}}.notification-icon{cursor:pointer;padding:.2rem;border-radius:50%;transition:background-color .2s}.notification-icon:hover{background-color:var(--surface-hover)}@media (max-width: 480px){.notification-icon{font-size:.9rem;padding:.4rem}}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i7$2.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i8$2.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i9$1.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: GeneralSearchComponent, selector: "app-general-search" }] }); }
1942
1945
  }
1943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, decorators: [{
1946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppTopbarComponent, decorators: [{
1944
1947
  type: Component,
1945
1948
  args: [{ standalone: true, selector: 'app-topbar', imports: [
1946
1949
  ButtonModule,
@@ -1991,10 +1994,10 @@ class AppMenuService {
1991
1994
  reset() {
1992
1995
  this.resetSource.next(true);
1993
1996
  }
1994
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1995
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuService, providedIn: 'root' }); }
1997
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1998
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppMenuService, providedIn: 'root' }); }
1996
1999
  }
1997
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppMenuService, decorators: [{
2000
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppMenuService, decorators: [{
1998
2001
  type: Injectable,
1999
2002
  args: [{
2000
2003
  providedIn: 'root'
@@ -2287,10 +2290,10 @@ class ExpandableMenuComponent {
2287
2290
  this.sidebarExpanded = false;
2288
2291
  }
2289
2292
  }
2290
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1$3.TranslateJsonPipe }, { token: AppMenuService }, { token: i1$2.Router }, { token: i1.KeycloakService }, { token: i5.TranslocoService }, { token: LayoutService }, { token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
2291
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
2293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, deps: [{ token: i1$3.TranslateJsonPipe }, { token: AppMenuService }, { token: i1$2.Router }, { token: i1.KeycloakService }, { token: i5.TranslocoService }, { token: LayoutService }, { token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
2294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ExpandableMenuComponent, isStandalone: true, selector: "app-expandable-menu", host: { listeners: { "window:resize": "onResize()" } }, providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
2292
2295
  }
2293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
2296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExpandableMenuComponent, decorators: [{
2294
2297
  type: Component,
2295
2298
  args: [{ standalone: true, selector: 'app-expandable-menu', imports: [RouterLink, NgClass, TooltipModule], providers: [TranslateJsonPipe], template: "<div class=\"new-layout-sidebar\" >\r\n\t<!-- Main sidebar (first level) -->\r\n\t<div class=\"main-sidebar\" style=\"position: relative;\">\r\n\t\t<div class=\"main-sidebar-content\">\r\n\t\t\t<ul class=\"main-menu\">\r\n\t\t\t\t@for(item of getMenuItems(); track item; let i = $index){\r\n\t\t\t\t\t@if(!item.separator){\r\n\t\t\t\t\t\t<li\r\n\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(item) || isHaveSelectedChildItem(item)}\"\r\n\t\t\t\t\t\t(click)=\"selectMainItem(i, item)\"\r\n\t\t\t\t\t\t[pTooltip]=\"(item.label && activeLang() ? item.label[activeLang()!] || '' : '')\"\r\n\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t<div class=\"main-menu-item\">\r\n\t\t\t\t\t\t\t<i [ngClass]=\"item.icon\" class=\"menu-icon\"></i>\r\n\t\t\t\t\t\t\t<!-- <small class=\"menu-label\">{{ item.label && activeLang() ? item.label[activeLang()!] || '' : '' }}</small> -->\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</ul>\r\n\t\t</div>\r\n\t</div>\r\n\t\t @if(selectedMainMenuItem && selectedMainMenuItem.items && selectedMainMenuItem.items.length > 0){\r\n\r\n\t\t\t <div class=\"sidebar-toggle-container\">\r\n\t\t\t\t <button class=\"sidebar-circle-toggle-btn\" (click)=\"toggleSidebar()\">\r\n\t\t\t\t\t <i class=\"pi\" [ngClass]=\"sidebarExpanded ? 'pi-angle-left' : 'pi-angle-right'\"></i>\r\n\t\t\t\t </button>\r\n\t\t\t </div>\r\n\t\t }\r\n\r\n\t<!-- Secondary sidebar (second level) -->\r\n\t<div class=\"secondary-sidebar\" [ngClass]=\"{'expanded': sidebarExpanded}\">\r\n\t\t<div class=\"secondary-content-wrapper\" style=\"position: relative;\">\r\n\t\t\t<!-- Secondary sidebar content -->\r\n\t\t\t<div class=\"secondary-sidebar-content\">\r\n\t\t\t\t@if(selectedMainMenuItem){\r\n\t\t\t\t\t<ul class=\"secondary-menu\">\r\n\t\t\t\t\t\t@for(subItem of selectedMainMenuItem.items; track subItem; let i = $index){\r\n\t\t\t\t\t\t\t\t<!-- Action menu item -->\r\n\t\t\t\t\t\t\t\t@if(subItem.action) {\r\n\t\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"secondary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(subItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(subItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"submenu-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<!-- Regular menu item -->\r\n\t\t\t\t\t\t\t\t<li class=\"secondary-menu-item\" [ngClass]=\"{'active': isActiveRoute(subItem)}\">\r\n\t\t\t\t\t\t\t\t\t<a [routerLink]=\"subItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\tclass=\"secondary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(subItem.label, activeLang(), 'secondary') ? (subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t<i [ngClass]=\"subItem.icon\" class=\"submenu-icon\"></i>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"submenu-label\">{{ subItem.label && activeLang() ? subItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t<!-- Always render submenu if it exists -->\r\n\t\t\t\t\t\t\t\t\t @if(subItem.items && subItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t <ul class=\"tertiary-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t@for(childItem of subItem.items; track childItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t<!-- Action item at tertiary level -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"tertiary-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(childItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(childItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"tertiary-menu-item\" [ngClass]=\"{'active': isActiveRoute(childItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"childItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"tertiary-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(childItem.label, activeLang(), 'tertiary') ? (childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tertiary-label\">{{ childItem.label && activeLang() ? childItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- Always render deeper levels if they exist, also visible by default -->\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t@if(childItem.items && childItem.items.length > 0){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"nested-menu always-open\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@for(nestedItem of childItem.items; track nestedItem; let i = $index){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(nestedItem.action) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li class=\"nested-menu-item\" [ngClass]=\"{'action-loading': isActionLoading(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"nested-menu-link is-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"onActionItemClick(nestedItem, $event)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t@if(isActionLoading(nestedItem)){\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\"><i class=\"pi pi-spin pi-spinner\"></i> {{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-item\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{'active': isActiveRoute(nestedItem)}\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a [routerLink]=\"nestedItem.routerLink\" \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"nested-menu-link\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(nestedItem.label, activeLang(), 'nested') ? (nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '') : ''\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"right\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"nested-label\">{{ nestedItem.label && activeLang() ? nestedItem.label[activeLang()!] || '' : '' }}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t </ul>\r\n\t\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t\r\n</div>\r\n" }]
2296
2299
  }], ctorParameters: () => [{ type: i1$3.TranslateJsonPipe }, { type: AppMenuService }, { type: i1$2.Router }, { type: i1.KeycloakService }, { type: i5.TranslocoService }, { type: LayoutService }, { type: i7$3.HttpClient }], propDecorators: { onResize: [{
@@ -2545,10 +2548,10 @@ class StaticSidebarComponent {
2545
2548
  }
2546
2549
  return filtered;
2547
2550
  }
2548
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: StaticSidebarComponent, deps: [{ token: AppMenuService }, { token: i1$2.Router }, { token: LayoutService }, { token: i1$3.TranslateJsonPipe }, { token: i5.TranslocoService }, { token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
2549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: StaticSidebarComponent, isStandalone: true, selector: "app-static-sidebar", providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track node.key) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track node.key) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track child.key) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:calc(55px + var(--env-banner-h, 0px));z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i10$1.InputText, selector: "[pInputText]", inputs: ["variant"] }] }); }
2551
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticSidebarComponent, deps: [{ token: AppMenuService }, { token: i1$2.Router }, { token: LayoutService }, { token: i1$3.TranslateJsonPipe }, { token: i5.TranslocoService }, { token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
2552
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: StaticSidebarComponent, isStandalone: true, selector: "app-static-sidebar", providers: [TranslateJsonPipe], ngImport: i0, template: "<div class=\"static-sidebar\" [class.collapsed]=\"isCollapsed\">\r\n\t<div class=\"static-sidebar-content\">\r\n\t\t@if (!isCollapsed) {\r\n\t\t\t<div class=\"search-container\" *transloco=\"let t; read: ''\">\r\n\t\t\t\t<div class=\"search-wrapper\">\r\n\t\t\t\t\t<i class=\"pi pi-search search-icon\"></i>\r\n\t\t\t\t\t<input\r\n\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\tpInputText\r\n\t\t\t\t\t\tvariant=\"filled\"\r\n\t\t\t\t\t\t[placeholder]=\"t('search')\"\r\n\t\t\t\t\t\t[(ngModel)]=\"searchTerm\"\r\n\t\t\t\t\t\t(ngModelChange)=\"onSearchChange()\"\r\n\t\t\t\t\t\tclass=\"search-static-sidebar\" />\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: 'calc(100vh - 130px)' }\">\r\n\t\t\t\t<div class=\"tree-container\">\r\n\t\t\t\t\t@for (node of filteredNodes(); track node.key) {\r\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: node, level: 0 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</p-scrollPanel>\r\n\t\t} @else {\r\n\t\t\t<!-- Collapsed mode - only icons -->\r\n\t\t\t<div class=\"collapsed-container\">\r\n\t\t\t\t@for (node of topLevelNodes; track node.key) {\r\n\t\t\t\t\t@if (node.action && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item is-action\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t} @else if (node.routerLink && (!node.children || node.children.length === 0)) {\r\n\t\t\t\t\t\t<a\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"collapsed-item\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"getLocalText(node.label)\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t\t\t[class.active]=\"isTopLevelNodeActive(node)\"\r\n\t\t\t\t\t\t\t(click)=\"onCollapsedItemClick(node)\">\r\n\t\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t<i class=\"collapsed-icon pi pi-circle\"></i>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<!-- Recursive Tree Node Template -->\r\n\t<ng-template #treeNodeTemplate let-node let-level=\"level\">\r\n\t\t<div class=\"tree-node\" [ngClass]=\"'level-' + level\">\r\n\t\t\t@if (node.action) {\r\n\t\t\t\t<!-- Action item: HTTP POST on click, then navigate -->\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item is-action\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.action-loading]=\"node.actionLoading\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onActionItemClick(node, $event)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.actionLoading) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon pi pi-spin pi-spinner\"></i>\r\n\t\t\t\t\t\t} @else if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t} @else if (node.routerLink) {\r\n\t\t\t\t<a\r\n\t\t\t\t\t[routerLink]=\"node.routerLink\"\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"onMenuItemClick()\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</a>\r\n\t\t\t} @else {\r\n\t\t\t\t<div\r\n\t\t\t\t\tclass=\"node-item\"\r\n\t\t\t\t\t[class.has-children]=\"node.children && node.children.length > 0\"\r\n\t\t\t\t\t[class.is-page]=\"node.routerLink\"\r\n\t\t\t\t\t[class.active]=\"isChildNodeActive(node)\"\r\n\t\t\t\t\t[pTooltip]=\"!isMobile() && isTextTruncated(node.label, activeLang(), level) ? getLocalText(node.label) : ''\"\r\n\t\t\t\t\ttooltipPosition=\"right\"\r\n\t\t\t\t\t(click)=\"toggleNode(node, level)\">\r\n\t\t\t\t\t<div class=\"node-content\">\r\n\t\t\t\t\t\t@if (node.children && node.children.length > 0) {\r\n\t\t\t\t\t\t\t<div class=\"toggle-btn\" (click)=\"$event.stopPropagation(); toggleNode(node, level)\">\r\n\t\t\t\t\t\t\t\t<i class=\"pi\" [class.pi-chevron-right]=\"!node.expanded\" [class.pi-chevron-down]=\"node.expanded\"></i>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t@if (node.icon) {\r\n\t\t\t\t\t\t\t<i class=\"node-icon\" [class]=\"node.icon\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<span class=\"node-label\">{{ getLocalText(node.label) }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\r\n\t\t\t<!-- Recursive Children -->\r\n\t\t\t@if (node.children && node.expanded) {\r\n\t\t\t\t<div class=\"children-container\" [attr.data-level]=\"level\">\r\n\t\t\t\t\t@for (child of node.children; track child.key) {\r\n\t\t\t\t\t\t<ng-container\r\n\t\t\t\t\t\t\t*ngTemplateOutlet=\"treeNodeTemplate; context: { $implicit: child, level: level + 1 }\"></ng-container>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</ng-template>\r\n</div>\r\n", styles: [".search-container{padding:12px 8px;margin:0}.search-wrapper{position:relative;width:100%}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#64748b;font-size:14px;z-index:10;pointer-events:none;transition:color .2s ease}.search-static-sidebar{background:#1e293b!important;border:1px solid rgba(148,163,184,.1)!important;height:36px!important;font-size:13px!important;font-weight:400;color:#cbd5e1!important;padding:0 12px 0 36px!important;border-radius:4px!important;width:100%!important;box-sizing:border-box!important;transition:all .25s ease!important}.search-static-sidebar::placeholder{font-size:12px!important}.search-static-sidebar:hover{background:#0f172ab3!important;border-color:#94a3b826!important}.search-static-sidebar:focus{outline:none!important;border:1px solid rgba(15,23,42,.8)!important;background:#0f172acc!important}.search-wrapper:focus-within .search-icon{color:#cbd5e1}.static-sidebar{width:260px;height:100vh;background:#1e293b;border-right:1px solid #0f172a;display:flex;flex-direction:column;position:fixed;left:0;top:calc(55px + var(--env-banner-h, 0px));z-index:999;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;box-shadow:2px 0 5px #0000000d}.static-sidebar.collapsed{width:64px;box-shadow:none}.static-sidebar .static-sidebar-content{flex:1;background:transparent;overflow:hidden}.static-sidebar .tree-container{padding:5px 0;overflow-x:hidden}.static-sidebar .tree-node{margin-bottom:4px;position:relative}.static-sidebar .tree-node .node-item{display:flex;align-items:center;padding:10px 12px;border-radius:4px;margin:0 5px;cursor:pointer;transition:all .25s ease;text-decoration:none;color:#cbd5e1!important;overflow:visible;position:relative;white-space:nowrap}.static-sidebar .tree-node .node-item:before{content:\"\";position:absolute;width:0;height:100%;top:0;left:0;background-color:var(--primary-color);opacity:.08;transition:width .25s ease-in-out}.static-sidebar .tree-node .node-item:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover:before{width:100%}.static-sidebar .tree-node .node-item:hover .node-label{color:#e8e7e7!important}.static-sidebar .tree-node .node-item:hover .node-icon{color:#e8e7e7!important;transform:translate(2px)}.static-sidebar .tree-node .node-item.is-page:hover{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.is-page:hover:before{width:100%}.static-sidebar .tree-node .node-item.active{background-color:#495465!important;color:#e8e7e7!important;font-weight:500!important;box-shadow:0 2px 5px #0000001a!important}.static-sidebar .tree-node .node-item.active:before{display:none}.static-sidebar .tree-node .node-item.active .node-label,.static-sidebar .tree-node .node-item.active .node-icon,.static-sidebar .tree-node .node-item.active .toggle-btn i{color:#e8e7e7!important}.static-sidebar .tree-node .node-item.active:hover{background-color:var(--primary-color)}.static-sidebar .tree-node .node-item.is-action{cursor:pointer}.static-sidebar .tree-node .node-item.is-action.action-loading{opacity:.7;pointer-events:none}.static-sidebar .tree-node .node-content{display:flex;align-items:center;gap:8px;width:100%;min-width:0;position:relative;z-index:2;padding-left:24px}.static-sidebar .tree-node .toggle-btn{position:absolute;left:0;display:flex;align-items:center;justify-content:center;width:20px;height:16px;border:none;border-radius:3px;color:#cbd5e1;cursor:pointer;transition:all .25s ease;flex-shrink:0;z-index:3}.static-sidebar .tree-node .toggle-btn:hover{transform:scale(1.1)}.static-sidebar .tree-node .toggle-btn i{font-size:.7rem;transition:transform .2s ease}.static-sidebar .tree-node .node-icon{color:#cbd5e1;font-size:16px;flex-shrink:0;transition:transform .25s ease,color .25s ease;position:relative}.static-sidebar .tree-node .node-label{flex:1;font-size:13px;font-weight:500;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .25s ease;position:relative}.static-sidebar .collapsed-container{padding:8px 0;display:flex;flex-direction:column;align-items:center;width:100%}.static-sidebar .collapsed-item{width:100%;display:flex;flex-direction:column;align-items:center;padding:12px 0;cursor:pointer;transition:all .25s ease;text-decoration:none;position:relative;overflow:hidden;margin-bottom:4px;color:#cbd5e1}.static-sidebar .collapsed-item:hover{color:#e8e7e7}.static-sidebar .collapsed-item:hover .collapsed-icon{transform:scale(1.15);color:#e8e7e7}.static-sidebar .collapsed-item:hover:after{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a;opacity:.7}.static-sidebar .collapsed-item.active{background-color:#495465!important}.static-sidebar .collapsed-item.active:before{content:\"\";position:absolute;left:0;top:0;width:3px;height:100%;background-color:#0f172a}.static-sidebar .collapsed-item.active .collapsed-icon{color:#fff!important}.static-sidebar .collapsed-item .collapsed-icon{font-size:22px;color:#cbd5e1;transition:all .2s ease}.static-sidebar .children-container{position:relative}.static-sidebar .children-container:before{content:\"\";position:absolute;left:25px;top:0;bottom:0;width:1px;background-color:#4755694d;z-index:1}.static-sidebar .tree-node{position:relative}.static-sidebar .tree-node.level-0 .node-item{margin-right:20px;width:240px;max-width:240px}.static-sidebar .tree-node.level-0 .node-label{font-size:13px;font-weight:500;color:#cbd5e1}.static-sidebar .tree-node.level-0 .node-icon{font-size:16px}.static-sidebar .tree-node.level-1 .node-item{margin-left:36px;margin-right:20px;padding:8px 12px;width:204px;max-width:204px}.static-sidebar .tree-node.level-1 .node-label{font-size:12px;font-weight:400}.static-sidebar .tree-node.level-1 .node-icon{font-size:15px}.static-sidebar .tree-node.level-2 .node-item{margin-left:52px;margin-right:20px;width:188px;max-width:188px}.static-sidebar .tree-node.level-2 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-2 .node-icon{font-size:14px}.static-sidebar .tree-node.level-2.active .node-item{background-color:#495465!important}.static-sidebar .tree-node.level-2.active .node-item .node-label{color:#e8e7e7!important}.static-sidebar .tree-node.level-3 .node-item{margin-left:68px;margin-right:20px;padding:6px 12px;width:172px;max-width:172px}.static-sidebar .tree-node.level-3 .node-label{font-size:11px;font-weight:400;color:#cbd5e1}.static-sidebar .tree-node.level-3 .node-icon{font-size:13px}:host ::ng-deep .p-scrollpanel .p-scrollpanel-wrapper{border:none}:host ::ng-deep .p-scrollpanel .p-scrollpanel-content{padding-right:5px}:host ::ng-deep .p-scrollpanel-bar-y{background:#1e293b;width:4px;border-radius:4px}:host ::ng-deep .p-scrollpanel-bar-y:hover{background:#1e293b}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i10$1.InputText, selector: "[pInputText]", inputs: ["variant"] }] }); }
2550
2553
  }
2551
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: StaticSidebarComponent, decorators: [{
2554
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StaticSidebarComponent, decorators: [{
2552
2555
  type: Component,
2553
2556
  args: [{ standalone: true, selector: 'app-static-sidebar', imports: [
2554
2557
  RouterLink,
@@ -2573,8 +2576,11 @@ class NotificationsService extends RestClient {
2573
2576
  markAsReadNotification(pluginId) {
2574
2577
  return new Observable();
2575
2578
  }
2576
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2577
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
2579
+ markAllAsReadNotification(post) {
2580
+ return new Observable();
2581
+ }
2582
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2583
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
2578
2584
  }
2579
2585
  __decorate([
2580
2586
  ServiceCall(HTTPMethods.POST, ProxyTypes.ClientSide, 'audits/search')
@@ -2582,10 +2588,13 @@ __decorate([
2582
2588
  __decorate([
2583
2589
  ServiceCall(HTTPMethods.PUTBYDYNAMICPATH, ProxyTypes.ClientSide, 'audits/$/read')
2584
2590
  ], NotificationsService.prototype, "markAsReadNotification", null);
2585
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsService, decorators: [{
2591
+ __decorate([
2592
+ ServiceCall(HTTPMethods.PUTBYPARAMS, ProxyTypes.ClientSide, 'audits/read-all', { success: 'notifications.markedAllAsRead' })
2593
+ ], NotificationsService.prototype, "markAllAsReadNotification", null);
2594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsService, decorators: [{
2586
2595
  type: Injectable,
2587
2596
  args: [{ providedIn: 'root' }]
2588
- }], ctorParameters: () => [], propDecorators: { getNotifications: [], markAsReadNotification: [] } });
2597
+ }], ctorParameters: () => [], propDecorators: { getNotifications: [], markAsReadNotification: [], markAllAsReadNotification: [] } });
2589
2598
 
2590
2599
  class NotificationsSidebarComponent {
2591
2600
  get getUserPhones() {
@@ -2601,14 +2610,25 @@ class NotificationsSidebarComponent {
2601
2610
  get getUserMail() {
2602
2611
  return this.keycloak.getKeycloakInstance().profile?.email;
2603
2612
  }
2613
+ get unreadCount() {
2614
+ return this.layoutService.getUnreadNotificationCount();
2615
+ }
2616
+ get loading() {
2617
+ return !!this.notificationsService.states.getNotifications?.waitingForResponse;
2618
+ }
2604
2619
  constructor(layoutService, notificationsService, translocoService, router, keycloak) {
2605
2620
  this.layoutService = layoutService;
2606
2621
  this.notificationsService = notificationsService;
2607
2622
  this.translocoService = translocoService;
2608
2623
  this.router = router;
2609
2624
  this.keycloak = keycloak;
2625
+ this.pageSize = 10;
2610
2626
  this.notifications = signal([]);
2611
- this.selectedNotification = null;
2627
+ this.totalRecords = signal(0);
2628
+ this.onlyUnread = signal(true);
2629
+ this.pageNumber = signal(1);
2630
+ this.remainingCount = computed(() => Math.max(this.totalRecords() - this.notifications().length, 0));
2631
+ this.menuItems = [];
2612
2632
  this.ActivityTypesEnum = ActivityTypesEnum;
2613
2633
  this.DetailNotificationTypeEnum = DetailNotificationTypeEnum;
2614
2634
  this.regularIcons = regularIcons;
@@ -2616,45 +2636,74 @@ class NotificationsSidebarComponent {
2616
2636
  this.oneMonthAgo = new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000);
2617
2637
  this.subjects = {
2618
2638
  markAsRead: new Subject(),
2639
+ markAllAsRead: new Subject(),
2619
2640
  loadNotifications: new Subject()
2620
2641
  };
2621
- this.markAsReadService = toSignal(this.subjects.markAsRead.pipe(switchMap((id) => this.notificationsService.markAsReadNotification(id))));
2642
+ this.markAsReadService = toSignal(this.subjects.markAsRead.pipe(mergeMap((id) => this.notificationsService.markAsReadNotification(id).pipe(map$1((result) => ({ result, id }))))));
2643
+ this.markAllAsReadService = toSignal(this.subjects.markAllAsRead.pipe(switchMap(() => this.notificationsService.markAllAsReadNotification({
2644
+ toList: [this.getUserMail, ...this.getUserPhones],
2645
+ endDate: new Date().dateToLong('time') || 0
2646
+ }))));
2622
2647
  this.loadNotificationsService = toSignal(this.subjects.loadNotifications.pipe(switchMap(() => this.notificationsService.getNotifications({
2623
2648
  pager: {
2624
- pageSize: 10,
2625
- pageNumber: 1
2649
+ pageSize: this.pageSize,
2650
+ pageNumber: this.pageNumber()
2626
2651
  },
2627
2652
  startDate: this.oneMonthAgo.dateToLong('time') || 0,
2628
2653
  endDate: new Date().dateToLong('time') || 0,
2629
- read: false,
2630
- toList: [this.getUserMail, ...this.getUserPhones],
2654
+ ...(this.onlyUnread() ? { read: false } : {}),
2655
+ toList: [this.getUserMail, ...this.getUserPhones]
2631
2656
  }))));
2632
2657
  this.initializeEffects();
2633
2658
  }
2634
2659
  ngOnInit() {
2635
- this.loadNotifications();
2636
- }
2637
- loadNotifications() {
2638
2660
  this.subjects.loadNotifications.next();
2639
2661
  }
2640
2662
  initializeEffects() {
2641
2663
  effect(() => {
2642
2664
  const service = this.loadNotificationsService();
2643
2665
  if (service?.response) {
2644
- this.notifications.set(service.response.result);
2645
- // Update unread count in layoutService
2646
- this.layoutService.setUnreadNotificationCount(service?.response.resultInfo.totalItem || 0);
2666
+ const result = service.response.result || [];
2667
+ const isFirstPage = untracked(this.pageNumber) === 1;
2668
+ this.notifications.update((current) => isFirstPage ? result : [...current, ...result.filter((item) => !current.some((existing) => existing.id === item.id))]);
2669
+ this.totalRecords.set(service.response.resultInfo.totalItem || 0);
2670
+ if (untracked(this.onlyUnread)) {
2671
+ this.layoutService.setUnreadNotificationCount(service.response.resultInfo.totalItem || 0);
2672
+ }
2673
+ }
2674
+ }, { allowSignalWrites: true });
2675
+ effect(() => {
2676
+ const marked = this.markAsReadService();
2677
+ if (marked?.result?.response) {
2678
+ this.applyMarkedAsRead(marked.id);
2647
2679
  }
2648
2680
  }, { allowSignalWrites: true });
2649
2681
  effect(() => {
2650
- const service = this.markAsReadService();
2682
+ const service = this.markAllAsReadService();
2651
2683
  if (service?.response) {
2652
- this.loadNotifications();
2653
- if (this.selectedNotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
2654
- this.router.navigate([`mng/todo-tasks/detail/${this.selectedNotification?.referenceId}`]);
2655
- }
2684
+ this.applyAllMarkedAsRead();
2656
2685
  }
2657
- });
2686
+ }, { allowSignalWrites: true });
2687
+ }
2688
+ applyMarkedAsRead(id) {
2689
+ if (untracked(this.onlyUnread)) {
2690
+ this.notifications.update((items) => items.filter((item) => item.id !== id));
2691
+ this.totalRecords.update((total) => Math.max(total - 1, 0));
2692
+ }
2693
+ else {
2694
+ this.notifications.update((items) => items.map((item) => (item.id === id ? { ...item, read: true } : item)));
2695
+ }
2696
+ this.layoutService.setUnreadNotificationCount(Math.max(this.layoutService.getUnreadNotificationCount() - 1, 0));
2697
+ }
2698
+ applyAllMarkedAsRead() {
2699
+ if (untracked(this.onlyUnread)) {
2700
+ this.notifications.set([]);
2701
+ this.totalRecords.set(0);
2702
+ }
2703
+ else {
2704
+ this.notifications.update((items) => items.map((item) => (item.read ? item : { ...item, read: true })));
2705
+ }
2706
+ this.layoutService.setUnreadNotificationCount(0);
2658
2707
  }
2659
2708
  get visible() {
2660
2709
  return this.layoutService.state.notificationsSidebarVisible;
@@ -2662,24 +2711,82 @@ class NotificationsSidebarComponent {
2662
2711
  set visible(value) {
2663
2712
  this.layoutService.state.notificationsSidebarVisible = value;
2664
2713
  }
2714
+ onOnlyUnreadChange(value) {
2715
+ this.onlyUnread.set(value);
2716
+ this.pageNumber.set(1);
2717
+ this.notifications.set([]);
2718
+ this.subjects.loadNotifications.next();
2719
+ }
2720
+ onSidebarShow() {
2721
+ this.pageNumber.set(1);
2722
+ this.subjects.loadNotifications.next();
2723
+ }
2724
+ showMore() {
2725
+ this.pageNumber.set(Math.floor(this.notifications().length / this.pageSize) + 1);
2726
+ this.subjects.loadNotifications.next();
2727
+ }
2728
+ toggleMenu(event, menu) {
2729
+ this.menuItems = [
2730
+ ...(this.unreadCount > 0 ?
2731
+ [
2732
+ {
2733
+ label: this.translocoService.translate('notifications.markAllAsRead'),
2734
+ icon: 'pi pi-check-circle',
2735
+ command: () => this.subjects.markAllAsRead.next()
2736
+ }
2737
+ ]
2738
+ : []),
2739
+ {
2740
+ label: this.translocoService.translate('notifications.allNotificationsPage'),
2741
+ icon: 'pi pi-external-link',
2742
+ command: () => this.navigateToAllNotifications()
2743
+ }
2744
+ ];
2745
+ menu.toggle(event);
2746
+ }
2665
2747
  markNotificationAsRead(notification) {
2666
- this.selectedNotification = notification;
2667
- this.subjects.markAsRead.next(notification.id);
2668
- this.visible = false;
2669
- if (notification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
2670
- this.router.navigate([`mng/todo-tasks/detail/${notification?.referenceId}`]);
2748
+ if (!notification.read) {
2749
+ this.subjects.markAsRead.next(notification.id);
2671
2750
  }
2672
- else if (notification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {
2673
- this.router.navigate([`mng/bulk-operations/${notification?.referenceId}`]);
2751
+ }
2752
+ openNotification(notification) {
2753
+ const isTodo = notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM;
2754
+ const isBatch = notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB;
2755
+ if (!isTodo && !isBatch) {
2756
+ return;
2674
2757
  }
2758
+ this.markNotificationAsRead(notification);
2759
+ this.visible = false;
2760
+ const route = isTodo ? `mng/todo-tasks/detail/${notification.referenceId}` : `mng/bulk-operations/${notification.referenceId}`;
2761
+ this.router.navigate([route]);
2675
2762
  }
2676
- markNotificationAsReadOnDotIcon(notification) {
2677
- if (!notification.read) {
2678
- this.subjects.markAsRead.next(notification.id);
2763
+ isNavigable(notification) {
2764
+ return (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||
2765
+ notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB);
2766
+ }
2767
+ getNotificationIcon(notification) {
2768
+ if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
2769
+ return solidIcons.faListCheck;
2770
+ }
2771
+ if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {
2772
+ return solidIcons.faGear;
2679
2773
  }
2774
+ if (notification.type === ActivityTypesEnum.SMS) {
2775
+ return regularIcons.faMessage;
2776
+ }
2777
+ return notification.read ? regularIcons.faEnvelopeOpen : regularIcons.faEnvelope;
2680
2778
  }
2681
- trackByNotificationId(index, notification) {
2682
- return notification.id;
2779
+ getNotificationIconClass(notification) {
2780
+ if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {
2781
+ return 'todo';
2782
+ }
2783
+ if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {
2784
+ return 'batch';
2785
+ }
2786
+ if (notification.type === ActivityTypesEnum.SMS) {
2787
+ return 'sms';
2788
+ }
2789
+ return notification.read ? 'email-read' : 'email-unread';
2683
2790
  }
2684
2791
  getNotificationTitle(notification) {
2685
2792
  return notification.templateTitle || notification.templateCode || '';
@@ -2730,24 +2837,23 @@ class NotificationsSidebarComponent {
2730
2837
  this.router.navigate(['mng/control-management/sms-email-audit']);
2731
2838
  this.visible = false;
2732
2839
  }
2733
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: LayoutService }, { token: NotificationsService }, { token: i5.TranslocoService }, { token: i1$2.Router }, { token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
2734
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ScrollPanelModule }, { kind: "component", type: i7$1.ScrollPanel, selector: "p-scrollPanel", inputs: ["style", "styleClass", "step"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: PaginatorModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
2840
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsSidebarComponent, deps: [{ token: LayoutService }, { token: NotificationsService }, { token: i5.TranslocoService }, { token: i1$2.Router }, { token: i1.KeycloakService }], target: i0.ɵɵFactoryTarget.Component }); }
2841
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NotificationsSidebarComponent, isStandalone: true, selector: "app-notifications-sidebar", ngImport: i0, template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SidebarModule }, { kind: "component", type: i6$1.Sidebar, selector: "p-sidebar", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i10$2.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i8.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "component", type: SwitchComponent, selector: "aril-switch[ngModel], aril-switch[formControl], aril-switch[formControlName]", inputs: ["tabindex"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i5.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i10.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: SafePipe, name: "safe" }] }); }
2735
2842
  }
2736
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
2843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotificationsSidebarComponent, decorators: [{
2737
2844
  type: Component,
2738
2845
  args: [{ standalone: true, selector: 'app-notifications-sidebar', imports: [
2739
2846
  CommonModule,
2847
+ FormsModule,
2740
2848
  SidebarModule,
2741
- ScrollPanelModule,
2742
- ConfirmDialogModule,
2743
- PaginatorModule,
2849
+ MenuModule,
2744
2850
  ButtonComponent,
2851
+ SwitchComponent,
2745
2852
  TranslocoModule,
2746
2853
  TooltipModule,
2747
- BadgeModule,
2748
2854
  FontAwesomeModule,
2749
2855
  SafePipe
2750
- ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center\">\r\n\t\t\t\t<i class=\"pi pi-bell text-primary text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<p-scrollPanel [style]=\"{ width: '100%', height: '100%' }\">\r\n\t\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t\t@for (notification of notifications(); track trackByNotificationId($index, notification)) {\r\n\t\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t\t(click)=\"\r\n\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM ||\r\n\t\t\t\t\t\t\t\t\t\tnotification?.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB\r\n\t\t\t\t\t\t\t\t\t) ?\r\n\t\t\t\t\t\t\t\t\t\tmarkNotificationAsRead(notification)\r\n\t\t\t\t\t\t\t\t\t:\tnull\r\n\t\t\t\t\t\t\t\t\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-content\">\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-title\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.SMS) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon sms-icon\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faMessage\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon unread\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelope\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"notification-icon email-icon read\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<fa-icon [icon]=\"regularIcons.faEnvelopeOpen\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t<p class=\"title-text ml-2\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"notification-date\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsReadOnDotIcon(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t<div class=\"item-meta\"></div>\r\n\t\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"item-content-preview\">\r\n\t\t\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"html-preview line-clamp-3\"></div>\r\n\t\t\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-content\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{{ getNotificationContent(notification) }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-scrollPanel>\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<div class=\"flex justify-content-center p-2 border-top-1 surface-border\">\r\n\t\t\t<aril-button\r\n\t\t\t\t[label]=\"t('allShow')\"\r\n\t\t\t\ticon=\"EXTERNAL_LINK\"\r\n\t\t\t\tcolor=\"primary\"\r\n\t\t\t\tsize=\"md\"\r\n\t\t\t\t(clickEvent)=\"navigateToAllNotifications()\">\r\n\t\t\t</aril-button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<p-confirmDialog></p-confirmDialog>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-0)}.add-section{display:flex;align-items:center;gap:.5rem;padding:1rem;border-bottom:1px solid var(--surface-border);background:var(--surface-0)}.notifications-list{flex:1;overflow:hidden}.notifications-items{padding:0}.notification-item{background:transparent;border-bottom:1px solid var(--surface-border);cursor:pointer;transition:background-color .2s ease;position:relative}.notification-item:hover{background:var(--surface-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread-item{background:var(--surface-50)}.notification-item.unread-item:hover{background:var(--surface-100)}.notification-item.unread-item .title-text{font-weight:500}.item-content{padding:1.125rem 1rem}.item-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.625rem;gap:1rem}.item-title{display:flex;align-items:center;flex:1;min-width:0;gap:.4em}.item-title .notification-icon{width:1.75rem;height:1.75rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.item-title .notification-icon fa-icon{font-size:.875rem;transition:all .2s ease}.item-title .notification-icon.email-icon.unread{background-color:#3b82f6;color:#fff;box-shadow:0 1px 4px #00000026}.item-title .notification-icon.email-icon.unread fa-icon{color:#fff}.item-title .notification-icon.email-icon.read{background:var(--surface-200);color:var(--text-color-secondary)}.item-title .notification-icon.email-icon.read fa-icon{color:var(--text-color-secondary)}.item-title .notification-icon.sms-icon{background:linear-gradient(135deg,var(--green-500),var(--green-600));color:#fff;box-shadow:0 2px 8px #22c55e40}.item-title .notification-icon.sms-icon fa-icon{color:#fff}.item-title .title-text{font-weight:500;line-height:1.5;font-size:.975rem;margin:0}.notification-date{font-size:.8rem;color:var(--text-color-secondary);font-weight:500;white-space:nowrap;background:var(--surface-100);padding:.2rem .4rem;border-radius:.25rem}.item-content-preview{margin-top:.625rem;color:var(--text-color-secondary);padding-left:1.5rem;border-left:2px solid var(--surface-200)}.item-content-preview .text-content{font-size:.875rem;line-height:1.5;margin:0;font-style:italic}.item-content-preview .html-preview{font-size:.875rem;line-height:1.5;max-height:75px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;word-break:break-word;white-space:normal;font-style:italic}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}.unread-dot{color:#3b82f6;font-size:.625rem;cursor:pointer;transition:opacity .2s ease;opacity:.8}.unread-dot:hover{opacity:1}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
2856
+ ], template: "<p-sidebar\r\n\t[(visible)]=\"visible\"\r\n\tposition=\"right\"\r\n\t[transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\"\r\n\tstyleClass=\"layout-notifications-sidebar w-full sm:w-30rem\"\r\n\t(onShow)=\"onSidebarShow()\"\r\n\t*transloco=\"let t; read: 'notifications'\">\r\n\t<ng-template pTemplate=\"header\">\r\n\t\t<div class=\"flex align-items-center justify-content-between w-full\">\r\n\t\t\t<div class=\"flex align-items-center gap-2\">\r\n\t\t\t\t<i class=\"pi pi-bell text-xl\"></i>\r\n\t\t\t\t<span class=\"font-bold text-lg\">{{ t('title') }}</span>\r\n\t\t\t\t@if (unreadCount > 0) {\r\n\t\t\t\t\t<span class=\"unread-count-chip\">{{ unreadCount }}</span>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex align-items-center gap-2 header-actions\">\r\n\t\t\t\t<span class=\"only-unread-label\">{{ t('onlyUnread') }}</span>\r\n\t\t\t\t<aril-switch [ngModel]=\"onlyUnread()\" (ngModelChange)=\"onOnlyUnreadChange($event)\"></aril-switch>\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v header-menu-icon\" (click)=\"toggleMenu($event, headerMenu)\"></i>\r\n\t\t\t\t<p-menu #headerMenu [popup]=\"true\" [model]=\"menuItems\" appendTo=\"body\"></p-menu>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n\r\n\t<div class=\"notifications-content\">\r\n\t\t@if (notifications().length > 0) {\r\n\t\t\t<div class=\"notifications-list\">\r\n\t\t\t\t<div class=\"notifications-items\">\r\n\t\t\t\t\t@for (notification of notifications(); track notification.id) {\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\tclass=\"notification-item\"\r\n\t\t\t\t\t\t\t[class.unread-item]=\"!notification.read\"\r\n\t\t\t\t\t\t\t[class.navigable]=\"isNavigable(notification)\"\r\n\t\t\t\t\t\t\t(click)=\"openNotification(notification)\">\r\n\t\t\t\t\t\t\t<div class=\"notification-icon\" [ngClass]=\"getNotificationIconClass(notification)\">\r\n\t\t\t\t\t\t\t\t<fa-icon [icon]=\"getNotificationIcon(notification)\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"item-body\">\r\n\t\t\t\t\t\t\t\t<div class=\"item-header\">\r\n\t\t\t\t\t\t\t\t\t<p class=\"item-title\">{{ getNotificationTitle(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t<span class=\"item-time\">{{ formatNotificationDate(notification.sendingDate) }}</span>\r\n\t\t\t\t\t\t\t\t\t@if (!notification.read) {\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"item-actions\">\r\n\t\t\t\t\t\t\t\t\t\t\t<fa-icon\r\n\t\t\t\t\t\t\t\t\t\t\t\t[icon]=\"solidIcons.faCircle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"unread-dot\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t</fa-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"mark-read-action\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"t('markAsRead')\"\r\n\t\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"left\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t(click)=\"markNotificationAsRead(notification); $event.stopPropagation()\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"pi pi-check\"></i>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t@if (getNotificationContent(notification)) {\r\n\t\t\t\t\t\t\t\t\t@if (notification.type === ActivityTypesEnum.EMAIL) {\r\n\t\t\t\t\t\t\t\t\t\t<div [innerHTML]=\"notification.content | safe: 'html'\" class=\"item-preview html-preview\"></div>\r\n\t\t\t\t\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t\t\t\t\t<p class=\"item-preview\">{{ getNotificationContent(notification) }}</p>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (notification.detailNotificationType === DetailNotificationTypeEnum.TODO_ITEM) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToTaskDetail') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t} @else if (notification.detailNotificationType === DetailNotificationTypeEnum.BATCH_JOB) {\r\n\t\t\t\t\t\t\t\t\t<span class=\"nav-chip\">{{ t('goToBulkOperations') }} <i class=\"pi pi-arrow-right\"></i></span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (remainingCount() > 0) {\r\n\t\t\t\t\t\t<div class=\"show-more\">\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\t[label]=\"t('showMore', { count: remainingCount() })\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\t[outlined]=\"true\"\r\n\t\t\t\t\t\t\t\t[loading]=\"loading\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"showMore()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t} @else if (!loading) {\r\n\t\t\t<div class=\"empty-state\">\r\n\t\t\t\t<div class=\"empty-content\">\r\n\t\t\t\t\t<i class=\"pi pi-bell empty-icon\"></i>\r\n\t\t\t\t\t<h3 class=\"empty-title\">{{ t('noNotifications') }}</h3>\r\n\t\t\t\t\t<p class=\"empty-message\">{{ t('noNotificationsDescription') }}</p>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n</p-sidebar>\r\n", styles: [":host ::ng-deep .layout-notifications-sidebar .p-sidebar-content{padding:0;background:var(--surface-ground)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header{background:var(--primary-color);color:var(--primary-color-text);padding:1rem 1.5rem}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header span{font-size:1.1rem;font-weight:600}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close{color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover{background:#ffffff26;color:var(--primary-color-text)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch{transform:scale(.8)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch .p-inputswitch-slider{background:#ffffff4d}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider{background:var(--green-500)}:host ::ng-deep .layout-notifications-sidebar .header-actions .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider{background:var(--green-600)}:host ::ng-deep .layout-notifications-sidebar .header-actions .only-unread-label{font-size:.78rem;font-weight:500}:host ::ng-deep .item-preview.html-preview *{font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;font-style:inherit!important;color:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-align:left!important;margin:0!important;padding:0!important;border:none!important;background:transparent!important;display:inline!important}:host ::ng-deep .item-preview.html-preview p:after,:host ::ng-deep .item-preview.html-preview div:after,:host ::ng-deep .item-preview.html-preview li:after{content:\" \"}:host ::ng-deep .item-preview.html-preview img,:host ::ng-deep .item-preview.html-preview table,:host ::ng-deep .item-preview.html-preview hr,:host ::ng-deep .item-preview.html-preview br{display:none!important}.notifications-content{display:flex;flex-direction:column;height:100%;background:var(--surface-ground)}.unread-count-chip{background:#ffffff40;border-radius:999px;font-size:.72rem!important;font-weight:600!important;padding:.1rem .55rem}.header-menu-icon{cursor:pointer;font-size:1.1rem;padding:.25rem;color:var(--primary-color-text);border-radius:6px;transition:background-color .15s ease}.header-menu-icon:hover{background:#ffffff26}.notifications-list{flex:1;overflow-y:auto}.notifications-items{display:flex;flex-direction:column;gap:.625rem;padding:.75rem}.notification-item{display:flex;gap:.75rem;padding:.875rem 1rem .875rem calc(1rem + 4px);background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;transition:background-color .2s ease,border-color .2s ease}.notification-item:hover{background:var(--surface-hover)}.notification-item:hover .unread-dot{display:none}.notification-item:hover .mark-read-action{display:flex}.notification-item.navigable{cursor:pointer}.notification-item.unread-item{border-left-width:5px;border-left-color:var(--primary-color);padding-left:1rem}.notification-item.unread-item .item-title{font-weight:600;color:var(--text-color)}.notification-icon{width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.notification-icon fa-icon{font-size:.9rem}.notification-icon.todo{background:var(--purple-100);color:var(--purple-600)}.notification-icon.batch{background:var(--orange-100);color:var(--orange-600)}.notification-icon.sms{background:var(--green-100);color:var(--green-600)}.notification-icon.email-unread{background:var(--blue-100);color:var(--blue-600)}.notification-icon.email-read{background:var(--surface-200);color:var(--text-color-secondary)}.item-body{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;min-height:1.5rem}.item-title{flex:1;min-width:0;margin:0;font-size:.875rem;font-weight:500;color:var(--text-color-secondary);line-height:1.4;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.item-time{font-size:.72rem;color:var(--text-color-secondary);white-space:nowrap}.item-actions{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;flex-shrink:0}.unread-dot{color:var(--primary-color);font-size:.5rem;cursor:pointer;opacity:.85}.unread-dot:hover{opacity:1}.mark-read-action{display:none;width:1.5rem;height:1.5rem;border-radius:6px;border:1px solid var(--surface-border);background:var(--surface-card);color:var(--text-color-secondary);align-items:center;justify-content:center;cursor:pointer;padding:0}.mark-read-action:hover{color:var(--primary-color);border-color:var(--primary-color)}.mark-read-action i{font-size:.7rem}.item-preview{margin:0;font-size:.8rem;color:var(--text-color-secondary);line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;word-break:break-word;white-space:normal}.nav-chip{display:inline-flex;align-items:center;gap:.3rem;margin-top:.4rem;font-size:.75rem;font-weight:600;color:var(--primary-color)}.nav-chip i{font-size:.65rem}.notification-item.navigable:hover .nav-chip{text-decoration:underline}.show-more{display:flex;justify-content:center;padding:.25rem 0 .5rem}.empty-state{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.empty-state .empty-content{text-align:center}.empty-state .empty-content .empty-icon{font-size:4rem;color:var(--text-color-secondary);opacity:.3;margin-bottom:1rem}.empty-state .empty-content .empty-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:.5rem}.empty-state .empty-content .empty-message{color:var(--text-color-secondary);margin:0}@media (max-width: 768px){.layout-notifications-sidebar ::ng-deep .p-sidebar{width:100%!important}}\n"] }]
2751
2857
  }], ctorParameters: () => [{ type: LayoutService }, { type: NotificationsService }, { type: i5.TranslocoService }, { type: i1$2.Router }, { type: i1.KeycloakService }] });
2752
2858
 
2753
2859
  class AppLayoutComponent {
@@ -2848,10 +2954,10 @@ class AppLayoutComponent {
2848
2954
  this.menuOutsideClickListener();
2849
2955
  }
2850
2956
  }
2851
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, deps: [{ token: AppMenuService }, { token: LayoutService }, { token: i0.Renderer2 }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
2852
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", viewQueries: [{ propertyName: "expandableMenuComponent", first: true, predicate: ExpandableMenuComponent, descendants: true }, { propertyName: "staticSidebarComponent", first: true, predicate: StaticSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopbarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t<app-environment-banner />\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i5$1.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i7$4.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8$3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppTopbarComponent, selector: "app-topbar" }, { kind: "component", type: EnvironmentBannerComponent, selector: "app-environment-banner" }, { kind: "component", type: AppProfileSidebarComponent, selector: "app-profilemenu" }, { kind: "component", type: HistorySidebarComponent, selector: "app-history-sidebar" }, { kind: "component", type: SiteMapSidebarComponent, selector: "app-site-map-sidebar" }, { kind: "component", type: FavoritePagesSidebarComponent, selector: "app-favorite-pages-sidebar" }, { kind: "component", type: ExpandableMenuComponent, selector: "app-expandable-menu" }, { kind: "component", type: StaticSidebarComponent, selector: "app-static-sidebar" }, { kind: "component", type: NotificationsSidebarComponent, selector: "app-notifications-sidebar" }] }); }
2957
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLayoutComponent, deps: [{ token: AppMenuService }, { token: LayoutService }, { token: i0.Renderer2 }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
2958
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppLayoutComponent, isStandalone: true, selector: "app-layout", viewQueries: [{ propertyName: "expandableMenuComponent", first: true, predicate: ExpandableMenuComponent, descendants: true }, { propertyName: "staticSidebarComponent", first: true, predicate: StaticSidebarComponent, descendants: true }, { propertyName: "appTopbar", first: true, predicate: AppTopbarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-container\" [ngClass]=\"containerClass\">\r\n\t<app-environment-banner />\r\n\t@if (layoutService.shouldShowStaticSidebar()) {\r\n\t\t<app-static-sidebar />\r\n\t} @else if (layoutService.shouldShowExpandableMenu()) {\r\n\t\t<app-expandable-menu />\r\n\t}\r\n\t<div class=\"layout-content-wrapper\">\r\n\t\t<app-topbar />\r\n\t\t<div class=\"layout-content\">\r\n\t\t\t<router-outlet />\r\n\t\t</div>\r\n\t</div>\r\n\t<app-profilemenu />\r\n\t<app-history-sidebar />\r\n\t<app-site-map-sidebar />\r\n\t<app-favorite-pages-sidebar />\r\n\t<app-notifications-sidebar />\r\n\t<!--<app-config></app-config>-->\r\n\t<div class=\"layout-mask\" (click)=\"hideMenu()\"></div>\r\n</div>\r\n\r\n<p-toast key=\"toast-root\" />\r\n<p-dialog key=\"dialog-root\" />\r\n<p-messages key=\"messages-root\" />\r\n<p-confirmPopup key=\"confirmPopup-root\" />\r\n<p-confirmDialog key=\"confirmDialog-root\" />\r\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i5$1.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i7$4.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8$3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppTopbarComponent, selector: "app-topbar" }, { kind: "component", type: EnvironmentBannerComponent, selector: "app-environment-banner" }, { kind: "component", type: AppProfileSidebarComponent, selector: "app-profilemenu" }, { kind: "component", type: HistorySidebarComponent, selector: "app-history-sidebar" }, { kind: "component", type: SiteMapSidebarComponent, selector: "app-site-map-sidebar" }, { kind: "component", type: FavoritePagesSidebarComponent, selector: "app-favorite-pages-sidebar" }, { kind: "component", type: ExpandableMenuComponent, selector: "app-expandable-menu" }, { kind: "component", type: StaticSidebarComponent, selector: "app-static-sidebar" }, { kind: "component", type: NotificationsSidebarComponent, selector: "app-notifications-sidebar" }] }); }
2853
2959
  }
2854
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppLayoutComponent, decorators: [{
2960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppLayoutComponent, decorators: [{
2855
2961
  type: Component,
2856
2962
  args: [{ standalone: true, selector: 'app-layout', imports: [
2857
2963
  NgClass,
@@ -2892,10 +2998,10 @@ class BreadcrumbService {
2892
2998
  getValue(key) {
2893
2999
  return this.keyValues()[key];
2894
3000
  }
2895
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2896
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, providedIn: 'root' }); }
3001
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3002
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbService, providedIn: 'root' }); }
2897
3003
  }
2898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, decorators: [{
3004
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BreadcrumbService, decorators: [{
2899
3005
  type: Injectable,
2900
3006
  args: [{ providedIn: 'root' }]
2901
3007
  }] });
@@ -2986,10 +3092,10 @@ class AppBreadcrumbComponent {
2986
3092
  this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
2987
3093
  }
2988
3094
  }
2989
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1$2.Router }, { token: BreadcrumbService }, { token: i2$1.PubSubService }], target: i0.ɵɵFactoryTarget.Component }); }
2990
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i4$1.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
3095
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1$2.Router }, { token: BreadcrumbService }, { token: i2$1.PubSubService }], target: i0.ɵɵFactoryTarget.Component }); }
3096
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i4$1.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
2991
3097
  }
2992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
3098
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
2993
3099
  type: Component,
2994
3100
  args: [{ standalone: true, selector: 'app-breadcrumb', imports: [RouterLink, BreadcrumbModule, NgClass], template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class='text-500'>{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n" }]
2995
3101
  }], ctorParameters: () => [{ type: i1$2.Router }, { type: BreadcrumbService }, { type: i2$1.PubSubService }] });
@@ -3006,8 +3112,8 @@ class MFELayoutComponent {
3006
3112
  return true;
3007
3113
  })), { initialValue: true });
3008
3114
  }
3009
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MFELayoutComponent, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3010
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: MFELayoutComponent, isStandalone: true, selector: "mfe-layout", ngImport: i0, template: `
3115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MFELayoutComponent, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MFELayoutComponent, isStandalone: true, selector: "mfe-layout", ngImport: i0, template: `
3011
3117
  <app-breadcrumb class="topbar-breadcrumb"></app-breadcrumb>
3012
3118
  @if (!loading()) {
3013
3119
  <router-outlet />
@@ -3020,7 +3126,7 @@ class MFELayoutComponent {
3020
3126
  <p-confirmDialog key="confirmDialog-root"></p-confirmDialog>
3021
3127
  `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i8$1.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i5$1.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i7$4.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i8$3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: AppBreadcrumbComponent, selector: "app-breadcrumb" }] }); }
3022
3128
  }
3023
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MFELayoutComponent, decorators: [{
3129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MFELayoutComponent, decorators: [{
3024
3130
  type: Component,
3025
3131
  args: [{
3026
3132
  standalone: true,
@@ -3091,10 +3197,10 @@ class SelectionGroupService {
3091
3197
  isLoading(groupName) {
3092
3198
  return this.loading.get(groupName) ?? false;
3093
3199
  }
3094
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, deps: [{ token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
3095
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, providedIn: 'root' }); }
3200
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionGroupService, deps: [{ token: i7$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
3201
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionGroupService, providedIn: 'root' }); }
3096
3202
  }
3097
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, decorators: [{
3203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionGroupService, decorators: [{
3098
3204
  type: Injectable,
3099
3205
  args: [{
3100
3206
  providedIn: 'root'