@mediusinc/mng-commons-layout 6.0.0-rc.5 → 6.0.0-rc.6

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 (195) hide show
  1. package/components/pages/error/index.d.ts +1 -3
  2. package/components/pages/not-found/index.d.ts +1 -3
  3. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs +6 -7
  4. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs.map +1 -1
  5. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs +3 -3
  6. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs.map +1 -1
  7. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs +6 -7
  8. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-layout-components.mjs +62 -58
  10. package/fesm2022/mediusinc-mng-commons-layout-components.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-layout.mjs +21 -14
  12. package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
  13. package/package.json +11 -21
  14. package/scss/commons.scss +1 -0
  15. package/scss/layout/_breadcrumb.scss +14 -11
  16. package/scss/layout/_config.scss +75 -7
  17. package/scss/layout/_content.scss +1 -1
  18. package/scss/layout/_main.scss +7 -9
  19. package/scss/layout/_profile.scss +1 -1
  20. package/scss/layout/_responsive.scss +4 -2
  21. package/scss/layout/_sass_variables.scss +1 -0
  22. package/scss/layout/_sidebar_drawer.scss +6 -5
  23. package/scss/layout/_sidebar_horizontal.scss +15 -11
  24. package/scss/layout/_sidebar_reveal.scss +16 -10
  25. package/scss/layout/_sidebar_slim.scss +5 -3
  26. package/scss/layout/_sidebar_slim_plus.scss +5 -2
  27. package/scss/layout/_sidebar_vertical.scss +13 -7
  28. package/scss/layout/_topbar.scss +75 -45
  29. package/scss/layout/_utils.scss +1 -5
  30. package/scss/layout/layout.scss +29 -22
  31. package/scss/layout/mng/{_mng_layout_menu.scss → layout/_mng_layout_menu.scss} +0 -4
  32. package/scss/layout/mng/{_mng_layout_topbar.scss → layout/_mng_layout_topbar.scss} +2 -2
  33. package/scss/layout/mng/theme/_mng_theme_button.scss +63 -0
  34. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_dialog.scss +44 -46
  35. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_toast.scss +4 -4
  36. package/scss/layout/mng/theme/_mng_theme_toggleswitch.scss +3 -0
  37. package/scss/layout/mng/variables/_mng-variables-common.scss +22 -0
  38. package/scss/layout/variables/_common.scss +15 -0
  39. package/scss/layout/variables/_dark.scss +10 -0
  40. package/scss/layout/variables/_light.scss +10 -0
  41. package/version-info.json +3 -3
  42. package/esm2022/components/index.mjs +0 -12
  43. package/esm2022/components/lib/components/breadcrumb.component.mjs +0 -29
  44. package/esm2022/components/lib/components/footer.component.mjs +0 -23
  45. package/esm2022/components/lib/components/main-layout.component.mjs +0 -86
  46. package/esm2022/components/lib/components/menu-item.component.mjs +0 -169
  47. package/esm2022/components/lib/components/menu.component.mjs +0 -36
  48. package/esm2022/components/lib/components/settings.component.mjs +0 -87
  49. package/esm2022/components/lib/components/sidebar.component.mjs +0 -51
  50. package/esm2022/components/lib/components/topbar-user.component.mjs +0 -51
  51. package/esm2022/components/lib/components/topbar.component.mjs +0 -37
  52. package/esm2022/components/lib/components/version.component.mjs +0 -95
  53. package/esm2022/components/mediusinc-mng-commons-layout-components.mjs +0 -5
  54. package/esm2022/components/pages/error/index.mjs +0 -4
  55. package/esm2022/components/pages/error/lib/error.page.component.mjs +0 -20
  56. package/esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs +0 -5
  57. package/esm2022/components/pages/main/index.mjs +0 -3
  58. package/esm2022/components/pages/main/lazy/index.mjs +0 -2
  59. package/esm2022/components/pages/main/lazy/lib/route-builder.mjs +0 -11
  60. package/esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +0 -5
  61. package/esm2022/components/pages/main/lib/main-layout.component.mjs +0 -84
  62. package/esm2022/components/pages/main/lib/route-builder.mjs +0 -12
  63. package/esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs +0 -5
  64. package/esm2022/components/pages/not-found/index.mjs +0 -4
  65. package/esm2022/components/pages/not-found/lib/not-found.page.component.mjs +0 -20
  66. package/esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs +0 -5
  67. package/esm2022/index.mjs +0 -13
  68. package/esm2022/lib/helpers/menu-items.mjs +0 -29
  69. package/esm2022/lib/models/layout-state.model.mjs +0 -2
  70. package/esm2022/lib/models/menu.model.mjs +0 -2
  71. package/esm2022/lib/provide.mjs +0 -25
  72. package/esm2022/lib/services/layout-feature-config.token.mjs +0 -3
  73. package/esm2022/lib/services/layout.service.mjs +0 -167
  74. package/esm2022/lib/services/menu.service.mjs +0 -121
  75. package/esm2022/lib/services/version.service.mjs +0 -45
  76. package/esm2022/mediusinc-mng-commons-layout.mjs +0 -5
  77. package/scss/commons-dark.scss +0 -9
  78. package/scss/commons-light.scss +0 -9
  79. package/scss/layout/_animation.scss +0 -53
  80. package/scss/layout/_fonts.scss +0 -40
  81. package/scss/layout/_layout_dark.scss +0 -12
  82. package/scss/layout/_layout_light.scss +0 -12
  83. package/scss/layout/_typography.scss +0 -67
  84. package/scss/layout/mng/_mng_layout_styles.scss +0 -4
  85. package/scss/layout/preloading.scss +0 -84
  86. package/scss/theme/extensions/_fullcalendar.scss +0 -328
  87. package/scss/theme/theme-base/_colors.scss +0 -17
  88. package/scss/theme/theme-base/_common.scss +0 -76
  89. package/scss/theme/theme-base/_components.scss +0 -110
  90. package/scss/theme/theme-base/_mixins.scss +0 -337
  91. package/scss/theme/theme-base/components/button/_button.scss +0 -576
  92. package/scss/theme/theme-base/components/button/_speeddial.scss +0 -96
  93. package/scss/theme/theme-base/components/button/_splitbutton.scss +0 -348
  94. package/scss/theme/theme-base/components/data/_carousel.scss +0 -37
  95. package/scss/theme/theme-base/components/data/_datatable.scss +0 -338
  96. package/scss/theme/theme-base/components/data/_dataview.scss +0 -46
  97. package/scss/theme/theme-base/components/data/_filter.scss +0 -137
  98. package/scss/theme/theme-base/components/data/_orderlist.scss +0 -114
  99. package/scss/theme/theme-base/components/data/_organizationchart.scss +0 -50
  100. package/scss/theme/theme-base/components/data/_paginator.scss +0 -92
  101. package/scss/theme/theme-base/components/data/_picklist.scss +0 -114
  102. package/scss/theme/theme-base/components/data/_timeline.scss +0 -35
  103. package/scss/theme/theme-base/components/data/_tree.scss +0 -150
  104. package/scss/theme/theme-base/components/data/_treetable.scss +0 -255
  105. package/scss/theme/theme-base/components/data/_virtualscroller.scss +0 -28
  106. package/scss/theme/theme-base/components/file/_fileupload.scss +0 -64
  107. package/scss/theme/theme-base/components/input/_autocomplete.scss +0 -136
  108. package/scss/theme/theme-base/components/input/_calendar.scss +0 -267
  109. package/scss/theme/theme-base/components/input/_cascadeselect.scss +0 -135
  110. package/scss/theme/theme-base/components/input/_checkbox.scss +0 -94
  111. package/scss/theme/theme-base/components/input/_chips.scss +0 -65
  112. package/scss/theme/theme-base/components/input/_colorpicker.scss +0 -19
  113. package/scss/theme/theme-base/components/input/_dropdown.scss +0 -151
  114. package/scss/theme/theme-base/components/input/_editor.scss +0 -122
  115. package/scss/theme/theme-base/components/input/_inputgroup.scss +0 -74
  116. package/scss/theme/theme-base/components/input/_inputmask.scss +0 -16
  117. package/scss/theme/theme-base/components/input/_inputnumber.scss +0 -28
  118. package/scss/theme/theme-base/components/input/_inputswitch.scss +0 -60
  119. package/scss/theme/theme-base/components/input/_inputtext.scss +0 -100
  120. package/scss/theme/theme-base/components/input/_listbox.scss +0 -97
  121. package/scss/theme/theme-base/components/input/_multiselect.scss +0 -177
  122. package/scss/theme/theme-base/components/input/_password.scss +0 -52
  123. package/scss/theme/theme-base/components/input/_radiobutton.scss +0 -78
  124. package/scss/theme/theme-base/components/input/_rating.scss +0 -60
  125. package/scss/theme/theme-base/components/input/_selectbutton.scss +0 -50
  126. package/scss/theme/theme-base/components/input/_slider.scss +0 -75
  127. package/scss/theme/theme-base/components/input/_togglebutton.scss +0 -48
  128. package/scss/theme/theme-base/components/input/_treeselect.scss +0 -139
  129. package/scss/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
  130. package/scss/theme/theme-base/components/menu/_contextmenu.scss +0 -39
  131. package/scss/theme/theme-base/components/menu/_dock.scss +0 -95
  132. package/scss/theme/theme-base/components/menu/_megamenu.scss +0 -55
  133. package/scss/theme/theme-base/components/menu/_menu.scss +0 -37
  134. package/scss/theme/theme-base/components/menu/_menubar.scss +0 -140
  135. package/scss/theme/theme-base/components/menu/_panelmenu.scss +0 -153
  136. package/scss/theme/theme-base/components/menu/_slidemenu.scss +0 -59
  137. package/scss/theme/theme-base/components/menu/_steps.scss +0 -56
  138. package/scss/theme/theme-base/components/menu/_tabmenu.scss +0 -73
  139. package/scss/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
  140. package/scss/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
  141. package/scss/theme/theme-base/components/messages/_message.scss +0 -107
  142. package/scss/theme/theme-base/components/messages/_toast.scss +0 -99
  143. package/scss/theme/theme-base/components/misc/_avatar.scss +0 -30
  144. package/scss/theme/theme-base/components/misc/_badge.scss +0 -48
  145. package/scss/theme/theme-base/components/misc/_blockui.scss +0 -0
  146. package/scss/theme/theme-base/components/misc/_chip.scss +0 -42
  147. package/scss/theme/theme-base/components/misc/_inplace.scss +0 -16
  148. package/scss/theme/theme-base/components/misc/_progressbar.scss +0 -17
  149. package/scss/theme/theme-base/components/misc/_scrolltop.scss +0 -25
  150. package/scss/theme/theme-base/components/misc/_skeleton.scss +0 -8
  151. package/scss/theme/theme-base/components/misc/_tag.scss +0 -40
  152. package/scss/theme/theme-base/components/misc/_terminal.scss +0 -12
  153. package/scss/theme/theme-base/components/multimedia/_galleria.scss +0 -155
  154. package/scss/theme/theme-base/components/multimedia/_image.scss +0 -49
  155. package/scss/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
  156. package/scss/theme/theme-base/components/overlay/_dialog.scss +0 -69
  157. package/scss/theme/theme-base/components/overlay/_overlaypanel.scss +0 -62
  158. package/scss/theme/theme-base/components/overlay/_sidebar.scss +0 -27
  159. package/scss/theme/theme-base/components/overlay/_tooltip.scss +0 -33
  160. package/scss/theme/theme-base/components/panel/_accordion.scss +0 -119
  161. package/scss/theme/theme-base/components/panel/_card.scss +0 -30
  162. package/scss/theme/theme-base/components/panel/_divider.scss +0 -31
  163. package/scss/theme/theme-base/components/panel/_fieldset.scss +0 -47
  164. package/scss/theme/theme-base/components/panel/_panel.scss +0 -63
  165. package/scss/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
  166. package/scss/theme/theme-base/components/panel/_splitter.scss +0 -19
  167. package/scss/theme/theme-base/components/panel/_tabview.scss +0 -82
  168. package/scss/theme/theme-base/components/panel/_toolbar.scss +0 -11
  169. package/scss/theme/theme-base/mng/_mng_mixins.scss +0 -69
  170. package/scss/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
  171. package/scss/theme/theme-base/mng/_mng_theme_button.scss +0 -68
  172. package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +0 -157
  173. package/scss/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
  174. package/scss/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
  175. package/scss/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
  176. package/scss/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
  177. package/scss/theme/theme-base/mng/_mng_theme_image.scss +0 -27
  178. package/scss/theme/theme-base/mng/_mng_theme_input.scss +0 -42
  179. package/scss/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
  180. package/scss/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
  181. package/scss/theme/theme-base/mng/_mng_theme_styles.scss +0 -19
  182. package/scss/theme/theme-base/mng/_mng_theme_table.scss +0 -54
  183. package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +0 -41
  184. package/scss/theme/theme-base/mng/_mng_theme_tabview.scss +0 -14
  185. package/scss/theme/theme-base/mng/_mng_theme_tag.scss +0 -11
  186. package/scss/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
  187. package/scss/theme/theme-base/mng/_mng_variables.scss +0 -15
  188. package/scss/theme/theme-dark/_extensions.scss +0 -109
  189. package/scss/theme/theme-dark/_variables.scss +0 -941
  190. package/scss/theme/theme-dark/blue/theme.scss +0 -14
  191. package/scss/theme/theme-light/_extensions.scss +0 -109
  192. package/scss/theme/theme-light/_variables.scss +0 -937
  193. package/scss/theme/theme-light/blue/theme.scss +0 -14
  194. /package/scss/layout/mng/{_mng_layout_footer.scss → layout/_mng_layout_footer.scss} +0 -0
  195. /package/scss/layout/mng/{_mng_sidebar_vertical.scss → layout/_mng_sidebar_vertical.scss} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/helpers/menu-items.ts","../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/services/menu.service.ts","../../src/lib/services/version.service.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\n/**\n * @internal\n */\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: item.isVisible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string | false;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string | false;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');\n private appLogoDark = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(this.config?.logoNamePathLight ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');\n private appLogoNameDark = signal(this.config?.logoNamePathDark ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n // used for managing the submenu dropdown overlay in slim and slim+ layouts\n public submenuOverlayKey = signal<string | undefined>(undefined);\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement | undefined;\n if (colorScheme === 'dark' && linkElement?.href.includes('light')) {\n linkElement.href = 'theme-dark.css';\n } else if (colorScheme === 'light' && linkElement?.href.includes('dark')) {\n linkElement.href = 'theme-light.css';\n }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen(key: string) {\n if (this.submenuOverlayKey() === key) {\n return;\n }\n\n this.submenuOverlayKey.set(key);\n this.overlayOpen.next(null);\n }\n\n onOverlaySubmenuClose() {\n this.submenuOverlayKey.set(undefined);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private readonly _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects));\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const children = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(children)) {\n const itemsMatches = this.findActiveRouteMatches(children, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(children)) {\n const itemsMatches = this.findActiveRouteMatches(children, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// helpers\nexport * from './lib/helpers/menu-items';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-layout.mjs","sources":["../../src/lib/helpers/menu-items.ts","../../src/lib/services/layout-feature-config.token.ts","../../src/lib/services/layout.service.ts","../../src/lib/services/menu.service.ts","../../src/lib/services/version.service.ts","../../src/lib/provide.ts","../../src/index.ts","../../src/mediusinc-mng-commons-layout.ts"],"sourcesContent":["import {computed, signal} from '@angular/core';\n\nimport {CommonsMenuItem, InternalCommonsMenuItem} from '@mediusinc/mng-commons/core';\n\n/**\n * @internal\n */\nexport function prepareMenuItemsToInternal(menuItems: CommonsMenuItem[], parentKey = ''): InternalCommonsMenuItem[] {\n const newItems = menuItems.map((item, idx) => {\n const itemsProp = signal<InternalCommonsMenuItem[]>([]);\n const lazyChildrenProp = signal(item.lazyChildren ?? false);\n const hasItemsProp = computed(() => itemsProp().length > 0);\n const newItem: InternalCommonsMenuItem = {\n ...item,\n isVisible: item.isVisible,\n key: parentKey ? parentKey + '-' + idx : idx.toString(),\n config: item,\n items: itemsProp,\n lazyChildren: lazyChildrenProp,\n itemsVisibility: signal([]),\n hasItems: hasItemsProp,\n hasItemsOrLazyChildren: computed(() => lazyChildrenProp() || hasItemsProp())\n };\n\n if (Array.isArray(item.items) && item.items.length > 0) {\n newItem.items.set(prepareMenuItemsToInternal(item.items, newItem.key));\n newItem.itemsVisibility.set(newItem.items()?.map(() => signal(true)));\n }\n\n return newItem;\n });\n\n return newItems;\n}\n","import {InjectionToken, Type} from '@angular/core';\n\nimport {MenuItem} from 'primeng/api';\n\nexport type LayoutMenuMode = 'static' | 'overlay' | 'reveal' | 'drawer' | 'slim' | 'slim-plus';\n\nexport type ColorScheme = 'light' | 'dark' | 'auto';\n\n/**\n * Set of configurations for layout customization.\n */\nexport interface LayoutFeatureConfig {\n /**\n * Choose default menu mode.\n */\n menuMode?: LayoutMenuMode;\n /**\n * Sets available menu modes.\n */\n menuModes?: LayoutMenuMode[];\n /**\n * Predefines menu modes (instead of taking them from route data config).\n */\n menuItems?: MenuItem[];\n /**\n * Logo path (usually icon part only).\n */\n logoPath?: string | false;\n /**\n * Logo path for light color mode (usually icon part only).\n */\n logoPathLight?: string;\n /**\n * Logo path for dark color mode (usually icon part only).\n */\n logoPathDark?: string;\n /**\n * Logo path (usually name part only).\n */\n logoNamePath?: string | false;\n /**\n * Logo path for light color mode (usually name part only).\n */\n logoNamePathLight?: string;\n /**\n * Logo path for dark color mode (usually name part only).\n */\n logoNamePathDark?: string;\n /**\n * Default color scheme (defaults to 'auto').\n */\n colorScheme?: ColorScheme;\n /**\n * Enable ripple effect.\n */\n ripple?: boolean;\n /**\n * Disables wrapping layout in notification wrapper.\n */\n disableNotificationWrapper?: boolean;\n /**\n * Set custom components instead of default layout's one. If false provided for component, then it will not be displayed.\n */\n components?: {\n /**\n * Specify custom topbar component or disable (if false).\n */\n topbar?: Type<any> | false;\n /**\n * Specify custom menu component or disable (if false).\n */\n menu?: Type<any> | false;\n /**\n * Specify custom footer component or disable (if false).\n */\n footer?: Type<any> | false;\n /**\n * Specify custom breadcrumb component or disable (if false).\n */\n breadcrumb?: Type<any> | false;\n /**\n * Specify custom topbarUser component or disable (if false).\n */\n topbarUser?: Type<any> | false;\n /**\n * Specify custom version component or disable (if false).\n */\n version?: Type<any> | false;\n /**\n * Specify custom settings component or disable (if false).\n */\n settings?: Type<any> | false;\n };\n}\n\nexport const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken<LayoutFeatureConfig>('COMMONS_LAYOUT_FEATURE_CONFIG');\n","import {DOCUMENT} from '@angular/common';\nimport {Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal} from '@angular/core';\n\nimport {Subject} from 'rxjs';\n\nimport {COMMONS_MODULE_CONFIG_IT, CommonsStorageService} from '@mediusinc/mng-commons/core';\n\nimport {LayoutState} from '../models/layout-state.model';\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, ColorScheme, LayoutMenuMode} from './layout-feature-config.token';\n\n@Injectable()\nexport class LayoutService {\n private readonly typeName = 'MainLayoutComponentService';\n private readonly storageMenuModeKey = 'menuMode';\n private readonly storageColorSchemeKey = 'colorScheme';\n\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, {optional: true});\n private readonly config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, {optional: true});\n private readonly storageService = inject(CommonsStorageService);\n\n public state = signal<LayoutState>({\n staticMenuDesktopInactive: false,\n overlayMenuActive: false,\n rightMenuActive: false,\n configSidebarVisible: false,\n staticMenuMobileActive: false,\n menuHoverActive: false,\n sidebarActive: false,\n anchored: false\n });\n\n private overlayOpen = new Subject<any>();\n public overlayOpen$ = this.overlayOpen.asObservable();\n\n // color scheme\n private _colorSchemeSetting = signal(this.getInitColorScheme());\n public colorSchemeSetting = this._colorSchemeSetting.asReadonly();\n private _colorScheme = signal<Exclude<ColorScheme, 'system'>>(this.getInitActualColorScheme(this.colorSchemeSetting()));\n public colorScheme = this._colorScheme.asReadonly();\n public colorSchemeIsLight = computed(() => this._colorScheme() === 'light');\n\n private getInitColorScheme(): ColorScheme {\n let colorScheme = this.storageService.getItem<ColorScheme>(this.typeName, this.storageColorSchemeKey);\n if (colorScheme == null || !(['dark', 'light', 'auto'] as ColorScheme[]).includes(colorScheme)) {\n colorScheme = this.getDefaultColorScheme();\n }\n return colorScheme;\n }\n\n private getInitActualColorScheme(colorScheme: ColorScheme): Exclude<ColorScheme, 'system'> {\n if (colorScheme === 'auto') {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n } else {\n return colorScheme;\n }\n }\n\n private getDefaultColorScheme(): ColorScheme {\n return this.config?.colorScheme ?? 'auto';\n }\n\n public setColorScheme(scheme: ColorScheme) {\n const defaultColorScheme = this.getDefaultColorScheme();\n if (scheme === defaultColorScheme) {\n this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);\n }\n this._colorSchemeSetting.set(scheme);\n this._colorScheme.set(this.getInitActualColorScheme(scheme));\n }\n\n // menu mode\n public readonly menuModes: LayoutMenuMode[] = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];\n private _menuMode = signal(this.initMenuMode());\n public menuMode = this._menuMode.asReadonly();\n\n // logos\n private appLogoLight = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');\n private appLogoDark = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');\n public appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));\n\n private appLogoNameLight = signal(this.config?.logoNamePathLight ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');\n private appLogoNameDark = signal(this.config?.logoNamePathDark ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');\n public appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));\n\n // overlays\n public isOverlay = computed(() => this.menuMode() === 'overlay');\n public isSlim = computed(() => this.menuMode() === 'slim');\n public isSlimPlus = computed(() => this.menuMode() === 'slim-plus');\n\n // used for managing the submenu dropdown overlay in slim and slim+ layouts\n public submenuOverlayKey = signal<string | undefined>(undefined);\n\n constructor() {\n afterNextRender(() => {\n window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {\n if (this.colorSchemeSetting() === 'auto') {\n const newColorScheme = event.matches ? 'dark' : 'light';\n this._colorScheme.set(newColorScheme);\n }\n });\n });\n\n effect(() => {\n const colorScheme = this._colorScheme();\n const themeEl = document.documentElement;\n if (colorScheme === 'dark' && !themeEl.classList.contains('app-dark')) {\n themeEl.classList.add('app-dark');\n } else if (colorScheme === 'light' && themeEl.classList.contains('app-dark')) {\n themeEl.classList.remove('app-dark');\n }\n // TODO: check\n // const linkElement = this.document.getElementById('app-theme') as HTMLLinkElement | undefined;\n // if (colorScheme === 'dark' && linkElement?.href.includes('light')) {\n // linkElement.href = 'theme-dark.css';\n // } else if (colorScheme === 'light' && linkElement?.href.includes('dark')) {\n // linkElement.href = 'theme-light.css';\n // }\n });\n }\n\n onMenuModeChange(mode: LayoutMenuMode) {\n if (!this.menuModes.includes(mode)) {\n return;\n }\n if (mode === this.config?.menuMode) {\n this.storageService.removeItem(this.typeName, this.storageMenuModeKey);\n } else {\n this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);\n }\n this._menuMode.set(mode);\n }\n\n onMenuToggle() {\n if (this.isOverlay()) {\n this.state.update(state => ({\n ...state,\n overlayMenuActive: !state.overlayMenuActive\n }));\n\n if (this.state().overlayMenuActive) {\n this.overlayOpen.next(null);\n }\n }\n\n if (this.isDesktop()) {\n this.state.update(state => ({\n ...state,\n staticMenuDesktopInactive: !state.staticMenuDesktopInactive\n }));\n } else {\n this.state.update(state => ({\n ...state,\n staticMenuMobileActive: !state.staticMenuMobileActive\n }));\n\n if (this.state().staticMenuMobileActive) {\n this.overlayOpen.next(null);\n }\n }\n }\n\n onOverlaySubmenuOpen(key: string) {\n if (this.submenuOverlayKey() === key) {\n return;\n }\n\n this.submenuOverlayKey.set(key);\n this.overlayOpen.next(null);\n }\n\n onOverlaySubmenuClose() {\n this.submenuOverlayKey.set(undefined);\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n\n isMobile() {\n return !this.isDesktop();\n }\n\n private initMenuMode(): LayoutMenuMode {\n const lsMode = this.storageService.getItem<LayoutMenuMode>(this.typeName, this.storageMenuModeKey);\n if (lsMode && this.menuModes.includes(lsMode)) {\n return lsMode;\n }\n return this.config?.menuMode ?? 'static';\n }\n}\n","import {DestroyRef, Injectable, inject, signal} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NavigationEnd, Router} from '@angular/router';\n\nimport {ReplaySubject, Subscription, startWith, take} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {\n CommonsMenuItem,\n CommonsRouteData,\n CommonsRouterService,\n InternalCommonsMenuItem,\n LoggerService,\n adjustRouteMenuLazyChildrenRouterLinks,\n doesUrlMatchRouterLink\n} from '@mediusinc/mng-commons/core';\n\nimport {prepareMenuItemsToInternal} from '../helpers/menu-items';\nimport {MenuChangeEvent} from '../models/menu.model';\n\n@Injectable()\nexport class MenuService {\n private readonly destroyRef = inject(DestroyRef);\n private readonly logger = LoggerService.create('MenuService');\n private readonly router = inject(Router);\n private readonly commonsRouter = inject(CommonsRouterService);\n\n private readonly _menuItems = signal<InternalCommonsMenuItem[]>([]);\n public menuItems = this._menuItems.asReadonly();\n\n private readonly menuChangeSubject = new ReplaySubject<MenuChangeEvent>(1);\n menuChange$ = this.menuChangeSubject.asObservable();\n\n private routeLoadedChildrenSubscriptions: Subscription[] = [];\n\n setItems(menuItems: Array<CommonsMenuItem>) {\n this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());\n this.routeLoadedChildrenSubscriptions = [];\n\n this._menuItems.set(prepareMenuItemsToInternal(menuItems));\n this.appendListenersToLazyChildren(this._menuItems());\n\n this.router.events\n .pipe(\n startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n filter(event => event instanceof NavigationEnd),\n map(e => e as NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(e => this.findAndSetActiveMenuItem((e as NavigationEnd).urlAfterRedirects));\n }\n\n private appendListenersToLazyChildren(menuItems: InternalCommonsMenuItem[]) {\n menuItems.forEach(item => {\n if (item.lazyChildren()) {\n this.listenToMenuItemLazyChildrenLoad(item);\n } else if (item.items()) {\n this.appendListenersToLazyChildren(item.items());\n }\n });\n }\n\n private findAndSetActiveMenuItem(url: string) {\n const matches = this.findActiveRouteMatches(this.menuItems(), url);\n if (matches.length === 0) {\n this.reset();\n } else {\n const matchKey = matches[0][matches[0].length - 1].key;\n if (matchKey) {\n this.menuChangeSubject.next({\n key: matchKey,\n eventType: 'routeChange'\n });\n } else {\n this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);\n this.reset();\n }\n\n if (matches.length > 1) {\n this.logger.warn(`Multiple active menu items found for url ${url}`, matches);\n }\n }\n }\n\n private listenToMenuItemLazyChildrenLoad(menuItem: InternalCommonsMenuItem) {\n this.routeLoadedChildrenSubscriptions.push(\n this.commonsRouter\n .getRouteLoadedChildren$(menuItem.routerLink ?? '/')\n .pipe(take(1))\n .subscribe({\n next: routes => {\n const menuItemsFromRoutes = routes\n .filter(r => Array.isArray((r.data as CommonsRouteData | undefined)?.menuItems))\n .flatMap(r => (r.data as CommonsRouteData).menuItems!);\n const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);\n\n menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));\n this.appendListenersToLazyChildren(menuItem.items());\n menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));\n menuItem.lazyChildren.set(false);\n\n this.findAndSetActiveMenuItem(this.router.url);\n }\n })\n );\n }\n\n private findActiveRouteMatches(menuItems: Array<InternalCommonsMenuItem>, url: string): InternalCommonsMenuItem[][] {\n const matches: InternalCommonsMenuItem[][] = [];\n for (const menuItem of menuItems) {\n const children = menuItem.items();\n if (menuItem.routerLink) {\n const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);\n if (isActive) {\n if (Array.isArray(children)) {\n const itemsMatches = this.findActiveRouteMatches(children, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n } else {\n matches.push([menuItem]);\n }\n } else {\n matches.push([menuItem]);\n }\n }\n } else if (Array.isArray(children)) {\n const itemsMatches = this.findActiveRouteMatches(children, url);\n if (itemsMatches.length > 0) {\n matches.push(...itemsMatches.map(c => [menuItem, ...c]));\n }\n }\n }\n return matches;\n }\n\n reset() {\n this.menuChangeSubject.next({\n eventType: 'reset'\n });\n }\n}\n","import {HttpClient} from '@angular/common/http';\nimport {Injectable, inject} from '@angular/core';\n\nimport {Observable, ReplaySubject} from 'rxjs';\n\nimport {CommonsConfigurationService, LoggerService} from '@mediusinc/mng-commons/core';\n\n@Injectable()\nexport class VersionService {\n private readonly logger = inject(LoggerService).create('VersionService');\n private cache: {[key: string]: ReplaySubject<unknown>} = {};\n\n constructor(\n private http: HttpClient,\n private configurationService: CommonsConfigurationService\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public loadVersion(path: string, baseConfigKey?: string, jsonPath = '$'): Observable<unknown> {\n const urlSegments = [];\n if (baseConfigKey) {\n const baseUrl = this.configurationService.getConfigValue(baseConfigKey);\n urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);\n }\n if (path) {\n urlSegments.push(!path.startsWith('/') ? `/${path}` : path);\n }\n const url = urlSegments.join('');\n if (!this.cache[url]) {\n this.cache[url] = new ReplaySubject<unknown>(1);\n\n this.http.get(urlSegments.join('')).subscribe({\n next: res => {\n this.cache[url].next(res);\n },\n error: err => {\n this.logger.error('Version could not be retreived', err);\n }\n });\n }\n\n return this.cache[url].asObservable();\n }\n}\n","import {CommonsFeature, CommonsFeatureTypeEnum} from '@mediusinc/mng-commons/core';\n\nimport {COMMONS_LAYOUT_FEATURE_CONFIG_IT, LayoutFeatureConfig} from './services/layout-feature-config.token';\nimport {LayoutService} from './services/layout.service';\nimport {MenuService} from './services/menu.service';\nimport {VersionService} from './services/version.service';\n\n/**\n * Prepares providers for usage of the layout functionalities.\n *\n * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.\n */\nexport function withLayout(config?: LayoutFeatureConfig): CommonsFeature {\n return {\n type: CommonsFeatureTypeEnum.Layout,\n providers: [\n MenuService,\n VersionService,\n LayoutService,\n {\n provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,\n useValue: config\n }\n ]\n };\n}\n","// helpers\nexport * from './lib/helpers/menu-items';\n\n// models\nexport * from './lib/models/layout-state.model';\nexport * from './lib/models/menu.model';\n\n// services\nexport * from './lib/services/layout-feature-config.token';\nexport * from './lib/services/layout.service';\nexport * from './lib/services/menu.service';\nexport * from './lib/services/version.service';\n\n// provide\nexport * from './lib/provide';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons-layout",
3
- "version": "6.0.0-rc.5",
3
+ "version": "6.0.0-rc.6",
4
4
  "peerDependencies": {
5
- "@angular/animations": "^17.3.0 || ^18.0.0",
6
- "@angular/common": "^17.3.0 || ^18.0.0",
7
- "@angular/core": "^17.3.0 || ^18.0.0",
8
- "@angular/forms": "^17.3.0 || ^18.0.0",
9
- "@angular/platform-browser": "^17.3.0 || ^18.0.0",
10
- "@angular/router": "^17.3.0 || ^18.0.0",
5
+ "@angular/animations": "^19.0.0",
6
+ "@angular/common": "^19.0.0",
7
+ "@angular/core": "^19.0.0",
8
+ "@angular/forms": "^19.0.0",
9
+ "@angular/platform-browser": "^19.0.0",
10
+ "@angular/router": "^19.0.0",
11
11
  "@ngx-translate/core": "^15.0.0",
12
- "primeng": "^17.18.0",
13
- "@mediusinc/mng-commons": "~6.0.0-rc.5"
12
+ "primeng": "~19.0.9",
13
+ "tailwindcss": "^3.4.0",
14
+ "@primeng/themes": "^19.0.9",
15
+ "@mediusinc/mng-commons": "~6.0.0-rc.6"
14
16
  },
15
17
  "dependencies": {
16
18
  "tslib": "^2.8.1"
@@ -27,38 +29,26 @@
27
29
  },
28
30
  ".": {
29
31
  "types": "./index.d.ts",
30
- "esm2022": "./esm2022/mediusinc-mng-commons-layout.mjs",
31
- "esm": "./esm2022/mediusinc-mng-commons-layout.mjs",
32
32
  "default": "./fesm2022/mediusinc-mng-commons-layout.mjs"
33
33
  },
34
34
  "./components": {
35
35
  "types": "./components/index.d.ts",
36
- "esm2022": "./esm2022/components/mediusinc-mng-commons-layout-components.mjs",
37
- "esm": "./esm2022/components/mediusinc-mng-commons-layout-components.mjs",
38
36
  "default": "./fesm2022/mediusinc-mng-commons-layout-components.mjs"
39
37
  },
40
38
  "./components/pages/error": {
41
39
  "types": "./components/pages/error/index.d.ts",
42
- "esm2022": "./esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs",
43
- "esm": "./esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs",
44
40
  "default": "./fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs"
45
41
  },
46
42
  "./components/pages/main": {
47
43
  "types": "./components/pages/main/index.d.ts",
48
- "esm2022": "./esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs",
49
- "esm": "./esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs",
50
44
  "default": "./fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs"
51
45
  },
52
46
  "./components/pages/not-found": {
53
47
  "types": "./components/pages/not-found/index.d.ts",
54
- "esm2022": "./esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs",
55
- "esm": "./esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs",
56
48
  "default": "./fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs"
57
49
  },
58
50
  "./components/pages/main/lazy": {
59
51
  "types": "./components/pages/main/lazy/index.d.ts",
60
- "esm2022": "./esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs",
61
- "esm": "./esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs",
62
52
  "default": "./fesm2022/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs"
63
53
  }
64
54
  }
