aril 0.0.40 → 0.0.41

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 (313) hide show
  1. package/README.md +48 -48
  2. package/esm2022/boot/index.mjs +1 -1
  3. package/esm2022/boot/mfe/index.mjs +1 -1
  4. package/esm2022/boot/mfe/src/app.component.mjs +13 -13
  5. package/esm2022/http/lib/interfaces.mjs +1 -1
  6. package/esm2022/http/src/httpClient.mjs +1 -1
  7. package/esm2022/http/src/serviceBase.mjs +3 -4
  8. package/esm2022/http/src/serviceRequest.mjs +15 -20
  9. package/esm2022/http/src/serviceStateMethods.mjs +1 -1
  10. package/esm2022/i18n/index.mjs +1 -1
  11. package/esm2022/i18n/src/folder-name-token.mjs +1 -1
  12. package/esm2022/i18n/src/i18n.module.mjs +1 -1
  13. package/esm2022/i18n/src/loader.mjs +1 -1
  14. package/esm2022/i18n/src/provideI18n.mjs +1 -1
  15. package/esm2022/i18n/src/provideScope.mjs +1 -1
  16. package/esm2022/keycloak/index.mjs +1 -1
  17. package/esm2022/keycloak/src/auth.guard.mjs +1 -1
  18. package/esm2022/public-api.mjs +1 -1
  19. package/esm2022/theme/index.mjs +1 -1
  20. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +3 -3
  21. package/esm2022/theme/layout/app/config/app.config.component.mjs +3 -3
  22. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +3 -3
  23. package/esm2022/theme/layout/app/layout/mfe.layout.component.mjs +21 -21
  24. package/esm2022/theme/layout/app/menu/app.menu.component.mjs +139 -139
  25. package/esm2022/theme/layout/app/sidebar/app.sidebar.component.mjs +1 -1
  26. package/esm2022/theme/layout/index.mjs +1 -1
  27. package/esm2022/theme/layout/service/menuchangeevent.mjs +1 -1
  28. package/esm2022/ui/badge/index.mjs +1 -1
  29. package/esm2022/ui/badge/src/badge.component.mjs +3 -3
  30. package/esm2022/ui/button/index.mjs +1 -1
  31. package/esm2022/ui/button/src/button.component.mjs +7 -3
  32. package/esm2022/ui/button/src/split-button.component.mjs +3 -3
  33. package/esm2022/ui/calendar/index.mjs +1 -1
  34. package/esm2022/ui/checkbox/index.mjs +1 -1
  35. package/esm2022/ui/checkbox/src/check-box.component.mjs +3 -3
  36. package/esm2022/ui/checkbox/src/tri-state-checkbox.component.mjs +3 -3
  37. package/esm2022/ui/dxField/index.mjs +1 -1
  38. package/esm2022/ui/dxField/src/dx-field.component.mjs +3 -3
  39. package/esm2022/ui/field/index.mjs +1 -1
  40. package/esm2022/ui/field/src/field.component.mjs +3 -3
  41. package/esm2022/ui/fileUpload/index.mjs +1 -1
  42. package/esm2022/ui/fileUpload/src/file-upload.component.mjs +3 -3
  43. package/esm2022/ui/form/index.mjs +1 -1
  44. package/esm2022/ui/form/src/form-submit-button.component.mjs +3 -3
  45. package/esm2022/ui/form/src/form.component.mjs +1 -1
  46. package/esm2022/ui/index.mjs +1 -1
  47. package/esm2022/ui/lib/index.mjs +1 -1
  48. package/esm2022/ui/lib/src/form/form-error-message.component.mjs +9 -9
  49. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +1 -1
  50. package/esm2022/ui/lib/src/form/form-field-builder.mjs +1 -1
  51. package/esm2022/ui/lib/src/form/form-validation.mjs +1 -1
  52. package/esm2022/ui/lib/src/grid/flex-grid.directive.mjs +1 -1
  53. package/esm2022/ui/lib/src/input/baseInput.mjs +1 -1
  54. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +1 -1
  55. package/esm2022/ui/lib/src/input/dx-input-error-message.pipe.mjs +1 -1
  56. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +1 -1
  57. package/esm2022/ui/lib/src/input/input-error-message.pipe.mjs +1 -1
  58. package/esm2022/ui/lib/src/input/input-transforms.mjs +1 -1
  59. package/esm2022/ui/lib/src/input/value-accessor.directive.mjs +1 -1
  60. package/esm2022/ui/mask/index.mjs +1 -1
  61. package/esm2022/ui/mask/src/mask.component.mjs +3 -3
  62. package/esm2022/ui/number/index.mjs +1 -1
  63. package/esm2022/ui/number/src/number.component.mjs +3 -3
  64. package/esm2022/ui/overlayPanel/index.mjs +1 -1
  65. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +3 -3
  66. package/esm2022/ui/panel/index.mjs +1 -1
  67. package/esm2022/ui/panel/src/panel.component.mjs +3 -3
  68. package/esm2022/ui/password/index.mjs +1 -1
  69. package/esm2022/ui/password/src/password.component.mjs +3 -3
  70. package/esm2022/ui/radioButton/index.mjs +1 -1
  71. package/esm2022/ui/radioButton/src/radio-button.component.mjs +3 -3
  72. package/esm2022/ui/selectBox/index.mjs +1 -1
  73. package/esm2022/ui/switch/index.mjs +1 -1
  74. package/esm2022/ui/switch/src/switch.component.mjs +3 -3
  75. package/esm2022/ui/table/index.mjs +1 -1
  76. package/esm2022/ui/table/src/i18n.mjs +1 -1
  77. package/esm2022/ui/table/src/table-column.component.mjs +1 -1
  78. package/esm2022/ui/table/src/table.component.mjs +6 -3
  79. package/esm2022/ui/tagBox/index.mjs +1 -1
  80. package/esm2022/ui/tagBox/src/tag-box.component.mjs +3 -3
  81. package/esm2022/ui/text/index.mjs +1 -1
  82. package/esm2022/ui/text/src/text.component.mjs +3 -3
  83. package/esm2022/ui/textArea/index.mjs +1 -1
  84. package/esm2022/ui/textArea/src/text-area.component.mjs +3 -3
  85. package/esm2022/ui/tree/index.mjs +1 -1
  86. package/esm2022/ui/tree/src/tree.component.mjs +3 -3
  87. package/esm2022/ui/treeTable/index.mjs +1 -1
  88. package/esm2022/ui/treeTable/src/tree-table.component.mjs +3 -3
  89. package/esm2022/ui/value/index.mjs +1 -1
  90. package/esm2022/ui/value/src/value.component.mjs +3 -3
  91. package/esm2022/util/block/index.mjs +1 -1
  92. package/esm2022/util/custom_pages/index.mjs +1 -1
  93. package/esm2022/util/index.mjs +1 -1
  94. package/esm2022/util/init-event/index.mjs +1 -1
  95. package/esm2022/util/init-event/src/init-event.directive.mjs +1 -1
  96. package/esm2022/util/lib/index.mjs +1 -1
  97. package/esm2022/util/lib/src/interfaces.mjs +1 -1
  98. package/esm2022/util/lib/src/module-router.mjs +1 -1
  99. package/esm2022/util/lib/src/types.mjs +1 -1
  100. package/esm2022/util/loaders/index.mjs +1 -1
  101. package/esm2022/util/loaders/script/script.loader.service.mjs +1 -1
  102. package/esm2022/util/loaders/style/style.loader.service.mjs +1 -1
  103. package/esm2022/util/primitive-extensions/index.mjs +1 -1
  104. package/esm2022/util/primitive-extensions/src/boolean.extensions.mjs +1 -1
  105. package/esm2022/util/primitive-extensions/src/date.extensions.mjs +1 -1
  106. package/esm2022/util/primitive-extensions/src/number.extensions.mjs +1 -1
  107. package/esm2022/util/primitive-extensions/src/string.extensions.mjs +1 -1
  108. package/esm2022/util/pub-sub/index.mjs +1 -1
  109. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +1 -1
  110. package/fesm2022/{aril-app.component-c363Er6g.mjs → aril-app.component-dMGRlhy4.mjs} +13 -13
  111. package/fesm2022/aril-app.component-dMGRlhy4.mjs.map +1 -0
  112. package/fesm2022/{aril-boot-mfe-app.component-bXQ4mR78.mjs → aril-boot-mfe-app.component-_P7YKrLM.mjs} +14 -14
  113. package/fesm2022/aril-boot-mfe-app.component-_P7YKrLM.mjs.map +1 -0
  114. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-DzhjEStq.mjs → aril-boot-mfe-aril-boot-mfe-5xVfZEyl.mjs} +2 -2
  115. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-DzhjEStq.mjs.map → aril-boot-mfe-aril-boot-mfe-5xVfZEyl.mjs.map} +1 -1
  116. package/fesm2022/aril-boot-mfe.mjs +1 -1
  117. package/fesm2022/aril-boot.mjs.map +1 -1
  118. package/fesm2022/aril-http.mjs +16 -22
  119. package/fesm2022/aril-http.mjs.map +1 -1
  120. package/fesm2022/aril-i18n.mjs.map +1 -1
  121. package/fesm2022/aril-keycloak.mjs.map +1 -1
  122. package/fesm2022/aril-theme-layout.mjs +164 -164
  123. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  124. package/fesm2022/aril-theme.mjs.map +1 -1
  125. package/fesm2022/aril-ui-badge.mjs +2 -2
  126. package/fesm2022/aril-ui-badge.mjs.map +1 -1
  127. package/fesm2022/aril-ui-button.mjs +8 -4
  128. package/fesm2022/aril-ui-button.mjs.map +1 -1
  129. package/fesm2022/aril-ui-checkbox.mjs +4 -4
  130. package/fesm2022/aril-ui-checkbox.mjs.map +1 -1
  131. package/fesm2022/aril-ui-dxField.mjs +2 -2
  132. package/fesm2022/aril-ui-dxField.mjs.map +1 -1
  133. package/fesm2022/aril-ui-field.mjs +2 -2
  134. package/fesm2022/aril-ui-field.mjs.map +1 -1
  135. package/fesm2022/aril-ui-fileUpload.mjs +2 -2
  136. package/fesm2022/aril-ui-fileUpload.mjs.map +1 -1
  137. package/fesm2022/aril-ui-form.mjs +2 -2
  138. package/fesm2022/aril-ui-form.mjs.map +1 -1
  139. package/fesm2022/aril-ui-lib.mjs +8 -8
  140. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  141. package/fesm2022/aril-ui-mask.mjs +2 -2
  142. package/fesm2022/aril-ui-mask.mjs.map +1 -1
  143. package/fesm2022/aril-ui-number.mjs +2 -2
  144. package/fesm2022/aril-ui-number.mjs.map +1 -1
  145. package/fesm2022/aril-ui-overlayPanel.mjs +2 -2
  146. package/fesm2022/aril-ui-overlayPanel.mjs.map +1 -1
  147. package/fesm2022/aril-ui-panel.mjs +2 -2
  148. package/fesm2022/aril-ui-panel.mjs.map +1 -1
  149. package/fesm2022/aril-ui-password.mjs +2 -2
  150. package/fesm2022/aril-ui-password.mjs.map +1 -1
  151. package/fesm2022/aril-ui-radioButton.mjs +2 -2
  152. package/fesm2022/aril-ui-radioButton.mjs.map +1 -1
  153. package/fesm2022/aril-ui-switch.mjs +2 -2
  154. package/fesm2022/aril-ui-switch.mjs.map +1 -1
  155. package/fesm2022/aril-ui-table.mjs +5 -2
  156. package/fesm2022/aril-ui-table.mjs.map +1 -1
  157. package/fesm2022/aril-ui-tagBox.mjs +2 -2
  158. package/fesm2022/aril-ui-tagBox.mjs.map +1 -1
  159. package/fesm2022/aril-ui-text.mjs +2 -2
  160. package/fesm2022/aril-ui-text.mjs.map +1 -1
  161. package/fesm2022/aril-ui-textArea.mjs +2 -2
  162. package/fesm2022/aril-ui-textArea.mjs.map +1 -1
  163. package/fesm2022/aril-ui-tree.mjs +2 -2
  164. package/fesm2022/aril-ui-tree.mjs.map +1 -1
  165. package/fesm2022/aril-ui-treeTable.mjs +2 -2
  166. package/fesm2022/aril-ui-treeTable.mjs.map +1 -1
  167. package/fesm2022/aril-ui-value.mjs +2 -2
  168. package/fesm2022/aril-ui-value.mjs.map +1 -1
  169. package/fesm2022/aril-ui.mjs.map +1 -1
  170. package/fesm2022/aril-util-init-event.mjs.map +1 -1
  171. package/fesm2022/aril-util-lib.mjs.map +1 -1
  172. package/fesm2022/aril-util-loaders.mjs.map +1 -1
  173. package/fesm2022/aril-util-primitive-extensions.mjs.map +1 -1
  174. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  175. package/fesm2022/aril-util.mjs.map +1 -1
  176. package/fesm2022/aril.mjs +1 -1
  177. package/http/src/serviceRequest.d.ts +1 -1
  178. package/package.json +31 -31
  179. package/styles/ui/ui.common.scss +24 -24
  180. package/theme/index.ts +1 -1
  181. package/theme/layout/app/breadcrumb/app.breadcrumb.component.html +10 -10
  182. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +50 -50
  183. package/theme/layout/app/config/app.config.component.html +142 -142
  184. package/theme/layout/app/config/app.config.component.ts +143 -143
  185. package/theme/layout/app/layout/app.layout.component.html +19 -19
  186. package/theme/layout/app/layout/app.layout.component.ts +170 -170
  187. package/theme/layout/app/layout/mfe.layout.component.ts +49 -49
  188. package/theme/layout/app/menu/app.menu.component.html +9 -9
  189. package/theme/layout/app/menu/app.menu.component.ts +356 -356
  190. package/theme/layout/app/menu/app.sub.menu.component.html +13 -13
  191. package/theme/layout/app/sidebar/app.sidebar.component.ts +44 -44
  192. package/theme/layout/index.ts +3 -3
  193. package/theme/layout/ng-package.json +6 -6
  194. package/theme/layout/service/menuchangeevent.ts +4 -4
  195. package/theme/ng-package.json +6 -6
  196. package/theme/styles/layout/_animation.scss +53 -53
  197. package/theme/styles/layout/_breadcrumb.scss +21 -21
  198. package/theme/styles/layout/_config.scss +42 -42
  199. package/theme/styles/layout/_content.scss +3 -3
  200. package/theme/styles/layout/_fonts.scss +40 -40
  201. package/theme/styles/layout/_layout_dark.scss +5 -5
  202. package/theme/styles/layout/_layout_dim.scss +5 -5
  203. package/theme/styles/layout/_layout_light.scss +5 -5
  204. package/theme/styles/layout/_main.scss +28 -28
  205. package/theme/styles/layout/_profile.scss +10 -10
  206. package/theme/styles/layout/_responsive.scss +111 -111
  207. package/theme/styles/layout/_sidebar_drawer.scss +234 -234
  208. package/theme/styles/layout/_sidebar_horizontal.scss +163 -163
  209. package/theme/styles/layout/_sidebar_reveal.scss +201 -201
  210. package/theme/styles/layout/_sidebar_slim.scss +144 -144
  211. package/theme/styles/layout/_sidebar_slim_plus.scss +162 -162
  212. package/theme/styles/layout/_sidebar_vertical.scss +153 -153
  213. package/theme/styles/layout/_typography.scss +68 -68
  214. package/theme/styles/layout/_utils.scss +24 -24
  215. package/theme/styles/layout/layout.scss +24 -24
  216. package/theme/styles/layout/menutheme/_colorscheme.scss +11 -11
  217. package/theme/styles/layout/menutheme/_menutheme.scss +3 -3
  218. package/theme/styles/layout/menutheme/_primarycolor.scss +16 -16
  219. package/theme/styles/layout/menutheme/_transparent.scss +26 -26
  220. package/theme/styles/layout/preloading.scss +84 -84
  221. package/theme/styles/theme/base/_colors.scss +17 -17
  222. package/theme/styles/theme/base/_common.scss +76 -76
  223. package/theme/styles/theme/base/_components.scss +106 -106
  224. package/theme/styles/theme/base/_mixins.scss +337 -337
  225. package/theme/styles/theme/base/components/button/_button.scss +576 -576
  226. package/theme/styles/theme/base/components/button/_speeddial.scss +96 -96
  227. package/theme/styles/theme/base/components/button/_splitbutton.scss +348 -348
  228. package/theme/styles/theme/base/components/data/_carousel.scss +37 -37
  229. package/theme/styles/theme/base/components/data/_datatable.scss +338 -338
  230. package/theme/styles/theme/base/components/data/_dataview.scss +46 -46
  231. package/theme/styles/theme/base/components/data/_filter.scss +137 -137
  232. package/theme/styles/theme/base/components/data/_orderlist.scss +114 -114
  233. package/theme/styles/theme/base/components/data/_organizationchart.scss +50 -50
  234. package/theme/styles/theme/base/components/data/_paginator.scss +92 -92
  235. package/theme/styles/theme/base/components/data/_picklist.scss +114 -114
  236. package/theme/styles/theme/base/components/data/_timeline.scss +35 -35
  237. package/theme/styles/theme/base/components/data/_tree.scss +150 -150
  238. package/theme/styles/theme/base/components/data/_treetable.scss +255 -255
  239. package/theme/styles/theme/base/components/data/_virtualscroller.scss +28 -28
  240. package/theme/styles/theme/base/components/file/_fileupload.scss +64 -64
  241. package/theme/styles/theme/base/components/input/_autocomplete.scss +136 -136
  242. package/theme/styles/theme/base/components/input/_calendar.scss +267 -267
  243. package/theme/styles/theme/base/components/input/_cascadeselect.scss +135 -135
  244. package/theme/styles/theme/base/components/input/_checkbox.scss +94 -94
  245. package/theme/styles/theme/base/components/input/_chips.scss +65 -65
  246. package/theme/styles/theme/base/components/input/_colorpicker.scss +19 -19
  247. package/theme/styles/theme/base/components/input/_dropdown.scss +151 -151
  248. package/theme/styles/theme/base/components/input/_editor.scss +122 -122
  249. package/theme/styles/theme/base/components/input/_inputgroup.scss +75 -75
  250. package/theme/styles/theme/base/components/input/_inputmask.scss +16 -16
  251. package/theme/styles/theme/base/components/input/_inputnumber.scss +28 -28
  252. package/theme/styles/theme/base/components/input/_inputswitch.scss +60 -60
  253. package/theme/styles/theme/base/components/input/_inputtext.scss +100 -100
  254. package/theme/styles/theme/base/components/input/_listbox.scss +97 -97
  255. package/theme/styles/theme/base/components/input/_multiselect.scss +177 -177
  256. package/theme/styles/theme/base/components/input/_password.scss +52 -52
  257. package/theme/styles/theme/base/components/input/_radiobutton.scss +78 -78
  258. package/theme/styles/theme/base/components/input/_rating.scss +60 -60
  259. package/theme/styles/theme/base/components/input/_selectbutton.scss +50 -50
  260. package/theme/styles/theme/base/components/input/_slider.scss +75 -75
  261. package/theme/styles/theme/base/components/input/_togglebutton.scss +48 -48
  262. package/theme/styles/theme/base/components/input/_treeselect.scss +139 -139
  263. package/theme/styles/theme/base/components/menu/_breadcrumb.scss +42 -42
  264. package/theme/styles/theme/base/components/menu/_contextmenu.scss +39 -39
  265. package/theme/styles/theme/base/components/menu/_dock.scss +95 -95
  266. package/theme/styles/theme/base/components/menu/_megamenu.scss +55 -55
  267. package/theme/styles/theme/base/components/menu/_menu.scss +37 -37
  268. package/theme/styles/theme/base/components/menu/_menubar.scss +140 -140
  269. package/theme/styles/theme/base/components/menu/_panelmenu.scss +153 -153
  270. package/theme/styles/theme/base/components/menu/_slidemenu.scss +59 -59
  271. package/theme/styles/theme/base/components/menu/_steps.scss +56 -56
  272. package/theme/styles/theme/base/components/menu/_tabmenu.scss +73 -73
  273. package/theme/styles/theme/base/components/menu/_tieredmenu.scss +43 -43
  274. package/theme/styles/theme/base/components/messages/_inlinemessage.scss +69 -69
  275. package/theme/styles/theme/base/components/messages/_message.scss +107 -107
  276. package/theme/styles/theme/base/components/messages/_toast.scss +99 -99
  277. package/theme/styles/theme/base/components/misc/_avatar.scss +30 -30
  278. package/theme/styles/theme/base/components/misc/_badge.scss +48 -48
  279. package/theme/styles/theme/base/components/misc/_chip.scss +42 -42
  280. package/theme/styles/theme/base/components/misc/_inplace.scss +16 -16
  281. package/theme/styles/theme/base/components/misc/_progressbar.scss +17 -17
  282. package/theme/styles/theme/base/components/misc/_scrolltop.scss +25 -25
  283. package/theme/styles/theme/base/components/misc/_skeleton.scss +8 -8
  284. package/theme/styles/theme/base/components/misc/_tag.scss +40 -40
  285. package/theme/styles/theme/base/components/misc/_terminal.scss +12 -12
  286. package/theme/styles/theme/base/components/multimedia/_galleria.scss +155 -155
  287. package/theme/styles/theme/base/components/multimedia/_image.scss +49 -49
  288. package/theme/styles/theme/base/components/overlay/_confirmpopup.scss +70 -70
  289. package/theme/styles/theme/base/components/overlay/_dialog.scss +69 -69
  290. package/theme/styles/theme/base/components/overlay/_overlaypanel.scss +62 -62
  291. package/theme/styles/theme/base/components/overlay/_sidebar.scss +27 -27
  292. package/theme/styles/theme/base/components/overlay/_tooltip.scss +33 -33
  293. package/theme/styles/theme/base/components/panel/_accordion.scss +119 -119
  294. package/theme/styles/theme/base/components/panel/_card.scss +30 -30
  295. package/theme/styles/theme/base/components/panel/_divider.scss +31 -31
  296. package/theme/styles/theme/base/components/panel/_fieldset.scss +47 -47
  297. package/theme/styles/theme/base/components/panel/_panel.scss +63 -63
  298. package/theme/styles/theme/base/components/panel/_scrollpanel.scss +6 -6
  299. package/theme/styles/theme/base/components/panel/_splitter.scss +19 -19
  300. package/theme/styles/theme/base/components/panel/_tabview.scss +82 -82
  301. package/theme/styles/theme/base/components/panel/_toolbar.scss +11 -11
  302. package/theme/styles/theme/dark/_extensions.scss +134 -134
  303. package/theme/styles/theme/dark/_variables.scss +918 -918
  304. package/theme/styles/theme/dark/blue/theme.scss +14 -14
  305. package/theme/styles/theme/dark/indigo/theme.scss +14 -14
  306. package/theme/styles/theme/light/_extensions.scss +116 -116
  307. package/theme/styles/theme/light/_variables.scss +911 -911
  308. package/theme/styles/theme/light/blue/theme.scss +14 -14
  309. package/theme/styles/theme/light/indigo/theme.scss +14 -14
  310. package/ui/button/src/button.component.d.ts +1 -0
  311. package/ui/table/src/table.component.d.ts +6 -1
  312. package/fesm2022/aril-app.component-c363Er6g.mjs.map +0 -1
  313. package/fesm2022/aril-boot-mfe-app.component-bXQ4mR78.mjs.map +0 -1
