@smallpearl/ngx-helper 20.0.3 → 20.0.4

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 (57) hide show
  1. package/fesm2022/smallpearl-ngx-helper-entities.mjs +3 -3
  2. package/fesm2022/smallpearl-ngx-helper-entities.mjs.map +1 -1
  3. package/fesm2022/smallpearl-ngx-helper-entity-field.mjs.map +1 -1
  4. package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs +3 -3
  5. package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs.map +1 -1
  6. package/fesm2022/smallpearl-ngx-helper-locale.mjs +6 -6
  7. package/fesm2022/smallpearl-ngx-helper-locale.mjs.map +1 -1
  8. package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs +9 -9
  9. package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs.map +1 -1
  10. package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs +3 -3
  11. package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs.map +1 -1
  12. package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs +17 -17
  13. package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs.map +1 -1
  14. package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs +30 -45
  15. package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs.map +1 -1
  16. package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs +21 -21
  17. package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs.map +1 -1
  18. package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs +15 -15
  19. package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs.map +1 -1
  20. package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs +106 -115
  21. package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs.map +1 -1
  22. package/fesm2022/smallpearl-ngx-helper-mat-select-infinite-scroll.mjs +6 -6
  23. package/fesm2022/smallpearl-ngx-helper-mat-select-infinite-scroll.mjs.map +1 -1
  24. package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs +166 -140
  25. package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs.map +1 -1
  26. package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs +38 -36
  27. package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs.map +1 -1
  28. package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs +6 -6
  29. package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs.map +1 -1
  30. package/fesm2022/smallpearl-ngx-helper-utils.mjs +23 -0
  31. package/fesm2022/smallpearl-ngx-helper-utils.mjs.map +1 -0
  32. package/fesm2022/smallpearl-ngx-helper.mjs +2 -7
  33. package/fesm2022/smallpearl-ngx-helper.mjs.map +1 -1
  34. package/package.json +24 -24
  35. package/{mat-select-entity/index.d.ts → types/smallpearl-ngx-helper-mat-select-entity.d.ts} +2 -1
  36. package/types/smallpearl-ngx-helper-utils.d.ts +6 -0
  37. package/types/smallpearl-ngx-helper.d.ts +3 -0
  38. package/core/index.d.ts +0 -3
  39. package/fesm2022/smallpearl-ngx-helper-core.mjs +0 -8
  40. package/fesm2022/smallpearl-ngx-helper-core.mjs.map +0 -1
  41. package/index.d.ts +0 -4
  42. /package/{entities/index.d.ts → types/smallpearl-ngx-helper-entities.d.ts} +0 -0
  43. /package/{entity-field/index.d.ts → types/smallpearl-ngx-helper-entity-field.d.ts} +0 -0
  44. /package/{forms/index.d.ts → types/smallpearl-ngx-helper-forms.d.ts} +0 -0
  45. /package/{hover-dropdown/index.d.ts → types/smallpearl-ngx-helper-hover-dropdown.d.ts} +0 -0
  46. /package/{locale/index.d.ts → types/smallpearl-ngx-helper-locale.d.ts} +0 -0
  47. /package/{mat-busy-wheel/index.d.ts → types/smallpearl-ngx-helper-mat-busy-wheel.d.ts} +0 -0
  48. /package/{mat-context-menu/index.d.ts → types/smallpearl-ngx-helper-mat-context-menu.d.ts} +0 -0
  49. /package/{mat-entity-crud/index.d.ts → types/smallpearl-ngx-helper-mat-entity-crud.d.ts} +0 -0
  50. /package/{mat-entity-list/index.d.ts → types/smallpearl-ngx-helper-mat-entity-list.d.ts} +0 -0
  51. /package/{mat-file-input/index.d.ts → types/smallpearl-ngx-helper-mat-file-input.d.ts} +0 -0
  52. /package/{mat-form-error/index.d.ts → types/smallpearl-ngx-helper-mat-form-error.d.ts} +0 -0
  53. /package/{mat-select-infinite-scroll/index.d.ts → types/smallpearl-ngx-helper-mat-select-infinite-scroll.d.ts} +0 -0
  54. /package/{mat-side-menu-layout/index.d.ts → types/smallpearl-ngx-helper-mat-side-menu-layout.d.ts} +0 -0
  55. /package/{mat-tel-input/index.d.ts → types/smallpearl-ngx-helper-mat-tel-input.d.ts} +0 -0
  56. /package/{sideload/index.d.ts → types/smallpearl-ngx-helper-sideload.d.ts} +0 -0
  57. /package/{stationary-with-line-items/index.d.ts → types/smallpearl-ngx-helper-stationary-with-line-items.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"smallpearl-ngx-helper-mat-busy-wheel.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel.component.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel.service.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel-op.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/host-busy-wheel-directive-base.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/host-busy-wheel.directive.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/smallpearl-ngx-helper-mat-busy-wheel.ts"],"sourcesContent":["import { Component, ElementRef, input, OnDestroy, OnInit } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'sp-mat-busy-wheel',\n imports: [MatProgressSpinnerModule],\n template: `\n <div class=\"busy-wheel-wrapper\">\n <span>\n <div class=\"busy-wheel-container\" id=\"{{ wheelId() }}\">\n <!--\n We can replace mat-spinner with the following div, which will\n remove the MatProgressSpinnerModule dependency. But the downside is\n that the spinner will not follow the global material theme.\n <div class=\"busy-wheel\"></div>\n -->\n <mat-spinner mode=\"indeterminate\" diameter=\"32\"></mat-spinner>\n </div>\n </span>\n </div>\n `,\n styles: [\n `\n .busy-wheel-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n z-index: 9999999;\n background-color: rgba(255, 255, 255, 0.35);\n }\n .busy-wheel-container {\n display: flex;\n position: relative;\n top: 0;\n height: 100%;\n width: 100%;\n }\n `\n ]\n})\nexport class SPMatBusyWheelComponent implements OnInit, OnDestroy {\n wheelId = input('id_busy-wheel');\n viewport = input(false);\n\n constructor(public elRef: ElementRef) {}\n\n ngOnInit() {}\n\n ngOnDestroy() {}\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { SPMatBusyWheelComponent } from './busy-wheel.component';\nimport { SPMatHostBusyWheelDirectiveBase } from './host-busy-wheel-directive-base';\n// import { SPMatHostBusyWheelDirective } from './host-busy-wheel.directive';\n\nconst BACKDROP_DIV_ID = 'id_busy-wheel-backdrop';\nconst BUSY_WHEEL_DIV_ID = 'id_busy-wheel';\n\nconst VIEWPORT_BUSY_WHEEL_STYLE_ID = 'id_viewport_busy_wheel_style';\nconst VIEWPORT_BUSY_WHEEL_STYLE = `\n .busy-wheel-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n z-index: 9999999;\n background-color: rgba(255, 255, 255, 0.35);\n }\n .busy-wheel-container {\n display: flex;\n position: relative;\n top: 0;\n height: 100%;\n width: 100%;\n }\n .busy-wheel,\n .busy-wheel:after {\n border-radius: 50%;\n width: 4em;\n height: 4em;\n }\n .busy-wheel {\n margin: auto auto;\n font-size: 8px;\n position: relative;\n text-indent: -9999em;\n border-top: 0.5em solid rgba(0, 0, 0, 0.8);\n border-right: 0.5em solid rgba(0, 0, 0, 0.8);\n border-bottom: 0.5em solid rgba(0, 0, 0, 0.8);\n border-left: 0.5em solid #ffffff;\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load8 1.1s infinite linear;\n animation: load8 1.1s infinite linear;\n }\n @-webkit-keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n @keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n`;\nconst VIEWPORT_BUSY_WHEEL_FRAGMENT_TEMPLATE = `\n<div class=\"busy-wheel-wrapper\" id=\"{wheelId}\">\n <div class=\"{containerClass}\" style=\"display: flex; position: relative; top: 0; width: 100vw; height: 100vh; z-index: 9999999;\">\n <div class=\"busy-wheel\"></div>\n </div>\n</div>\n`;\n\ninterface StyleInfo {\n style: string;\n value: string | number;\n}\n\ninterface WheelData {\n component: ComponentRef<SPMatBusyWheelComponent>;\n oldStyles: Array<{ style: string; value: string | number }>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BusyWheelService {\n private defaultBusyWheelDir!: SPMatHostBusyWheelDirectiveBase;\n private namedBusyWheelDirs = new Map<\n string,\n Array<SPMatHostBusyWheelDirectiveBase>\n >();\n private wheelComponents = new Map<string, WheelData>();\n\n static s_instance: BusyWheelService;\n\n constructor() {}\n\n static getInstance(): BusyWheelService {\n if (!this.s_instance) {\n this.s_instance = new BusyWheelService();\n }\n return this.s_instance;\n }\n\n show(id?: string) {\n if (id) {\n const idParts = id.split(',');\n idParts.forEach((id) => {\n const trimmedId = id.trim();\n const busyWheelDirs = this.namedBusyWheelDirs.get(trimmedId);\n if (busyWheelDirs) {\n const containers = Array.isArray(busyWheelDirs)\n ? busyWheelDirs\n : [busyWheelDirs];\n containers.forEach((busyWheelDir, index) => {\n const wheelId = `${trimmedId}_${index}`;\n //console.log(`showing busy-wheel: ${wheelId} for busyWheel: ${busyWheelDir.hostBusyWheel}`);\n const busyWheelComponentRef = busyWheelDir\n .getViewContainerRef()\n .createComponent<SPMatBusyWheelComponent>(\n SPMatBusyWheelComponent,\n );\n busyWheelComponentRef.setInput('wheelId', wheelId);\n // Append the component as a child of the element with hostBusyWheel directive.\n busyWheelDir\n .getRenderer2()\n .appendChild(\n busyWheelDir.getViewContainerRef().element.nativeElement,\n busyWheelComponentRef.injector.get(SPMatBusyWheelComponent)\n .elRef.nativeElement,\n );\n // Save the position explicit css style of the element if one was set\n let oldStyles = new Array<StyleInfo>();\n if (\n busyWheelDir.getViewContainerRef().element.nativeElement.style\n .position\n ) {\n oldStyles.push({\n style: 'position',\n value:\n busyWheelDir.getViewContainerRef().element.nativeElement.style\n .position,\n });\n }\n // Set the element's child controls's poisitioning to 'relative'\n busyWheelDir.getViewContainerRef().element.nativeElement.style.position =\n 'relative';\n this.wheelComponents.set(wheelId, {\n component: busyWheelComponentRef,\n oldStyles: [],\n });\n });\n }\n });\n } else {\n // viewport global busy-wheel\n const busyWheel = this.createViewportBusyWheel(\n 'busy-wheel-container',\n undefined,\n );\n const backdrop = this.createBackdrop();\n backdrop.firstChild?.appendChild(busyWheel);\n const viewportBusyWheelStyle = backdrop.querySelector('style');\n if (viewportBusyWheelStyle) {\n document.head.appendChild(viewportBusyWheelStyle);\n }\n const viewportBusyWheelDiv = backdrop.querySelector('body')?.firstChild;\n if (viewportBusyWheelDiv) {\n document.body.appendChild(viewportBusyWheelDiv);\n }\n }\n }\n\n hide(id?: string) {\n if (id) {\n const idParts = id.split(',');\n idParts.forEach((id) => {\n const trimmedId = id.trim();\n const busyWheelDirs = this.namedBusyWheelDirs.get(trimmedId);\n if (busyWheelDirs) {\n const containers = Array.isArray(busyWheelDirs)\n ? busyWheelDirs\n : [busyWheelDirs];\n containers.forEach((busyWheelDir, index) => {\n const wheelId = `${trimmedId}_${index}`;\n const wheelData = this.wheelComponents.get(wheelId);\n if (wheelData) {\n //console.log(`destroying busy-wheel: ${wheelId}`);\n wheelData.component.destroy();\n this.wheelComponents.delete(wheelId);\n if (wheelData?.oldStyles && wheelData.oldStyles.length) {\n // Remove position: relative style that we added\n (\n busyWheelDir.getViewContainerRef().element\n .nativeElement as HTMLElement\n ).style.position = '';\n wheelData.oldStyles.forEach((style) => {\n busyWheelDir.getViewContainerRef().element.nativeElement.style[\n style.style\n ] = style.value;\n });\n }\n }\n // this.removeBusyWheel(wheelId);\n });\n }\n });\n } else {\n // viewport global busy-wheel, remove the entire backdrop, which\n // will also kill the child busy-wheel.\n this.removeViewportBusyWheel();\n }\n }\n\n registerBusyWheelHost(busyWheelDir: SPMatHostBusyWheelDirectiveBase) {\n const id = busyWheelDir.getBusyWheelId();\n if (!id) {\n if (!this.defaultBusyWheelDir) {\n if (!this.defaultBusyWheelDir) {\n this.defaultBusyWheelDir = busyWheelDir;\n }\n }\n } else {\n if (!this.namedBusyWheelDirs.get(id)) {\n //console.log(`registering busyWheelDir with id: ${id}`);\n this.namedBusyWheelDirs.set(id, []);\n }\n this.namedBusyWheelDirs.get(id)?.push(busyWheelDir);\n // this.namedHostViewContainerRefs.set(id, viewContainerRef);\n }\n }\n\n deregisterBusyWheelHost(busyWheelDir: SPMatHostBusyWheelDirectiveBase) {\n const busyWheelId = busyWheelDir.getBusyWheelId();\n if (!busyWheelId) {\n (this.defaultBusyWheelDir as any) = undefined;\n } else {\n //console.log(`deregistering busyWheel with id: ${busyWheelDir.hostBusyWheel}`);\n this.namedBusyWheelDirs.delete(busyWheelId);\n }\n }\n\n // private getContainersFromId(id: string) {\n // let viewContainers = new Array<ViewContainerRef>();\n // if (id) {\n // const idParts = id.split(',');\n // idParts.forEach(id => {\n // const containers = this.namedBusyWheelDirs.get(id.trim());\n // if (containers) {\n // viewContainers = viewContainers.concat(containers);\n // }\n // });\n // } else if (this.defaultBusyWheelDir) {\n // viewContainers.push(this.defaultBusyWheelDir)\n // }\n // return viewContainers;\n // }\n\n /**\n * Creates a div fragment that hosts the busy wheel. The fragment has the following\n * structure:\n *\n * <div id=\"id_busy-wheel_{id}\">\n * <div class=\"{containerClass}\">\n * <!-- <div class=\"busy-wheel\"></div> -->\n * <mat-spinner></mat-spinner>\n * </div>\n * </div>\n * @param containerClass\n * @param id\n * @returns\n */\n private createViewportBusyWheel(\n containerClass: string,\n id: string | undefined,\n ): DocumentFragment {\n let wheelId = BUSY_WHEEL_DIV_ID;\n if (id) {\n wheelId += `_${id}`;\n }\n let template = VIEWPORT_BUSY_WHEEL_FRAGMENT_TEMPLATE;\n const parser = new DOMParser();\n const doc = parser.parseFromString(\n template\n .replace('{wheelId}', wheelId)\n .replace('{containerClass}', containerClass),\n 'text/html',\n );\n const fragment = document.createDocumentFragment();\n fragment.appendChild(doc.documentElement);\n\n // Create the style element\n const style = document.createElement('style');\n style.textContent = VIEWPORT_BUSY_WHEEL_STYLE;\n style.id = VIEWPORT_BUSY_WHEEL_STYLE_ID;\n fragment.querySelector('head')?.appendChild(style);\n\n return fragment;\n }\n\n /**\n * Creates a backdrop overlay, of the same size as the container that it\n * covers, on which the busy wheel will be positioned.\n * @returns\n */\n private createBackdrop() {\n const fragment = document.createDocumentFragment();\n const backdropDiv = document.createElement('div');\n backdropDiv.className = 'busy-wheel-backdrop';\n backdropDiv.setAttribute('id', BACKDROP_DIV_ID);\n fragment.appendChild(backdropDiv);\n return fragment;\n }\n\n private removeViewportBusyWheel(id?: string) {\n let wheelId = BUSY_WHEEL_DIV_ID;\n if (id) {\n wheelId += `_${id}`;\n }\n const body: HTMLElement = document.body;\n const busyWheelDiv = body.querySelector(`div#${wheelId}`);\n if (busyWheelDiv) {\n busyWheelDiv.remove();\n }\n\n // remove the style\n const busyWheelStyle = document.head.querySelector(\n `style#${VIEWPORT_BUSY_WHEEL_STYLE_ID}`,\n );\n if (busyWheelStyle) {\n busyWheelStyle.remove();\n }\n }\n}\n\nexport function registerBusyWheelHost(\n busyWheelDir: SPMatHostBusyWheelDirectiveBase,\n) {\n const instance = BusyWheelService.getInstance();\n instance.registerBusyWheelHost(busyWheelDir);\n}\n\nexport function deregisterBusyWheelHost(\n busyWheelDir: SPMatHostBusyWheelDirectiveBase,\n) {\n const instance = BusyWheelService.getInstance();\n instance.deregisterBusyWheelHost(busyWheelDir);\n}\n\nexport function showBusyWheel(id?: string) {\n const instance = BusyWheelService.getInstance();\n instance.show(id);\n}\n\nexport function hideBusyWheel(id?: string) {\n const instance = BusyWheelService.getInstance();\n instance.hide(id);\n}\n","import { finalize, Observable, tap } from 'rxjs';\nimport { hideBusyWheel, showBusyWheel } from './busy-wheel.service';\n\n/**\n * Returns an rxjs operator that would track an http request status\n * and would use the request status to hide the global busy wheel. The wheel\n * would be hidden when the request completes or errors.\n *\n * Use it like below:\n *\n * this.http.get<User>('https://google.com/..').pipe(\n * trackBusyWheelStatus(),\n * tap(user => this.user = user)\n * ).subscribe();\n *\n * Note that the function internally uses a timer to delay showing the busy\n * wheel. This helps avoid needless screen flicker that can occur when quickly\n * showing & hiding the wheel when the network connection and server response\n * are so good that it can exceed natural user reaction time. We set this\n * delay to 150 milliseconds for now.\n *\n * @param id A string value that uniquely identities the the busy wheel host\n * container within the page. This allows multiple busy wheels to be hosted\n * within a page, each for a distinct network (or time-consuming) operation.\n * This is optional and if not specified, will create a busy wheel that\n * covers the entire app viewport.\n * @param show A boolean value that says whether to show the wheel as\n * part of the operator setup. If set to false, the caller is expected\n * to have displayed the busy wheel explicitly.\n * @param showImmediate A boolean value that decides whether to show the\n * busy wheel immediately. If set to false (default), the busy wheel will\n * only be shown when the HTTP request has not completed within 200ms.\n * @param hideOnNthEmit Number of emits upon which the busy wheel is to\n * be hidden. A value of 0 for this means the wheel is hidden only when\n * the observable completes (errorneously or otherwise).\n * @returns An rxjs op that can be added to the pipe() arg list.\n */\nexport function trackBusyWheelStatus(id?: string, show = true, showImmediate = false, hideOnNthEmit = 0) {\n let timeout: any = null;\n let wheelShown = false;\n if (show) {\n timeout = setTimeout(\n () => {\n showBusyWheel(id);\n wheelShown = true;\n },\n showImmediate ? 0 : 150\n );\n }\n\n return function <T>(source: Observable<T>): Observable<T> {\n let emits = 0;\n const hideFn = () => {\n // console.log('busywheel.hideFn');\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n if (!show || wheelShown) {\n hideBusyWheel(id);\n }\n };\n return source.pipe(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tap((val) => {\n if (hideOnNthEmit > 0 && ++emits == hideOnNthEmit) {\n // console.log(`trackBusyWheelStatus - obs emitted ${hideOnNthEmit} values, hiding`);\n hideFn();\n }\n }),\n finalize(() => {\n // finalize() arg will be invoked upon completion or error\n hideFn();\n })\n );\n };\n}\n\n/**\n * Show a busy wheel until the observable is complete. Busy wheel is shown is either viewport global\n * or localized to the element with the the given id.\n *\n * An example use case for this operator are HTTP requests which will complete no matter\n * what. Either successfully or with an error. Either case will mark the observer as completed.\n *\n * See trackBusyWheelStatus() for explanations on arguments\n *\n * @param id\n * @param showImmediate\n * @returns\n */\nexport function showBusyWheelUntilComplete(id?: string, showImmediate = false) {\n return trackBusyWheelStatus(id, true, showImmediate, 0);\n}\n\n/**\n * Show a busy wheel until the observable emits n number of values. Busy wheel is shown is\n * either viewport global or localized to the element with the the given id.\n *\n * An example use case for this operator are observables that emit but which do not necessarily\n * complete.\n *\n * See trackBusyWheelStatus() for explanations on arguments\n *\n * @param numEmits\n * @param id\n * @param showImmediate\n * @returns\n */\nexport function showBusyWheelUntilEmits(numEmits: number, id?: string, showImmediate = false) {\n return trackBusyWheelStatus(id, true, showImmediate, numEmits);\n}\n","import { Renderer2, ViewContainerRef } from '@angular/core';\n\nexport abstract class SPMatHostBusyWheelDirectiveBase {\n abstract getBusyWheelId(): string | undefined;\n abstract getViewContainerRef(): ViewContainerRef;\n abstract getRenderer2(): Renderer2;\n}\n","import {\n Directive,\n input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n deregisterBusyWheelHost,\n registerBusyWheelHost,\n} from './busy-wheel.service';\nimport { SPMatHostBusyWheelDirectiveBase } from './host-busy-wheel-directive-base';\n\n/**\n * Use this directive with a unique value assigned to it to display a busy\n * wheel over it. This can be used as:-\n *\n * import {showBusyWheelUntilComplete} from '@smallpearl/ngx-helper/mat-busy-wheel';\n *\n * <div spHostBusyWheel='myDivBusyWheel'>\n * ..content\n * </div>\n *\n * Then in your code:\n *\n * obs.pipe(\n * showBusyWheelUntilComplete('myDivBusyWheel'),\n * tap((resp) => {\n * ...\n * })\n * ).subscribe();\n *\n * This will cover the 'div' above when the obs is waiting to be completed.\n * (or error). Note that you can also use the trackBusyWheelStatus() function\n * if you want more control over the busy wheel.\n */\n@Directive({\n selector: '[spHostBusyWheel]',\n standalone: true,\n})\nexport class SPMatHostBusyWheelDirective\n extends SPMatHostBusyWheelDirectiveBase\n implements OnInit, OnDestroy\n{\n spHostBusyWheel = input<string>();\n\n constructor(\n public viewContainerRef: ViewContainerRef,\n public renderer2: Renderer2,\n ) {\n super();\n }\n\n ngOnInit(): void {\n registerBusyWheelHost(this);\n }\n\n ngOnDestroy(): void {\n deregisterBusyWheelHost(this);\n }\n\n getBusyWheelId(): string | undefined {\n return this.spHostBusyWheel();\n }\n\n getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n\n getRenderer2(): Renderer2 {\n return this.renderer2;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smallpearl-ngx-helper-mat-busy-wheel.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel.component.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel.service.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/busy-wheel-op.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/host-busy-wheel-directive-base.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/src/host-busy-wheel.directive.ts","../../../../projects/smallpearl/ngx-helper/mat-busy-wheel/smallpearl-ngx-helper-mat-busy-wheel.ts"],"sourcesContent":["import { Component, ElementRef, input, OnDestroy, OnInit } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@Component({\n selector: 'sp-mat-busy-wheel',\n imports: [MatProgressSpinnerModule],\n template: `\n <div class=\"busy-wheel-wrapper\">\n <span>\n <div class=\"busy-wheel-container\" id=\"{{ wheelId() }}\">\n <!--\n We can replace mat-spinner with the following div, which will\n remove the MatProgressSpinnerModule dependency. But the downside is\n that the spinner will not follow the global material theme.\n <div class=\"busy-wheel\"></div>\n -->\n <mat-spinner mode=\"indeterminate\" diameter=\"32\"></mat-spinner>\n </div>\n </span>\n </div>\n `,\n styles: [\n `\n .busy-wheel-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n z-index: 9999999;\n background-color: rgba(255, 255, 255, 0.35);\n }\n .busy-wheel-container {\n display: flex;\n position: relative;\n top: 0;\n height: 100%;\n width: 100%;\n }\n `\n ]\n})\nexport class SPMatBusyWheelComponent implements OnInit, OnDestroy {\n wheelId = input('id_busy-wheel');\n viewport = input(false);\n\n constructor(public elRef: ElementRef) {}\n\n ngOnInit() {}\n\n ngOnDestroy() {}\n}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport { SPMatBusyWheelComponent } from './busy-wheel.component';\nimport { SPMatHostBusyWheelDirectiveBase } from './host-busy-wheel-directive-base';\n// import { SPMatHostBusyWheelDirective } from './host-busy-wheel.directive';\n\nconst BACKDROP_DIV_ID = 'id_busy-wheel-backdrop';\nconst BUSY_WHEEL_DIV_ID = 'id_busy-wheel';\n\nconst VIEWPORT_BUSY_WHEEL_STYLE_ID = 'id_viewport_busy_wheel_style';\nconst VIEWPORT_BUSY_WHEEL_STYLE = `\n .busy-wheel-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n z-index: 9999999;\n background-color: rgba(255, 255, 255, 0.35);\n }\n .busy-wheel-container {\n display: flex;\n position: relative;\n top: 0;\n height: 100%;\n width: 100%;\n }\n .busy-wheel,\n .busy-wheel:after {\n border-radius: 50%;\n width: 4em;\n height: 4em;\n }\n .busy-wheel {\n margin: auto auto;\n font-size: 8px;\n position: relative;\n text-indent: -9999em;\n border-top: 0.5em solid rgba(0, 0, 0, 0.8);\n border-right: 0.5em solid rgba(0, 0, 0, 0.8);\n border-bottom: 0.5em solid rgba(0, 0, 0, 0.8);\n border-left: 0.5em solid #ffffff;\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load8 1.1s infinite linear;\n animation: load8 1.1s infinite linear;\n }\n @-webkit-keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n @keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n`;\nconst VIEWPORT_BUSY_WHEEL_FRAGMENT_TEMPLATE = `\n<div class=\"busy-wheel-wrapper\" id=\"{wheelId}\">\n <div class=\"{containerClass}\" style=\"display: flex; position: relative; top: 0; width: 100vw; height: 100vh; z-index: 9999999;\">\n <div class=\"busy-wheel\"></div>\n </div>\n</div>\n`;\n\ninterface StyleInfo {\n style: string;\n value: string | number;\n}\n\ninterface WheelData {\n component: ComponentRef<SPMatBusyWheelComponent>;\n oldStyles: Array<{ style: string; value: string | number }>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BusyWheelService {\n private defaultBusyWheelDir!: SPMatHostBusyWheelDirectiveBase;\n private namedBusyWheelDirs = new Map<\n string,\n Array<SPMatHostBusyWheelDirectiveBase>\n >();\n private wheelComponents = new Map<string, WheelData>();\n\n static s_instance: BusyWheelService;\n\n constructor() {}\n\n static getInstance(): BusyWheelService {\n if (!this.s_instance) {\n this.s_instance = new BusyWheelService();\n }\n return this.s_instance;\n }\n\n show(id?: string) {\n if (id) {\n const idParts = id.split(',');\n idParts.forEach((id) => {\n const trimmedId = id.trim();\n const busyWheelDirs = this.namedBusyWheelDirs.get(trimmedId);\n if (busyWheelDirs) {\n const containers = Array.isArray(busyWheelDirs)\n ? busyWheelDirs\n : [busyWheelDirs];\n containers.forEach((busyWheelDir, index) => {\n const wheelId = `${trimmedId}_${index}`;\n //console.log(`showing busy-wheel: ${wheelId} for busyWheel: ${busyWheelDir.hostBusyWheel}`);\n const busyWheelComponentRef = busyWheelDir\n .getViewContainerRef()\n .createComponent<SPMatBusyWheelComponent>(\n SPMatBusyWheelComponent,\n );\n busyWheelComponentRef.setInput('wheelId', wheelId);\n // Append the component as a child of the element with hostBusyWheel directive.\n busyWheelDir\n .getRenderer2()\n .appendChild(\n busyWheelDir.getViewContainerRef().element.nativeElement,\n busyWheelComponentRef.injector.get(SPMatBusyWheelComponent)\n .elRef.nativeElement,\n );\n // Save the position explicit css style of the element if one was set\n let oldStyles = new Array<StyleInfo>();\n if (\n busyWheelDir.getViewContainerRef().element.nativeElement.style\n .position\n ) {\n oldStyles.push({\n style: 'position',\n value:\n busyWheelDir.getViewContainerRef().element.nativeElement.style\n .position,\n });\n }\n // Set the element's child controls's poisitioning to 'relative'\n busyWheelDir.getViewContainerRef().element.nativeElement.style.position =\n 'relative';\n this.wheelComponents.set(wheelId, {\n component: busyWheelComponentRef,\n oldStyles: [],\n });\n });\n }\n });\n } else {\n // viewport global busy-wheel\n const busyWheel = this.createViewportBusyWheel(\n 'busy-wheel-container',\n undefined,\n );\n const backdrop = this.createBackdrop();\n backdrop.firstChild?.appendChild(busyWheel);\n const viewportBusyWheelStyle = backdrop.querySelector('style');\n if (viewportBusyWheelStyle) {\n document.head.appendChild(viewportBusyWheelStyle);\n }\n const viewportBusyWheelDiv = backdrop.querySelector('body')?.firstChild;\n if (viewportBusyWheelDiv) {\n document.body.appendChild(viewportBusyWheelDiv);\n }\n }\n }\n\n hide(id?: string) {\n if (id) {\n const idParts = id.split(',');\n idParts.forEach((id) => {\n const trimmedId = id.trim();\n const busyWheelDirs = this.namedBusyWheelDirs.get(trimmedId);\n if (busyWheelDirs) {\n const containers = Array.isArray(busyWheelDirs)\n ? busyWheelDirs\n : [busyWheelDirs];\n containers.forEach((busyWheelDir, index) => {\n const wheelId = `${trimmedId}_${index}`;\n const wheelData = this.wheelComponents.get(wheelId);\n if (wheelData) {\n //console.log(`destroying busy-wheel: ${wheelId}`);\n wheelData.component.destroy();\n this.wheelComponents.delete(wheelId);\n if (wheelData?.oldStyles && wheelData.oldStyles.length) {\n // Remove position: relative style that we added\n (\n busyWheelDir.getViewContainerRef().element\n .nativeElement as HTMLElement\n ).style.position = '';\n wheelData.oldStyles.forEach((style) => {\n busyWheelDir.getViewContainerRef().element.nativeElement.style[\n style.style\n ] = style.value;\n });\n }\n }\n // this.removeBusyWheel(wheelId);\n });\n }\n });\n } else {\n // viewport global busy-wheel, remove the entire backdrop, which\n // will also kill the child busy-wheel.\n this.removeViewportBusyWheel();\n }\n }\n\n registerBusyWheelHost(busyWheelDir: SPMatHostBusyWheelDirectiveBase) {\n const id = busyWheelDir.getBusyWheelId();\n if (!id) {\n if (!this.defaultBusyWheelDir) {\n if (!this.defaultBusyWheelDir) {\n this.defaultBusyWheelDir = busyWheelDir;\n }\n }\n } else {\n if (!this.namedBusyWheelDirs.get(id)) {\n //console.log(`registering busyWheelDir with id: ${id}`);\n this.namedBusyWheelDirs.set(id, []);\n }\n this.namedBusyWheelDirs.get(id)?.push(busyWheelDir);\n // this.namedHostViewContainerRefs.set(id, viewContainerRef);\n }\n }\n\n deregisterBusyWheelHost(busyWheelDir: SPMatHostBusyWheelDirectiveBase) {\n const busyWheelId = busyWheelDir.getBusyWheelId();\n if (!busyWheelId) {\n (this.defaultBusyWheelDir as any) = undefined;\n } else {\n //console.log(`deregistering busyWheel with id: ${busyWheelDir.hostBusyWheel}`);\n this.namedBusyWheelDirs.delete(busyWheelId);\n }\n }\n\n // private getContainersFromId(id: string) {\n // let viewContainers = new Array<ViewContainerRef>();\n // if (id) {\n // const idParts = id.split(',');\n // idParts.forEach(id => {\n // const containers = this.namedBusyWheelDirs.get(id.trim());\n // if (containers) {\n // viewContainers = viewContainers.concat(containers);\n // }\n // });\n // } else if (this.defaultBusyWheelDir) {\n // viewContainers.push(this.defaultBusyWheelDir)\n // }\n // return viewContainers;\n // }\n\n /**\n * Creates a div fragment that hosts the busy wheel. The fragment has the following\n * structure:\n *\n * <div id=\"id_busy-wheel_{id}\">\n * <div class=\"{containerClass}\">\n * <!-- <div class=\"busy-wheel\"></div> -->\n * <mat-spinner></mat-spinner>\n * </div>\n * </div>\n * @param containerClass\n * @param id\n * @returns\n */\n private createViewportBusyWheel(\n containerClass: string,\n id: string | undefined,\n ): DocumentFragment {\n let wheelId = BUSY_WHEEL_DIV_ID;\n if (id) {\n wheelId += `_${id}`;\n }\n let template = VIEWPORT_BUSY_WHEEL_FRAGMENT_TEMPLATE;\n const parser = new DOMParser();\n const doc = parser.parseFromString(\n template\n .replace('{wheelId}', wheelId)\n .replace('{containerClass}', containerClass),\n 'text/html',\n );\n const fragment = document.createDocumentFragment();\n fragment.appendChild(doc.documentElement);\n\n // Create the style element\n const style = document.createElement('style');\n style.textContent = VIEWPORT_BUSY_WHEEL_STYLE;\n style.id = VIEWPORT_BUSY_WHEEL_STYLE_ID;\n fragment.querySelector('head')?.appendChild(style);\n\n return fragment;\n }\n\n /**\n * Creates a backdrop overlay, of the same size as the container that it\n * covers, on which the busy wheel will be positioned.\n * @returns\n */\n private createBackdrop() {\n const fragment = document.createDocumentFragment();\n const backdropDiv = document.createElement('div');\n backdropDiv.className = 'busy-wheel-backdrop';\n backdropDiv.setAttribute('id', BACKDROP_DIV_ID);\n fragment.appendChild(backdropDiv);\n return fragment;\n }\n\n private removeViewportBusyWheel(id?: string) {\n let wheelId = BUSY_WHEEL_DIV_ID;\n if (id) {\n wheelId += `_${id}`;\n }\n const body: HTMLElement = document.body;\n const busyWheelDiv = body.querySelector(`div#${wheelId}`);\n if (busyWheelDiv) {\n busyWheelDiv.remove();\n }\n\n // remove the style\n const busyWheelStyle = document.head.querySelector(\n `style#${VIEWPORT_BUSY_WHEEL_STYLE_ID}`,\n );\n if (busyWheelStyle) {\n busyWheelStyle.remove();\n }\n }\n}\n\nexport function registerBusyWheelHost(\n busyWheelDir: SPMatHostBusyWheelDirectiveBase,\n) {\n const instance = BusyWheelService.getInstance();\n instance.registerBusyWheelHost(busyWheelDir);\n}\n\nexport function deregisterBusyWheelHost(\n busyWheelDir: SPMatHostBusyWheelDirectiveBase,\n) {\n const instance = BusyWheelService.getInstance();\n instance.deregisterBusyWheelHost(busyWheelDir);\n}\n\nexport function showBusyWheel(id?: string) {\n const instance = BusyWheelService.getInstance();\n instance.show(id);\n}\n\nexport function hideBusyWheel(id?: string) {\n const instance = BusyWheelService.getInstance();\n instance.hide(id);\n}\n","import { finalize, Observable, tap } from 'rxjs';\nimport { hideBusyWheel, showBusyWheel } from './busy-wheel.service';\n\n/**\n * Returns an rxjs operator that would track an http request status\n * and would use the request status to hide the global busy wheel. The wheel\n * would be hidden when the request completes or errors.\n *\n * Use it like below:\n *\n * this.http.get<User>('https://google.com/..').pipe(\n * trackBusyWheelStatus(),\n * tap(user => this.user = user)\n * ).subscribe();\n *\n * Note that the function internally uses a timer to delay showing the busy\n * wheel. This helps avoid needless screen flicker that can occur when quickly\n * showing & hiding the wheel when the network connection and server response\n * are so good that it can exceed natural user reaction time. We set this\n * delay to 150 milliseconds for now.\n *\n * @param id A string value that uniquely identities the the busy wheel host\n * container within the page. This allows multiple busy wheels to be hosted\n * within a page, each for a distinct network (or time-consuming) operation.\n * This is optional and if not specified, will create a busy wheel that\n * covers the entire app viewport.\n * @param show A boolean value that says whether to show the wheel as\n * part of the operator setup. If set to false, the caller is expected\n * to have displayed the busy wheel explicitly.\n * @param showImmediate A boolean value that decides whether to show the\n * busy wheel immediately. If set to false (default), the busy wheel will\n * only be shown when the HTTP request has not completed within 200ms.\n * @param hideOnNthEmit Number of emits upon which the busy wheel is to\n * be hidden. A value of 0 for this means the wheel is hidden only when\n * the observable completes (errorneously or otherwise).\n * @returns An rxjs op that can be added to the pipe() arg list.\n */\nexport function trackBusyWheelStatus(id?: string, show = true, showImmediate = false, hideOnNthEmit = 0) {\n let timeout: any = null;\n let wheelShown = false;\n if (show) {\n timeout = setTimeout(\n () => {\n showBusyWheel(id);\n wheelShown = true;\n },\n showImmediate ? 0 : 150\n );\n }\n\n return function <T>(source: Observable<T>): Observable<T> {\n let emits = 0;\n const hideFn = () => {\n // console.log('busywheel.hideFn');\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n if (!show || wheelShown) {\n hideBusyWheel(id);\n }\n };\n return source.pipe(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tap((val) => {\n if (hideOnNthEmit > 0 && ++emits == hideOnNthEmit) {\n // console.log(`trackBusyWheelStatus - obs emitted ${hideOnNthEmit} values, hiding`);\n hideFn();\n }\n }),\n finalize(() => {\n // finalize() arg will be invoked upon completion or error\n hideFn();\n })\n );\n };\n}\n\n/**\n * Show a busy wheel until the observable is complete. Busy wheel is shown is either viewport global\n * or localized to the element with the the given id.\n *\n * An example use case for this operator are HTTP requests which will complete no matter\n * what. Either successfully or with an error. Either case will mark the observer as completed.\n *\n * See trackBusyWheelStatus() for explanations on arguments\n *\n * @param id\n * @param showImmediate\n * @returns\n */\nexport function showBusyWheelUntilComplete(id?: string, showImmediate = false) {\n return trackBusyWheelStatus(id, true, showImmediate, 0);\n}\n\n/**\n * Show a busy wheel until the observable emits n number of values. Busy wheel is shown is\n * either viewport global or localized to the element with the the given id.\n *\n * An example use case for this operator are observables that emit but which do not necessarily\n * complete.\n *\n * See trackBusyWheelStatus() for explanations on arguments\n *\n * @param numEmits\n * @param id\n * @param showImmediate\n * @returns\n */\nexport function showBusyWheelUntilEmits(numEmits: number, id?: string, showImmediate = false) {\n return trackBusyWheelStatus(id, true, showImmediate, numEmits);\n}\n","import { Renderer2, ViewContainerRef } from '@angular/core';\n\nexport abstract class SPMatHostBusyWheelDirectiveBase {\n abstract getBusyWheelId(): string | undefined;\n abstract getViewContainerRef(): ViewContainerRef;\n abstract getRenderer2(): Renderer2;\n}\n","import {\n Directive,\n input,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n deregisterBusyWheelHost,\n registerBusyWheelHost,\n} from './busy-wheel.service';\nimport { SPMatHostBusyWheelDirectiveBase } from './host-busy-wheel-directive-base';\n\n/**\n * Use this directive with a unique value assigned to it to display a busy\n * wheel over it. This can be used as:-\n *\n * import {showBusyWheelUntilComplete} from '@smallpearl/ngx-helper/mat-busy-wheel';\n *\n * <div spHostBusyWheel='myDivBusyWheel'>\n * ..content\n * </div>\n *\n * Then in your code:\n *\n * obs.pipe(\n * showBusyWheelUntilComplete('myDivBusyWheel'),\n * tap((resp) => {\n * ...\n * })\n * ).subscribe();\n *\n * This will cover the 'div' above when the obs is waiting to be completed.\n * (or error). Note that you can also use the trackBusyWheelStatus() function\n * if you want more control over the busy wheel.\n */\n@Directive({\n selector: '[spHostBusyWheel]',\n standalone: true,\n})\nexport class SPMatHostBusyWheelDirective\n extends SPMatHostBusyWheelDirectiveBase\n implements OnInit, OnDestroy\n{\n spHostBusyWheel = input<string>();\n\n constructor(\n public viewContainerRef: ViewContainerRef,\n public renderer2: Renderer2,\n ) {\n super();\n }\n\n ngOnInit(): void {\n registerBusyWheelHost(this);\n }\n\n ngOnDestroy(): void {\n deregisterBusyWheelHost(this);\n }\n\n getBusyWheelId(): string | undefined {\n return this.spHostBusyWheel();\n }\n\n getViewContainerRef(): ViewContainerRef {\n return this.viewContainerRef;\n }\n\n getRenderer2(): Renderer2 {\n return this.renderer2;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -73,8 +73,8 @@ class SPMatContextMenuComponent {
73
73
  itemDisabled(menuItem) {
74
74
  return menuItem?.disable && menuItem.disable(this.contextData());
75
75
  }
76
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
77
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SPMatContextMenuComponent, isStandalone: true, selector: "sp-mat-context-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, menuIconName: { classPropertyName: "menuIconName", publicName: "menuIconName", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: true, isRequired: false, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], ngImport: i0, template: `
76
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
77
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: SPMatContextMenuComponent, isStandalone: true, selector: "sp-mat-context-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, menuIconName: { classPropertyName: "menuIconName", publicName: "menuIconName", isSignal: true, isRequired: false, transformFunction: null }, enableHover: { classPropertyName: "enableHover", publicName: "enableHover", isSignal: true, isRequired: false, transformFunction: null }, contextData: { classPropertyName: "contextData", publicName: "contextData", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true, isSignal: true }], ngImport: i0, template: `
78
78
  <button
79
79
  #menuTrigger
80
80
  mat-icon-button
@@ -122,7 +122,7 @@ class SPMatContextMenuComponent {
122
122
  </mat-menu>
123
123
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: HoverDropDownDirective, selector: "[hoverDropDown]", inputs: ["hoverTrigger", "menu"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatContextMenuComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatContextMenuComponent, decorators: [{
126
126
  type: Component,
127
127
  args: [{
128
128
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"smallpearl-ngx-helper-mat-context-menu.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-context-menu/src/mat-context-menu.component.ts","../../../../projects/smallpearl/ngx-helper/mat-context-menu/smallpearl-ngx-helper-mat-context-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n input,\n OnInit,\n Output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';\n\n/**\n * Describes each item in the context menu.\n */\nexport interface SPContextMenuItem {\n // Menu item label\n label: string;\n // Menu icon, A material icon\n icon?: string;\n // Angular route to navigate to when the menu item is selected.\n route?: string | string[];\n // Argument to the (selected) event when this menu item is selected\n // by the user and the corresponding ContextMenuItem does not have a\n // 'route' property value.\n role?: string;\n // Whether the menu item should be disabled\n disable?: (arg: any) => boolean;\n}\n\n@Component({\n imports: [\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n HoverDropDownDirective,\n ],\n selector: 'sp-mat-context-menu',\n template: `\n <button\n #menuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"contextMenu\"\n hoverDropDown\n [menu]=\"contextMenu\"\n (click)=\"$event.stopImmediatePropagation(); showMenu()\"\n >\n @if (menuIconName()) {\n <mat-icon>{{ menuIconName() }}</mat-icon>\n }\n {{ label() }}\n </button>\n <mat-menu #contextMenu=\"matMenu\" [hasBackdrop]=\"hasBackdrop()\">\n @for (menuItem of _menuItems(); track $index) {\n @if (menuItem.role) {\n <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button>\n } @else {\n <div style=\"padding: .2em 0.6em;\">\n <strong>{{ menuItem.label }}</strong>\n </div>\n }\n <!-- <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button> -->\n }\n </mat-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SPMatContextMenuComponent implements OnInit {\n /**\n * The menu items to display. Refer to ContextMenuItem doc for details\n * on the menu items. This can be an array ofSPContextMenuItem objects or\n * a function that returns an array of SPContextMenuItem objects.\n * If it is a function, the function will be called with the contextData\n * as the argument when the user clicks on the menu trigger button.\n */\n menuItems = input.required<SPContextMenuItem[]|((contextData?: any) => SPContextMenuItem[])>();\n\n _menuItems = signal<SPContextMenuItem[]>([])\n /**\n * Label to display for the context menu. If omitted will just show the\n * menuIcon.\n */\n label = input<string>('');\n /**\n * Button icon. defaults to more_vert.\n */\n menuIconName = input<string>('more_vert');\n /**\n * By default the context menu is activated whenever the mouse cursor hovers\n * over the button. Set this to 'true' to disable this feature.\n */\n enableHover = input<boolean>(false);\n /**\n * Context data for menu item disabled callback\n */\n contextData = input<any>();\n /**\n * enable menu backdrop\n */\n hasBackdrop = input<boolean>(false);\n /**\n * Event generated when use selects an item in the context menu. This event\n * is generated only if the context menu item does not specify a route to\n * activate. The string event parameter is ContextMenuItem.role property\n * value.\n */\n @Output() selected = new EventEmitter<string>();\n\n menuTrigger = viewChild(MatMenuTrigger);\n\n constructor() {}\n\n ngOnInit() {}\n\n showMenu() {\n const menuTrigger = this.menuTrigger();\n const menuItems = this.menuItems();\n if (typeof menuItems === 'function') {\n this._menuItems.set(menuItems(this.contextData()));\n } else {\n this._menuItems.set(menuItems);\n }\n if (menuTrigger) {\n menuTrigger.openMenu();\n }\n }\n\n onSelectMenuItem(item: SPContextMenuItem) {\n if (!item.route) {\n this.selected.emit(item?.role || item.label);\n }\n }\n\n itemDisabled(menuItem: SPContextMenuItem) {\n return menuItem?.disable && menuItem.disable(this.contextData());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smallpearl-ngx-helper-mat-context-menu.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-context-menu/src/mat-context-menu.component.ts","../../../../projects/smallpearl/ngx-helper/mat-context-menu/smallpearl-ngx-helper-mat-context-menu.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n input,\n OnInit,\n Output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { HoverDropDownDirective } from '@smallpearl/ngx-helper/hover-dropdown';\n\n/**\n * Describes each item in the context menu.\n */\nexport interface SPContextMenuItem {\n // Menu item label\n label: string;\n // Menu icon, A material icon\n icon?: string;\n // Angular route to navigate to when the menu item is selected.\n route?: string | string[];\n // Argument to the (selected) event when this menu item is selected\n // by the user and the corresponding ContextMenuItem does not have a\n // 'route' property value.\n role?: string;\n // Whether the menu item should be disabled\n disable?: (arg: any) => boolean;\n}\n\n@Component({\n imports: [\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n HoverDropDownDirective,\n ],\n selector: 'sp-mat-context-menu',\n template: `\n <button\n #menuTrigger\n mat-icon-button\n [matMenuTriggerFor]=\"contextMenu\"\n hoverDropDown\n [menu]=\"contextMenu\"\n (click)=\"$event.stopImmediatePropagation(); showMenu()\"\n >\n @if (menuIconName()) {\n <mat-icon>{{ menuIconName() }}</mat-icon>\n }\n {{ label() }}\n </button>\n <mat-menu #contextMenu=\"matMenu\" [hasBackdrop]=\"hasBackdrop()\">\n @for (menuItem of _menuItems(); track $index) {\n @if (menuItem.role) {\n <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button>\n } @else {\n <div style=\"padding: .2em 0.6em;\">\n <strong>{{ menuItem.label }}</strong>\n </div>\n }\n <!-- <button\n mat-menu-item\n [routerLink]=\"menuItem.route ? menuItem.route : undefined\"\n (click)=\"$event.preventDefault(); onSelectMenuItem(menuItem)\"\n [disabled]=\"itemDisabled(menuItem)\"\n >\n @if (menuItem.icon) {\n <mat-icon>{{ menuItem.icon }}</mat-icon>\n }\n {{ menuItem.label }}\n </button> -->\n }\n </mat-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SPMatContextMenuComponent implements OnInit {\n /**\n * The menu items to display. Refer to ContextMenuItem doc for details\n * on the menu items. This can be an array ofSPContextMenuItem objects or\n * a function that returns an array of SPContextMenuItem objects.\n * If it is a function, the function will be called with the contextData\n * as the argument when the user clicks on the menu trigger button.\n */\n menuItems = input.required<SPContextMenuItem[]|((contextData?: any) => SPContextMenuItem[])>();\n\n _menuItems = signal<SPContextMenuItem[]>([])\n /**\n * Label to display for the context menu. If omitted will just show the\n * menuIcon.\n */\n label = input<string>('');\n /**\n * Button icon. defaults to more_vert.\n */\n menuIconName = input<string>('more_vert');\n /**\n * By default the context menu is activated whenever the mouse cursor hovers\n * over the button. Set this to 'true' to disable this feature.\n */\n enableHover = input<boolean>(false);\n /**\n * Context data for menu item disabled callback\n */\n contextData = input<any>();\n /**\n * enable menu backdrop\n */\n hasBackdrop = input<boolean>(false);\n /**\n * Event generated when use selects an item in the context menu. This event\n * is generated only if the context menu item does not specify a route to\n * activate. The string event parameter is ContextMenuItem.role property\n * value.\n */\n @Output() selected = new EventEmitter<string>();\n\n menuTrigger = viewChild(MatMenuTrigger);\n\n constructor() {}\n\n ngOnInit() {}\n\n showMenu() {\n const menuTrigger = this.menuTrigger();\n const menuItems = this.menuItems();\n if (typeof menuItems === 'function') {\n this._menuItems.set(menuItems(this.contextData()));\n } else {\n this._menuItems.set(menuItems);\n }\n if (menuTrigger) {\n menuTrigger.openMenu();\n }\n }\n\n onSelectMenuItem(item: SPContextMenuItem) {\n if (!item.route) {\n this.selected.emit(item?.role || item.label);\n }\n }\n\n itemDisabled(menuItem: SPContextMenuItem) {\n return menuItem?.disable && menuItem.disable(this.contextData());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;MA6Fa,yBAAyB,CAAA;AACpC;;;;;;AAMG;AACH,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAoE;AAE9F,IAAA,UAAU,GAAG,MAAM,CAAsB,EAAE,sDAAC;AAC5C;;;AAGG;AACH,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB;;AAEG;AACH,IAAA,YAAY,GAAG,KAAK,CAAS,WAAW,wDAAC;AACzC;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;AACnC;;AAEG;IACH,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AAC1B;;AAEG;AACH,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;AACnC;;;;;AAKG;AACO,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAU;AAE/C,IAAA,WAAW,GAAG,SAAS,CAAC,cAAc,uDAAC;AAEvC,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,QAAQ,KAAI;IAEZ,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC;QACA,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,QAAQ,EAAE;QACxB;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QAC9C;IACF;AAEA,IAAA,YAAY,CAAC,QAA2B,EAAA;AACtC,QAAA,OAAO,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAClE;0HApEW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAyCZ,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1F1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CX,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArDK,YAAY,+QACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,8vBACb,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAoDjB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA1DrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,sBAAsB;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAwCE;+EAEuB,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtIxC;;AAEG;;;;"}
@@ -511,10 +511,10 @@ class SPMatEntityCrudFormBase {
511
511
  }
512
512
  return context;
513
513
  }
514
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudFormBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
515
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", type: SPMatEntityCrudFormBase, isStandalone: false, selector: "_#_sp-mat-entity-crud-form-base_#_", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: false, transformFunction: null }, bridge: { classPropertyName: "bridge", publicName: "bridge", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, entityName: { classPropertyName: "entityName", publicName: "entityName", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, httpReqContext: { classPropertyName: "httpReqContext", publicName: "httpReqContext", isSignal: true, isRequired: false, transformFunction: null }, idKey: { classPropertyName: "idKey", publicName: "idKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ``, isInline: true });
514
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudFormBase, deps: [], target: i0.ɵɵFactoryTarget.Component });
515
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.2", type: SPMatEntityCrudFormBase, isStandalone: false, selector: "_#_sp-mat-entity-crud-form-base_#_", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: false, transformFunction: null }, bridge: { classPropertyName: "bridge", publicName: "bridge", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, entityName: { classPropertyName: "entityName", publicName: "entityName", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, httpReqContext: { classPropertyName: "httpReqContext", publicName: "httpReqContext", isSignal: true, isRequired: false, transformFunction: null }, idKey: { classPropertyName: "idKey", publicName: "idKey", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: ``, isInline: true });
516
516
  }
517
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudFormBase, decorators: [{
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudFormBase, decorators: [{
518
518
  type: Component,
519
519
  args: [{
520
520
  selector: '_#_sp-mat-entity-crud-form-base_#_',
@@ -567,8 +567,8 @@ class SPMatEntityCrudPreviewPaneComponent {
567
567
  onClose() {
568
568
  this.entityCrudComponent().closePreview();
569
569
  }
570
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudPreviewPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
571
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SPMatEntityCrudPreviewPaneComponent, isStandalone: true, selector: "sp-mat-entity-crud-preview-pane", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null }, entityCrudComponent: { classPropertyName: "entityCrudComponent", publicName: "entityCrudComponent", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disableUpdate: { classPropertyName: "disableUpdate", publicName: "disableUpdate", isSignal: true, isRequired: false, transformFunction: null }, hideUpdate: { classPropertyName: "hideUpdate", publicName: "hideUpdate", isSignal: true, isRequired: false, transformFunction: null }, disableDelete: { classPropertyName: "disableDelete", publicName: "disableDelete", isSignal: true, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
570
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudPreviewPaneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
571
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: SPMatEntityCrudPreviewPaneComponent, isStandalone: true, selector: "sp-mat-entity-crud-preview-pane", inputs: { entity: { classPropertyName: "entity", publicName: "entity", isSignal: true, isRequired: true, transformFunction: null }, entityCrudComponent: { classPropertyName: "entityCrudComponent", publicName: "entityCrudComponent", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disableUpdate: { classPropertyName: "disableUpdate", publicName: "disableUpdate", isSignal: true, isRequired: false, transformFunction: null }, hideUpdate: { classPropertyName: "hideUpdate", publicName: "hideUpdate", isSignal: true, isRequired: false, transformFunction: null }, disableDelete: { classPropertyName: "disableDelete", publicName: "disableDelete", isSignal: true, isRequired: false, transformFunction: null }, hideDelete: { classPropertyName: "hideDelete", publicName: "hideDelete", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
572
572
  <div class="preview-wrapper">
573
573
  <mat-toolbar>
574
574
  <mat-toolbar-row>
@@ -611,7 +611,7 @@ class SPMatEntityCrudPreviewPaneComponent {
611
611
  </div>
612
612
  `, isInline: true, styles: [".preview-wrapper{display:flex;flex-direction:column;height:100%!important;width:100%!important}mat-toolbar{background-color:var(--mat-sys-surface-variant)}.spacer{flex:1 1 auto}.preview-content{padding:.4em;flex-grow:1;overflow:scroll}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
613
613
  }
614
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudPreviewPaneComponent, decorators: [{
614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudPreviewPaneComponent, decorators: [{
615
615
  type: Component,
616
616
  args: [{ imports: [MatToolbarModule, MatButtonModule, MatIconModule], selector: 'sp-mat-entity-crud-preview-pane', template: `
617
617
  <div class="preview-wrapper">
@@ -709,7 +709,7 @@ class FormViewHostComponent {
709
709
  title = signal(undefined, ...(ngDevMode ? [{ debugName: "title" }] : []));
710
710
  params = signal(undefined, ...(ngDevMode ? [{ debugName: "params" }] : []));
711
711
  clientFormView;
712
- vc = viewChild('clientFormContainer', ...(ngDevMode ? [{ debugName: "vc", read: ViewContainerRef }] : [{ read: ViewContainerRef }]));
712
+ vc = viewChild('clientFormContainer', { ...(ngDevMode ? { debugName: "vc" } : {}), read: ViewContainerRef });
713
713
  config;
714
714
  sub$ = new Subscription();
715
715
  transloco = inject(TranslocoService);
@@ -810,8 +810,8 @@ class FormViewHostComponent {
810
810
  this.destroyClientView();
811
811
  }
812
812
  }
813
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormViewHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
814
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FormViewHostComponent, isStandalone: true, selector: "sp-create-edit-entity-host", inputs: { entityCrudComponentBase: { classPropertyName: "entityCrudComponentBase", publicName: "entityCrudComponentBase", isSignal: true, isRequired: true, transformFunction: null }, clientViewTemplate: { classPropertyName: "clientViewTemplate", publicName: "clientViewTemplate", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["clientFormContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
813
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: FormViewHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
814
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: FormViewHostComponent, isStandalone: true, selector: "sp-create-edit-entity-host", inputs: { entityCrudComponentBase: { classPropertyName: "entityCrudComponentBase", publicName: "entityCrudComponentBase", isSignal: true, isRequired: true, transformFunction: null }, clientViewTemplate: { classPropertyName: "clientViewTemplate", publicName: "clientViewTemplate", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["clientFormContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
815
815
  <div
816
816
  [class]="
817
817
  'sp-mat-crud-form-wrapper ' +
@@ -852,7 +852,7 @@ class FormViewHostComponent {
852
852
  </div>
853
853
  `, isInline: true, styles: [".sp-mat-crud-form-wrapper{width:100%!important;height:100%!important}.sp-mat-crud-form-content{height:100%;width:100%;display:flex;flex-direction:column;padding:.4em}.create-edit-topbar{display:flex;flex-direction:row;align-items:center;min-height:48px;padding:.4em}.form-container{padding-top:.4em;flex-grow:1;overflow:auto}.create-edit-topbar .title{font-size:1.5em;font-weight:500}.create-edit-topbar .spacer{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: SPMatHostBusyWheelDirective, selector: "[spHostBusyWheel]", inputs: ["spHostBusyWheel"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
854
854
  }
855
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FormViewHostComponent, decorators: [{
855
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: FormViewHostComponent, decorators: [{
856
856
  type: Component,
857
857
  args: [{ imports: [
858
858
  CommonModule,
@@ -903,7 +903,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
903
903
  }], ctorParameters: () => [], propDecorators: { entityCrudComponentBase: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityCrudComponentBase", required: true }] }], clientViewTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientViewTemplate", required: false }] }], vc: [{ type: i0.ViewChild, args: ['clientFormContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
904
904
 
905
905
  class PreviewHostComponent {
906
- vc = viewChild('previewComponent', ...(ngDevMode ? [{ debugName: "vc", read: ViewContainerRef }] : [{ read: ViewContainerRef }]));
906
+ vc = viewChild('previewComponent', { ...(ngDevMode ? { debugName: "vc" } : {}), read: ViewContainerRef });
907
907
  entityCrudComponentBase = input.required(...(ngDevMode ? [{ debugName: "entityCrudComponentBase" }] : []));
908
908
  clientViewTemplate = input(null, ...(ngDevMode ? [{ debugName: "clientViewTemplate" }] : []));
909
909
  entity = signal(undefined, ...(ngDevMode ? [{ debugName: "entity" }] : []));
@@ -957,10 +957,10 @@ class PreviewHostComponent {
957
957
  this.clientView = null;
958
958
  }
959
959
  }
960
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
961
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", type: PreviewHostComponent, isStandalone: true, selector: "sp-entity-crud-preview-host", inputs: { entityCrudComponentBase: { classPropertyName: "entityCrudComponentBase", publicName: "entityCrudComponentBase", isSignal: true, isRequired: true, transformFunction: null }, clientViewTemplate: { classPropertyName: "clientViewTemplate", publicName: "clientViewTemplate", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["previewComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: ` <ng-container #previewComponent></ng-container> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
960
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PreviewHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
961
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.2", type: PreviewHostComponent, isStandalone: true, selector: "sp-entity-crud-preview-host", inputs: { entityCrudComponentBase: { classPropertyName: "entityCrudComponentBase", publicName: "entityCrudComponentBase", isSignal: true, isRequired: true, transformFunction: null }, clientViewTemplate: { classPropertyName: "clientViewTemplate", publicName: "clientViewTemplate", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "vc", first: true, predicate: ["previewComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: ` <ng-container #previewComponent></ng-container> `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
962
962
  }
963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewHostComponent, decorators: [{
963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: PreviewHostComponent, decorators: [{
964
964
  type: Component,
965
965
  args: [{
966
966
  imports: [],
@@ -1843,8 +1843,8 @@ class SPMatEntityCrudComponent extends SPMatEntityListComponent {
1843
1843
  spEntitiesList.loadMoreEntities();
1844
1844
  }
1845
1845
  }
1846
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudComponent, deps: [{ token: i1$1.HttpClient }, { token: i2$1.MatSnackBar }, { token: i3$2.DomSanitizer }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1847
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SPMatEntityCrudComponent, isStandalone: true, selector: "sp-mat-entity-crud", inputs: { itemLabel: { classPropertyName: "itemLabel", publicName: "itemLabel", isSignal: true, isRequired: false, transformFunction: null }, itemLabelPlural: { classPropertyName: "itemLabelPlural", publicName: "itemLabelPlural", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, newItemLink: { classPropertyName: "newItemLink", publicName: "newItemLink", isSignal: true, isRequired: false, transformFunction: null }, newItemLabel: { classPropertyName: "newItemLabel", publicName: "newItemLabel", isSignal: true, isRequired: false, transformFunction: null }, editItemTitle: { classPropertyName: "editItemTitle", publicName: "editItemTitle", isSignal: true, isRequired: false, transformFunction: null }, newItemSubTypes: { classPropertyName: "newItemSubTypes", publicName: "newItemSubTypes", isSignal: true, isRequired: false, transformFunction: null }, crudOpFn: { classPropertyName: "crudOpFn", publicName: "crudOpFn", isSignal: true, isRequired: false, transformFunction: null }, previewTemplate: { classPropertyName: "previewTemplate", publicName: "previewTemplate", isSignal: true, isRequired: false, transformFunction: null }, allowEntityActionFn: { classPropertyName: "allowEntityActionFn", publicName: "allowEntityActionFn", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, actionsTemplate: { classPropertyName: "actionsTemplate", publicName: "actionsTemplate", isSignal: true, isRequired: false, transformFunction: null }, crudResponseParser: { classPropertyName: "crudResponseParser", publicName: "crudResponseParser", isSignal: true, isRequired: false, transformFunction: null }, createEditFormTemplate: { classPropertyName: "createEditFormTemplate", publicName: "createEditFormTemplate", isSignal: true, isRequired: false, transformFunction: null }, disableItemActions: { classPropertyName: "disableItemActions", publicName: "disableItemActions", isSignal: true, isRequired: false, transformFunction: null }, disableCreate: { classPropertyName: "disableCreate", publicName: "disableCreate", isSignal: true, isRequired: false, transformFunction: null }, refreshAfterEdit: { classPropertyName: "refreshAfterEdit", publicName: "refreshAfterEdit", isSignal: true, isRequired: false, transformFunction: null }, crudHttpReqContext: { classPropertyName: "crudHttpReqContext", publicName: "crudHttpReqContext", isSignal: true, isRequired: false, transformFunction: null }, editPaneWidth: { classPropertyName: "editPaneWidth", publicName: "editPaneWidth", isSignal: true, isRequired: false, transformFunction: null }, previewPaneWidth: { classPropertyName: "previewPaneWidth", publicName: "previewPaneWidth", isSignal: true, isRequired: false, transformFunction: null }, listPaneWrapperClass: { classPropertyName: "listPaneWrapperClass", publicName: "listPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, previewPaneWrapperClass: { classPropertyName: "previewPaneWrapperClass", publicName: "previewPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, previewPaneContentClass: { classPropertyName: "previewPaneContentClass", publicName: "previewPaneContentClass", isSignal: true, isRequired: false, transformFunction: null }, formPaneWrapperClass: { classPropertyName: "formPaneWrapperClass", publicName: "formPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, formPaneContentClass: { classPropertyName: "formPaneContentClass", publicName: "formPaneContentClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action", entityViewPaneActivated: "entityViewPaneActivated" }, providers: [provideTranslocoScope('sp-mat-entity-crud')], queries: [{ propertyName: "_clientColumnDefs", predicate: MatColumnDef }], viewQueries: [{ propertyName: "componentColumns", predicate: MatColumnDef, descendants: true, isSignal: true }, { propertyName: "spEntitiesList", first: true, predicate: ["entitiesList"], descendants: true, isSignal: true }, { propertyName: "createEditHostComponent", first: true, predicate: FormViewHostComponent, descendants: true, isSignal: true }, { propertyName: "previewHostComponent", first: true, predicate: PreviewHostComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1846
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudComponent, deps: [{ token: i1$1.HttpClient }, { token: i2$1.MatSnackBar }, { token: i3$2.DomSanitizer }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1847
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: SPMatEntityCrudComponent, isStandalone: true, selector: "sp-mat-entity-crud", inputs: { itemLabel: { classPropertyName: "itemLabel", publicName: "itemLabel", isSignal: true, isRequired: false, transformFunction: null }, itemLabelPlural: { classPropertyName: "itemLabelPlural", publicName: "itemLabelPlural", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, itemActions: { classPropertyName: "itemActions", publicName: "itemActions", isSignal: true, isRequired: false, transformFunction: null }, newItemLink: { classPropertyName: "newItemLink", publicName: "newItemLink", isSignal: true, isRequired: false, transformFunction: null }, newItemLabel: { classPropertyName: "newItemLabel", publicName: "newItemLabel", isSignal: true, isRequired: false, transformFunction: null }, editItemTitle: { classPropertyName: "editItemTitle", publicName: "editItemTitle", isSignal: true, isRequired: false, transformFunction: null }, newItemSubTypes: { classPropertyName: "newItemSubTypes", publicName: "newItemSubTypes", isSignal: true, isRequired: false, transformFunction: null }, crudOpFn: { classPropertyName: "crudOpFn", publicName: "crudOpFn", isSignal: true, isRequired: false, transformFunction: null }, previewTemplate: { classPropertyName: "previewTemplate", publicName: "previewTemplate", isSignal: true, isRequired: false, transformFunction: null }, allowEntityActionFn: { classPropertyName: "allowEntityActionFn", publicName: "allowEntityActionFn", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, actionsTemplate: { classPropertyName: "actionsTemplate", publicName: "actionsTemplate", isSignal: true, isRequired: false, transformFunction: null }, crudResponseParser: { classPropertyName: "crudResponseParser", publicName: "crudResponseParser", isSignal: true, isRequired: false, transformFunction: null }, createEditFormTemplate: { classPropertyName: "createEditFormTemplate", publicName: "createEditFormTemplate", isSignal: true, isRequired: false, transformFunction: null }, disableItemActions: { classPropertyName: "disableItemActions", publicName: "disableItemActions", isSignal: true, isRequired: false, transformFunction: null }, disableCreate: { classPropertyName: "disableCreate", publicName: "disableCreate", isSignal: true, isRequired: false, transformFunction: null }, refreshAfterEdit: { classPropertyName: "refreshAfterEdit", publicName: "refreshAfterEdit", isSignal: true, isRequired: false, transformFunction: null }, crudHttpReqContext: { classPropertyName: "crudHttpReqContext", publicName: "crudHttpReqContext", isSignal: true, isRequired: false, transformFunction: null }, editPaneWidth: { classPropertyName: "editPaneWidth", publicName: "editPaneWidth", isSignal: true, isRequired: false, transformFunction: null }, previewPaneWidth: { classPropertyName: "previewPaneWidth", publicName: "previewPaneWidth", isSignal: true, isRequired: false, transformFunction: null }, listPaneWrapperClass: { classPropertyName: "listPaneWrapperClass", publicName: "listPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, previewPaneWrapperClass: { classPropertyName: "previewPaneWrapperClass", publicName: "previewPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, previewPaneContentClass: { classPropertyName: "previewPaneContentClass", publicName: "previewPaneContentClass", isSignal: true, isRequired: false, transformFunction: null }, formPaneWrapperClass: { classPropertyName: "formPaneWrapperClass", publicName: "formPaneWrapperClass", isSignal: true, isRequired: false, transformFunction: null }, formPaneContentClass: { classPropertyName: "formPaneContentClass", publicName: "formPaneContentClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action", entityViewPaneActivated: "entityViewPaneActivated" }, providers: [provideTranslocoScope('sp-mat-entity-crud')], queries: [{ propertyName: "_clientColumnDefs", predicate: MatColumnDef }], viewQueries: [{ propertyName: "componentColumns", predicate: MatColumnDef, descendants: true, isSignal: true }, { propertyName: "spEntitiesList", first: true, predicate: ["entitiesList"], descendants: true, isSignal: true }, { propertyName: "createEditHostComponent", first: true, predicate: FormViewHostComponent, descendants: true, isSignal: true }, { propertyName: "previewHostComponent", first: true, predicate: PreviewHostComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1848
1848
  <as-split direction="horizontal" [gutterSize]="6" *transloco="let t">
1849
1849
  <as-split-area
1850
1850
  [size]="entitiesPaneWidth()"
@@ -1991,7 +1991,7 @@ class SPMatEntityCrudComponent extends SPMatEntityListComponent {
1991
1991
  </as-split>
1992
1992
  `, isInline: true, styles: [".sp-hidden{display:none}.sp-visible{display:inherit;height:100%!important;width:100%!important}.entity-pane-wrapper{height:100%!important;width:100%!important}.action-bar{display:flex;flex-direction:row;align-items:center;padding-bottom:.5em}.action-bar-title{font-size:1.5em;font-weight:600}.spacer{flex-grow:1}.action-bar-actions{text-align:end}.active-row{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "ngmodule", type: MatSortModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "directive", type: i3$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: AngularSplitModule }, { kind: "component", type: i11.SplitComponent, selector: "as-split", inputs: ["gutterSize", "gutterStep", "disabled", "gutterClickDeltaPx", "direction", "dir", "unit", "gutterAriaLabel", "restrictMove", "useTransition", "gutterDblClickDuration"], outputs: ["gutterClick", "gutterDblClick", "dragStart", "dragEnd", "transitionEnd"], exportAs: ["asSplit"] }, { kind: "component", type: i11.SplitAreaComponent, selector: "as-split-area", inputs: ["size", "minSize", "maxSize", "lockSize", "visible"], exportAs: ["asSplitArea"] }, { kind: "component", type: SPMatEntityListComponent, selector: "sp-mat-entity-list", inputs: ["entityName", "entityNamePlural", "endpoint", "entityLoaderFn", "columns", "displayedColumns", "pageSize", "idKey", "pagination", "paginator", "sorter", "disableSort", "infiniteScrollContainer", "infiniteScrollDistance", "infiniteScrollThrottle", "infiniteScrollWindow", "httpReqContext", "deferViewInit"], outputs: ["selectEntity"] }, { kind: "component", type: SPMatContextMenuComponent, selector: "sp-mat-context-menu", inputs: ["menuItems", "label", "menuIconName", "enableHover", "contextData", "hasBackdrop"], outputs: ["selected"] }, { kind: "component", type: FormViewHostComponent, selector: "sp-create-edit-entity-host", inputs: ["entityCrudComponentBase", "clientViewTemplate"] }, { kind: "directive", type: SPMatHostBusyWheelDirective, selector: "[spHostBusyWheel]", inputs: ["spHostBusyWheel"] }, { kind: "component", type: PreviewHostComponent, selector: "sp-entity-crud-preview-host", inputs: ["entityCrudComponentBase", "clientViewTemplate"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1993
1993
  }
1994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SPMatEntityCrudComponent, decorators: [{
1994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: SPMatEntityCrudComponent, decorators: [{
1995
1995
  type: Component,
1996
1996
  args: [{ imports: [
1997
1997
  CommonModule,