@@ -0,0 +1 @@
1
+ @use './layout/layout';
@@ -13,17 +13,18 @@
13
13
  font-weight: 600;
14
14
  }
15
15
  }
16
+
16
17
  .breadcrumb-menu {
17
18
  margin: 0;
18
19
  padding: 0 1.15rem 0 0.85rem;
19
20
  padding-right: 0;
20
21
  list-style: none;
21
22
  flex-grow: 1;
22
- color: var(--topbar-item-text-color);
23
23
  margin-right: -2rem;
24
24
 
25
25
  li {
26
26
  margin-left: 1.5rem;
27
+
27
28
  .breadcrumb-search {
28
29
  display: flex;
29
30
  align-items: center;
@@ -41,9 +42,9 @@
41
42
  width: 0;
42
43
  opacity: 0;
43
44
  visibility: hidden;
44
- transition: 400ms cubic-bezier(0.86, 0, 0.07, 1);
45
+ transition: var(--layout-section-transition-duration);
45
46
 
46
- span {
47
+ > div {
47
48
  width: 100%;
48
49
 
49
50
  .p-inputtext {
@@ -53,7 +54,7 @@
53
54
  padding: 9px;
54
55
  }
55
56
 
56
- i {
57
+ span {
57
58
  font-size: 18px;
58
59
  margin-top: -9px;
59
60
  margin-right: 9px;
@@ -74,15 +75,17 @@
74
75
  opacity: 1;
75
76
  visibility: visible;
76
77
  border-radius: var(--border-radius);
77
- i {
78
+ transition: var(--layout-section-transition-duration);
79
+
80
+ span {
78
81
  display: block;
82
+ z-index: 2;
79
83
  }
80
- .p-input-icon-right {
81
- input {
82
- border-radius: var(--border-radius);
83
- width: 100%;
84
- background: var(--surface-ground);
85
- }
84
+
85
+ .p-inputtext {
86
+ border-radius: var(--border-radius);
87
+ width: 100%;
88
+ background: var(--surface-ground);
86
89
  }
87
90
  }
88
91
  }
@@ -20,6 +20,17 @@
20
20
  z-index: 999;
21
21
  box-shadow: -0.25rem 0 1rem rgba(0, 0, 0, 0.15);
22
22
 
23
+ &.config-link {
24
+ font-size: 1rem;
25
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
26
+ border: none;
27
+ }
28
+ .config-link:focus {
29
+ outline: 0 none;
30
+ outline-offset: 0;
31
+ box-shadow: 0 0 0 1px var(--focus-ring--shadow);
32
+ }
33
+
23
34
  i {
24
35
  font-size: 2rem;
25
36
  line-height: inherit;
@@ -28,15 +39,72 @@
28
39
  }
29
40
 
30
41
  &:hover {
31
- background: var(--primary-400);
42
+ background: var(--p-primary-400);
32
43
  }
33
44
  }
34
45
 
35
- .layout-config-sidebar {
36
- &.p-sidebar {
37
- .p-sidebar-content {
38
- padding-left: 2rem;
39
- padding-right: 2rem;
40
- }
46
+ .app-config-mobile-button {
47
+ display: none;
48
+ }
49
+
50
+ .app-config-button {
51
+ border: 1px solid var(--border-color);
52
+ background-color: var(--card-background);
53
+ position: relative;
54
+ z-index: 0;
55
+ border-radius: 50%;
56
+ width: 2.5rem;
57
+ height: 2.5rem;
58
+ line-height: 2.5rem;
59
+ text-align: center;
60
+
61
+ i {
62
+ line-height: inherit;
63
+ font-size: 1.125rem;
64
+ }
65
+ &::before,
66
+ &::after {
67
+ content: '';
68
+ position: absolute;
69
+ inset: 0;
70
+ border: 1px solid var(--topbar-item-text-color);
71
+ transition: all 0.5s;
72
+ animation: clippath 10s infinite linear;
73
+ border-radius: 50%;
74
+ opacity: 1;
75
+ }
76
+
77
+ &::after {
78
+ animation: clippath 10s infinite -5s linear;
79
+ }
80
+ }
81
+
82
+ @keyframes clippath {
83
+ 0% {
84
+ clip-path: inset(0 0 98% 0);
85
+ }
86
+ 12.5% {
87
+ clip-path: inset(0 0 60% 0);
88
+ }
89
+ 25% {
90
+ clip-path: inset(0 98% 0 0);
91
+ }
92
+ 37.5% {
93
+ clip-path: inset(0 60% 0 0);
94
+ }
95
+ 50% {
96
+ clip-path: inset(98% 0 0 0);
97
+ }
98
+ 62.5% {
99
+ clip-path: inset(60% 0 0 0);
100
+ }
101
+ 75% {
102
+ clip-path: inset(0 0 0 98%);
103
+ }
104
+ 87.5% {
105
+ clip-path: inset(0 0 0 60%);
106
+ }
107
+ 100% {
108
+ clip-path: inset(0 0 98% 0);
41
109
  }
42
110
  }
@@ -1,3 +1,3 @@
1
1
  .layout-content-wrapper {
2
2
  padding: 2rem;
3
- }
3
+ }
@@ -4,7 +4,8 @@
4
4
 
5
5
  html {
6
6
  height: 100%;
7
- font-size: $scale;
7
+ font-size: 14px;
8
+ line-height: 1.5;
8
9
  }
9
10
 
10
11
  body {
@@ -13,7 +14,10 @@ body {
13
14
  margin: 0;
14
15
  min-height: 100%;
15
16
  color: var(--text-color);
16
- font-family: var(--font-family);
17
+ font-family: "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
18
+ font-feature-settings: "cv02","cv03","cv04","cv11";
19
+ line-height: 1.4;
20
+ font-variation-settings: normal;
17
21
  -webkit-font-smoothing: antialiased;
18
22
  -moz-osx-font-smoothing: grayscale;
19
23
  }
@@ -37,18 +41,12 @@ a {
37
41
  left: 0;
38
42
  background-image: var(--body-image);
39
43
  background-repeat: no-repeat;
44
+ z-index: 0;
40
45
  }
41
46
 
42
47
  .layout-content-wrapper {
43
- display: flex;
44
- flex-direction: column;
45
48
  position: relative;
46
- min-height: 100vh;
47
49
  z-index: 1;
48
50
  overflow-x: hidden;
49
-
50
- .layout-content {
51
- flex-grow: 1;
52
- }
53
51
  }
54
52
  }
@@ -7,4 +7,4 @@
7
7
  padding-right: 2rem;
8
8
  }
9
9
  }
10
- }
10
+ }
@@ -1,3 +1,5 @@
1
+ @use './_sass_variables' as *;
2
+
1
3
  @media screen and (min-width: $breakpoint) {
2
4
  .layout-container {
3
5
  &.layout-static {
@@ -53,7 +55,7 @@
53
55
 
54
56
  .layout-topbar {
55
57
  .topbar-menu {
56
- margin-right: 0 !important;
58
+ margin-right: 0rem !important;
57
59
  }
58
60
  .right-panel-button {
59
61
  position: absolute !important;
@@ -120,7 +122,7 @@
120
122
  margin-left: auto !important;
121
123
  margin-right: auto !important;
122
124
  .topbar-menu {
123
- margin-right: 0 !important;
125
+ margin-right: 0rem !important;
124
126
  }
125
127
 
126
128
  .right-panel-button {
@@ -0,0 +1 @@
1
+ $breakpoint: 992px !default;
@@ -1,3 +1,5 @@
1
+ @use './_sass_variables' as *;
2
+
1
3
  @media screen and (min-width: $breakpoint) {
2
4
  .layout-container {
3
5
  &.layout-drawer {
@@ -51,14 +53,13 @@
51
53
 
52
54
  .layout-sidebar-anchor {
53
55
  display: none;
56
+ flex-shrink: 0;
54
57
  width: 1.25rem;
55
58
  height: 1.25rem;
56
59
  border-radius: 50%;
57
60
  border: 2px solid var(--primary-color);
58
61
  background-color: transparent;
59
- transition:
60
- background-color var(--transition-duration),
61
- transform 0.3s;
62
+ transition: background-color var(--layout-section-transition-duration), transform 0.3s;
62
63
  }
63
64
  }
64
65
 
@@ -141,11 +142,11 @@
141
142
  width: 100%;
142
143
  max-width: none;
143
144
  img {
144
- &:first-child {
145
+ &:first-child{
145
146
  width: 32px;
146
147
  max-width: none;
147
148
  }
148
- &:last-child {
149
+ &:last-child{
149
150
  width: 142px;
150
151
  max-width: none;
151
152
  }
@@ -1,3 +1,5 @@
1
+ @use './_sass_variables' as *;
2
+
1
3
  @media screen and (min-width: $breakpoint) {
2
4
  .layout-container {
3
5
  &.layout-horizontal {
@@ -5,10 +7,10 @@
5
7
  .topbar-menubutton {
6
8
  display: none;
7
9
  }
8
- .layout-topbar-menu-section {
10
+ .layout-topbar-menu-section{
9
11
  width: calc(100% - 320px);
10
12
  }
11
- .topbar-breadcrumb {
13
+ .topbar-breadcrumb{
12
14
  display: none;
13
15
  }
14
16
  }
@@ -30,7 +32,7 @@
30
32
  }
31
33
  }
32
34
 
33
- .sidebar-header {
35
+ .sidebar-header{
34
36
  padding: 0;
35
37
  .app-logo {
36
38
  .app-logo-normal {
@@ -42,6 +44,7 @@
42
44
  }
43
45
  }
44
46
  }
47
+
45
48
  }
46
49
 
47
50
  .layout-menu {
@@ -52,9 +55,9 @@
52
55
  height: 100%;
53
56
  padding: 0 1rem;
54
57
  > li {
55
- margin-bottom: 0;
58
+ margin-bottom: 0rem;
56
59
  &:first-child {
57
- margin-top: 0;
60
+ margin-top: 0rem;
58
61
  }
59
62
  }
60
63
  ul {
@@ -71,13 +74,13 @@
71
74
  > a {
72
75
  display: flex;
73
76
  align-items: center;
74
- padding: 0.75rem;
77
+ padding: .75rem;
75
78
  border-radius: 6px;
76
79
  border: none;
77
80
  cursor: pointer;
78
81
  outline: none;
79
82
  color: var(--text-color);
80
- transition: background-color var(--transition-duration);
83
+ transition: background-color var(--layout-section-transition-duration);
81
84
 
82
85
  .layout-submenu-toggler {
83
86
  display: block;
@@ -92,8 +95,8 @@
92
95
  .layout-menuitem-text {
93
96
  font-size: 0.875rem;
94
97
  display: block;
95
- margin-left: 0.75rem;
96
- margin-right: 0.75rem;
98
+ margin-left: .75rem;
99
+ margin-right: .75rem;
97
100
  white-space: nowrap;
98
101
  }
99
102
 
@@ -109,17 +112,18 @@
109
112
  min-width: 15rem;
110
113
  background: var(--surface-overlay);
111
114
  box-shadow: var(--sidebar-shadow);
112
- padding: 0.8rem;
115
+ padding: .8rem;
113
116
  border-radius: var(--border-radius);
114
117
  max-height: 20rem;
115
118
  overflow: auto;
116
119
  z-index: 999;
117
120
 
118
121
  a {
119
- padding-right: 0.5rem;
122
+ padding-right: .5rem;
120
123
  color: var(--text-color);
121
124
  border-radius: var(--border-radius);
122
125
 
126
+
123
127
  &:hover {
124
128
  background-color: var(--root-menu-item-hover-bg);
125
129
  }