@@ -1,356 +1,356 @@
1
- import { AnimationEvent, animate, state, style, transition, trigger } from '@angular/animations';
2
- import { NgClass } from '@angular/common';
3
- import {
4
- ChangeDetectorRef,
5
- Component,
6
- ElementRef,
7
- HostBinding,
8
- Input,
9
- OnDestroy,
10
- OnInit,
11
- ViewChild,
12
- inject
13
- } from '@angular/core';
14
- import { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
15
-
16
- import { MenuItem } from 'primeng/api';
17
- import { DomHandler } from 'primeng/dom';
18
- import { RippleModule } from 'primeng/ripple';
19
- import { TooltipModule } from 'primeng/tooltip';
20
-
21
- import { Subscription } from 'rxjs';
22
- import { filter } from 'rxjs/operators';
23
-
24
- import { LayoutService } from '../../service/app.layout.service';
25
- import { AppMenuService } from '../../service/app.menu.service';
26
-
27
- @Component({
28
- standalone: true,
29
- selector: '[app-menuitem]',
30
- template: `
31
- <ng-container>
32
- @if (root) {
33
- <div class="layout-menuitem-root-text">
34
- {{ item.label }}
35
- </div>
36
- }
37
- @if (item.items?.length) {
38
- <a
39
- [attr.href]="item.url"
40
- (click)="itemClick($event)"
41
- (mouseenter)="onMouseEnter()"
42
- [attr.target]="item.target"
43
- tabindex="0"
44
- pRipple
45
- [pTooltip]="item.label"
46
- [tooltipDisabled]="!(isSlim && root && !active)">
47
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
48
- <span class="layout-menuitem-text">{{ item.label }}</span>
49
- @if (item.items) {
50
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
51
- }
52
- </a>
53
- } @else {
54
- <a
55
- (click)="itemClick($event)"
56
- (mouseenter)="onMouseEnter()"
57
- [routerLink]="item.routerLink"
58
- routerLinkActive="active-route"
59
- [routerLinkActiveOptions]="
60
- item.routerLinkActiveOptions || {
61
- paths: 'exact',
62
- queryParams: 'ignored',
63
- matrixParams: 'ignored',
64
- fragment: 'ignored'
65
- }
66
- "
67
- [fragment]="item.fragment"
68
- [queryParamsHandling]="item.queryParamsHandling"
69
- [preserveFragment]="item.preserveFragment"
70
- [skipLocationChange]="item.skipLocationChange"
71
- [replaceUrl]="item.replaceUrl"
72
- [state]="item.state"
73
- [queryParams]="item.queryParams"
74
- [attr.target]="item.target"
75
- tabindex="0"
76
- pRipple
77
- [pTooltip]="item.label"
78
- [tooltipDisabled]="!(isSlim && root)">
79
- <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
80
-
81
- <span class="layout-menuitem-text">{{ item.label }}</span>
82
-
83
- @if (item.items) {
84
- <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
85
- }
86
- </a>
87
- }
88
-
89
- @if (item.items) {
90
- <ul #submenu [@children]="submenuAnimation" (@children.done)="onSubmenuAnimated($event)">
91
- @for (child of item.items; track child; let i = $index) {
92
- <li app-menuitem [item]="child" [index]="i" [parentKey]="key"></li>
93
- }
94
- </ul>
95
- }
96
- </ng-container>
97
- `,
98
- imports: [NgClass, RouterLink, RouterLinkActive, TooltipModule, RippleModule],
99
- animations: [
100
- trigger('children', [
101
- state(
102
- 'collapsed',
103
- style({
104
- height: '0'
105
- })
106
- ),
107
- state(
108
- 'expanded',
109
- style({
110
- height: '*'
111
- })
112
- ),
113
- state(
114
- 'hidden',
115
- style({
116
- display: 'none'
117
- })
118
- ),
119
- state(
120
- 'visible',
121
- style({
122
- display: 'block'
123
- })
124
- ),
125
- transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
126
- ])
127
- ]
128
- })
129
- export class AppMenuItemComponent implements OnInit, OnDestroy {
130
- @Input() item!: MenuItem;
131
-
132
- @Input() index!: number;
133
-
134
- @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;
135
-
136
- @Input() parentKey!: string;
137
-
138
- @ViewChild('submenu') submenu!: ElementRef;
139
-
140
- active = false;
141
-
142
- menuSourceSubscription: Subscription;
143
-
144
- menuResetSubscription: Subscription;
145
-
146
- key: string = '';
147
-
148
- constructor(
149
- public layoutService: LayoutService,
150
- private cd: ChangeDetectorRef,
151
- public router: Router,
152
- private menuService: AppMenuService
153
- ) {
154
- this.menuSourceSubscription = this.menuService.menuSource$.subscribe((value) => {
155
- Promise.resolve(null).then(() => {
156
- if (value.routeEvent) {
157
- this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false;
158
- } else {
159
- if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {
160
- this.active = false;
161
- }
162
- }
163
- });
164
- });
165
-
166
- this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
167
- this.active = false;
168
- });
169
-
170
- this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => {
171
- if (this.isSlimPlus || this.isSlim || this.isHorizontal) {
172
- this.active = false;
173
- } else {
174
- if (this.item.routerLink) {
175
- this.updateActiveStateFromRoute();
176
- }
177
- }
178
- });
179
- }
180
-
181
- ngOnInit() {
182
- this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
183
-
184
- if (!(this.isSlimPlus || this.isSlim || this.isHorizontal) && this.item.routerLink) {
185
- this.updateActiveStateFromRoute();
186
- }
187
- }
188
-
189
- ngAfterViewChecked() {
190
- if (
191
- this.root &&
192
- this.active &&
193
- this.layoutService.isDesktop() &&
194
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
195
- ) {
196
- this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);
197
- }
198
- }
199
-
200
- updateActiveStateFromRoute() {
201
- let activeRoute = this.router.isActive(this.item.routerLink[0], {
202
- paths: 'exact',
203
- queryParams: 'ignored',
204
- matrixParams: 'ignored',
205
- fragment: 'ignored'
206
- });
207
-
208
- if (activeRoute) {
209
- this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });
210
- }
211
- }
212
-
213
- onSubmenuAnimated(event: AnimationEvent) {
214
- if (
215
- event.toState === 'visible' &&
216
- this.layoutService.isDesktop() &&
217
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
218
- ) {
219
- const el = <HTMLUListElement>event.element;
220
- const elParent = <HTMLUListElement>el.parentElement;
221
- this.calculatePosition(el, elParent);
222
- }
223
- }
224
-
225
- calculatePosition(overlay: HTMLElement, target: HTMLElement) {
226
- if (overlay) {
227
- const { left, top } = target.getBoundingClientRect();
228
- const [vWidth, vHeight] = [window.innerWidth, window.innerHeight];
229
- const [oWidth, oHeight] = [overlay.offsetWidth, overlay.offsetHeight];
230
- const scrollbarWidth = DomHandler.calculateScrollbarWidth();
231
- // reset
232
- overlay.style.top = '';
233
- overlay.style.left = '';
234
-
235
- if (this.layoutService.isHorizontal()) {
236
- const width = left + oWidth + scrollbarWidth;
237
- overlay.style.left = vWidth < width ? `${left - (width - vWidth)}px` : `${left}px`;
238
- } else if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {
239
- const height = top + oHeight;
240
- overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;
241
- }
242
- }
243
- }
244
-
245
- itemClick(event: Event) {
246
- // avoid processing disabled items
247
- if (this.item.disabled) {
248
- event.preventDefault();
249
- return;
250
- }
251
-
252
- // navigate with hover
253
- if ((this.root && this.isSlim) || this.isHorizontal || this.isSlimPlus) {
254
- this.layoutService.state.menuHoverActive = !this.layoutService.state.menuHoverActive;
255
- }
256
-
257
- // execute command
258
- if (this.item.command) {
259
- this.item.command({ originalEvent: event, item: this.item });
260
- }
261
-
262
- // toggle active state
263
- if (this.item.items) {
264
- this.active = !this.active;
265
-
266
- if (this.root && this.active && (this.isSlim || this.isHorizontal || this.isSlimPlus)) {
267
- this.layoutService.onOverlaySubmenuOpen();
268
- }
269
- } else {
270
- if (this.layoutService.isMobile()) {
271
- this.layoutService.state.staticMenuMobileActive = false;
272
- }
273
-
274
- if (this.isSlim || this.isHorizontal || this.isSlimPlus) {
275
- this.menuService.reset();
276
- this.layoutService.state.menuHoverActive = false;
277
- }
278
- }
279
-
280
- this.menuService.onMenuStateChange({ key: this.key });
281
- }
282
-
283
- onMouseEnter() {
284
- // activate item on hover
285
- if (this.root && (this.isSlim || this.isHorizontal || this.isSlimPlus) && this.layoutService.isDesktop()) {
286
- if (this.layoutService.state.menuHoverActive) {
287
- this.active = true;
288
- this.menuService.onMenuStateChange({ key: this.key });
289
- }
290
- }
291
- }
292
-
293
- get submenuAnimation() {
294
- if (
295
- this.layoutService.isDesktop() &&
296
- (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
297
- ) {
298
- return this.active ? 'visible' : 'hidden';
299
- } else
300
- return (
301
- this.root ? 'expanded'
302
- : this.active ? 'expanded'
303
- : 'collapsed'
304
- );
305
- }
306
-
307
- get isHorizontal() {
308
- return this.layoutService.isHorizontal();
309
- }
310
-
311
- get isSlim() {
312
- return this.layoutService.isSlim();
313
- }
314
-
315
- get isSlimPlus() {
316
- return this.layoutService.isSlimPlus();
317
- }
318
-
319
- @HostBinding('class.active-menuitem')
320
- get activeClass() {
321
- return this.active && !this.root;
322
- }
323
-
324
- ngOnDestroy() {
325
- if (this.menuSourceSubscription) {
326
- this.menuSourceSubscription.unsubscribe();
327
- }
328
-
329
- if (this.menuResetSubscription) {
330
- this.menuResetSubscription.unsubscribe();
331
- }
332
- }
333
- }
334
-
335
- @Component({
336
- standalone: true,
337
- selector: 'app-menu',
338
- imports: [AppMenuItemComponent],
339
- templateUrl: './app.menu.component.html'
340
- })
341
- export class AppMenuComponent {
342
- menuService = inject(AppMenuService);
343
- }
344
- @Component({
345
- standalone: true,
346
- selector: 'app-sub-menu',
347
- imports: [AppMenuItemComponent],
348
- templateUrl: './app.sub.menu.component.html'
349
- })
350
- export class AppSubMenuComponent {
351
- menuService = inject(AppMenuService);
352
-
353
- @HostBinding('id') get id() {
354
- return 'app-sub-menu-' + (<any>globalThis).activeMF;
355
- }
356
- }
1
+ import { AnimationEvent, animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { NgClass } from '@angular/common';
3
+ import {
4
+ ChangeDetectorRef,
5
+ Component,
6
+ ElementRef,
7
+ HostBinding,
8
+ Input,
9
+ OnDestroy,
10
+ OnInit,
11
+ ViewChild,
12
+ inject
13
+ } from '@angular/core';
14
+ import { NavigationEnd, Router, RouterLink, RouterLinkActive } from '@angular/router';
15
+
16
+ import { MenuItem } from 'primeng/api';
17
+ import { DomHandler } from 'primeng/dom';
18
+ import { RippleModule } from 'primeng/ripple';
19
+ import { TooltipModule } from 'primeng/tooltip';
20
+
21
+ import { Subscription } from 'rxjs';
22
+ import { filter } from 'rxjs/operators';
23
+
24
+ import { LayoutService } from '../../service/app.layout.service';
25
+ import { AppMenuService } from '../../service/app.menu.service';
26
+
27
+ @Component({
28
+ standalone: true,
29
+ selector: '[app-menuitem]',
30
+ template: `
31
+ <ng-container>
32
+ @if (root) {
33
+ <div class="layout-menuitem-root-text">
34
+ {{ item.label }}
35
+ </div>
36
+ }
37
+ @if (item.items?.length) {
38
+ <a
39
+ [attr.href]="item.url"
40
+ (click)="itemClick($event)"
41
+ (mouseenter)="onMouseEnter()"
42
+ [attr.target]="item.target"
43
+ tabindex="0"
44
+ pRipple
45
+ [pTooltip]="item.label"
46
+ [tooltipDisabled]="!(isSlim && root && !active)">
47
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
48
+ <span class="layout-menuitem-text">{{ item.label }}</span>
49
+ @if (item.items) {
50
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
51
+ }
52
+ </a>
53
+ } @else {
54
+ <a
55
+ (click)="itemClick($event)"
56
+ (mouseenter)="onMouseEnter()"
57
+ [routerLink]="item.routerLink"
58
+ routerLinkActive="active-route"
59
+ [routerLinkActiveOptions]="
60
+ item.routerLinkActiveOptions || {
61
+ paths: 'exact',
62
+ queryParams: 'ignored',
63
+ matrixParams: 'ignored',
64
+ fragment: 'ignored'
65
+ }
66
+ "
67
+ [fragment]="item.fragment"
68
+ [queryParamsHandling]="item.queryParamsHandling"
69
+ [preserveFragment]="item.preserveFragment"
70
+ [skipLocationChange]="item.skipLocationChange"
71
+ [replaceUrl]="item.replaceUrl"
72
+ [state]="item.state"
73
+ [queryParams]="item.queryParams"
74
+ [attr.target]="item.target"
75
+ tabindex="0"
76
+ pRipple
77
+ [pTooltip]="item.label"
78
+ [tooltipDisabled]="!(isSlim && root)">
79
+ <i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
80
+
81
+ <span class="layout-menuitem-text">{{ item.label }}</span>
82
+
83
+ @if (item.items) {
84
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
85
+ }
86
+ </a>
87
+ }
88
+
89
+ @if (item.items) {
90
+ <ul #submenu [@children]="submenuAnimation" (@children.done)="onSubmenuAnimated($event)">
91
+ @for (child of item.items; track child; let i = $index) {
92
+ <li app-menuitem [item]="child" [index]="i" [parentKey]="key"></li>
93
+ }
94
+ </ul>
95
+ }
96
+ </ng-container>
97
+ `,
98
+ imports: [NgClass, RouterLink, RouterLinkActive, TooltipModule, RippleModule],
99
+ animations: [
100
+ trigger('children', [
101
+ state(
102
+ 'collapsed',
103
+ style({
104
+ height: '0'
105
+ })
106
+ ),
107
+ state(
108
+ 'expanded',
109
+ style({
110
+ height: '*'
111
+ })
112
+ ),
113
+ state(
114
+ 'hidden',
115
+ style({
116
+ display: 'none'
117
+ })
118
+ ),
119
+ state(
120
+ 'visible',
121
+ style({
122
+ display: 'block'
123
+ })
124
+ ),
125
+ transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
126
+ ])
127
+ ]
128
+ })
129
+ export class AppMenuItemComponent implements OnInit, OnDestroy {
130
+ @Input() item!: MenuItem;
131
+
132
+ @Input() index!: number;
133
+
134
+ @Input() @HostBinding('class.layout-root-menuitem') root!: boolean;
135
+
136
+ @Input() parentKey!: string;
137
+
138
+ @ViewChild('submenu') submenu!: ElementRef;
139
+
140
+ active = false;
141
+
142
+ menuSourceSubscription: Subscription;
143
+
144
+ menuResetSubscription: Subscription;
145
+
146
+ key: string = '';
147
+
148
+ constructor(
149
+ public layoutService: LayoutService,
150
+ private cd: ChangeDetectorRef,
151
+ public router: Router,
152
+ private menuService: AppMenuService
153
+ ) {
154
+ this.menuSourceSubscription = this.menuService.menuSource$.subscribe((value) => {
155
+ Promise.resolve(null).then(() => {
156
+ if (value.routeEvent) {
157
+ this.active = value.key === this.key || value.key.startsWith(this.key + '-') ? true : false;
158
+ } else {
159
+ if (value.key !== this.key && !value.key.startsWith(this.key + '-')) {
160
+ this.active = false;
161
+ }
162
+ }
163
+ });
164
+ });
165
+
166
+ this.menuResetSubscription = this.menuService.resetSource$.subscribe(() => {
167
+ this.active = false;
168
+ });
169
+
170
+ this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((params) => {
171
+ if (this.isSlimPlus || this.isSlim || this.isHorizontal) {
172
+ this.active = false;
173
+ } else {
174
+ if (this.item.routerLink) {
175
+ this.updateActiveStateFromRoute();
176
+ }
177
+ }
178
+ });
179
+ }
180
+
181
+ ngOnInit() {
182
+ this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
183
+
184
+ if (!(this.isSlimPlus || this.isSlim || this.isHorizontal) && this.item.routerLink) {
185
+ this.updateActiveStateFromRoute();
186
+ }
187
+ }
188
+
189
+ ngAfterViewChecked() {
190
+ if (
191
+ this.root &&
192
+ this.active &&
193
+ this.layoutService.isDesktop() &&
194
+ (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
195
+ ) {
196
+ this.calculatePosition(this.submenu?.nativeElement, this.submenu?.nativeElement.parentElement);
197
+ }
198
+ }
199
+
200
+ updateActiveStateFromRoute() {
201
+ let activeRoute = this.router.isActive(this.item.routerLink[0], {
202
+ paths: 'exact',
203
+ queryParams: 'ignored',
204
+ matrixParams: 'ignored',
205
+ fragment: 'ignored'
206
+ });
207
+
208
+ if (activeRoute) {
209
+ this.menuService.onMenuStateChange({ key: this.key, routeEvent: true });
210
+ }
211
+ }
212
+
213
+ onSubmenuAnimated(event: AnimationEvent) {
214
+ if (
215
+ event.toState === 'visible' &&
216
+ this.layoutService.isDesktop() &&
217
+ (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
218
+ ) {
219
+ const el = <HTMLUListElement>event.element;
220
+ const elParent = <HTMLUListElement>el.parentElement;
221
+ this.calculatePosition(el, elParent);
222
+ }
223
+ }
224
+
225
+ calculatePosition(overlay: HTMLElement, target: HTMLElement) {
226
+ if (overlay) {
227
+ const { left, top } = target.getBoundingClientRect();
228
+ const [vWidth, vHeight] = [window.innerWidth, window.innerHeight];
229
+ const [oWidth, oHeight] = [overlay.offsetWidth, overlay.offsetHeight];
230
+ const scrollbarWidth = DomHandler.calculateScrollbarWidth();
231
+ // reset
232
+ overlay.style.top = '';
233
+ overlay.style.left = '';
234
+
235
+ if (this.layoutService.isHorizontal()) {
236
+ const width = left + oWidth + scrollbarWidth;
237
+ overlay.style.left = vWidth < width ? `${left - (width - vWidth)}px` : `${left}px`;
238
+ } else if (this.layoutService.isSlim() || this.layoutService.isSlimPlus()) {
239
+ const height = top + oHeight;
240
+ overlay.style.top = vHeight < height ? `${top - (height - vHeight)}px` : `${top}px`;
241
+ }
242
+ }
243
+ }
244
+
245
+ itemClick(event: Event) {
246
+ // avoid processing disabled items
247
+ if (this.item.disabled) {
248
+ event.preventDefault();
249
+ return;
250
+ }
251
+
252
+ // navigate with hover
253
+ if ((this.root && this.isSlim) || this.isHorizontal || this.isSlimPlus) {
254
+ this.layoutService.state.menuHoverActive = !this.layoutService.state.menuHoverActive;
255
+ }
256
+
257
+ // execute command
258
+ if (this.item.command) {
259
+ this.item.command({ originalEvent: event, item: this.item });
260
+ }
261
+
262
+ // toggle active state
263
+ if (this.item.items) {
264
+ this.active = !this.active;
265
+
266
+ if (this.root && this.active && (this.isSlim || this.isHorizontal || this.isSlimPlus)) {
267
+ this.layoutService.onOverlaySubmenuOpen();
268
+ }
269
+ } else {
270
+ if (this.layoutService.isMobile()) {
271
+ this.layoutService.state.staticMenuMobileActive = false;
272
+ }
273
+
274
+ if (this.isSlim || this.isHorizontal || this.isSlimPlus) {
275
+ this.menuService.reset();
276
+ this.layoutService.state.menuHoverActive = false;
277
+ }
278
+ }
279
+
280
+ this.menuService.onMenuStateChange({ key: this.key });
281
+ }
282
+
283
+ onMouseEnter() {
284
+ // activate item on hover
285
+ if (this.root && (this.isSlim || this.isHorizontal || this.isSlimPlus) && this.layoutService.isDesktop()) {
286
+ if (this.layoutService.state.menuHoverActive) {
287
+ this.active = true;
288
+ this.menuService.onMenuStateChange({ key: this.key });
289
+ }
290
+ }
291
+ }
292
+
293
+ get submenuAnimation() {
294
+ if (
295
+ this.layoutService.isDesktop() &&
296
+ (this.layoutService.isHorizontal() || this.layoutService.isSlim() || this.layoutService.isSlimPlus())
297
+ ) {
298
+ return this.active ? 'visible' : 'hidden';
299
+ } else
300
+ return (
301
+ this.root ? 'expanded'
302
+ : this.active ? 'expanded'
303
+ : 'collapsed'
304
+ );
305
+ }
306
+
307
+ get isHorizontal() {
308
+ return this.layoutService.isHorizontal();
309
+ }
310
+
311
+ get isSlim() {
312
+ return this.layoutService.isSlim();
313
+ }
314
+
315
+ get isSlimPlus() {
316
+ return this.layoutService.isSlimPlus();
317
+ }
318
+
319
+ @HostBinding('class.active-menuitem')
320
+ get activeClass() {
321
+ return this.active && !this.root;
322
+ }
323
+
324
+ ngOnDestroy() {
325
+ if (this.menuSourceSubscription) {
326
+ this.menuSourceSubscription.unsubscribe();
327
+ }
328
+
329
+ if (this.menuResetSubscription) {
330
+ this.menuResetSubscription.unsubscribe();
331
+ }
332
+ }
333
+ }
334
+
335
+ @Component({
336
+ standalone: true,
337
+ selector: 'app-menu',
338
+ imports: [AppMenuItemComponent],
339
+ templateUrl: './app.menu.component.html'
340
+ })
341
+ export class AppMenuComponent {
342
+ menuService = inject(AppMenuService);
343
+ }
344
+ @Component({
345
+ standalone: true,
346
+ selector: 'app-sub-menu',
347
+ imports: [AppMenuItemComponent],
348
+ templateUrl: './app.sub.menu.component.html'
349
+ })
350
+ export class AppSubMenuComponent {
351
+ menuService = inject(AppMenuService);
352
+
353
+ @HostBinding('id') get id() {
354
+ return 'app-sub-menu-' + (<any>globalThis).activeMF;
355
+ }
356
+ }