@masterteam/components 0.0.156 → 0.0.157
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.
- package/assets/common.css +1 -1
- package/fesm2022/masterteam-components-drawer.mjs +75 -5
- package/fesm2022/masterteam-components-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-dynamic-drawer.mjs +159 -19
- package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -1
- package/fesm2022/masterteam-components-runtime-action.mjs +363 -0
- package/fesm2022/masterteam-components-runtime-action.mjs.map +1 -0
- package/package.json +5 -1
- package/types/masterteam-components-drawer.d.ts +11 -1
- package/types/masterteam-components-dynamic-drawer.d.ts +28 -0
- package/types/masterteam-components-runtime-action.d.ts +102 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-drawer.mjs","sources":["../../../../packages/masterteam/components/drawer/drawer.ts","../../../../packages/masterteam/components/drawer/drawer.html","../../../../packages/masterteam/components/drawer/masterteam-components-drawer.ts"],"sourcesContent":["import { Button } from '@masterteam/components/button';\r\nimport {\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n Renderer2,\r\n model,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport { blockBodyScroll, unblockBodyScroll } from 'primeng/dom';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\r\n selector: 'mt-drawer',\r\n standalone: true,\r\n imports: [CommonModule, DrawerModule, SkeletonModule, Button],\r\n templateUrl: './drawer.html',\r\n styleUrls: ['./drawer.scss'],\r\n})\r\nexport class Drawer implements OnDestroy {\r\n private static nextInstanceId = 0;\r\n private readonly doc = inject(DOCUMENT);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly drawerInstanceClass = `mt-custom-drawer-instance-${Drawer.nextInstanceId++}`;\r\n private customMask: HTMLElement | null = null;\r\n private removeMaskClickListener: (() => void) | null = null;\r\n visible = model<boolean>(false);\r\n visibleChange = output<boolean>();\r\n onShow = output<boolean>();\r\n onHide = output<boolean>();\r\n position = input<'left' | 'right' | 'top' | 'bottom'>('right');\r\n fullScreen = input<boolean>(false);\r\n closeOnEscape = input<boolean>(false);\r\n blockScroll = input<boolean>(true);\r\n dismissible = input<boolean>(true);\r\n title = input<string>('');\r\n subtitle = input<string>('');\r\n loadingHeader = input<boolean>(false);\r\n styleClass = input<string>('');\r\n transitionOptions = input<string>('200ms cubic-bezier(0, 0, 1, 1)');\r\n appendTo = input<string | HTMLElement>('self');\r\n modal = input<boolean>(true);\r\n protected readonly resolvedAppendTo = computed(() => {\r\n this.visible();\r\n\r\n const appendTo = this.appendTo();\r\n\r\n if (!appendTo || appendTo === 'self' || appendTo === 'body') {\r\n return appendTo || 'self';\r\n }\r\n\r\n if (typeof appendTo !== 'string') {\r\n return appendTo;\r\n }\r\n\r\n const selector =\r\n appendTo.startsWith('#') || appendTo.startsWith('.')\r\n ? appendTo\r\n : `#${appendTo}`;\r\n\r\n return (this.doc.querySelector(selector) as HTMLElement | null) ?? 'self';\r\n });\r\n protected readonly resolvedStyleClass = computed(() =>\r\n [this.styleClass(), 'mt-custom-drawer', this.drawerInstanceClass]\r\n .filter(Boolean)\r\n .join(' '),\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.visible() || !this.modal()) {\r\n this.destroyCustomMask();\r\n }\r\n });\r\n }\r\n\r\n visibleChangeEvent(event: boolean) {\r\n this.visibleChange.emit(event);\r\n }\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n this.visibleChange.emit(false);\r\n this.onHide.emit(true);\r\n }\r\n onShowEvent() {\r\n this.syncCustomMask();\r\n this.onShow.emit(true);\r\n }\r\n onHideEvent() {\r\n this.destroyCustomMask();\r\n this.onHide.emit(true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyCustomMask();\r\n }\r\n\r\n private syncCustomMask(): void {\r\n if (!this.modal()) {\r\n this.destroyCustomMask();\r\n return;\r\n }\r\n\r\n const parent = this.resolveMaskParent();\r\n if (!parent) {\r\n return;\r\n }\r\n\r\n if (!this.customMask) {\r\n const mask = this.renderer.createElement('div') as HTMLElement;\r\n this.renderer.addClass(mask, 'p-drawer-mask');\r\n this.renderer.addClass(mask, 'p-overlay-mask');\r\n this.renderer.addClass(mask, 'p-overlay-mask-enter-active');\r\n this.customMask = mask;\r\n this.renderer.appendChild(parent, mask);\r\n }\r\n\r\n this.updateCustomMaskAttributes();\r\n this.bindMaskClickListener();\r\n\r\n if (this.blockScroll()) {\r\n blockBodyScroll();\r\n }\r\n }\r\n\r\n private updateCustomMaskAttributes(): void {\r\n if (!this.customMask) {\r\n return;\r\n }\r\n\r\n this.renderer.setAttribute(this.customMask, 'style', this.getMaskStyle());\r\n this.renderer.setAttribute(this.customMask, 'data-p', this.getMaskDataP());\r\n }\r\n\r\n private resolveMaskParent(): HTMLElement | null {\r\n const appendTo = this.resolvedAppendTo();\r\n\r\n if (!appendTo || appendTo === 'self') {\r\n return this.host.nativeElement;\r\n }\r\n\r\n if (appendTo === 'body') {\r\n return this.doc.body;\r\n }\r\n\r\n return appendTo instanceof HTMLElement ? appendTo : this.host.nativeElement;\r\n }\r\n\r\n private getDrawerElement(): HTMLElement | null {\r\n return this.doc.querySelector(\r\n `.${this.drawerInstanceClass}.p-drawer`,\r\n ) as HTMLElement | null;\r\n }\r\n\r\n private getMaskStyle(): string {\r\n const drawerElement = this.getDrawerElement();\r\n const drawerZIndex = Number.parseInt(drawerElement?.style.zIndex ?? '', 10);\r\n const maskZIndex = Number.isFinite(drawerZIndex)\r\n ? Math.max(drawerZIndex - 1, 0)\r\n : 1901;\r\n\r\n return `z-index: ${maskZIndex};`;\r\n }\r\n\r\n private getMaskDataP(): string {\r\n const parts = [\r\n this.fullScreen() ? 'full-screen' : null,\r\n this.position(),\r\n 'open',\r\n 'modal',\r\n ].filter((part): part is string => !!part);\r\n\r\n return parts.join(' ');\r\n }\r\n\r\n private bindMaskClickListener(): void {\r\n if (!this.customMask) {\r\n return;\r\n }\r\n\r\n if (this.removeMaskClickListener) {\r\n this.removeMaskClickListener();\r\n this.removeMaskClickListener = null;\r\n }\r\n\r\n if (!this.dismissible()) {\r\n return;\r\n }\r\n\r\n this.removeMaskClickListener = this.renderer.listen(\r\n this.customMask,\r\n 'click',\r\n (event: Event) => {\r\n if (this.dismissible()) {\r\n event.preventDefault();\r\n this.onClose();\r\n }\r\n },\r\n );\r\n }\r\n\r\n private destroyCustomMask(): void {\r\n if (this.removeMaskClickListener) {\r\n this.removeMaskClickListener();\r\n this.removeMaskClickListener = null;\r\n }\r\n\r\n if (this.customMask) {\r\n const parent = this.customMask.parentNode;\r\n if (parent) {\r\n this.renderer.removeChild(parent, this.customMask);\r\n }\r\n this.customMask = null;\r\n }\r\n\r\n if (this.blockScroll()) {\r\n unblockBodyScroll();\r\n }\r\n }\r\n}\r\n","<p-drawer\r\n [(visible)]=\"visible\"\r\n [position]=\"position()\"\r\n [fullScreen]=\"fullScreen()\"\r\n [modal]=\"false\"\r\n [closable]=\"false\"\r\n [closeOnEscape]=\"closeOnEscape()\"\r\n [blockScroll]=\"blockScroll()\"\r\n [dismissible]=\"dismissible()\"\r\n [appendTo]=\"resolvedAppendTo()\"\r\n [transitionOptions]=\"transitionOptions()\"\r\n [styleClass]=\"resolvedStyleClass()\"\r\n (visibleChange)=\"visibleChangeEvent($event)\"\r\n (onShow)=\"onShowEvent()\"\r\n (onHide)=\"onHideEvent()\"\r\n>\r\n <ng-template #header>\r\n <div\r\n class=\"flex items-center justify-between px-5 w-full py-3 border-b border-surface\"\r\n >\r\n @if (loadingHeader()) {\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1.75rem\" borderRadius=\"0.5rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" borderRadius=\"0.5rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-1 flex-col\">\r\n <h3 class=\"text-xl font-semibold\" [innerHTML]=\"title()\"></h3>\r\n @if (subtitle()) {\r\n <p class=\"text-sm text-surface-500\" [innerHTML]=\"subtitle()\"></p>\r\n }\r\n </div>\r\n }\r\n <mt-button\r\n (onClick)=\"onClose()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n >\r\n </mt-button>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-content select=\"[content]\"></ng-content>\r\n\r\n <ng-template #footer>\r\n <div class=\"flex justify-end p-3 gap-2 border-t border-surface-200\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAyBa,MAAM,CAAA;AACT,IAAA,OAAO,cAAc,GAAG,CAAC;AAChB,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,mBAAmB,GAAG,CAAA,0BAAA,EAA6B,MAAM,CAAC,cAAc,EAAE,EAAE;IACrF,UAAU,GAAuB,IAAI;IACrC,uBAAuB,GAAwB,IAAI;AAC3D,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;IAC/B,aAAa,GAAG,MAAM,EAAW;IACjC,MAAM,GAAG,MAAM,EAAW;IAC1B,MAAM,GAAG,MAAM,EAAW;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAsC,OAAO,+EAAC;AAC9D,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;AACrC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAC5B,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,iBAAiB,GAAG,KAAK,CAAS,gCAAgC,wFAAC;AACnE,IAAA,QAAQ,GAAG,KAAK,CAAuB,MAAM,+EAAC;AAC9C,IAAA,KAAK,GAAG,KAAK,CAAU,IAAI,4EAAC;AACT,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QAClD,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEhC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC3D,OAAO,QAAQ,IAAI,MAAM;QAC3B;AAEA,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,MAAM,QAAQ,GACZ,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG;AACjD,cAAE;AACF,cAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;QAEpB,OAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAwB,IAAI,MAAM;AAC3E,IAAA,CAAC,uFAAC;AACiB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;SAC7D,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACpC,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IACA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IACA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;YACxB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAgB;YAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;AAC3D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;QACzC;QAEA,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,eAAe,EAAE;QACnB;IACF;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5E;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAExC,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;QAChC;AAEA,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;QACtB;AAEA,QAAA,OAAO,QAAQ,YAAY,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;IAC7E;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAC3B,CAAA,CAAA,EAAI,IAAI,CAAC,mBAAmB,CAAA,SAAA,CAAW,CAClB;IACzB;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY;cAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;cAC5B,IAAI;QAER,OAAO,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,CAAG;IAClC;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,GAAG,IAAI;YACxC,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM;YACN,OAAO;SACR,CAAC,MAAM,CAAC,CAAC,IAAI,KAAqB,CAAC,CAAC,IAAI,CAAC;AAE1C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACrC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACjD,IAAI,CAAC,UAAU,EACf,OAAO,EACP,CAAC,KAAY,KAAI;AACf,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,OAAO,EAAE;YAChB;AACF,QAAA,CAAC,CACF;IACH;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACrC;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;YACzC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;YACpD;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,iBAAiB,EAAE;QACrB;IACF;uGAzMW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBnB,uvDAoDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIjD,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,uvDAAA,EAAA;;;AErB/D;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"masterteam-components-drawer.mjs","sources":["../../../../packages/masterteam/components/drawer/drawer.ts","../../../../packages/masterteam/components/drawer/drawer.html","../../../../packages/masterteam/components/drawer/masterteam-components-drawer.ts"],"sourcesContent":["import { Button } from '@masterteam/components/button';\r\nimport {\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n Renderer2,\r\n RendererStyleFlags2,\r\n model,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CommonModule, DOCUMENT } from '@angular/common';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport { blockBodyScroll, unblockBodyScroll } from 'primeng/dom';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n@Component({\r\n selector: 'mt-drawer',\r\n standalone: true,\r\n imports: [CommonModule, DrawerModule, SkeletonModule, Button],\r\n templateUrl: './drawer.html',\r\n styleUrls: ['./drawer.scss'],\r\n})\r\nexport class Drawer implements OnDestroy {\r\n private static nextInstanceId = 0;\r\n private readonly doc = inject(DOCUMENT);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly drawerInstanceClass = `mt-custom-drawer-instance-${Drawer.nextInstanceId++}`;\r\n private customMask: HTMLElement | null = null;\r\n private removeMaskClickListener: (() => void) | null = null;\r\n private resizeAnimTimer: ReturnType<typeof setTimeout> | null = null;\r\n private readonly RESIZE_ANIM_CLASS = 'mt-drawer--anim-resize';\r\n private readonly RESIZE_ANIM_DURATION_MS = 700;\r\n visible = model<boolean>(false);\r\n visibleChange = output<boolean>();\r\n onShow = output<boolean>();\r\n onHide = output<boolean>();\r\n position = input<'left' | 'right' | 'top' | 'bottom'>('right');\r\n fullScreen = input<boolean>(false);\r\n closeOnEscape = input<boolean>(false);\r\n blockScroll = input<boolean>(true);\r\n dismissible = input<boolean>(true);\r\n title = input<string>('');\r\n subtitle = input<string>('');\r\n loadingHeader = input<boolean>(false);\r\n styleClass = input<string>('');\r\n transitionOptions = input<string>('200ms cubic-bezier(0, 0, 1, 1)');\r\n appendTo = input<string | HTMLElement>('self');\r\n modal = input<boolean>(true);\r\n showMaximizeToggle = input<boolean>(true);\r\n maximizeTooltip = input<string>('Expand to full width');\r\n restoreTooltip = input<string>('Restore size');\r\n maximized = model<boolean>(false);\r\n protected readonly canShowMaximizeToggle = computed(\r\n () =>\r\n this.showMaximizeToggle() &&\r\n !this.fullScreen() &&\r\n (this.position() === 'left' || this.position() === 'right'),\r\n );\r\n protected readonly resolvedAppendTo = computed(() => {\r\n this.visible();\r\n\r\n const appendTo = this.appendTo();\r\n\r\n if (!appendTo || appendTo === 'self' || appendTo === 'body') {\r\n return appendTo || 'self';\r\n }\r\n\r\n if (typeof appendTo !== 'string') {\r\n return appendTo;\r\n }\r\n\r\n const selector =\r\n appendTo.startsWith('#') || appendTo.startsWith('.')\r\n ? appendTo\r\n : `#${appendTo}`;\r\n\r\n return (this.doc.querySelector(selector) as HTMLElement | null) ?? 'self';\r\n });\r\n protected readonly resolvedStyleClass = computed(() =>\r\n [\r\n this.styleClass(),\r\n 'mt-custom-drawer',\r\n this.drawerInstanceClass,\r\n this.maximized() ? 'mt-drawer--maximized' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' '),\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.visible() || !this.modal()) {\r\n this.destroyCustomMask();\r\n }\r\n });\r\n\r\n effect(() => {\r\n // React only when the user toggles maximize while the drawer is open.\r\n // Closing/opening is handled by onShowEvent / onHideEvent so we never\r\n // race with PrimeNG's slide animation.\r\n const isMaximized = this.maximized();\r\n if (!this.visible()) {\r\n return;\r\n }\r\n this.applyMaximizedInlineStyles(isMaximized, true);\r\n });\r\n }\r\n\r\n visibleChangeEvent(event: boolean) {\r\n this.visibleChange.emit(event);\r\n }\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n this.visibleChange.emit(false);\r\n this.onHide.emit(true);\r\n }\r\n\r\n toggleMaximized() {\r\n this.maximized.set(!this.maximized());\r\n }\r\n onShowEvent() {\r\n this.syncCustomMask();\r\n // Drawer DOM only exists after PrimeNG renders it — apply current state\r\n // instantly so the open animation isn't fighting our resize transition.\r\n this.applyMaximizedInlineStyles(this.maximized(), false);\r\n this.onShow.emit(true);\r\n }\r\n onHideEvent() {\r\n this.destroyCustomMask();\r\n // Instant cleanup — the close animation is already done; we don't want\r\n // to start a 650ms width transition mid-hide.\r\n this.applyMaximizedInlineStyles(false, false);\r\n this.onHide.emit(true);\r\n }\r\n\r\n private applyMaximizedInlineStyles(\r\n isMaximized: boolean,\r\n animate: boolean,\r\n ): void {\r\n const drawerEl = this.getDrawerElement();\r\n if (!drawerEl) {\r\n return;\r\n }\r\n\r\n if (this.resizeAnimTimer) {\r\n clearTimeout(this.resizeAnimTimer);\r\n this.resizeAnimTimer = null;\r\n }\r\n\r\n if (animate) {\r\n this.renderer.addClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n this.resizeAnimTimer = setTimeout(() => {\r\n this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n this.resizeAnimTimer = null;\r\n }, this.RESIZE_ANIM_DURATION_MS);\r\n } else {\r\n this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n }\r\n\r\n if (isMaximized) {\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'width',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'max-width',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'height',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'max-height',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n } else {\r\n this.renderer.removeStyle(drawerEl, 'width');\r\n this.renderer.removeStyle(drawerEl, 'max-width');\r\n this.renderer.removeStyle(drawerEl, 'height');\r\n this.renderer.removeStyle(drawerEl, 'max-height');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.resizeAnimTimer) {\r\n clearTimeout(this.resizeAnimTimer);\r\n this.resizeAnimTimer = null;\r\n }\r\n this.destroyCustomMask();\r\n }\r\n\r\n private syncCustomMask(): void {\r\n if (!this.modal()) {\r\n this.destroyCustomMask();\r\n return;\r\n }\r\n\r\n const parent = this.resolveMaskParent();\r\n if (!parent) {\r\n return;\r\n }\r\n\r\n if (!this.customMask) {\r\n const mask = this.renderer.createElement('div') as HTMLElement;\r\n this.renderer.addClass(mask, 'p-drawer-mask');\r\n this.renderer.addClass(mask, 'p-overlay-mask');\r\n this.renderer.addClass(mask, 'p-overlay-mask-enter-active');\r\n this.customMask = mask;\r\n this.renderer.appendChild(parent, mask);\r\n }\r\n\r\n this.updateCustomMaskAttributes();\r\n this.bindMaskClickListener();\r\n\r\n if (this.blockScroll()) {\r\n blockBodyScroll();\r\n }\r\n }\r\n\r\n private updateCustomMaskAttributes(): void {\r\n if (!this.customMask) {\r\n return;\r\n }\r\n\r\n this.renderer.setAttribute(this.customMask, 'style', this.getMaskStyle());\r\n this.renderer.setAttribute(this.customMask, 'data-p', this.getMaskDataP());\r\n }\r\n\r\n private resolveMaskParent(): HTMLElement | null {\r\n const appendTo = this.resolvedAppendTo();\r\n\r\n if (!appendTo || appendTo === 'self') {\r\n return this.host.nativeElement;\r\n }\r\n\r\n if (appendTo === 'body') {\r\n return this.doc.body;\r\n }\r\n\r\n return appendTo instanceof HTMLElement ? appendTo : this.host.nativeElement;\r\n }\r\n\r\n private getDrawerElement(): HTMLElement | null {\r\n return this.doc.querySelector(\r\n `.${this.drawerInstanceClass}.p-drawer`,\r\n ) as HTMLElement | null;\r\n }\r\n\r\n private getMaskStyle(): string {\r\n const drawerElement = this.getDrawerElement();\r\n const drawerZIndex = Number.parseInt(drawerElement?.style.zIndex ?? '', 10);\r\n const maskZIndex = Number.isFinite(drawerZIndex)\r\n ? Math.max(drawerZIndex - 1, 0)\r\n : 1901;\r\n\r\n return `z-index: ${maskZIndex};`;\r\n }\r\n\r\n private getMaskDataP(): string {\r\n const parts = [\r\n this.fullScreen() ? 'full-screen' : null,\r\n this.position(),\r\n 'open',\r\n 'modal',\r\n ].filter((part): part is string => !!part);\r\n\r\n return parts.join(' ');\r\n }\r\n\r\n private bindMaskClickListener(): void {\r\n if (!this.customMask) {\r\n return;\r\n }\r\n\r\n if (this.removeMaskClickListener) {\r\n this.removeMaskClickListener();\r\n this.removeMaskClickListener = null;\r\n }\r\n\r\n if (!this.dismissible()) {\r\n return;\r\n }\r\n\r\n this.removeMaskClickListener = this.renderer.listen(\r\n this.customMask,\r\n 'click',\r\n (event: Event) => {\r\n if (this.dismissible()) {\r\n event.preventDefault();\r\n this.onClose();\r\n }\r\n },\r\n );\r\n }\r\n\r\n private destroyCustomMask(): void {\r\n if (this.removeMaskClickListener) {\r\n this.removeMaskClickListener();\r\n this.removeMaskClickListener = null;\r\n }\r\n\r\n if (this.customMask) {\r\n const parent = this.customMask.parentNode;\r\n if (parent) {\r\n this.renderer.removeChild(parent, this.customMask);\r\n }\r\n this.customMask = null;\r\n }\r\n\r\n if (this.blockScroll()) {\r\n unblockBodyScroll();\r\n }\r\n }\r\n}\r\n","<p-drawer\r\n [(visible)]=\"visible\"\r\n [position]=\"position()\"\r\n [fullScreen]=\"fullScreen()\"\r\n [modal]=\"false\"\r\n [closable]=\"false\"\r\n [closeOnEscape]=\"closeOnEscape()\"\r\n [blockScroll]=\"blockScroll()\"\r\n [dismissible]=\"dismissible()\"\r\n [appendTo]=\"resolvedAppendTo()\"\r\n [transitionOptions]=\"transitionOptions()\"\r\n [styleClass]=\"resolvedStyleClass()\"\r\n (visibleChange)=\"visibleChangeEvent($event)\"\r\n (onShow)=\"onShowEvent()\"\r\n (onHide)=\"onHideEvent()\"\r\n>\r\n <ng-template #header>\r\n <div\r\n class=\"flex items-center justify-between px-5 w-full py-3 border-b border-surface\"\r\n >\r\n @if (loadingHeader()) {\r\n <div class=\"flex flex-1 flex-col gap-2\">\r\n <p-skeleton width=\"12rem\" height=\"1.75rem\" borderRadius=\"0.5rem\" />\r\n <p-skeleton width=\"8rem\" height=\"0.875rem\" borderRadius=\"0.5rem\" />\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-1 flex-col\">\r\n <h3 class=\"text-xl font-semibold\" [innerHTML]=\"title()\"></h3>\r\n @if (subtitle()) {\r\n <p class=\"text-sm text-surface-500\" [innerHTML]=\"subtitle()\"></p>\r\n }\r\n </div>\r\n }\r\n <div class=\"flex items-center gap-2\">\r\n @if (canShowMaximizeToggle()) {\r\n <mt-button\r\n (onClick)=\"toggleMaximized()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n severity=\"secondary\"\r\n [icon]=\"maximized() ? 'layout.minimize-01' : 'layout.maximize-01'\"\r\n [tooltip]=\"maximized() ? restoreTooltip() : maximizeTooltip()\"\r\n >\r\n </mt-button>\r\n }\r\n <mt-button\r\n (onClick)=\"onClose()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-content select=\"[content]\"></ng-content>\r\n\r\n <ng-template #footer>\r\n <div class=\"flex justify-end p-3 gap-2 border-t border-surface-200\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </div>\r\n </ng-template>\r\n</p-drawer>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MA0Ba,MAAM,CAAA;AACT,IAAA,OAAO,cAAc,GAAG,CAAC;AAChB,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,mBAAmB,GAAG,CAAA,0BAAA,EAA6B,MAAM,CAAC,cAAc,EAAE,EAAE;IACrF,UAAU,GAAuB,IAAI;IACrC,uBAAuB,GAAwB,IAAI;IACnD,eAAe,GAAyC,IAAI;IACnD,iBAAiB,GAAG,wBAAwB;IAC5C,uBAAuB,GAAG,GAAG;AAC9C,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;IAC/B,aAAa,GAAG,MAAM,EAAW;IACjC,MAAM,GAAG,MAAM,EAAW;IAC1B,MAAM,GAAG,MAAM,EAAW;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAsC,OAAO,+EAAC;AAC9D,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;AACrC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAC5B,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,iBAAiB,GAAG,KAAK,CAAS,gCAAgC,wFAAC;AACnE,IAAA,QAAQ,GAAG,KAAK,CAAuB,MAAM,+EAAC;AAC9C,IAAA,KAAK,GAAG,KAAK,CAAU,IAAI,4EAAC;AAC5B,IAAA,kBAAkB,GAAG,KAAK,CAAU,IAAI,yFAAC;AACzC,IAAA,eAAe,GAAG,KAAK,CAAS,sBAAsB,sFAAC;AACvD,IAAA,cAAc,GAAG,KAAK,CAAS,cAAc,qFAAC;AAC9C,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;IACd,qBAAqB,GAAG,QAAQ,CACjD,MACE,IAAI,CAAC,kBAAkB,EAAE;QACzB,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,SAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,4FAC9D;AACkB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QAClD,IAAI,CAAC,OAAO,EAAE;AAEd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAEhC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC3D,OAAO,QAAQ,IAAI,MAAM;QAC3B;AAEA,QAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,MAAM,QAAQ,GACZ,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG;AACjD,cAAE;AACF,cAAE,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE;QAEpB,OAAQ,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAwB,IAAI,MAAM;AAC3E,IAAA,CAAC,uFAAC;AACiB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC/C;QACE,IAAI,CAAC,UAAU,EAAE;QACjB,kBAAkB;AAClB,QAAA,IAAI,CAAC,mBAAmB;QACxB,IAAI,CAAC,SAAS,EAAE,GAAG,sBAAsB,GAAG,EAAE;AAC/C;SACE,MAAM,CAAC,OAAO;AACd,SAAA,IAAI,CAAC,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACb;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACpC,IAAI,CAAC,iBAAiB,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;;;;AAIV,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB;YACF;AACA,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC;AACpD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACvC;IACA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;;;QAGrB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IACA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;;;AAGxB,QAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEQ,0BAA0B,CAChC,WAAoB,EACpB,OAAgB,EAAA;AAEhB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;QAEA,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAK;gBACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC3D,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC7B,YAAA,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC;QAClC;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC7D;QAEA,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,mBAAmB,CAAC,SAAS,CAC9B;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,QAAQ,EACR,WAAW,EACX,MAAM,EACN,mBAAmB,CAAC,SAAS,CAC9B;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,mBAAmB,CAAC,SAAS,CAC9B;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,mBAAmB,CAAC,SAAS,CAC9B;QACH;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC;QACnD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;QACA,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,iBAAiB,EAAE;YACxB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACvC,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAgB;YAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;AAC3D,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;QACzC;QAEA,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,eAAe,EAAE;QACnB;IACF;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5E;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAExC,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;QAChC;AAEA,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;QACtB;AAEA,QAAA,OAAO,QAAQ,YAAY,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;IAC7E;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAC3B,CAAA,CAAA,EAAI,IAAI,CAAC,mBAAmB,CAAA,SAAA,CAAW,CAClB;IACzB;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY;cAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;cAC5B,IAAI;QAER,OAAO,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,CAAG;IAClC;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,UAAU,EAAE,GAAG,aAAa,GAAG,IAAI;YACxC,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM;YACN,OAAO;SACR,CAAC,MAAM,CAAC,CAAC,IAAI,KAAqB,CAAC,CAAC,IAAI,CAAC;AAE1C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACrC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACjD,IAAI,CAAC,UAAU,EACf,OAAO,EACP,CAAC,KAAY,KAAI;AACf,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,OAAO,EAAE;YAChB;AACF,QAAA,CAAC,CACF;IACH;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACrC;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;YACzC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;YACpD;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,iBAAiB,EAAE;QACrB;IACF;uGA7SW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BnB,swEAiEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3CY,YAAY,8BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIjD,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,swEAAA,EAAA;;;AEtB/D;;AAEG;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, signal, Injectable, model, computed, Injector, Input, Component,
|
|
2
|
+
import { InjectionToken, signal, Injectable, model, inject, ElementRef, Renderer2, effect, computed, Injector, RendererStyleFlags2, Input, Component, ApplicationRef, EnvironmentInjector, DestroyRef, createComponent } from '@angular/core';
|
|
3
3
|
import { NgComponentOutlet, DOCUMENT } from '@angular/common';
|
|
4
4
|
import { DynamicDialogRef } from 'primeng/dynamicdialog';
|
|
5
5
|
import * as i1 from 'primeng/drawer';
|
|
@@ -15,6 +15,7 @@ class DrawerController {
|
|
|
15
15
|
_styleClass = signal('', ...(ngDevMode ? [{ debugName: "_styleClass" }] : /* istanbul ignore next */ []));
|
|
16
16
|
_header = signal('', ...(ngDevMode ? [{ debugName: "_header" }] : /* istanbul ignore next */ []));
|
|
17
17
|
_fullScreen = signal(undefined, ...(ngDevMode ? [{ debugName: "_fullScreen" }] : /* istanbul ignore next */ []));
|
|
18
|
+
_maximized = signal(false, ...(ngDevMode ? [{ debugName: "_maximized" }] : /* istanbul ignore next */ []));
|
|
18
19
|
/** Get the current additional styleClass */
|
|
19
20
|
get styleClass() {
|
|
20
21
|
return this._styleClass;
|
|
@@ -27,6 +28,10 @@ class DrawerController {
|
|
|
27
28
|
get fullScreen() {
|
|
28
29
|
return this._fullScreen;
|
|
29
30
|
}
|
|
31
|
+
/** Get the current maximized (full-width) state */
|
|
32
|
+
get maximized() {
|
|
33
|
+
return this._maximized;
|
|
34
|
+
}
|
|
30
35
|
/** Add or replace the dynamic styleClass */
|
|
31
36
|
setStyleClass(styleClass) {
|
|
32
37
|
this._styleClass.set(styleClass);
|
|
@@ -63,6 +68,14 @@ class DrawerController {
|
|
|
63
68
|
setFullScreen(fullScreen) {
|
|
64
69
|
this._fullScreen.set(fullScreen);
|
|
65
70
|
}
|
|
71
|
+
/** Set maximized (full-width) state */
|
|
72
|
+
setMaximized(maximized) {
|
|
73
|
+
this._maximized.set(maximized);
|
|
74
|
+
}
|
|
75
|
+
/** Toggle maximized (full-width) state */
|
|
76
|
+
toggleMaximized() {
|
|
77
|
+
this._maximized.set(!this._maximized());
|
|
78
|
+
}
|
|
66
79
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DrawerController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
80
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DrawerController });
|
|
68
81
|
}
|
|
@@ -77,12 +90,61 @@ class DynamicDrawerHost {
|
|
|
77
90
|
childInjector;
|
|
78
91
|
ref;
|
|
79
92
|
drawerController = new DrawerController();
|
|
93
|
+
host = inject((ElementRef));
|
|
94
|
+
renderer = inject(Renderer2);
|
|
95
|
+
resizeAnimTimer = null;
|
|
96
|
+
RESIZE_ANIM_CLASS = 'mt-drawer--anim-resize';
|
|
97
|
+
RESIZE_ANIM_DURATION_MS = 700;
|
|
98
|
+
constructor() {
|
|
99
|
+
effect(() => {
|
|
100
|
+
// React only when the user toggles maximize while the drawer is open.
|
|
101
|
+
// Closing/opening goes through onDrawerShow / onDrawerHide so we never
|
|
102
|
+
// race with PrimeNG's slide animation.
|
|
103
|
+
const isMaximized = this.drawerController.maximized();
|
|
104
|
+
if (!this.visible()) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.applyMaximizedInlineStyles(isMaximized, true);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
80
110
|
/** Computed styleClass combining config + dynamic controller class */
|
|
81
111
|
computedStyleClass = computed(() => {
|
|
82
112
|
const configClass = this.cfg()?.styleClass ?? '';
|
|
83
113
|
const dynamicClass = this.drawerController.styleClass();
|
|
84
|
-
|
|
114
|
+
const maximizedClass = this.drawerController.maximized()
|
|
115
|
+
? 'mt-drawer--maximized'
|
|
116
|
+
: '';
|
|
117
|
+
return `${configClass} ${dynamicClass} mt-drawer ${maximizedClass}`
|
|
118
|
+
.replace(/\s+/g, ' ')
|
|
119
|
+
.trim();
|
|
85
120
|
}, ...(ngDevMode ? [{ debugName: "computedStyleClass" }] : /* istanbul ignore next */ []));
|
|
121
|
+
/** Whether the maximize toggle button is visible in the header */
|
|
122
|
+
canShowMaximizeToggle = computed(() => {
|
|
123
|
+
const config = this.cfg();
|
|
124
|
+
if (config?.showMaximizeToggle === false) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (this.computedFullScreen()) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
const position = config?.position ?? 'right';
|
|
131
|
+
return position === 'left' || position === 'right';
|
|
132
|
+
}, ...(ngDevMode ? [{ debugName: "canShowMaximizeToggle" }] : /* istanbul ignore next */ []));
|
|
133
|
+
/** Tooltip for maximize/restore button (state-aware) */
|
|
134
|
+
maximizeButtonTooltip = computed(() => {
|
|
135
|
+
const config = this.cfg();
|
|
136
|
+
return this.drawerController.maximized()
|
|
137
|
+
? (config?.restoreTooltip ?? 'Restore size')
|
|
138
|
+
: (config?.maximizeTooltip ?? 'Expand to full width');
|
|
139
|
+
}, ...(ngDevMode ? [{ debugName: "maximizeButtonTooltip" }] : /* istanbul ignore next */ []));
|
|
140
|
+
/** Icon for maximize/restore button (state-aware) */
|
|
141
|
+
maximizeButtonIcon = computed(() => this.drawerController.maximized()
|
|
142
|
+
? 'layout.minimize-01'
|
|
143
|
+
: 'layout.maximize-01', ...(ngDevMode ? [{ debugName: "maximizeButtonIcon" }] : /* istanbul ignore next */ []));
|
|
144
|
+
/** Toggle the drawer's full-width state */
|
|
145
|
+
toggleMaximized() {
|
|
146
|
+
this.drawerController.toggleMaximized();
|
|
147
|
+
}
|
|
86
148
|
computedDrawerStyle = computed(() => {
|
|
87
149
|
const appendTo = this.cfg()?.appendTo;
|
|
88
150
|
if (!appendTo || appendTo === 'body') {
|
|
@@ -126,6 +188,51 @@ class DynamicDrawerHost {
|
|
|
126
188
|
this.visible.set(false);
|
|
127
189
|
this.ref?.close(data);
|
|
128
190
|
}
|
|
191
|
+
onDrawerShow() {
|
|
192
|
+
// Drawer DOM only exists after PrimeNG renders it — apply current state
|
|
193
|
+
// instantly so the open animation doesn't fight the resize transition.
|
|
194
|
+
this.applyMaximizedInlineStyles(this.drawerController.maximized(), false);
|
|
195
|
+
}
|
|
196
|
+
onDrawerHide() {
|
|
197
|
+
// Instant cleanup — close animation already done; we don't want to start
|
|
198
|
+
// a 650ms width transition mid-hide.
|
|
199
|
+
this.applyMaximizedInlineStyles(false, false);
|
|
200
|
+
}
|
|
201
|
+
getDrawerElement() {
|
|
202
|
+
return this.host.nativeElement.querySelector('.p-drawer');
|
|
203
|
+
}
|
|
204
|
+
applyMaximizedInlineStyles(isMaximized, animate) {
|
|
205
|
+
const drawerEl = this.getDrawerElement();
|
|
206
|
+
if (!drawerEl) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (this.resizeAnimTimer) {
|
|
210
|
+
clearTimeout(this.resizeAnimTimer);
|
|
211
|
+
this.resizeAnimTimer = null;
|
|
212
|
+
}
|
|
213
|
+
if (animate) {
|
|
214
|
+
this.renderer.addClass(drawerEl, this.RESIZE_ANIM_CLASS);
|
|
215
|
+
this.resizeAnimTimer = setTimeout(() => {
|
|
216
|
+
this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);
|
|
217
|
+
this.resizeAnimTimer = null;
|
|
218
|
+
}, this.RESIZE_ANIM_DURATION_MS);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);
|
|
222
|
+
}
|
|
223
|
+
if (isMaximized) {
|
|
224
|
+
this.renderer.setStyle(drawerEl, 'width', '100%', RendererStyleFlags2.Important);
|
|
225
|
+
this.renderer.setStyle(drawerEl, 'max-width', '100%', RendererStyleFlags2.Important);
|
|
226
|
+
this.renderer.setStyle(drawerEl, 'height', '100%', RendererStyleFlags2.Important);
|
|
227
|
+
this.renderer.setStyle(drawerEl, 'max-height', '100%', RendererStyleFlags2.Important);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.renderer.removeStyle(drawerEl, 'width');
|
|
231
|
+
this.renderer.removeStyle(drawerEl, 'max-width');
|
|
232
|
+
this.renderer.removeStyle(drawerEl, 'height');
|
|
233
|
+
this.renderer.removeStyle(drawerEl, 'max-height');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
129
236
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: DynamicDrawerHost, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
130
237
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: DynamicDrawerHost, isStandalone: true, selector: "mt-dynamic-drawer-host", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, connect: { classPropertyName: "connect", publicName: "connect", isSignal: false, isRequired: true, transformFunction: null } }, outputs: { visible: "visibleChange" }, ngImport: i0, template: `
|
|
131
238
|
<p-drawer
|
|
@@ -140,20 +247,35 @@ class DynamicDrawerHost {
|
|
|
140
247
|
[dismissible]="cfg()?.dismissible"
|
|
141
248
|
[transitionOptions]="cfg()?.transitionOptions"
|
|
142
249
|
[styleClass]="computedStyleClass()"
|
|
250
|
+
(onShow)="onDrawerShow()"
|
|
251
|
+
(onHide)="onDrawerHide()"
|
|
143
252
|
>
|
|
144
253
|
<ng-template #header>
|
|
145
254
|
<div
|
|
146
255
|
class="flex items-center justify-between px-5 w-full py-3 border-b border-surface"
|
|
147
256
|
>
|
|
148
257
|
<h3 class="text-xl font-semibold">{{ computedHeader() }}</h3>
|
|
149
|
-
<
|
|
150
|
-
(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
258
|
+
<div class="flex items-center gap-2">
|
|
259
|
+
@if (canShowMaximizeToggle()) {
|
|
260
|
+
<mt-button
|
|
261
|
+
(onClick)="toggleMaximized()"
|
|
262
|
+
variant="outlined"
|
|
263
|
+
styleClass="!bg-white"
|
|
264
|
+
severity="secondary"
|
|
265
|
+
[icon]="maximizeButtonIcon()"
|
|
266
|
+
[tooltip]="maximizeButtonTooltip()"
|
|
267
|
+
>
|
|
268
|
+
</mt-button>
|
|
269
|
+
}
|
|
270
|
+
<mt-button
|
|
271
|
+
(onClick)="handleHide()"
|
|
272
|
+
variant="outlined"
|
|
273
|
+
styleClass="!bg-white"
|
|
274
|
+
icon="general.x-close"
|
|
275
|
+
severity="secondary"
|
|
276
|
+
>
|
|
277
|
+
</mt-button>
|
|
278
|
+
</div>
|
|
157
279
|
</div>
|
|
158
280
|
</ng-template>
|
|
159
281
|
@if (childInjector) {
|
|
@@ -188,20 +310,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
188
310
|
[dismissible]="cfg()?.dismissible"
|
|
189
311
|
[transitionOptions]="cfg()?.transitionOptions"
|
|
190
312
|
[styleClass]="computedStyleClass()"
|
|
313
|
+
(onShow)="onDrawerShow()"
|
|
314
|
+
(onHide)="onDrawerHide()"
|
|
191
315
|
>
|
|
192
316
|
<ng-template #header>
|
|
193
317
|
<div
|
|
194
318
|
class="flex items-center justify-between px-5 w-full py-3 border-b border-surface"
|
|
195
319
|
>
|
|
196
320
|
<h3 class="text-xl font-semibold">{{ computedHeader() }}</h3>
|
|
197
|
-
<
|
|
198
|
-
(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
321
|
+
<div class="flex items-center gap-2">
|
|
322
|
+
@if (canShowMaximizeToggle()) {
|
|
323
|
+
<mt-button
|
|
324
|
+
(onClick)="toggleMaximized()"
|
|
325
|
+
variant="outlined"
|
|
326
|
+
styleClass="!bg-white"
|
|
327
|
+
severity="secondary"
|
|
328
|
+
[icon]="maximizeButtonIcon()"
|
|
329
|
+
[tooltip]="maximizeButtonTooltip()"
|
|
330
|
+
>
|
|
331
|
+
</mt-button>
|
|
332
|
+
}
|
|
333
|
+
<mt-button
|
|
334
|
+
(onClick)="handleHide()"
|
|
335
|
+
variant="outlined"
|
|
336
|
+
styleClass="!bg-white"
|
|
337
|
+
icon="general.x-close"
|
|
338
|
+
severity="secondary"
|
|
339
|
+
>
|
|
340
|
+
</mt-button>
|
|
341
|
+
</div>
|
|
205
342
|
</div>
|
|
206
343
|
</ng-template>
|
|
207
344
|
@if (childInjector) {
|
|
@@ -217,7 +354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
|
|
|
217
354
|
</p-drawer>
|
|
218
355
|
`,
|
|
219
356
|
}]
|
|
220
|
-
}], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], connect: [{
|
|
357
|
+
}], ctorParameters: () => [], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], connect: [{
|
|
221
358
|
type: Input,
|
|
222
359
|
args: [{ required: true }]
|
|
223
360
|
}] } });
|
|
@@ -236,6 +373,9 @@ class DrawerService {
|
|
|
236
373
|
closable: false,
|
|
237
374
|
transitionOptions: '200ms cubic-bezier(0, 0, 1, 1)',
|
|
238
375
|
inputValues: {},
|
|
376
|
+
showMaximizeToggle: true,
|
|
377
|
+
maximizeTooltip: 'Expand to full width',
|
|
378
|
+
restoreTooltip: 'Restore size',
|
|
239
379
|
};
|
|
240
380
|
constructor() {
|
|
241
381
|
this.preloadDrawerHost();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-components-dynamic-drawer.mjs","sources":["../../../../packages/masterteam/components/dynamic-drawer/dynamic-drawer-host.ts","../../../../packages/masterteam/components/dynamic-drawer/dynamic-drawer.ts","../../../../packages/masterteam/components/dynamic-drawer/masterteam-components-dynamic-drawer.ts"],"sourcesContent":["import { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport {\r\n Component,\r\n Injector,\r\n Input,\r\n signal,\r\n InjectionToken,\r\n model,\r\n computed,\r\n Injectable,\r\n} from '@angular/core';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\nexport const DynamicDrawerConfig = new InjectionToken<any>(\r\n 'DynamicDrawerConfig',\r\n);\r\n\r\n/**\r\n * Controller to dynamically update drawer properties from inside the child component.\r\n * Inject this in your drawer content component to modify drawer behavior.\r\n */\r\n@Injectable()\r\nexport class DrawerController {\r\n private _styleClass = signal<string>('');\r\n private _header = signal<string>('');\r\n private _fullScreen = signal<boolean | undefined>(undefined);\r\n\r\n /** Get the current additional styleClass */\r\n get styleClass() {\r\n return this._styleClass;\r\n }\r\n\r\n /** Get the current header */\r\n get header() {\r\n return this._header;\r\n }\r\n\r\n /** Get the current fullScreen state */\r\n get fullScreen() {\r\n return this._fullScreen;\r\n }\r\n\r\n /** Add or replace the dynamic styleClass */\r\n setStyleClass(styleClass: string) {\r\n this._styleClass.set(styleClass);\r\n }\r\n\r\n /** Append a class to the existing styleClass */\r\n addClass(className: string) {\r\n const current = this._styleClass();\r\n if (!current.includes(className)) {\r\n this._styleClass.set((current + ' ' + className).trim());\r\n }\r\n }\r\n\r\n /** Remove a class from the styleClass */\r\n removeClass(className: string) {\r\n const current = this._styleClass();\r\n this._styleClass.set(\r\n current\r\n .split(' ')\r\n .filter((c) => c !== className)\r\n .join(' '),\r\n );\r\n }\r\n\r\n /** Toggle a class on/off */\r\n toggleClass(className: string) {\r\n if (this._styleClass().includes(className)) {\r\n this.removeClass(className);\r\n } else {\r\n this.addClass(className);\r\n }\r\n }\r\n\r\n /** Update the drawer header */\r\n setHeader(header: string) {\r\n this._header.set(header);\r\n }\r\n\r\n /** Toggle fullScreen mode */\r\n setFullScreen(fullScreen: boolean) {\r\n this._fullScreen.set(fullScreen);\r\n }\r\n}\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-dynamic-drawer-host',\r\n standalone: true,\r\n imports: [NgComponentOutlet, DrawerModule, Button],\r\n template: `\r\n <p-drawer\r\n [(visible)]=\"visible\"\r\n [appendTo]=\"'self'\"\r\n [style]=\"computedDrawerStyle()\"\r\n [closable]=\"cfg()?.closable\"\r\n [position]=\"cfg()?.position\"\r\n [fullScreen]=\"computedFullScreen()\"\r\n [modal]=\"cfg()?.modal\"\r\n [closeOnEscape]=\"cfg()?.closeOnEscape\"\r\n [dismissible]=\"cfg()?.dismissible\"\r\n [transitionOptions]=\"cfg()?.transitionOptions\"\r\n [styleClass]=\"computedStyleClass()\"\r\n >\r\n <ng-template #header>\r\n <div\r\n class=\"flex items-center justify-between px-5 w-full py-3 border-b border-surface\"\r\n >\r\n <h3 class=\"text-xl font-semibold\">{{ computedHeader() }}</h3>\r\n <mt-button\r\n (onClick)=\"handleHide()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n >\r\n </mt-button>\r\n </div>\r\n </ng-template>\r\n @if (childInjector) {\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n cmp();\r\n injector: childInjector;\r\n inputs: cmpInputs()\r\n \"\r\n >\r\n </ng-container>\r\n }\r\n </p-drawer>\r\n `,\r\n})\r\nexport class DynamicDrawerHost {\r\n public visible = model<boolean>(false);\r\n cmp = signal<any>(null);\r\n cfg = signal<any>({ position: 'right' });\r\n cmpInputs = signal<Record<string, unknown>>({});\r\n childInjector!: Injector;\r\n private ref?: DynamicDialogRef;\r\n private drawerController = new DrawerController();\r\n\r\n /** Computed styleClass combining config + dynamic controller class */\r\n computedStyleClass = computed(() => {\r\n const configClass = this.cfg()?.styleClass ?? '';\r\n const dynamicClass = this.drawerController.styleClass();\r\n return `${configClass} ${dynamicClass} mt-drawer`.trim();\r\n });\r\n\r\n computedDrawerStyle = computed<Record<string, string> | null>(() => {\r\n const appendTo = this.cfg()?.appendTo;\r\n if (!appendTo || appendTo === 'body') {\r\n return { position: 'fixed' };\r\n }\r\n\r\n return null;\r\n });\r\n\r\n /** Computed header - controller overrides config if set */\r\n computedHeader = computed(() => {\r\n const dynamicHeader = this.drawerController.header();\r\n return dynamicHeader || this.cfg()?.header || '';\r\n });\r\n\r\n /** Computed fullScreen - controller overrides config if set */\r\n computedFullScreen = computed(() => {\r\n const dynamicFullScreen = this.drawerController.fullScreen();\r\n return dynamicFullScreen !== undefined\r\n ? dynamicFullScreen\r\n : this.cfg()?.fullScreen;\r\n });\r\n\r\n @Input({ required: true })\r\n connect(opts: {\r\n component: any;\r\n config?: any;\r\n parent: Injector;\r\n ref: DynamicDialogRef;\r\n }) {\r\n this.cmp.set(opts.component);\r\n this.cfg.set(opts.config ?? {});\r\n this.cmpInputs.set(opts.config?.inputValues ?? {});\r\n this.ref = opts.ref;\r\n this.childInjector = Injector.create({\r\n parent: opts.parent,\r\n providers: [\r\n { provide: DynamicDrawerConfig, useValue: opts.config ?? {} },\r\n { provide: DynamicDialogRef, useValue: opts.ref },\r\n { provide: DrawerController, useValue: this.drawerController },\r\n ],\r\n });\r\n\r\n opts.ref.onClose.subscribe(() => {\r\n this.visible.set(false);\r\n });\r\n }\r\n\r\n show() {\r\n this.visible.set(true);\r\n }\r\n\r\n handleHide(data = null) {\r\n this.visible.set(false);\r\n this.ref?.close(data);\r\n }\r\n}\r\n","// dynamic-drawer.service.ts\r\nimport {\r\n Injectable,\r\n Type,\r\n createComponent,\r\n EnvironmentInjector,\r\n ApplicationRef,\r\n Injector,\r\n DestroyRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { DynamicDrawerHost } from './dynamic-drawer-host';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\nexport interface DynamicDrawerConfigInterface {\r\n header?: string;\r\n position?: string;\r\n data?: any;\r\n fullScreen?: boolean;\r\n modal?: boolean;\r\n closable?: boolean;\r\n closeOnEscape?: boolean;\r\n dismissible?: boolean;\r\n appendTo?: any;\r\n transitionOptions?: string;\r\n styleClass?: string;\r\n inputValues?: any;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DrawerService {\r\n private appRef = inject(ApplicationRef);\r\n private env = inject(EnvironmentInjector);\r\n private rootInjector = inject(Injector);\r\n private destroyRef = inject(DestroyRef);\r\n private doc = inject(DOCUMENT);\r\n private hostRef?: ReturnType<typeof createComponent<DynamicDrawerHost>>;\r\n defauiltConfig: DynamicDrawerConfigInterface = {\r\n position: 'right',\r\n modal: true,\r\n closable: false,\r\n transitionOptions: '200ms cubic-bezier(0, 0, 1, 1)',\r\n inputValues: {},\r\n };\r\n\r\n constructor() {\r\n this.preloadDrawerHost();\r\n }\r\n\r\n open<T>(\r\n component: Type<any>,\r\n config: DynamicDrawerConfigInterface = {},\r\n ): DynamicDialogRef<T> {\r\n config = { ...this.defauiltConfig, ...config };\r\n\r\n const targetEl = this.resolveAppendTarget(config.appendTo);\r\n\r\n this.hostRef = createComponent(DynamicDrawerHost, {\r\n environmentInjector: this.env,\r\n });\r\n\r\n const ref = new DynamicDialogRef<T>();\r\n this.hostRef.instance.connect({\r\n component,\r\n config,\r\n parent: this.rootInjector,\r\n ref,\r\n });\r\n\r\n this.appRef.attachView(this.hostRef.hostView);\r\n\r\n // 📌 append to target (NOT body when provided)\r\n targetEl.appendChild(this.hostRef.location.nativeElement);\r\n\r\n // 🧹 auto-clean if app destroyed (SSR / HMR safety)\r\n this.destroyRef.onDestroy(() => {\r\n this.appRef.detachView(this.hostRef!.hostView);\r\n this.hostRef!.destroy();\r\n this.hostRef = undefined;\r\n });\r\n\r\n const currentHostRef = this.hostRef;\r\n const openDrawer = () => {\r\n if (this.hostRef !== currentHostRef) {\r\n return;\r\n }\r\n\r\n currentHostRef.instance.show();\r\n };\r\n\r\n if (this.doc.defaultView?.requestAnimationFrame) {\r\n this.doc.defaultView.requestAnimationFrame(openDrawer);\r\n } else {\r\n setTimeout(openDrawer, 0);\r\n }\r\n\r\n return ref;\r\n }\r\n\r\n private preloadDrawerHost() {\r\n const preloadHostRef = createComponent(DynamicDrawerHost, {\r\n environmentInjector: this.env,\r\n });\r\n const preloadElement = preloadHostRef.location.nativeElement as HTMLElement;\r\n\r\n preloadElement.style.display = 'none';\r\n\r\n this.appRef.attachView(preloadHostRef.hostView);\r\n this.doc.body.appendChild(preloadElement);\r\n preloadHostRef.changeDetectorRef.detectChanges();\r\n this.appRef.detachView(preloadHostRef.hostView);\r\n preloadElement.remove();\r\n preloadHostRef.destroy();\r\n }\r\n\r\n private resolveAppendTarget(appendTo?: string | HTMLElement): HTMLElement {\r\n if (!appendTo) return this.doc.body;\r\n\r\n if (typeof appendTo === 'string') {\r\n const selector =\r\n appendTo.startsWith('#') || appendTo.startsWith('.')\r\n ? appendTo\r\n : `#${appendTo}`;\r\n const el = this.doc.querySelector(selector) as HTMLElement | null;\r\n if (!el) {\r\n return this.doc.body;\r\n }\r\n return el;\r\n }\r\n\r\n return appendTo; // HTMLElement passed directly\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-components-dynamic-drawer.mjs","sources":["../../../../packages/masterteam/components/dynamic-drawer/dynamic-drawer-host.ts","../../../../packages/masterteam/components/dynamic-drawer/dynamic-drawer.ts","../../../../packages/masterteam/components/dynamic-drawer/masterteam-components-dynamic-drawer.ts"],"sourcesContent":["import { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport {\r\n Component,\r\n ElementRef,\r\n Injector,\r\n Input,\r\n Renderer2,\r\n RendererStyleFlags2,\r\n effect,\r\n inject,\r\n signal,\r\n InjectionToken,\r\n model,\r\n computed,\r\n Injectable,\r\n} from '@angular/core';\r\nimport { NgComponentOutlet } from '@angular/common';\r\n\r\nexport const DynamicDrawerConfig = new InjectionToken<any>(\r\n 'DynamicDrawerConfig',\r\n);\r\n\r\n/**\r\n * Controller to dynamically update drawer properties from inside the child component.\r\n * Inject this in your drawer content component to modify drawer behavior.\r\n */\r\n@Injectable()\r\nexport class DrawerController {\r\n private _styleClass = signal<string>('');\r\n private _header = signal<string>('');\r\n private _fullScreen = signal<boolean | undefined>(undefined);\r\n private _maximized = signal<boolean>(false);\r\n\r\n /** Get the current additional styleClass */\r\n get styleClass() {\r\n return this._styleClass;\r\n }\r\n\r\n /** Get the current header */\r\n get header() {\r\n return this._header;\r\n }\r\n\r\n /** Get the current fullScreen state */\r\n get fullScreen() {\r\n return this._fullScreen;\r\n }\r\n\r\n /** Get the current maximized (full-width) state */\r\n get maximized() {\r\n return this._maximized;\r\n }\r\n\r\n /** Add or replace the dynamic styleClass */\r\n setStyleClass(styleClass: string) {\r\n this._styleClass.set(styleClass);\r\n }\r\n\r\n /** Append a class to the existing styleClass */\r\n addClass(className: string) {\r\n const current = this._styleClass();\r\n if (!current.includes(className)) {\r\n this._styleClass.set((current + ' ' + className).trim());\r\n }\r\n }\r\n\r\n /** Remove a class from the styleClass */\r\n removeClass(className: string) {\r\n const current = this._styleClass();\r\n this._styleClass.set(\r\n current\r\n .split(' ')\r\n .filter((c) => c !== className)\r\n .join(' '),\r\n );\r\n }\r\n\r\n /** Toggle a class on/off */\r\n toggleClass(className: string) {\r\n if (this._styleClass().includes(className)) {\r\n this.removeClass(className);\r\n } else {\r\n this.addClass(className);\r\n }\r\n }\r\n\r\n /** Update the drawer header */\r\n setHeader(header: string) {\r\n this._header.set(header);\r\n }\r\n\r\n /** Toggle fullScreen mode */\r\n setFullScreen(fullScreen: boolean) {\r\n this._fullScreen.set(fullScreen);\r\n }\r\n\r\n /** Set maximized (full-width) state */\r\n setMaximized(maximized: boolean) {\r\n this._maximized.set(maximized);\r\n }\r\n\r\n /** Toggle maximized (full-width) state */\r\n toggleMaximized() {\r\n this._maximized.set(!this._maximized());\r\n }\r\n}\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-dynamic-drawer-host',\r\n standalone: true,\r\n imports: [NgComponentOutlet, DrawerModule, Button],\r\n template: `\r\n <p-drawer\r\n [(visible)]=\"visible\"\r\n [appendTo]=\"'self'\"\r\n [style]=\"computedDrawerStyle()\"\r\n [closable]=\"cfg()?.closable\"\r\n [position]=\"cfg()?.position\"\r\n [fullScreen]=\"computedFullScreen()\"\r\n [modal]=\"cfg()?.modal\"\r\n [closeOnEscape]=\"cfg()?.closeOnEscape\"\r\n [dismissible]=\"cfg()?.dismissible\"\r\n [transitionOptions]=\"cfg()?.transitionOptions\"\r\n [styleClass]=\"computedStyleClass()\"\r\n (onShow)=\"onDrawerShow()\"\r\n (onHide)=\"onDrawerHide()\"\r\n >\r\n <ng-template #header>\r\n <div\r\n class=\"flex items-center justify-between px-5 w-full py-3 border-b border-surface\"\r\n >\r\n <h3 class=\"text-xl font-semibold\">{{ computedHeader() }}</h3>\r\n <div class=\"flex items-center gap-2\">\r\n @if (canShowMaximizeToggle()) {\r\n <mt-button\r\n (onClick)=\"toggleMaximized()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n severity=\"secondary\"\r\n [icon]=\"maximizeButtonIcon()\"\r\n [tooltip]=\"maximizeButtonTooltip()\"\r\n >\r\n </mt-button>\r\n }\r\n <mt-button\r\n (onClick)=\"handleHide()\"\r\n variant=\"outlined\"\r\n styleClass=\"!bg-white\"\r\n icon=\"general.x-close\"\r\n severity=\"secondary\"\r\n >\r\n </mt-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n @if (childInjector) {\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n cmp();\r\n injector: childInjector;\r\n inputs: cmpInputs()\r\n \"\r\n >\r\n </ng-container>\r\n }\r\n </p-drawer>\r\n `,\r\n})\r\nexport class DynamicDrawerHost {\r\n public visible = model<boolean>(false);\r\n cmp = signal<any>(null);\r\n cfg = signal<any>({ position: 'right' });\r\n cmpInputs = signal<Record<string, unknown>>({});\r\n childInjector!: Injector;\r\n private ref?: DynamicDialogRef;\r\n private drawerController = new DrawerController();\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly renderer = inject(Renderer2);\r\n private resizeAnimTimer: ReturnType<typeof setTimeout> | null = null;\r\n private readonly RESIZE_ANIM_CLASS = 'mt-drawer--anim-resize';\r\n private readonly RESIZE_ANIM_DURATION_MS = 700;\r\n\r\n constructor() {\r\n effect(() => {\r\n // React only when the user toggles maximize while the drawer is open.\r\n // Closing/opening goes through onDrawerShow / onDrawerHide so we never\r\n // race with PrimeNG's slide animation.\r\n const isMaximized = this.drawerController.maximized();\r\n if (!this.visible()) {\r\n return;\r\n }\r\n this.applyMaximizedInlineStyles(isMaximized, true);\r\n });\r\n }\r\n\r\n /** Computed styleClass combining config + dynamic controller class */\r\n computedStyleClass = computed(() => {\r\n const configClass = this.cfg()?.styleClass ?? '';\r\n const dynamicClass = this.drawerController.styleClass();\r\n const maximizedClass = this.drawerController.maximized()\r\n ? 'mt-drawer--maximized'\r\n : '';\r\n return `${configClass} ${dynamicClass} mt-drawer ${maximizedClass}`\r\n .replace(/\\s+/g, ' ')\r\n .trim();\r\n });\r\n\r\n /** Whether the maximize toggle button is visible in the header */\r\n canShowMaximizeToggle = computed(() => {\r\n const config = this.cfg();\r\n if (config?.showMaximizeToggle === false) {\r\n return false;\r\n }\r\n if (this.computedFullScreen()) {\r\n return false;\r\n }\r\n const position = config?.position ?? 'right';\r\n return position === 'left' || position === 'right';\r\n });\r\n\r\n /** Tooltip for maximize/restore button (state-aware) */\r\n maximizeButtonTooltip = computed(() => {\r\n const config = this.cfg();\r\n return this.drawerController.maximized()\r\n ? (config?.restoreTooltip ?? 'Restore size')\r\n : (config?.maximizeTooltip ?? 'Expand to full width');\r\n });\r\n\r\n /** Icon for maximize/restore button (state-aware) */\r\n maximizeButtonIcon = computed(() =>\r\n this.drawerController.maximized()\r\n ? 'layout.minimize-01'\r\n : 'layout.maximize-01',\r\n );\r\n\r\n /** Toggle the drawer's full-width state */\r\n toggleMaximized() {\r\n this.drawerController.toggleMaximized();\r\n }\r\n\r\n computedDrawerStyle = computed<Record<string, string> | null>(() => {\r\n const appendTo = this.cfg()?.appendTo;\r\n if (!appendTo || appendTo === 'body') {\r\n return { position: 'fixed' };\r\n }\r\n\r\n return null;\r\n });\r\n\r\n /** Computed header - controller overrides config if set */\r\n computedHeader = computed(() => {\r\n const dynamicHeader = this.drawerController.header();\r\n return dynamicHeader || this.cfg()?.header || '';\r\n });\r\n\r\n /** Computed fullScreen - controller overrides config if set */\r\n computedFullScreen = computed(() => {\r\n const dynamicFullScreen = this.drawerController.fullScreen();\r\n return dynamicFullScreen !== undefined\r\n ? dynamicFullScreen\r\n : this.cfg()?.fullScreen;\r\n });\r\n\r\n @Input({ required: true })\r\n connect(opts: {\r\n component: any;\r\n config?: any;\r\n parent: Injector;\r\n ref: DynamicDialogRef;\r\n }) {\r\n this.cmp.set(opts.component);\r\n this.cfg.set(opts.config ?? {});\r\n this.cmpInputs.set(opts.config?.inputValues ?? {});\r\n this.ref = opts.ref;\r\n this.childInjector = Injector.create({\r\n parent: opts.parent,\r\n providers: [\r\n { provide: DynamicDrawerConfig, useValue: opts.config ?? {} },\r\n { provide: DynamicDialogRef, useValue: opts.ref },\r\n { provide: DrawerController, useValue: this.drawerController },\r\n ],\r\n });\r\n\r\n opts.ref.onClose.subscribe(() => {\r\n this.visible.set(false);\r\n });\r\n }\r\n\r\n show() {\r\n this.visible.set(true);\r\n }\r\n\r\n handleHide(data = null) {\r\n this.visible.set(false);\r\n this.ref?.close(data);\r\n }\r\n\r\n onDrawerShow() {\r\n // Drawer DOM only exists after PrimeNG renders it — apply current state\r\n // instantly so the open animation doesn't fight the resize transition.\r\n this.applyMaximizedInlineStyles(this.drawerController.maximized(), false);\r\n }\r\n\r\n onDrawerHide() {\r\n // Instant cleanup — close animation already done; we don't want to start\r\n // a 650ms width transition mid-hide.\r\n this.applyMaximizedInlineStyles(false, false);\r\n }\r\n\r\n private getDrawerElement(): HTMLElement | null {\r\n return this.host.nativeElement.querySelector(\r\n '.p-drawer',\r\n ) as HTMLElement | null;\r\n }\r\n\r\n private applyMaximizedInlineStyles(\r\n isMaximized: boolean,\r\n animate: boolean,\r\n ): void {\r\n const drawerEl = this.getDrawerElement();\r\n if (!drawerEl) {\r\n return;\r\n }\r\n\r\n if (this.resizeAnimTimer) {\r\n clearTimeout(this.resizeAnimTimer);\r\n this.resizeAnimTimer = null;\r\n }\r\n\r\n if (animate) {\r\n this.renderer.addClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n this.resizeAnimTimer = setTimeout(() => {\r\n this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n this.resizeAnimTimer = null;\r\n }, this.RESIZE_ANIM_DURATION_MS);\r\n } else {\r\n this.renderer.removeClass(drawerEl, this.RESIZE_ANIM_CLASS);\r\n }\r\n\r\n if (isMaximized) {\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'width',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'max-width',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'height',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n this.renderer.setStyle(\r\n drawerEl,\r\n 'max-height',\r\n '100%',\r\n RendererStyleFlags2.Important,\r\n );\r\n } else {\r\n this.renderer.removeStyle(drawerEl, 'width');\r\n this.renderer.removeStyle(drawerEl, 'max-width');\r\n this.renderer.removeStyle(drawerEl, 'height');\r\n this.renderer.removeStyle(drawerEl, 'max-height');\r\n }\r\n }\r\n}\r\n","// dynamic-drawer.service.ts\r\nimport {\r\n Injectable,\r\n Type,\r\n createComponent,\r\n EnvironmentInjector,\r\n ApplicationRef,\r\n Injector,\r\n DestroyRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { DynamicDrawerHost } from './dynamic-drawer-host';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\nexport interface DynamicDrawerConfigInterface {\r\n header?: string;\r\n position?: string;\r\n data?: any;\r\n fullScreen?: boolean;\r\n modal?: boolean;\r\n closable?: boolean;\r\n closeOnEscape?: boolean;\r\n dismissible?: boolean;\r\n appendTo?: any;\r\n transitionOptions?: string;\r\n styleClass?: string;\r\n inputValues?: any;\r\n showMaximizeToggle?: boolean;\r\n maximizeTooltip?: string;\r\n restoreTooltip?: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DrawerService {\r\n private appRef = inject(ApplicationRef);\r\n private env = inject(EnvironmentInjector);\r\n private rootInjector = inject(Injector);\r\n private destroyRef = inject(DestroyRef);\r\n private doc = inject(DOCUMENT);\r\n private hostRef?: ReturnType<typeof createComponent<DynamicDrawerHost>>;\r\n defauiltConfig: DynamicDrawerConfigInterface = {\r\n position: 'right',\r\n modal: true,\r\n closable: false,\r\n transitionOptions: '200ms cubic-bezier(0, 0, 1, 1)',\r\n inputValues: {},\r\n showMaximizeToggle: true,\r\n maximizeTooltip: 'Expand to full width',\r\n restoreTooltip: 'Restore size',\r\n };\r\n\r\n constructor() {\r\n this.preloadDrawerHost();\r\n }\r\n\r\n open<T>(\r\n component: Type<any>,\r\n config: DynamicDrawerConfigInterface = {},\r\n ): DynamicDialogRef<T> {\r\n config = { ...this.defauiltConfig, ...config };\r\n\r\n const targetEl = this.resolveAppendTarget(config.appendTo);\r\n\r\n this.hostRef = createComponent(DynamicDrawerHost, {\r\n environmentInjector: this.env,\r\n });\r\n\r\n const ref = new DynamicDialogRef<T>();\r\n this.hostRef.instance.connect({\r\n component,\r\n config,\r\n parent: this.rootInjector,\r\n ref,\r\n });\r\n\r\n this.appRef.attachView(this.hostRef.hostView);\r\n\r\n // 📌 append to target (NOT body when provided)\r\n targetEl.appendChild(this.hostRef.location.nativeElement);\r\n\r\n // 🧹 auto-clean if app destroyed (SSR / HMR safety)\r\n this.destroyRef.onDestroy(() => {\r\n this.appRef.detachView(this.hostRef!.hostView);\r\n this.hostRef!.destroy();\r\n this.hostRef = undefined;\r\n });\r\n\r\n const currentHostRef = this.hostRef;\r\n const openDrawer = () => {\r\n if (this.hostRef !== currentHostRef) {\r\n return;\r\n }\r\n\r\n currentHostRef.instance.show();\r\n };\r\n\r\n if (this.doc.defaultView?.requestAnimationFrame) {\r\n this.doc.defaultView.requestAnimationFrame(openDrawer);\r\n } else {\r\n setTimeout(openDrawer, 0);\r\n }\r\n\r\n return ref;\r\n }\r\n\r\n private preloadDrawerHost() {\r\n const preloadHostRef = createComponent(DynamicDrawerHost, {\r\n environmentInjector: this.env,\r\n });\r\n const preloadElement = preloadHostRef.location.nativeElement as HTMLElement;\r\n\r\n preloadElement.style.display = 'none';\r\n\r\n this.appRef.attachView(preloadHostRef.hostView);\r\n this.doc.body.appendChild(preloadElement);\r\n preloadHostRef.changeDetectorRef.detectChanges();\r\n this.appRef.detachView(preloadHostRef.hostView);\r\n preloadElement.remove();\r\n preloadHostRef.destroy();\r\n }\r\n\r\n private resolveAppendTarget(appendTo?: string | HTMLElement): HTMLElement {\r\n if (!appendTo) return this.doc.body;\r\n\r\n if (typeof appendTo === 'string') {\r\n const selector =\r\n appendTo.startsWith('#') || appendTo.startsWith('.')\r\n ? appendTo\r\n : `#${appendTo}`;\r\n const el = this.doc.querySelector(selector) as HTMLElement | null;\r\n if (!el) {\r\n return this.doc.body;\r\n }\r\n return el;\r\n }\r\n\r\n return appendTo; // HTMLElement passed directly\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|