@smallpearl/ngx-helper 0.29.23

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 (117) hide show
  1. package/README.md +230 -0
  2. package/core/index.d.ts +2 -0
  3. package/core/src/ngx-helper.d.ts +7 -0
  4. package/core/src/version.d.ts +1 -0
  5. package/entity-field/index.d.ts +2 -0
  6. package/entity-field/src/entity-field-spec.d.ts +69 -0
  7. package/entity-field/src/provider.d.ts +27 -0
  8. package/fesm2022/smallpearl-ngx-helper-core.mjs +23 -0
  9. package/fesm2022/smallpearl-ngx-helper-core.mjs.map +1 -0
  10. package/fesm2022/smallpearl-ngx-helper-entity-field.mjs +112 -0
  11. package/fesm2022/smallpearl-ngx-helper-entity-field.mjs.map +1 -0
  12. package/fesm2022/smallpearl-ngx-helper-forms.mjs +112 -0
  13. package/fesm2022/smallpearl-ngx-helper-forms.mjs.map +1 -0
  14. package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs +108 -0
  15. package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs.map +1 -0
  16. package/fesm2022/smallpearl-ngx-helper-locale.mjs +296 -0
  17. package/fesm2022/smallpearl-ngx-helper-locale.mjs.map +1 -0
  18. package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs +504 -0
  19. package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs.map +1 -0
  20. package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs +184 -0
  21. package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs.map +1 -0
  22. package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs +1486 -0
  23. package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs.map +1 -0
  24. package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs +800 -0
  25. package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs.map +1 -0
  26. package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs +328 -0
  27. package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs.map +1 -0
  28. package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs +468 -0
  29. package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs.map +1 -0
  30. package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs +854 -0
  31. package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs.map +1 -0
  32. package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs +930 -0
  33. package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs.map +1 -0
  34. package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs +926 -0
  35. package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs.map +1 -0
  36. package/fesm2022/smallpearl-ngx-helper-sideload.mjs +111 -0
  37. package/fesm2022/smallpearl-ngx-helper-sideload.mjs.map +1 -0
  38. package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs +384 -0
  39. package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs.map +1 -0
  40. package/fesm2022/smallpearl-ngx-helper.mjs +13 -0
  41. package/fesm2022/smallpearl-ngx-helper.mjs.map +1 -0
  42. package/forms/index.d.ts +1 -0
  43. package/forms/src/validation-error-handler.d.ts +52 -0
  44. package/hover-dropdown/index.d.ts +1 -0
  45. package/hover-dropdown/src/hover-dropdown.directive.d.ts +41 -0
  46. package/index.d.ts +5 -0
  47. package/locale/index.d.ts +5 -0
  48. package/locale/src/currency.pipe.d.ts +14 -0
  49. package/locale/src/date.pipe.d.ts +14 -0
  50. package/locale/src/format-currency.d.ts +1 -0
  51. package/locale/src/format-date.d.ts +2 -0
  52. package/locale/src/is-empty.d.ts +1 -0
  53. package/locale/src/providers.d.ts +20 -0
  54. package/mat-busy-wheel/index.d.ts +4 -0
  55. package/mat-busy-wheel/src/busy-wheel-op.d.ts +65 -0
  56. package/mat-busy-wheel/src/busy-wheel.component.d.ts +12 -0
  57. package/mat-busy-wheel/src/busy-wheel.service.d.ts +42 -0
  58. package/mat-busy-wheel/src/host-busy-wheel.directive.d.ts +35 -0
  59. package/mat-context-menu/index.d.ts +1 -0
  60. package/mat-context-menu/src/mat-context-menu.component.d.ts +54 -0
  61. package/mat-entity-crud/index.d.ts +5 -0
  62. package/mat-entity-crud/src/default-config.d.ts +9 -0
  63. package/mat-entity-crud/src/form-view-host.component.d.ts +34 -0
  64. package/mat-entity-crud/src/mat-entity-crud-form-base.d.ts +95 -0
  65. package/mat-entity-crud/src/mat-entity-crud-internal-types.d.ts +66 -0
  66. package/mat-entity-crud/src/mat-entity-crud-types.d.ts +141 -0
  67. package/mat-entity-crud/src/mat-entity-crud.component.d.ts +267 -0
  68. package/mat-entity-crud/src/preview-host.component.d.ts +19 -0
  69. package/mat-entity-crud/src/preview-pane.component.d.ts +27 -0
  70. package/mat-entity-crud/src/providers.d.ts +3 -0
  71. package/mat-entity-list/index.d.ts +3 -0
  72. package/mat-entity-list/src/config.d.ts +6 -0
  73. package/mat-entity-list/src/mat-entity-list-types.d.ts +53 -0
  74. package/mat-entity-list/src/mat-entity-list.component.d.ts +209 -0
  75. package/mat-entity-list/src/providers.d.ts +3 -0
  76. package/mat-file-input/README.md +63 -0
  77. package/mat-file-input/index.d.ts +1 -0
  78. package/mat-file-input/src/mat-file-input.component.d.ts +58 -0
  79. package/mat-form-error/README.md +306 -0
  80. package/mat-form-error/index.d.ts +6 -0
  81. package/mat-form-error/src/locales/en.d.ts +4 -0
  82. package/mat-form-error/src/locales/hu.d.ts +4 -0
  83. package/mat-form-error/src/locales/index.d.ts +3 -0
  84. package/mat-form-error/src/locales/pt-br.d.ts +4 -0
  85. package/mat-form-error/src/ngx-error-list.component.d.ts +9 -0
  86. package/mat-form-error/src/ngx-mat-error-control.d.ts +17 -0
  87. package/mat-form-error/src/ngx-mat-error-def.directive.d.ts +30 -0
  88. package/mat-form-error/src/ngx-mat-errors-for-date-range-picker.directive.d.ts +8 -0
  89. package/mat-form-error/src/ngx-mat-errors.component.d.ts +23 -0
  90. package/mat-form-error/src/types.d.ts +68 -0
  91. package/mat-form-error/src/utils/coerce-to-observable.d.ts +3 -0
  92. package/mat-form-error/src/utils/distinct-until-error-changed.d.ts +2 -0
  93. package/mat-form-error/src/utils/find-error-for-control.d.ts +9 -0
  94. package/mat-form-error/src/utils/get-abstract-controls.d.ts +3 -0
  95. package/mat-form-error/src/utils/get-control-with-error.d.ts +3 -0
  96. package/mat-select-entity/index.d.ts +2 -0
  97. package/mat-select-entity/src/mat-select-entity.component.d.ts +207 -0
  98. package/mat-select-entity/src/providers.d.ts +9 -0
  99. package/mat-side-menu-layout/index.d.ts +6 -0
  100. package/mat-side-menu-layout/src/layout.service.d.ts +23 -0
  101. package/mat-side-menu-layout/src/mat-menu-layout.component.d.ts +39 -0
  102. package/mat-side-menu-layout/src/mat-menu-layout.module.d.ts +18 -0
  103. package/mat-side-menu-layout/src/mat-menu-list-item.component.d.ts +36 -0
  104. package/mat-side-menu-layout/src/mat-menu-pane.component.d.ts +66 -0
  105. package/mat-side-menu-layout/src/nav-item.d.ts +10 -0
  106. package/mat-tel-input/README.md +18 -0
  107. package/mat-tel-input/index.d.ts +2 -0
  108. package/mat-tel-input/src/country-codes.d.ts +5 -0
  109. package/mat-tel-input/src/mat-telephone.component.d.ts +129 -0
  110. package/mat-tel-input/src/providers.d.ts +38 -0
  111. package/ngx-helper.d.ts +2 -0
  112. package/package.json +114 -0
  113. package/public-api.d.ts +1 -0
  114. package/sideload/index.d.ts +1 -0
  115. package/sideload/src/sideload.d.ts +17 -0
  116. package/stationary-with-line-items/index.d.ts +1 -0
  117. package/stationary-with-line-items/src/stationary-with-line-items.component.d.ts +74 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smallpearl-ngx-helper-mat-side-menu-layout.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/src/layout.service.ts","../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/src/mat-menu-list-item.component.ts","../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/src/mat-menu-pane.component.ts","../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/src/mat-menu-layout.component.ts","../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/src/mat-menu-layout.module.ts","../../../../projects/smallpearl/ngx-helper/mat-side-menu-layout/smallpearl-ngx-helper-mat-side-menu-layout.ts"],"sourcesContent":["import {\n BreakpointObserver,\n BreakpointState,\n Breakpoints,\n} from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BehaviorSubject, Subject, takeUntil } from 'rxjs';\n\nexport interface SideMenuLayoutProps {\n smallScreen: boolean;\n toolbarHeight: number;\n}\n\n@Injectable({ providedIn: 'any' })\nexport class LayoutService implements OnDestroy {\n marginTop: number = 64;\n toolbarHeight: number = 64;\n smallScreen: boolean = false;\n\n destroy = new Subject<void>();\n _previousUrl: string = '';\n\n layoutChanged = new BehaviorSubject<SideMenuLayoutProps>({\n smallScreen: false,\n toolbarHeight: 64,\n });\n\n constructor(public breakpointObserver: BreakpointObserver, router: Router) {\n this.breakpointObserver\n .observe([\n Breakpoints.XSmall,\n Breakpoints.Small,\n Breakpoints.Medium,\n Breakpoints.Large,\n Breakpoints.XLarge,\n ])\n .pipe(takeUntil(this.destroy))\n .subscribe((result: BreakpointState) => {\n let smallScreen = this.smallScreen;\n let marginTop = this.marginTop;\n for (const query of Object.keys(result.breakpoints)) {\n if (result.breakpoints[query]) {\n if (query == Breakpoints.XSmall) {\n smallScreen = true;\n marginTop = 56;\n // } else if (query === Breakpoints.Small) {\n // smallScreen = true;\n // marginTop = 56;\n } else {\n smallScreen = false;\n }\n }\n }\n if (this.smallScreen != smallScreen || this.marginTop != marginTop) {\n this.smallScreen = smallScreen;\n this.toolbarHeight = this.marginTop = marginTop;\n const newLayout = {\n smallScreen: smallScreen,\n toolbarHeight: marginTop,\n };\n this.layoutChanged.next(newLayout);\n }\n });\n\n // router.events\n // .pipe(\n // filter(\n // (e: RouterEvent) =>\n // e instanceof NavigationStart && (router.url.startsWith('/community') || router.url.startsWith('/company'))\n // ),\n // tap(() => {\n // // console.log(`URL: ${this.router.url}`);\n // this._previousUrl = router.url;\n // })\n // )\n // .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n }\n\n get previousUrl() {\n return this._previousUrl;\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { NavItem } from './nav-item';\n\n@Component({\n selector: 'ngx-mat-menu-list-item',\n template: `\n <a\n *ngIf=\"item.children || item.route; else divider\"\n mat-list-item\n [ngStyle]=\"{ 'padding-left': depth * 8 + 'px' }\"\n [disabled]=\"item.disabled\"\n [attr.routerLink]=\"!item.children ? item.route : null\"\n class=\"menu-list-item pl-8\"\n [ngClass]=\"{\n highlighted: this.highlighted,\n 'not-highlighted': !this.highlighted,\n }\"\n routerLinkActive=\"is-active\"\n (click)=\"onItemSelected($event, item)\"\n >\n <mat-icon\n *ngIf=\"\n (item.icon && showIcon && !item.iconType) || item.iconType == 'mat'\n \"\n class=\"menu-item-color\"\n matListItemIcon\n >{{ item.icon }}</mat-icon\n >\n <i\n *ngIf=\"item.icon && showIcon && item.iconType != 'mat'\"\n [class]=\"'menu-item-color ' + item.icon\"\n ></i>\n <span class=\"menu-item-color\">{{ item.text }}</span>\n <span class=\"twistie-separator\"></span>\n <span *ngIf=\"item.children && item.children.length\">\n <mat-icon\n class=\"menu-twistie menu-item-color\"\n [@indicatorRotate]=\"expanded ? 'expanded' : 'collapsed'\"\n >\n expand_more\n </mat-icon>\n </span>\n </a>\n <div>\n <ngx-mat-menu-list-item\n class=\"menu-child\"\n [showIcon]=\"showIcon\"\n [ngStyle]=\"{ display: expanded ? 'inherit' : 'none' }\"\n *ngFor=\"let child of item.children\"\n [item]=\"child\"\n [parent]=\"this\"\n [depth]=\"depth + 1\"\n ></ngx-mat-menu-list-item>\n </div>\n <ng-template #divider>\n <div class=\"menu-divider\"></div>\n </ng-template>\n `,\n styles: [\n `\n .menu-list-item {\n margin-right: 8px !important;\n }\n .pl-8 {\n padding-left: 8px;\n }\n .twistie-separator {\n flex: 1 1 0%;\n }\n .routeIcon {\n margin-right: 10px;\n font-size: 16pt;\n }\n .menu-item-text {\n font-size: 10pt;\n }\n .menu-twistie {\n font-size: 10pt;\n height: 12px;\n width: 12px;\n }\n mat-icon {\n margin-left: 8px !important;\n margin-right: 8px !important;\n }\n .menu-item-color {\n background-color: var(--sp-mat-menu-menu-item-bg-color) !important;\n color: var(--sp-mat-menu-menu-item-fg-color) !important;\n }\n .highlighted {\n background-color: var(\n --sp-mat-menu-highlighted-menu-item-bg-color\n ) !important;\n color: var(--sp-mat-menu-highlighted-menu-item-fg-color) !important;\n }\n .highlighted .menu-item-color {\n background-color: var(\n --sp-mat-menu-highlighted-menu-item-bg-color\n ) !important;\n color: var(--sp-mat-menu-highlighted-menu-item-fg-color) !important;\n }\n .mdc-list-item {\n padding-right: 0px;\n }\n .menu-divider {\n height: 1em;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)')),\n ]),\n ],\n standalone: false\n})\nexport class SPMatMenuListItemComponent implements OnInit, OnDestroy {\n expanded = false;\n @Input() highlighted = false;\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\n\n // The NavItem associated with this item.\n @Input() item!: NavItem;\n\n // This is an implementation property that is used to control with offset\n // of the menu item from the start of the screen to indicate that an item\n // is a child of a parent menu item.\n @Input() depth!: number;\n\n // The parent of this menu item. Set only for child items. Will be undefined\n // for top level menu items\n @Input() parent!: SPMatMenuListItemComponent;\n\n @Input() showIcon: boolean = true;\n\n // All child MenuListItemComponents so that we can check each one if\n // the current url ends with the child component's NavItem.route.\n // If it does then we have to mark this component as expanded.\n @ViewChildren(SPMatMenuListItemComponent)\n children!: QueryList<SPMatMenuListItemComponent>;\n\n constructor(\n public route: ActivatedRoute,\n public router: Router,\n private dialog: MatDialog,\n private cdr: ChangeDetectorRef\n ) {\n if (this.depth === undefined) {\n this.depth = 1;\n }\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {}\n\n // Return highlighted status\n get isHighlighted() {\n return this.highlighted;\n }\n\n toggleHighlight(highlight: boolean) {\n if (highlight != this.highlighted) {\n this.highlighted = highlight;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Expand a parent container menu item.\n */\n expand() {\n if (!this.item?.route && !this.expanded) {\n this.expanded = this.ariaExpanded = true;\n this.cdr.detectChanges();\n if (this.parent) {\n this.parent.expand();\n }\n }\n }\n\n /**\n * Collapse an expanded parent container menu item.\n */\n collapse() {\n if (!this.item?.route && this.expanded) {\n this.expanded = this.ariaExpanded = false;\n this.cdr.detectChanges();\n }\n }\n\n checkChildrenForHighlight(lastUrlSegment: string) {\n let childHighlighted = false;\n this.children.forEach((childItem) => {\n if (childItem.item.route === lastUrlSegment) {\n childItem.toggleHighlight(true);\n childHighlighted = true;\n } else {\n childItem.toggleHighlight(false);\n if (childItem.item?.children) {\n if (childItem.checkChildrenForHighlight(lastUrlSegment)) {\n childHighlighted = true;\n }\n }\n childItem.expand(); // open the childItem\n }\n });\n return childHighlighted; // Return highlighted state so that caller can\n // expand itself.\n }\n\n // Item selection handler\n onItemSelected(ev: Event, item: NavItem): void {\n this.dialog.closeAll();\n\n // Leaf menu item, navigate the router to the item's route.\n if (!item.children) {\n if (item?.backButton && item?.backHref) {\n // Idiotic way to implement Back button! This will conflict\n // with the browser history as the current satellite app\n // page would become the previous page to backHref page! A complex\n // mechanism to navigate back accurately, by popping all the\n // intermediate pages is beyond our scope for now.\n this.router.navigateByUrl(item.backHref);\n } else if (item.route) {\n this.router.navigate([item.route], {\n relativeTo: this.route,\n state: {\n backHref: window.location.pathname,\n },\n });\n }\n } else {\n // Sub menu items, toogle the item to show/hide the child menu items.\n ev.preventDefault();\n ev.stopImmediatePropagation();\n this.expanded = !this.expanded;\n this.cdr.detectChanges();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n effect,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n runInInjectionContext,\n SimpleChanges,\n TemplateRef,\n viewChildren\n} from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { NavigationEnd, Router, Event as RouterEvent } from '@angular/router';\nimport { Subject, filter, takeUntil, tap } from 'rxjs';\nimport { LayoutService, SideMenuLayoutProps } from './layout.service';\nimport { SPMatMenuListItemComponent } from './mat-menu-list-item.component';\nimport { NavItem } from './nav-item';\n\n@Component({\n selector: 'ngx-mat-menu-pane',\n template: `\n <div class=\"menu-pane-wrapper\">\n <div class=\"sidenav-branding mat-toolbar-single-row\">\n <div class=\"branding branding-logo\">\n <img *ngIf=\"brandingImage\" [src]=\"brandingImage\" />\n </div>\n <h4 class=\"mat-typography branding branding-text\">\n {{ brandingText }}\n </h4>\n </div>\n <div class=\"sidenav-menu\">\n <div *ngIf=\"menuTitle\" class=\"mat-body title\">{{ menuTitle }}</div>\n <mat-nav-list>\n <ngx-mat-menu-list-item\n *ngIf=\"backButtonNavItem\"\n [item]=\"backButtonNavItem\"\n ></ngx-mat-menu-list-item>\n <ngx-mat-menu-list-item\n *ngFor=\"let item of menuItems\"\n [item]=\"item\"\n [showIcon]=\"showIcons\"\n ></ngx-mat-menu-list-item>\n </mat-nav-list>\n </div>\n <div class=\"sidenav-version\" *ngIf=\"menuPaneFooterContent\">\n <ng-container *ngTemplateOutlet=\"menuPaneFooterContent\"> </ng-container>\n </div>\n </div>\n `,\n styleUrls: ['./mat-menu-pane.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SPMatMenuPaneComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @Input() menuTitle: string = '';\n @Input() showBackButton: boolean = false;\n @Input() defaultBackButtonHref: string = '';\n @Input() backButtonText: string = 'BACK';\n @Input() menuItems: NavItem[] = [];\n @Input() brandingText: string = 'BRAND';\n @Input() brandingImage: string = '';\n @Input() matSideNav: MatSidenav | undefined;\n @Input() appVersion: string = '0.0';\n @Input() menuPaneFooterContent!: TemplateRef<any>;\n @Input() showIcons: boolean = true;\n @Input() baseUrl = '';\n layout!: SideMenuLayoutProps;\n\n backButtonNavItem: NavItem | undefined;\n destroy = new Subject<void>();\n\n menuItemComps = viewChildren(SPMatMenuListItemComponent);\n\n // So that if menuItems is specified via an async pipe, we can highlight the\n // current URL after the menuItems are loaded.\n menuItemComps$ = effect(() => {\n const components = this.menuItemComps();\n runInInjectionContext(this.injector, () => {\n this.highlightUrlMenuItem(this.router.routerState.snapshot.url);\n });\n });\n\n constructor(\n public cdr: ChangeDetectorRef,\n private layoutService: LayoutService,\n private router: Router,\n private injector: Injector\n ) {}\n\n ngOnInit() {\n this.layoutService.layoutChanged\n .pipe(\n takeUntil(this.destroy),\n tap((newLayout) => {\n // console.log(\n // 'Layout changed - new toolbar height:',\n // newLayout.toolbarHeight\n // );\n this.layout = newLayout;\n this.cdr.detectChanges();\n })\n )\n .subscribe();\n\n if (this.showBackButton) {\n this.backButtonNavItem = {\n route: this.layoutService.previousUrl\n ? this.layoutService.previousUrl\n : this.defaultBackButtonHref,\n text: this.backButtonText,\n icon: 'arrow_back',\n backButton: true,\n backHref: window.history.state ? window.history.state['backHref'] : '#',\n };\n this.cdr.detectChanges();\n }\n\n this.router.events\n .pipe(\n takeUntil(this.destroy),\n filter((e) => e instanceof NavigationEnd),\n tap((e: RouterEvent) => {\n if (this.matSideNav && this.layout.smallScreen) {\n this.matSideNav.close();\n }\n const ne = e as NavigationEnd;\n this.highlightUrlMenuItem(ne.urlAfterRedirects);\n })\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['backButtonText']) {\n if (this.backButtonNavItem) {\n this.backButtonNavItem = {\n ...this.backButtonNavItem,\n text: this.backButtonText,\n };\n this.cdr.detectChanges();\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.highlightUrlMenuItem(this.router.routerState.snapshot.url);\n }\n\n /**\n * Highlights the menu item for the specified URL.\n *\n * @param url the full url of the current navigation\n *\n * The way this function works is like this.\n *\n * It first finds the NavItem matching the given URL in url arg. It does\n * this by removing the baseUrl from the url and then comparing the\n * NavItem.route attached to each SPMatMenuListItemComponent. This is done\n * recursively covering all NavItem.children. When a matching NavItem is\n * found, the function goes on to find the SPMatMenuListItemComponent which\n * has this NavItem attached to it. This too is done recursively to find\n * the innermost NavItem with matching URL.\n *\n * When a matching SPMatMenuListItemComponent is found, it first deselects\n * the previous SPMatMenuListItemComponent selection and then goes on to\n * select the newly matched SPMatMenuListItemComponent. If the\n * SPMatMenuListItemComponent is a child of a parent NavItem, the parent\n * NavItem is expanded. Similarly when deselecting the current selection,\n * if it belongs to a parent NavItem and the parent is not shared by the\n * currently matched SPMatMenuListItemComponent, it collapses the parent\n * of the previously selected SPMatMenuListItemComponent. (Quite a mouthful\n * of a sentence, but it's exactly how it works.)\n */\n highlightUrlMenuItem(url: string) {\n // Remove baseUrl from our url-to-SPMatMenuListItem matching logic\n const baseUrl = this.baseUrl.startsWith('/') ? this.baseUrl.substring(1) : this.baseUrl;\n const baseUrlIndex = url.search(baseUrl);\n if (baseUrlIndex != -1) {\n url = url.substring(baseUrlIndex+baseUrl.length);\n }\n\n // Filter out empty strings so that we avoid a pointless iteration of the\n // menuItemComps() array.\n const urlParts = url.split('/').filter(u => !!u);\n url = urlParts.join('/');\n // console.log(`highlightCurrentUrlMenuItem - baseUrl: ${this.baseUrl} url: ${url}, urlParts: ${urlParts}`);\n let highlightedItemFound = false;\n\n // Function to find the NavItem for for the given url. Returns a NavItem\n // if a matching NavItem is found, undefined otherwise.\n const findNavItemForUrl = (baseUrl: string, navItem: NavItem): NavItem|undefined => {\n let matchingItem: NavItem|undefined = undefined;\n if (navItem.children) {\n for (let index = 0; !matchingItem && index < navItem.children.length; index++) {\n matchingItem = findNavItemForUrl(baseUrl + (navItem?.route ?? ''), navItem.children[index]);\n }\n } else if (navItem.route) {\n if (url === navItem.route) {\n matchingItem = navItem;\n }\n }\n return matchingItem;\n }\n\n let matchingNavItem: NavItem|undefined = undefined;\n for (let index = 0; !matchingNavItem && index < this.menuItemComps().length; index++) {\n const element = this.menuItemComps()[index];\n if (element?.item) {\n matchingNavItem = findNavItemForUrl(url, element?.item);\n }\n }\n\n // Function to find the SPMatMenuListItemComponent for the given NavItem.\n // Returns SPMatMenuListItemComponent if a match is found, undefined\n // otherwise.\n const findMenuItemCompForNavItem = (\n menuItemComp: SPMatMenuListItemComponent,\n target: NavItem\n ): SPMatMenuListItemComponent | undefined => {\n let matchingMenuItemComp: SPMatMenuListItemComponent | undefined = undefined;\n if (menuItemComp.item === target) {\n matchingMenuItemComp = menuItemComp;\n } else if (menuItemComp.item?.children) {\n for (let index = 0; !matchingMenuItemComp && index < menuItemComp.children.length; index++) {\n matchingMenuItemComp = findMenuItemCompForNavItem(menuItemComp.children.get(index)!, target);\n }\n }\n return matchingMenuItemComp;\n };\n\n let matchingMenuItemComp: SPMatMenuListItemComponent | undefined = undefined;\n if (matchingNavItem) {\n for (let index = 0; !matchingMenuItemComp && index < this.menuItemComps().length; index++) {\n const element = this.menuItemComps()[index];\n matchingMenuItemComp = findMenuItemCompForNavItem(this.menuItemComps()[index], matchingNavItem);\n }\n }\n\n if (matchingMenuItemComp) {\n this.highlightMenuItemComp(matchingMenuItemComp);\n }\n\n // old logic, which is a little confusing and depends on state stored\n // in SPMatMenuListItemComponent.\n /*\n for (let index = 0; !highlightedItemFound && index < urlParts.length; index++) {\n const lastUrlSegment = urlParts[index];\n this.menuItemComps().find(menuItemComp => {\n const route = menuItemComp.item?.route;\n if (route === lastUrlSegment) {\n if (!menuItemComp.item?.children) {\n menuItemComp.toggleHighlight(true);\n highlightedItemFound = true;\n } else if (menuItemComp.checkChildrenForHighlight(lastUrlSegment)) {\n menuItemComp.expand();\n highlightedItemFound = true;\n }\n } else {\n menuItemComp.toggleHighlight(false);\n if (menuItemComp.item?.children) {\n if (menuItemComp.checkChildrenForHighlight(lastUrlSegment)) {\n menuItemComp.expand();\n highlightedItemFound = true\n };\n }\n }\n });\n }\n */\n }\n\n // To keep track of current highlighted SPMatMenuListItemComponent.\n private _curHighlitedMenuItemComp!: SPMatMenuListItemComponent|undefined;\n highlightMenuItemComp(menuItemComp: SPMatMenuListItemComponent) {\n // Deslect currently highliged SPMatMenuListItemComponent if it's different\n // from the menuItemComp arg.\n const lastHighlitedMenuItemComp = this._curHighlitedMenuItemComp;\n if (this._curHighlitedMenuItemComp && this._curHighlitedMenuItemComp !== menuItemComp) {\n this._curHighlitedMenuItemComp.toggleHighlight(false);\n this._curHighlitedMenuItemComp = undefined;\n }\n menuItemComp.toggleHighlight(true);\n if (lastHighlitedMenuItemComp && lastHighlitedMenuItemComp?.parent) {\n lastHighlitedMenuItemComp.parent.collapse();\n }\n if (menuItemComp.parent) {\n menuItemComp.parent.expand();\n }\n this._curHighlitedMenuItemComp = menuItemComp;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { LayoutService, SideMenuLayoutProps } from './layout.service';\nimport { NavItem } from './nav-item';\n\n@Component({\n selector: 'sp-mat-menu-layout',\n template: `\n <mat-sidenav-container class=\"layout-container\">\n <mat-sidenav\n class=\"layout-menu-pane\"\n opened\n #menuNav\n [mode]=\"layout.smallScreen ? 'over' : 'side'\"\n [opened]=\"!layout.smallScreen\"\n [fixedInViewport]=\"layout.smallScreen\"\n >\n <div class=\"layout-menu-container\">\n <ngx-mat-menu-pane\n [baseUrl]=\"baseUrl\"\n [showBackButton]=\"showBackButton\"\n [showIcons]=\"showIcons\"\n [defaultBackButtonHref]=\"defaultBackButtonHref\"\n [backButtonText]=\"backButtonText\"\n [brandingImage]=\"brandingImage\"\n [brandingText]=\"brandingText\"\n [menuItems]=\"menuItems\"\n [matSideNav]=\"menuNav\"\n [menuPaneFooterContent]=\"menuPaneFooterContent\"\n [menuTitle]=\"menuTitle\"\n class=\"h-100\"\n ></ngx-mat-menu-pane>\n </div>\n </mat-sidenav>\n\n <mat-sidenav\n [ngStyle]=\"{\n 'min-width.px': infoPaneMinWidth,\n 'max-width.px': infoPaneMaxWidth\n }\"\n #infoPane\n closed\n mode=\"over\"\n position=\"end\"\n >\n <ng-container *ngTemplateOutlet=\"infoPaneContent\"></ng-container>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"layout-content\">\n <mat-toolbar class=\"layout-content-toolbar\">\n <button mat-icon-button (click)=\"onToggleMenuPane()\">\n <mat-icon>menu</mat-icon>\n </button>\n <ng-template #defaultToolbarTitle>\n <h4>{{ appTitle }}</h4>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n toolbarTitleContent ? toolbarTitleContent : defaultToolbarTitle\n \"\n ></ng-container>\n <span class=\"spacer\"></span>\n <ng-container *ngTemplateOutlet=\"toolbarEndContent\"></ng-container>\n </mat-toolbar>\n <div class=\"layout-content-content\" [class]=\"contentContainerClass\">\n <router-outlet></router-outlet>\n </div>\n </mat-sidenav-content>\n </mat-sidenav-container>\n `,\n styles: [\n `\n .layout-menu-pane {\n background-color: var(--sp-mat-menu-bg-color) !important;\n color: var(--sp-mat-menu-fg-color) !important;\n }\n .layout-container {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n .layout-menu-container {\n height: 100%;\n max-width: var(--sp-mat-menu-sidemenu-max-width, 50%);\n min-width: var(--sp-mat-menu-sidemenu-min-width, 250px);\n text-wrap: nowrap;\n overflow-x: scroll;\n overflow-y: scroll;\n }\n .layout-content {\n height: 100vh;\n display: flex;\n flex-direction: column;\n }\n .layout-content-toolbar {\n border-bottom: 1px solid var(--sp-mat-menu-toolbar-border-color);\n flex-grow: 0;\n background-color: var(--sp-mat-menu-toolbar-bg-color);\n color: var(--sp-mat-menu-toolbar-fg-color);\n padding: 0 0;\n min-height: var(--mat-toolbar-standard-height);\n max-height: var(--mat-toolbar-standard-height);\n }\n .layout-content-content {\n flex-grow: 1;\n overflow: hidden;\n }\n .h-100 {\n height: 100%;\n }\n .spacer {\n flex: 1 1 auto;\n }\n `,\n ],\n // Add this style to make the content-container scroll from within.\n // That is override the window scrolling with the content div private\n // scroller.\n // .content-container {\n // overflow-x: scroll;\n // overflow-y: scroll;\n // }\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SPMatMenuLayoutComponent implements OnInit, OnDestroy {\n @ViewChild('menuNav') menuNav!: MatSidenav;\n layout!: SideMenuLayoutProps;\n destroy = new Subject<void>();\n containerHeight: number = 500;\n topBottomPadding: number = 6;\n @Input() baseUrl = '';\n @Input() showBackButton: boolean = false;\n @Input() defaultBackButtonHref: string = '';\n @Input() backButtonText: string = 'BACK';\n @Input() brandingImage: string = '';\n @Input() brandingText: string = '';\n @Input() appTitle: string = '';\n @Input() menuTitle: string = '';\n @Input() menuItems: NavItem[] = [];\n // Template Partials for configurable portions of the layout\n @Input() menuPaneFooterContent!: TemplateRef<any>;\n @Input() toolbarEndContent!: TemplateRef<any>;\n @Input() infoPaneContent!: TemplateRef<any>;\n @Input() toolbarTitleContent!: TemplateRef<any>;\n // Width of the info pane on the right (or left for LTR) of the screen.\n @Input() infoPaneMinWidth: number = 250;\n @Input() infoPaneMaxWidth: number = 400;\n @Input() contentContainerClass: string = '';\n @Input() showIcons: boolean = true;\n // Allows querying infoPane to activate it or to set its attributes\n @ViewChild('infoPane') readonly infoPane!: MatSidenav;\n\n constructor(\n private layoutService: LayoutService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.layoutService.layoutChanged\n .pipe(\n takeUntil(this.destroy),\n tap((newLayout: SideMenuLayoutProps) => {\n this.layout = newLayout;\n this.containerHeight =\n window.innerHeight -\n (newLayout.toolbarHeight + this.topBottomPadding * 2);\n this.cdr.detectChanges();\n })\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy.next();\n this.destroy.complete();\n }\n\n onToggleMenuPane() {\n if (this.menuNav) {\n this.menuNav.toggle();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatListModule } from '@angular/material/list';\nimport { RouterOutlet } from '@angular/router';\nimport { SPMatMenuLayoutComponent } from './mat-menu-layout.component';\nimport { SPMatMenuListItemComponent } from './mat-menu-list-item.component';\nimport { SPMatMenuPaneComponent } from './mat-menu-pane.component';\n\n@NgModule({\n declarations: [SPMatMenuPaneComponent, SPMatMenuListItemComponent, SPMatMenuLayoutComponent],\n imports: [\n CommonModule,\n RouterOutlet,\n MatSidenavModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatDialogModule,\n MatListModule\n ],\n exports: [SPMatMenuPaneComponent, SPMatMenuListItemComponent, SPMatMenuLayoutComponent],\n})\nexport class SPMatMenuLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i1.LayoutService","i4","i5.SPMatMenuListItemComponent","i3","i5","i6","i8.SPMatMenuPaneComponent"],"mappings":"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"}