@koobiq/components 19.4.0 → 19.5.0
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/LICENSE +1 -1
- package/accordion/accordion-content.d.ts +1 -1
- package/accordion/accordion-content.directive.d.ts +18 -7
- package/accordion/accordion-header.directive.d.ts +2 -2
- package/accordion/accordion-item.d.ts +74 -3
- package/accordion/accordion-trigger.component.d.ts +15 -2
- package/accordion/accordion-trigger.directive.d.ts +9 -5
- package/accordion/accordion.component.d.ts +67 -6
- package/accordion/accordion.component.scss +9 -27
- package/accordion/public-api.d.ts +0 -2
- package/checkbox/checkbox.scss +5 -5
- package/clamped-text/clamped-list.d.ts +41 -0
- package/clamped-text/clamped-text.d.ts +10 -6
- package/clamped-text/constants.d.ts +21 -1
- package/clamped-text/index.d.ts +1 -0
- package/clamped-text/module.d.ts +2 -1
- package/code-block/code-block.d.ts +10 -3
- package/code-block/code-block.module.d.ts +1 -1
- package/code-block/code-block.scss +1 -0
- package/code-block/types.d.ts +9 -0
- package/core/common-behaviors/flex.d.ts +4 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/form-field/form-field-ref.d.ts +3 -1
- package/core/locales/en-US.d.ts +2 -0
- package/core/locales/es-LA.d.ts +2 -0
- package/core/locales/locale-service.d.ts +10 -0
- package/core/locales/pt-BR.d.ts +2 -0
- package/core/locales/ru-RU.d.ts +2 -0
- package/core/locales/tk-TM.d.ts +2 -0
- package/core/locales/types.d.ts +2 -0
- package/core/option/_option-theme.scss +4 -17
- package/core/option/option.d.ts +5 -1
- package/core/pop-up/pop-up-trigger.d.ts +10 -1
- package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
- package/core/styles/common/_animation.scss +1 -2
- package/core/styles/common/_overlay.scss +1 -1
- package/dropdown/dropdown.component.d.ts +2 -1
- package/fesm2022/koobiq-components-accordion.mjs +278 -236
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-app-switcher.mjs +25 -25
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
- package/fesm2022/koobiq-components-badge.mjs +13 -13
- package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button.mjs +15 -15
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +11 -11
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +134 -47
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +35 -16
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +28 -28
- package/fesm2022/koobiq-components-core.mjs +267 -233
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +40 -40
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dropdown.mjs +29 -21
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +39 -39
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +95 -95
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +68 -63
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +14 -14
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +26 -16
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +28 -26
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +13 -7
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-markdown.mjs +10 -10
- package/fesm2022/koobiq-components-modal.mjs +90 -63
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
- package/fesm2022/koobiq-components-navbar.mjs +51 -44
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +16 -16
- package/fesm2022/koobiq-components-overflow-items.mjs +29 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +18 -18
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +10 -10
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +8 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +13 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +13 -13
- package/fesm2022/koobiq-components-sidepanel.mjs +49 -40
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +26 -10
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +7 -7
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-tabs.mjs +54 -54
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +42 -45
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +10 -9
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +24 -24
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +10 -10
- package/fesm2022/koobiq-components-timezone.mjs +24 -24
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +16 -16
- package/fesm2022/koobiq-components-toggle.mjs +9 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +28 -18
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +10 -9
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +63 -50
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +28 -28
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/filter-bar/pipes/pipe-date.scss +3 -15
- package/form-field/form-field.d.ts +7 -1
- package/form-field/form-field.scss +4 -0
- package/icon/icon-button.scss +4 -0
- package/inline-edit/inline-edit.d.ts +1 -0
- package/input/input-password.d.ts +1 -0
- package/input/input.d.ts +1 -0
- package/link/_link-theme.scss +15 -7
- package/link/link-tokens.scss +2 -0
- package/link/link.component.d.ts +4 -1
- package/markdown/markdown.component.d.ts +1 -1
- package/modal/modal-ref.class.d.ts +1 -0
- package/modal/modal.component.d.ts +14 -8
- package/modal/modal.scss +1 -0
- package/modal/modal.type.d.ts +5 -0
- package/navbar/navbar-item.component.d.ts +3 -1
- package/overflow-items/overflow-items.d.ts +8 -2
- package/package.json +4 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +4 -5
- package/select/select.component.d.ts +1 -0
- package/sidepanel/_sidepanel-theme.scss +1 -7
- package/sidepanel/sidepanel-config.d.ts +4 -1
- package/sidepanel/sidepanel.service.d.ts +0 -1
- package/skeleton/skeleton.d.ts +5 -0
- package/skeleton/skeleton.scss +3 -2
- package/tabs/_tabs-common.scss +2 -1
- package/tags/tag-input.d.ts +4 -3
- package/tags/tag-list.component.d.ts +1 -0
- package/textarea/textarea.component.d.ts +1 -0
- package/tooltip/tooltip.component.d.ts +2 -0
- package/tree/_tree-theme.scss +0 -19
- package/tree/tree-option.component.d.ts +9 -3
- package/tree/tree-option.scss +2 -5
- package/tree/tree-selection.component.d.ts +2 -0
- package/tree-select/tree-select.component.d.ts +1 -0
- package/accordion/accordion-item.directive.d.ts +0 -72
- package/accordion/accordion-root.directive.d.ts +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/css-unit.pipe.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/modal.component.ts","../../../packages/components/modal/modal.component.html","../../../packages/components/modal/modal.directive.ts","../../../packages/components/modal/modal.service.ts","../../../packages/components/modal/modal.module.ts","../../../packages/components/modal/koobiq-components-modal.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { KbqModalComponent } from './modal.component';\n\n/**\n * API class that public to users to handle the modal instance.\n * KbqModalRef is aim to avoid accessing to the modal instance directly by users.\n */\nexport abstract class KbqModalRef<C = any, R = unknown> {\n abstract afterOpen: Observable<void>;\n abstract afterClose: Observable<R | undefined>;\n\n abstract open(): void;\n\n abstract close(result?: R): void;\n\n abstract destroy(result?: R): void;\n\n /**\n * Trigger the kbqOnOk/kbqOnCancel by manual\n */\n abstract triggerOk(): void;\n\n abstract triggerCancel(): void;\n\n // /**\n // * Return the ComponentRef of kbqContent when specify kbqContent as a Component\n // * Note: this method may return undefined if the Component has not ready yet.\n // (it only available after Modal's ngOnInit)\n // */\n // abstract getContentComponentRef(): ComponentRef<{}>;\n\n /**\n * Return the component instance of kbqContent when specify kbqContent as a Component\n * Note: this method may return undefined if the Component has not ready yet.\n * (it only available after Modal's ngOnInit)\n */\n abstract getContentComponent(): C;\n\n /**\n * Get the dom element of this Modal\n */\n abstract getElement(): HTMLElement;\n\n /**\n * Get the instance of the Modal itself\n */\n abstract getInstance(): KbqModalComponent;\n\n /**\n * Call markForCheck for change detector\n */\n abstract markForCheck();\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'toCssUnit'\n})\nexport class CssUnitPipe implements PipeTransform {\n transform(value: number | string, defaultUnit: string = 'px'): string {\n const formatted = +value;\n\n return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;\n }\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { KbqModalComponent } from '.';\nimport { KbqModalRef } from './modal-ref.class';\n\ninterface IRegisteredMeta {\n modalRef: KbqModalRef;\n afterOpenSubscription: Subscription;\n afterCloseSubscription: Subscription;\n}\n\n@Injectable()\nexport class KbqModalControlService {\n // Track singleton afterAllClose through over the injection tree\n get afterAllClose(): Subject<void> {\n return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;\n }\n\n // Track singleton openModals array through over the injection tree\n get openModals(): KbqModalRef[] {\n return this.parentService ? this.parentService.openModals : this.rootOpenModals;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootOpenModals: KbqModalRef[] = this.parentService ? null : [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootAfterAllClose: Subject<void> = this.parentService ? null : new Subject<void>();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootRegisteredMetaMap: Map<KbqModalRef, IRegisteredMeta> = this.parentService ? null : new Map();\n\n // Registered modal for later usage\n private get registeredMetaMap(): Map<KbqModalRef, IRegisteredMeta> {\n return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;\n }\n\n constructor(@Optional() @SkipSelf() private parentService: KbqModalControlService) {}\n\n // Register a modal to listen its open/close\n registerModal(modalRef: KbqModalRef): void {\n if (!this.hasRegistered(modalRef)) {\n const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));\n const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));\n\n this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });\n\n this.handleMultipleMasks(modalRef);\n }\n }\n\n hasRegistered(modalRef: KbqModalRef): boolean {\n return this.registeredMetaMap.has(modalRef);\n }\n\n // Close all registered opened modals\n closeAll(): void {\n let i = this.openModals.length;\n\n while (i--) {\n this.openModals[i].close();\n }\n }\n\n private removeOpenModal(modalRef: KbqModalRef): void {\n const index = this.openModals.indexOf(modalRef);\n\n if (index > -1) {\n this.openModals.splice(index, 1);\n\n if (!this.openModals.length) {\n this.afterAllClose.next();\n }\n }\n }\n\n private handleMultipleMasks(modalRef: KbqModalRef) {\n const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef) as KbqModalComponent[];\n\n if (modals.filter((modal) => modal.kbqVisible).length > 1) {\n const otherModals = modals\n .splice(0, modals.length - 1)\n .filter((modal) => modal.kbqVisible && modal.kbqMask);\n\n // hide other masks\n setTimeout(() => {\n otherModals.forEach((modal) => {\n modal.getInstance().kbqMask = false;\n modal.markForCheck();\n });\n });\n\n // show other masks on close\n modalRef.afterClose.subscribe(() => {\n otherModals.forEach((modal) => {\n modal.getInstance().kbqMask = true;\n modal.markForCheck();\n });\n });\n }\n }\n}\n","/** @docs-private */\nexport interface IClickPosition {\n x: number;\n y: number;\n}\n\n/** @docs-private */\nexport class ModalUtil {\n private lastPosition: IClickPosition;\n\n constructor(private document?: Document) {\n this.lastPosition = { x: -1, y: -1 };\n this.listenDocumentClick();\n }\n\n getLastClickPosition(): IClickPosition {\n return this.lastPosition;\n }\n\n listenDocumentClick(): void {\n this.document?.addEventListener('click', (event: MouseEvent) => {\n this.lastPosition = { x: event.clientX, y: event.clientY };\n });\n }\n}\n\n/** @docs-private */\nexport const modalUtilObject = new ModalUtil(\n // For SSR compatibility\n // eslint-disable-next-line no-restricted-globals\n typeof document === 'undefined' ? undefined : document\n);\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, Injector, TemplateRef, Type } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type OnClickCallback<T> = (instance: T) => (false | void | {}) | Promise<false | void | {}>;\n\n// Different modal styles we have supported\nexport type ModalType = 'default' | 'confirm' | 'custom';\n\n// Subtypes of Confirm Modal\nexport type ConfirmType = 'confirm' | 'success' | 'warn';\n\nexport enum ModalSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\n// Public options for using by service\nexport interface ModalOptions<C = any, R = any> {\n kbqModalType?: ModalType;\n kbqVisible?: boolean;\n kbqWidth?: number | string;\n kbqSize?: ModalSize;\n kbqWrapClassName?: string;\n kbqClassName?: string;\n kbqStyle?: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqTitle?: string | TemplateRef<{}>;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqContent?: string | TemplateRef<{}> | Type<C>;\n kbqComponent?: Type<C>; // The instance of component opened into the dialog.\n /** @deprecated. Use field data and KBQ_MODAL_DATA */\n kbqComponentParams?: any;\n kbqClosable?: boolean;\n kbqMask?: boolean;\n kbqMaskClosable?: boolean;\n kbqMaskStyle?: object;\n kbqBodyStyle?: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqFooter?: string | TemplateRef<{}> | IModalButtonOptions<C>[]; // Default Modal ONLY\n kbqGetContainer?: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null; // STATIC\n kbqAfterOpen?: EventEmitter<void>;\n kbqAfterClose?: EventEmitter<R>;\n kbqCloseByESC?: boolean;\n kbqRestoreFocus?: boolean;\n\n // --- Predefined OK & Cancel buttons\n kbqOkText?: string;\n kbqOkType?: string;\n kbqOkLoading?: boolean;\n kbqOnOk?: EventEmitter<C> | OnClickCallback<C>;\n kbqCancelText?: string;\n kbqCancelLoading?: boolean;\n kbqOnCancel?: EventEmitter<C> | OnClickCallback<C>;\n\n /** Data being injected into the child component. */\n data?;\n}\n\nexport interface IModalOptionsForService<T = any> extends ModalOptions<T> {\n kbqOnOk?: OnClickCallback<T>;\n kbqOnCancel?: OnClickCallback<T>;\n /**\n * The injector used to create the component that will be attached.\n * If specified, it overrides the injector provided by `KbqModalService`.\n */\n injector?: Injector;\n}\n\nexport interface IModalButtonOptions<T = any> {\n label: string;\n type?: string;\n shape?: string;\n ghost?: boolean;\n size?: string;\n // Default: true, indicate whether show loading automatically while onClick returned a Promise\n autoLoading?: boolean;\n\n // [NOTE] \"componentInstance\" will refer to the component's instance when using Component\n show?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n loading?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n disabled?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n\n autoFocus?: boolean;\n kbqModalMainAction?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onClick?(this: IModalButtonOptions<T>, contentComponentInstance?: T): (void | {}) | Promise<void | {}>;\n}\n","import { CdkTrapFocus, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n EventEmitter,\n inject,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ENTER, ESCAPE } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { modalUtilObject as ModalUtil } from './modal-util';\nimport { IModalButtonOptions, ModalOptions, ModalSize, ModalType, OnClickCallback } from './modal.type';\n\n/**\n * Duration when perform animations (ms)\n * @docs-private\n */\nexport const MODAL_ANIMATE_DURATION = 200;\n\ntype AnimationState = 'enter' | 'leave' | null;\n\n@Component({\n selector: 'kbq-modal',\n imports: [\n CdkTrapFocus,\n NgStyle,\n NgClass,\n KbqButtonModule,\n KbqIconModule,\n CssUnitPipe,\n NgTemplateOutlet\n ],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-modal',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class KbqModalComponent<T = any, R = any>\n extends KbqModalRef<T, R>\n implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions\n{\n protected readonly document = inject<Document>(DOCUMENT);\n\n componentColors = KbqComponentColors;\n\n @Input() kbqModalType: ModalType = 'default';\n\n // The instance of component opened into the dialog.\n @Input() kbqComponent: Type<T>;\n // If not specified, will use <ng-content>\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqContent: string | TemplateRef<{}> | Type<T>;\n // available when kbqContent is a component\n @Input() kbqComponentParams: any;\n // Default Modal ONLY\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqFooter: string | TemplateRef<{}> | IModalButtonOptions<T>[];\n\n @Input()\n get kbqVisible() {\n return this._kbqVisible;\n }\n set kbqVisible(value) {\n this._kbqVisible = value;\n }\n\n private _kbqVisible = false;\n\n @Output() readonly kbqVisibleChange = new EventEmitter<boolean>();\n\n @Input() kbqWidth: number | string;\n @Input() kbqSize: ModalSize = ModalSize.Medium;\n @Input() kbqWrapClassName: string;\n @Input() kbqClassName: string;\n @Input() kbqStyle: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqTitle: string | TemplateRef<{}>;\n @Input() kbqCloseByESC: boolean = true;\n\n @Input()\n get kbqClosable() {\n return this._kbqClosable;\n }\n set kbqClosable(value) {\n this._kbqClosable = value;\n }\n private _kbqClosable = true;\n\n @Input()\n get kbqMask() {\n return this._kbqMask;\n }\n set kbqMask(value) {\n this._kbqMask = value;\n }\n private _kbqMask = true;\n\n @Input()\n get kbqMaskClosable() {\n return this._kbqMaskClosable;\n }\n set kbqMaskClosable(value) {\n this._kbqMaskClosable = value;\n }\n private _kbqMaskClosable = false;\n\n @Input() kbqMaskStyle: object;\n @Input() kbqBodyStyle: object;\n\n // Trigger when modal open(visible) after animations\n @Output() readonly kbqAfterOpen = new EventEmitter<void>();\n // Trigger when modal leave-animation over\n @Output() readonly kbqAfterClose = new EventEmitter<R | undefined>();\n\n // --- Predefined OK & Cancel buttons\n @Input() kbqOkText: string;\n @Input() kbqOkType = KbqComponentColors.Contrast;\n\n @Input() kbqRestoreFocus = true;\n\n @Input()\n get kbqOkLoading() {\n return this._kbqOkLoading;\n }\n set kbqOkLoading(value) {\n this._kbqOkLoading = value;\n }\n private _kbqOkLoading = false;\n\n @Input() @Output() readonly kbqOnOk: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n @Input() kbqCancelText: string;\n\n @Input()\n get kbqCancelLoading() {\n return this._kbqCancelLoading;\n }\n set kbqCancelLoading(value) {\n this._kbqCancelLoading = value;\n }\n private _kbqCancelLoading = false;\n\n @Input() @Output() readonly kbqOnCancel: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n\n @ViewChild('modalContainer', { static: true }) modalContainer: ElementRef;\n @ViewChild('bodyContainer', { read: ViewContainerRef, static: false }) bodyContainer: ViewContainerRef;\n // Only aim to focus the ok button that needs to be auto focused\n @ViewChildren('autoFocusedButton', { read: ElementRef }) autoFocusedButtons: QueryList<ElementRef>;\n\n @ViewChild('modalBody') modalBody: ElementRef;\n\n isTopOverflow: boolean = false;\n isBottomOverflow: boolean = false;\n\n maskAnimationClassMap: object;\n modalAnimationClassMap: object;\n // The origin point that animation based on\n transformOrigin = '0px 0px 0px';\n\n // Observable alias for kbqAfterOpen\n get afterOpen(): Observable<void> {\n return this.kbqAfterOpen.asObservable();\n }\n\n // Observable alias for kbqAfterClose\n get afterClose(): Observable<R | undefined> {\n return this.kbqAfterClose.asObservable();\n }\n\n get okText(): string {\n return this.kbqOkText;\n }\n\n get cancelText(): string {\n return this.kbqCancelText;\n }\n\n // Indicate whether this dialog should hidden\n get hidden(): boolean {\n return !this.kbqVisible && !this.animationState;\n }\n\n private focusedElementBeforeOpen: HTMLElement | null;\n\n private previouslyFocusedElementOrigin: FocusOrigin;\n\n // Handle the reference when using kbqContent as Component\n private contentComponentRef: ComponentRef<T>;\n // Current animation state\n private animationState: AnimationState;\n private container: HTMLElement | OverlayRef;\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n private cfr: ComponentFactoryResolver,\n private elementRef: ElementRef<HTMLElement>,\n private viewContainer: ViewContainerRef,\n private modalControl: KbqModalControlService,\n private changeDetector: ChangeDetectorRef,\n private focusMonitor: FocusMonitor\n ) {\n super();\n }\n\n @Input() kbqGetContainer: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) = () => this.overlay.create();\n\n // [NOTE] NOT available when using by service!\n // Because ngOnChanges never be called when using by service,\n // here we can't support \"kbqContent\"(Component) etc. as inputs that initialized dynamically.\n // BUT: User also can change \"kbqContent\" dynamically to trigger UI changes\n // (provided you don't use \bComponent that needs initializations)\n ngOnChanges(changes: SimpleChanges) {\n if (changes.kbqVisible) {\n // Do not trigger animation while initializing\n this.handleVisibleStateChange(this.kbqVisible, !changes.kbqVisible.firstChange);\n }\n }\n\n ngOnInit() {\n // Create component along without View\n if (this.isComponent(this.kbqContent)) {\n this.createDynamicComponent(this.kbqContent as Type<T>);\n }\n\n // Setup default button options\n if (this.isModalButtons(this.kbqFooter)) {\n this.kbqFooter = this.formatModalButtons(this.kbqFooter as IModalButtonOptions<T>[]);\n }\n\n if (this.isComponent(this.kbqComponent)) {\n this.createDynamicComponent(this.kbqComponent);\n }\n\n // Place the modal dom to elsewhere\n this.container = typeof this.kbqGetContainer === 'function' ? this.kbqGetContainer() : this.kbqGetContainer;\n\n if (this.container instanceof HTMLElement) {\n this.container.appendChild(this.elementRef.nativeElement);\n } else if (this.container instanceof OverlayRef) {\n // NOTE: only attach the dom to overlay, the view container is not changed actually\n this.container.overlayElement.appendChild(this.elementRef.nativeElement);\n }\n\n // Register modal when afterOpen/afterClose is stable\n this.modalControl.registerModal(this);\n }\n\n ngAfterViewInit() {\n // If using Component, it is the time to attach View while bodyContainer is ready\n if (this.contentComponentRef) {\n this.bodyContainer.insert(this.contentComponentRef.hostView);\n }\n\n this.getElement().getElementsByTagName('button')[0]?.focus();\n\n (this.getElement().querySelector('button[autofocus]') as HTMLButtonElement)?.focus();\n\n this.checkOverflow();\n }\n\n ngOnDestroy() {\n if (this.container instanceof OverlayRef) {\n this.container.dispose();\n }\n }\n\n checkOverflow(): void {\n const nativeElement: HTMLElement = this.modalBody?.nativeElement;\n\n if (!nativeElement) {\n return;\n }\n\n const { scrollTop, offsetHeight, scrollHeight } = nativeElement;\n\n this.isTopOverflow = scrollTop > 0;\n\n this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;\n }\n\n open() {\n this.focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this.previouslyFocusedElementOrigin = this.focusMonitor['_lastFocusOrigin'];\n\n this.focusMonitor\n .monitor(this.modalContainer, true)\n .pipe(take(1))\n .subscribe(() => this.focusMonitor.stopMonitoring(this.modalContainer));\n\n this.changeVisibleFromInside(true);\n }\n\n close(result?: R) {\n this.changeVisibleFromInside(false, result).then(() => {\n if (this.kbqRestoreFocus && this.focusedElementBeforeOpen) {\n this.focusMonitor.focusVia(\n this.focusedElementBeforeOpen as HTMLElement,\n this.previouslyFocusedElementOrigin\n );\n\n this.focusedElementBeforeOpen = null;\n }\n });\n }\n\n // Destroy equals Close\n destroy(result?: R) {\n this.close(result);\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n triggerOk() {\n this.onClickOkCancel('ok');\n }\n\n triggerCancel() {\n this.onClickOkCancel('cancel');\n }\n\n getInstance(): KbqModalComponent {\n return this;\n }\n\n getContentComponentRef(): ComponentRef<T> {\n return this.contentComponentRef;\n }\n\n getContentComponent(): T {\n return this.contentComponentRef && this.contentComponentRef.instance;\n }\n\n getElement(): HTMLElement {\n return this.elementRef && this.elementRef.nativeElement;\n }\n\n getKbqFooter(): HTMLElement {\n return this.getElement().getElementsByClassName('kbq-modal-footer').item(0) as HTMLElement;\n }\n\n onClickMask($event: MouseEvent) {\n if (\n this.kbqMask &&\n this.kbqMaskClosable &&\n ($event.target as HTMLElement).classList.contains('kbq-modal-wrap') &&\n this.kbqVisible\n ) {\n this.onClickOkCancel('cancel');\n }\n }\n\n isModalType(type: ModalType): boolean {\n return this.kbqModalType === type;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.container && this.container instanceof OverlayRef) {\n this.close();\n event.preventDefault();\n }\n\n if (event.ctrlKey && event.keyCode === ENTER) {\n if (this.kbqModalType === 'confirm') {\n this.triggerOk();\n }\n\n (this.getElement().querySelector('[kbq-modal-main-action]') as HTMLElement)?.click();\n\n event.preventDefault();\n }\n }\n\n // AoT\n onClickCloseBtn() {\n if (this.kbqVisible) {\n this.onClickOkCancel('cancel');\n }\n }\n\n // AoT\n onClickOkCancel(type: 'ok' | 'cancel') {\n this.handleCloseResult(type, (doClose) => doClose !== false);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n handleCloseResult(triggerType: 'ok' | 'cancel', canClose: (doClose: boolean | void | {}) => boolean) {\n const trigger = { ok: this.kbqOnOk, cancel: this.kbqOnCancel }[triggerType];\n const loadingKey = { ok: 'kbqOkLoading', cancel: 'kbqCancelLoading' }[triggerType];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this.getContentComponent());\n } else if (typeof trigger === 'function') {\n const result = trigger(this.getContentComponent());\n // Users can return \"false\" to prevent closing by default\n // eslint-disable-next-line @typescript-eslint/ban-types\n const caseClose = (doClose: boolean | void | {}) => canClose(doClose) && this.close(doClose as R);\n\n if (isPromise(result)) {\n this[loadingKey] = true;\n\n const handleThen = (doClose) => {\n this[loadingKey] = false;\n caseClose(doClose);\n };\n\n (result as Promise<void>).then(handleThen).catch(handleThen);\n } else {\n caseClose(result);\n }\n }\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isNonEmptyString(value: {}): boolean {\n return typeof value === 'string' && value !== '';\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isTemplateRef(value: {}): boolean {\n return value instanceof TemplateRef;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isComponent(value: {}): boolean {\n return value instanceof Type;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isModalButtons(value: {}): boolean {\n return Array.isArray(value) && value.length > 0;\n }\n\n // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n getButtonCallableProp(options: IModalButtonOptions<T>, prop: string): {} {\n const value = options[prop];\n const args: any[] = [];\n\n if (this.contentComponentRef) {\n args.push(this.contentComponentRef.instance);\n }\n\n return typeof value === 'function' ? value.apply(options, args) : value;\n }\n\n // On kbqFooter's modal button click\n // AoT\n onButtonClick(button: IModalButtonOptions<T>) {\n // Call onClick directly\n const result = this.getButtonCallableProp(button, 'onClick');\n\n if (isPromise(result)) {\n button.loading = true;\n // eslint-disable-next-line @typescript-eslint/ban-types\n (result as Promise<{}>).then(() => (button.loading = false)).catch(() => (button.loading = false));\n }\n }\n\n // Do rest things when visible state changed\n private handleVisibleStateChange(visible: boolean, animation: boolean = true, closeResult?: R): Promise<any> {\n // Hide scrollbar at the first time when shown up\n if (visible) {\n this.changeBodyOverflow(1);\n }\n\n return (\n Promise.resolve(animation && this.animateTo(visible))\n // Emit open/close event after animations over\n .then(() => {\n if (visible) {\n this.kbqAfterOpen.emit();\n } else {\n this.kbqAfterClose.emit(closeResult);\n // Show/hide scrollbar when animation is over\n this.changeBodyOverflow();\n }\n })\n );\n }\n\n // Change kbqVisible from inside\n private changeVisibleFromInside(visible: boolean, closeResult?: R): Promise<void> {\n if (this.kbqVisible !== visible) {\n // Change kbqVisible value immediately\n this.kbqVisible = visible;\n this.kbqVisibleChange.emit(visible);\n\n return this.handleVisibleStateChange(visible, true, closeResult);\n }\n\n return Promise.resolve();\n }\n\n private changeAnimationState(state: AnimationState) {\n this.animationState = state;\n\n if (state) {\n this.maskAnimationClassMap = {\n [`fade-${state}`]: true,\n [`fade-${state}-active`]: true\n };\n\n this.modalAnimationClassMap = {\n [`zoom-${state}`]: true,\n [`zoom-${state}-active`]: true\n };\n } else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.maskAnimationClassMap = this.modalAnimationClassMap = null;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.changeDetectorRef.markForCheck();\n } else {\n this.changeDetector.markForCheck();\n }\n }\n\n private animateTo(isVisible: boolean): Promise<any> {\n // Figure out the latest click position when shows up\n if (isVisible) {\n // [NOTE] Using timeout due to the document.click event is fired later than visible change,\n // so if not postponed to next event-loop, we can't get the latest click position\n setTimeout(() => this.updateTransformOrigin());\n }\n\n this.changeAnimationState(isVisible ? 'enter' : 'leave');\n\n // Return when animation is over\n return new Promise((resolve) => {\n return setTimeout(() => {\n this.changeAnimationState(null);\n resolve(null);\n }, MODAL_ANIMATE_DURATION);\n });\n }\n\n private formatModalButtons(buttons: IModalButtonOptions<T>[]): IModalButtonOptions<T>[] {\n return buttons.map((button) => {\n return {\n ...{\n type: 'default',\n size: 'default',\n autoLoading: true,\n show: true,\n loading: false,\n disabled: false\n },\n ...button\n };\n });\n }\n\n /**\n * Create a component dynamically but not attach to any View\n * (this action will be executed when bodyContainer is ready)\n * @param component Component class\n */\n private createDynamicComponent(component: Type<T>) {\n const factory = this.cfr.resolveComponentFactory(component);\n const childInjector = Injector.create({\n providers: [{ provide: KbqModalRef, useValue: this }],\n parent: this.viewContainer.injector\n });\n\n this.contentComponentRef = factory.create(childInjector);\n\n if (this.kbqComponentParams) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.assign(this.contentComponentRef.instance, this.kbqComponentParams);\n }\n\n // Do the first change detection immediately\n // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)\n this.contentComponentRef.changeDetectorRef.detectChanges();\n }\n\n // Update transform-origin to the last click position on document\n private updateTransformOrigin() {\n const modalElement = this.modalContainer.nativeElement as HTMLElement;\n const lastPosition = ModalUtil.getLastClickPosition();\n\n if (lastPosition) {\n this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;\n }\n }\n\n /**\n * Take care of the body's overflow to decide the existence of scrollbar\n * @param plusNum The number that the openModals.length will increase soon\n */\n private changeBodyOverflow(plusNum: number = 0) {\n const openModals = this.modalControl.openModals;\n\n if (openModals.length + plusNum > 0) {\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.document.body, 'overflow');\n }\n }\n}\n\nfunction isPromise(obj: unknown | void): boolean {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof (obj as Promise<unknown>).then === 'function' &&\n typeof (obj as Promise<unknown>).catch === 'function'\n );\n}\n","<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content />\n</ng-template>\n\n<div>\n @if (kbqMask) {\n <div\n class=\"kbq-modal-mask\"\n [class.kbq-modal-mask-hidden]=\"hidden\"\n [ngClass]=\"maskAnimationClassMap\"\n [ngStyle]=\"kbqMaskStyle\"\n ></div>\n }\n\n <div\n class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n tabindex=\"-1\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n class=\"kbq-modal-container {{ kbqClassName }} kbq-modal_{{ kbqSize }}\"\n [class.kbq-modal_no-footer]=\"!kbqFooter\"\n [ngClass]=\"modalAnimationClassMap\"\n [ngStyle]=\"kbqStyle\"\n [style.transform-origin]=\"transformOrigin\"\n [style.width]=\"kbqWidth | toCssUnit\"\n >\n <div cdkTrapFocus class=\"kbq-modal-content\">\n @switch (true) {\n @case (isModalType('default')) {\n <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n }\n @case (isModalType('confirm')) {\n <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n }\n @case (isModalType('custom')) {\n <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer />\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n @if (kbqTitle) {\n <div kbq-title class=\"kbq-modal-header\" [class.kbq-modal-body_top-overflow]=\"isTopOverflow\">\n <div class=\"kbq-modal-title\">\n @switch (true) {\n @case (isTemplateRef(kbqTitle)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqTitle)\" />\n }\n @case (isNonEmptyString(kbqTitle)) {\n <div [innerHTML]=\"kbqTitle\"></div>\n }\n }\n </div>\n @if (kbqClosable) {\n <button\n kbq-button\n type=\"button\"\n class=\"kbq-modal-close kbq-button_transparent\"\n [color]=\"'contrast'\"\n (click)=\"onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n }\n </div>\n }\n <div #modalBody class=\"kbq-modal-body kbq-scrollbar\" [ngStyle]=\"kbqBodyStyle\" (scroll)=\"checkOverflow()\">\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqFooter || kbqOkText || kbqCancelText) {\n <div class=\"kbq-modal-footer\" [class.kbq-modal-body_bottom-overflow]=\"isBottomOverflow\">\n @switch (true) {\n @case (isTemplateRef(kbqFooter)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqFooter)\" />\n }\n @case (isNonEmptyString(kbqFooter)) {\n <div [innerHTML]=\"kbqFooter\"></div>\n }\n @case (isModalButtons(kbqFooter)) {\n @for (button of $any(kbqFooter); track button) {\n @if (getButtonCallableProp(button, 'show')) {\n <button\n kbq-button\n [attr.autofocus]=\"button.autoFocus\"\n [attr.kbq-modal-main-action]=\"button.kbqModalMainAction\"\n [class.kbq-progress]=\"getButtonCallableProp(button, 'loading')\"\n [color]=\"button.type\"\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n (click)=\"onButtonClick(button)\"\n >\n {{ button.label }}\n </button>\n }\n }\n }\n @default {\n @if (kbqOkText) {\n <button\n kbq-button\n [attr.autofocus]=\"true\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClickOkCancel('ok')\"\n >\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n }\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div class=\"kbq-modal-body\" [ngStyle]=\"kbqBodyStyle\">\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqOkText || kbqCancelText) {\n <div class=\"kbq-confirm-footer\">\n @if (kbqOkText) {\n <button kbq-button [attr.autofocus]=\"true\" [color]=\"kbqOkType\" (click)=\"onClickOkCancel('ok')\">\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n","import { Component, Directive } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqModalComponent } from './modal.component';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-modal-title\" kbq-title>\n <ng-content />\n </div>\n\n @if (modal.kbqClosable) {\n <button\n class=\"kbq-modal-close kbq-button_transparent\"\n type=\"button\"\n kbq-button\n [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"modal.componentColors.Contrast\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-modal-header',\n '[class.kbq-modal-header_closable]': 'modal.kbqClosable'\n }\n})\nexport class KbqModalTitle {\n constructor(protected modal: KbqModalComponent) {}\n}\n\n@Directive({\n selector: `[kbq-modal-body], kbq-modal-body, [kbqModalBody]`,\n host: {\n class: 'kbq-modal-body'\n }\n})\nexport class KbqModalBody {}\n\n@Directive({\n selector: `[kbq-modal-footer], kbq-modal-footer, [kbqModalFooter]`,\n host: {\n class: 'kbq-modal-footer'\n }\n})\nexport class KbqModalFooter {}\n\n@Directive({\n selector: `[kbq-modal-main-action]`\n})\nexport class KbqModalMainAction {}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector } from '@angular/core';\nimport { ESCAPE } from '@koobiq/cdk/keycodes';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { ConfirmType, IModalOptionsForService, ModalOptions } from './modal.type';\n\n/** Injection token that can be used to access the data that was passed in to a modal. */\nexport const KBQ_MODAL_DATA = new InjectionToken<unknown>('KbqModalData');\n\n/**\n * A builder used for managing service creating modals\n * @docs-private\n */\nexport class ModalBuilderForService {\n // Modal ComponentRef, \"null\" means it has been destroyed\n private modalRef: ComponentRef<KbqModalComponent> | null;\n private overlayRef: OverlayRef;\n\n constructor(\n private readonly overlay: Overlay,\n readonly options: IModalOptionsForService = {},\n private readonly injector: Injector\n ) {\n this.createModal();\n\n if (!('kbqGetContainer' in options)) {\n options.kbqGetContainer = undefined;\n }\n\n this.changeProps(options);\n this.modalRef!.instance.open();\n this.modalRef!.instance.kbqAfterClose.subscribe(() => this.destroyModal());\n\n this.overlayRef\n .keydownEvents()\n .pipe(\n filter((event: KeyboardEvent) => {\n return !!(event.keyCode === ESCAPE && options.kbqCloseByESC);\n })\n )\n .subscribe(() => this.getInstance()?.handleCloseResult('cancel', () => true));\n }\n\n getInstance(): KbqModalComponent | null {\n return this.modalRef && this.modalRef.instance;\n }\n\n destroyModal(): void {\n if (this.modalRef) {\n this.overlayRef.dispose();\n this.modalRef = null;\n }\n }\n\n private changeProps(options: ModalOptions): void {\n if (this.modalRef) {\n // here not limit user's inputs at runtime\n Object.assign(this.modalRef.instance, options);\n }\n }\n\n // Create component to ApplicationRef\n private createModal(): void {\n this.overlayRef = this.overlay.create();\n this.overlayRef.hostElement.classList.add('kbq-modal-overlay');\n\n this.modalRef = this.overlayRef.attach(new ComponentPortal(KbqModalComponent, undefined, this.injector));\n }\n}\n\n@Injectable()\nexport class KbqModalService {\n // Track of the current close modals (we assume invisible is close this time)\n get openModals(): KbqModalRef[] {\n return this.modalControl.openModals;\n }\n\n get afterAllClose(): Observable<void> {\n return this.modalControl.afterAllClose.asObservable();\n }\n\n constructor(\n private readonly overlay: Overlay,\n private readonly modalControl: KbqModalControlService,\n private injector: Injector\n ) {}\n\n // Closes all of the currently-open dialogs\n closeAll(): void {\n this.modalControl.closeAll();\n }\n\n create<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n if (typeof options.kbqOnCancel !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnCancel = () => {};\n }\n\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n if (!('kbqCloseByESC' in options)) {\n options.kbqCloseByESC = true;\n }\n\n // Remove the Cancel button if the user not specify a Cancel button\n if (!('kbqCancelText' in options)) {\n options.kbqCancelText = undefined;\n }\n\n // Remove the Ok button if the user not specify an Ok button\n if (!('kbqOkText' in options)) {\n options.kbqOkText = undefined;\n }\n\n // Remove the footer if the user not specify a footer\n if (!('kbqFooter' in options)) {\n options.kbqFooter = undefined;\n }\n\n const injector = Injector.create({\n parent: options.injector || this.injector,\n providers: [{ provide: KBQ_MODAL_DATA, useValue: options.data }]\n });\n\n return new ModalBuilderForService(this.overlay, options, injector).getInstance()!;\n }\n\n confirm<C, R = unknown>(\n options: IModalOptionsForService<C> = {},\n confirmType: ConfirmType = 'confirm'\n ): KbqModalRef<C, R> {\n if ('kbqFooter' in options) {\n // eslint-disable-next-line no-console\n console.warn(`The Confirm-Modal doesn't support \"kbqFooter\", this property will be ignored.`);\n }\n\n // NOTE: only support function currently by calling confirm()\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n options.kbqModalType = 'confirm';\n options.kbqClassName = `kbq-confirm kbq-confirm-${confirmType} ${options.kbqClassName || ''}`;\n\n return this.create<C, R>(options);\n }\n\n open<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n options.kbqModalType = 'custom';\n\n return this.create<C, R>(options);\n }\n\n success<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'success');\n }\n\n delete<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'warn');\n }\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalComponent } from './modal.component';\nimport { KbqModalBody, KbqModalFooter, KbqModalMainAction, KbqModalTitle } from './modal.directive';\nimport { KbqModalService } from './modal.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n A11yModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n NgTemplateOutlet,\n NgStyle,\n NgClass,\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\n KbqModalMainAction\n ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ],\n providers: [\n KbqModalControlService,\n KbqModalService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }]\n})\nexport class KbqModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ModalUtil","i2.KbqModalControlService","i1.KbqModalComponent","i2","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/css-unit.pipe.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.component.ts","../../../packages/components/modal/modal.component.html","../../../packages/components/modal/modal.directive.ts","../../../packages/components/modal/modal.service.ts","../../../packages/components/modal/modal.module.ts","../../../packages/components/modal/koobiq-components-modal.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { KbqModalComponent } from './modal.component';\n\n/**\n * API class that public to users to handle the modal instance.\n * KbqModalRef is aim to avoid accessing to the modal instance directly by users.\n */\nexport abstract class KbqModalRef<C = any, R = unknown> {\n abstract afterOpen: Observable<void>;\n abstract beforeClose: Observable<R | undefined>;\n abstract afterClose: Observable<R | undefined>;\n\n abstract open(): void;\n\n abstract close(result?: R): void;\n\n abstract destroy(result?: R): void;\n\n /**\n * Trigger the kbqOnOk/kbqOnCancel by manual\n */\n abstract triggerOk(): void;\n\n abstract triggerCancel(): void;\n\n // /**\n // * Return the ComponentRef of kbqContent when specify kbqContent as a Component\n // * Note: this method may return undefined if the Component has not ready yet.\n // (it only available after Modal's ngOnInit)\n // */\n // abstract getContentComponentRef(): ComponentRef<{}>;\n\n /**\n * Return the component instance of kbqContent when specify kbqContent as a Component\n * Note: this method may return undefined if the Component has not ready yet.\n * (it only available after Modal's ngOnInit)\n */\n abstract getContentComponent(): C;\n\n /**\n * Get the dom element of this Modal\n */\n abstract getElement(): HTMLElement;\n\n /**\n * Get the instance of the Modal itself\n */\n abstract getInstance(): KbqModalComponent;\n\n /**\n * Call markForCheck for change detector\n */\n abstract markForCheck();\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'toCssUnit'\n})\nexport class CssUnitPipe implements PipeTransform {\n transform(value: number | string, defaultUnit: string = 'px'): string {\n const formatted = +value;\n\n return isNaN(formatted) ? `${value}` : `${formatted}${defaultUnit}`;\n }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, Injector, TemplateRef, Type } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type OnClickCallback<T> = (instance: T) => (false | void | {}) | Promise<false | void | {}>;\n\n// Different modal styles we have supported\nexport type ModalType = 'default' | 'confirm' | 'custom';\n\n// Subtypes of Confirm Modal\nexport type ConfirmType = 'confirm' | 'success' | 'warn';\n\nexport enum ModalSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\n/**\n * Duration when perform animations (ms)\n * @docs-private\n */\nexport const MODAL_ANIMATE_DURATION = 300;\n\n// Public options for using by service\nexport interface ModalOptions<C = any, R = any> {\n kbqModalType?: ModalType;\n kbqVisible?: boolean;\n kbqWidth?: number | string;\n kbqSize?: ModalSize;\n kbqWrapClassName?: string;\n kbqClassName?: string;\n kbqStyle?: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqTitle?: string | TemplateRef<{}>;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqContent?: string | TemplateRef<{}> | Type<C>;\n kbqComponent?: Type<C>; // The instance of component opened into the dialog.\n /** @deprecated. Use field data and KBQ_MODAL_DATA */\n kbqComponentParams?: any;\n kbqClosable?: boolean;\n kbqMask?: boolean;\n kbqMaskClosable?: boolean;\n kbqMaskStyle?: object;\n kbqBodyStyle?: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n kbqFooter?: string | TemplateRef<{}> | IModalButtonOptions<C>[]; // Default Modal ONLY\n kbqGetContainer?: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) | null; // STATIC\n kbqAfterOpen?: EventEmitter<void>;\n kbqAfterClose?: EventEmitter<R>;\n kbqCloseByESC?: boolean;\n kbqRestoreFocus?: boolean;\n\n // --- Predefined OK & Cancel buttons\n kbqOkText?: string;\n kbqOkType?: string;\n kbqOkLoading?: boolean;\n kbqOnOk?: EventEmitter<C> | OnClickCallback<C>;\n kbqCancelText?: string;\n kbqCancelLoading?: boolean;\n kbqOnCancel?: EventEmitter<C> | OnClickCallback<C>;\n\n /** Data being injected into the child component. */\n data?;\n}\n\nexport interface IModalOptionsForService<T = any> extends ModalOptions<T> {\n kbqOnOk?: OnClickCallback<T>;\n kbqOnCancel?: OnClickCallback<T>;\n /**\n * The injector used to create the component that will be attached.\n * If specified, it overrides the injector provided by `KbqModalService`.\n */\n injector?: Injector;\n}\n\nexport interface IModalButtonOptions<T = any> {\n label: string;\n type?: string;\n shape?: string;\n ghost?: boolean;\n size?: string;\n // Default: true, indicate whether show loading automatically while onClick returned a Promise\n autoLoading?: boolean;\n\n // [NOTE] \"componentInstance\" will refer to the component's instance when using Component\n show?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n loading?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n disabled?: boolean | ((this: IModalButtonOptions<T>, contentComponentInstance?: T) => boolean);\n\n autoFocus?: boolean;\n kbqModalMainAction?: boolean;\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n onClick?(this: IModalButtonOptions<T>, contentComponentInstance?: T): (void | {}) | Promise<void | {}>;\n}\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { MODAL_ANIMATE_DURATION } from './modal.type';\n\ninterface IRegisteredMeta {\n modalRef: KbqModalRef;\n afterOpenSubscription: Subscription;\n afterCloseSubscription: Subscription;\n}\n\n@Injectable()\nexport class KbqModalControlService {\n // Track singleton afterAllClose through over the injection tree\n get afterAllClose(): Subject<void> {\n return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose;\n }\n\n // Track singleton openModals array through over the injection tree\n get openModals(): KbqModalRef[] {\n return this.parentService ? this.parentService.openModals : this.rootOpenModals;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootOpenModals: KbqModalRef[] = this.parentService ? null : [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootAfterAllClose: Subject<void> = this.parentService ? null : new Subject<void>();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n private rootRegisteredMetaMap: Map<KbqModalRef, IRegisteredMeta> = this.parentService ? null : new Map();\n\n // Registered modal for later usage\n private get registeredMetaMap(): Map<KbqModalRef, IRegisteredMeta> {\n return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap;\n }\n\n constructor(@Optional() @SkipSelf() private parentService: KbqModalControlService) {}\n\n // Register a modal to listen its open/close\n registerModal(modalRef: KbqModalRef): void {\n if (!this.hasRegistered(modalRef)) {\n const afterOpenSubscription = modalRef.afterOpen.subscribe(() => this.openModals.push(modalRef));\n const afterCloseSubscription = modalRef.afterClose.subscribe(() => this.removeOpenModal(modalRef));\n\n this.registeredMetaMap.set(modalRef, { modalRef, afterOpenSubscription, afterCloseSubscription });\n\n this.handleMultipleMasks(modalRef);\n }\n }\n\n hasRegistered(modalRef: KbqModalRef): boolean {\n return this.registeredMetaMap.has(modalRef);\n }\n\n // Close all registered opened modals\n closeAll(): void {\n let i = this.openModals.length;\n\n while (i--) {\n this.openModals[i].close();\n }\n }\n\n private removeOpenModal(modalRef: KbqModalRef): void {\n const index = this.openModals.indexOf(modalRef);\n\n if (index > -1) {\n this.openModals.splice(index, 1);\n\n if (!this.openModals.length) {\n this.afterAllClose.next();\n }\n }\n }\n\n private handleMultipleMasks(modalRef: KbqModalRef) {\n const modals = Array.from(this.registeredMetaMap.values()).map((v) => v.modalRef) as KbqModalComponent[];\n\n if (modals.filter((modal) => modal.kbqVisible).length > 1) {\n const visibleModalsWithMask = modals\n .splice(0, modals.length - 1)\n .filter((modal) => modal.kbqVisible && modal.kbqMask);\n\n // Trigger leave animation on other masks, then disable them after animation completes\n visibleModalsWithMask.forEach((modal) => {\n setTimeout(() => {\n modal.getInstance().animateMaskTo(null);\n modal.getInstance().kbqMask = false;\n modal.markForCheck();\n }, MODAL_ANIMATE_DURATION);\n\n modal.getInstance().animateMaskTo('leave');\n modal.markForCheck();\n });\n\n // On close, restore other masks with enter animation, then reset animation state after it completes\n modalRef.beforeClose.subscribe(() => {\n visibleModalsWithMask.forEach((modal) => {\n setTimeout(() => {\n modalRef.getInstance().animateMaskTo(null);\n modalRef.getInstance().kbqMask = false;\n modal.getInstance().animateMaskTo(null);\n modal.markForCheck();\n }, MODAL_ANIMATE_DURATION);\n\n modalRef.getInstance().animateMaskTo('leave');\n modal.getInstance().kbqMask = true;\n modal.getInstance().animateMaskTo('enter');\n\n modal.markForCheck();\n });\n });\n }\n }\n}\n","/** @docs-private */\nexport interface IClickPosition {\n x: number;\n y: number;\n}\n\n/** @docs-private */\nexport class ModalUtil {\n private lastPosition: IClickPosition;\n\n constructor(private document?: Document) {\n this.lastPosition = { x: -1, y: -1 };\n this.listenDocumentClick();\n }\n\n getLastClickPosition(): IClickPosition {\n return this.lastPosition;\n }\n\n listenDocumentClick(): void {\n this.document?.addEventListener('click', (event: MouseEvent) => {\n this.lastPosition = { x: event.clientX, y: event.clientY };\n });\n }\n}\n\n/** @docs-private */\nexport const modalUtilObject = new ModalUtil(\n // For SSR compatibility\n // eslint-disable-next-line no-restricted-globals\n typeof document === 'undefined' ? undefined : document\n);\n","import { CdkTrapFocus, FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n EventEmitter,\n inject,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { ENTER, ESCAPE } from '@koobiq/cdk/keycodes';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { modalUtilObject as ModalUtil } from './modal-util';\nimport {\n IModalButtonOptions,\n MODAL_ANIMATE_DURATION,\n ModalOptions,\n ModalSize,\n ModalType,\n OnClickCallback\n} from './modal.type';\n\ntype AnimationState = 'enter' | 'leave' | null;\n\n@Component({\n selector: 'kbq-modal',\n imports: [\n CdkTrapFocus,\n NgStyle,\n NgClass,\n KbqButtonModule,\n KbqIconModule,\n CssUnitPipe,\n NgTemplateOutlet\n ],\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-modal',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class KbqModalComponent<T = any, R = any>\n extends KbqModalRef<T, R>\n implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions\n{\n protected readonly document = inject<Document>(DOCUMENT);\n\n componentColors = KbqComponentColors;\n\n @Input() kbqModalType: ModalType = 'default';\n\n // The instance of component opened into the dialog.\n @Input() kbqComponent: Type<T>;\n // If not specified, will use <ng-content>\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqContent: string | TemplateRef<{}> | Type<T>;\n // available when kbqContent is a component\n @Input() kbqComponentParams: any;\n // Default Modal ONLY\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqFooter: string | TemplateRef<{}> | IModalButtonOptions<T>[];\n\n @Input()\n get kbqVisible() {\n return this._kbqVisible;\n }\n set kbqVisible(value) {\n this._kbqVisible = value;\n }\n\n private _kbqVisible = false;\n\n @Output() readonly kbqVisibleChange = new EventEmitter<boolean>();\n\n @Input() kbqWidth: number | string;\n @Input() kbqSize: ModalSize = ModalSize.Medium;\n @Input() kbqWrapClassName: string;\n @Input() kbqClassName: string;\n @Input() kbqStyle: object;\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqTitle: string | TemplateRef<{}>;\n @Input() kbqCloseByESC: boolean = true;\n\n @Input()\n get kbqClosable() {\n return this._kbqClosable;\n }\n set kbqClosable(value) {\n this._kbqClosable = value;\n }\n private _kbqClosable = true;\n\n @Input()\n get kbqMask() {\n return this._kbqMask;\n }\n set kbqMask(value) {\n this._kbqMask = value;\n }\n private _kbqMask = true;\n\n @Input()\n get kbqMaskClosable() {\n return this._kbqMaskClosable;\n }\n set kbqMaskClosable(value) {\n this._kbqMaskClosable = value;\n }\n private _kbqMaskClosable = false;\n\n @Input() kbqMaskStyle: object;\n @Input() kbqBodyStyle: object;\n\n // Trigger when modal open(visible) after animations\n @Output() readonly kbqAfterOpen = new EventEmitter<void>();\n // Trigger when modal leave-animation over\n @Output() readonly kbqAfterClose = new EventEmitter<R | undefined>();\n /** Emitted before the modal begins its closing animation. */\n @Output() readonly kbqBeforeClose = new EventEmitter<R | undefined>();\n\n // --- Predefined OK & Cancel buttons\n @Input() kbqOkText: string;\n @Input() kbqOkType = KbqComponentColors.Contrast;\n\n @Input() kbqRestoreFocus = true;\n\n @Input()\n get kbqOkLoading() {\n return this._kbqOkLoading;\n }\n set kbqOkLoading(value) {\n this._kbqOkLoading = value;\n }\n private _kbqOkLoading = false;\n\n @Input() @Output() readonly kbqOnOk: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n @Input() kbqCancelText: string;\n\n @Input()\n get kbqCancelLoading() {\n return this._kbqCancelLoading;\n }\n set kbqCancelLoading(value) {\n this._kbqCancelLoading = value;\n }\n private _kbqCancelLoading = false;\n\n @Input() @Output() readonly kbqOnCancel: EventEmitter<T> | OnClickCallback<T> = new EventEmitter<T>();\n\n @ViewChild('modalContainer', { static: true }) modalContainer: ElementRef;\n @ViewChild('bodyContainer', { read: ViewContainerRef, static: false }) bodyContainer: ViewContainerRef;\n // Only aim to focus the ok button that needs to be auto focused\n @ViewChildren('autoFocusedButton', { read: ElementRef }) autoFocusedButtons: QueryList<ElementRef>;\n\n @ViewChild('modalBody') modalBody: ElementRef;\n\n isTopOverflow: boolean = false;\n isBottomOverflow: boolean = false;\n\n maskAnimationClassMap: object | null;\n modalAnimationClassMap: object | null;\n // The origin point that animation based on\n transformOrigin = '0px 0px 0px';\n\n // Observable alias for kbqAfterOpen\n get afterOpen(): Observable<void> {\n return this.kbqAfterOpen.asObservable();\n }\n\n /** Observable alias for `kbqBeforeClose` */\n get beforeClose(): Observable<R | undefined> {\n return this.kbqBeforeClose.asObservable();\n }\n\n // Observable alias for kbqAfterClose\n get afterClose(): Observable<R | undefined> {\n return this.kbqAfterClose.asObservable();\n }\n\n get okText(): string {\n return this.kbqOkText;\n }\n\n get cancelText(): string {\n return this.kbqCancelText;\n }\n\n // Indicate whether this dialog should hidden\n get hidden(): boolean {\n return !this.kbqVisible && !this.animationState;\n }\n\n private focusedElementBeforeOpen: HTMLElement | null;\n\n private previouslyFocusedElementOrigin: FocusOrigin;\n\n // Handle the reference when using kbqContent as Component\n private contentComponentRef: ComponentRef<T>;\n // Current animation state\n private animationState: AnimationState;\n private container: HTMLElement | OverlayRef;\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n private cfr: ComponentFactoryResolver,\n private elementRef: ElementRef<HTMLElement>,\n private viewContainer: ViewContainerRef,\n private modalControl: KbqModalControlService,\n private changeDetector: ChangeDetectorRef,\n private focusMonitor: FocusMonitor\n ) {\n super();\n }\n\n @Input() kbqGetContainer: HTMLElement | OverlayRef | (() => HTMLElement | OverlayRef) = () => this.overlay.create();\n\n // [NOTE] NOT available when using by service!\n // Because ngOnChanges never be called when using by service,\n // here we can't support \"kbqContent\"(Component) etc. as inputs that initialized dynamically.\n // BUT: User also can change \"kbqContent\" dynamically to trigger UI changes\n // (provided you don't use \bComponent that needs initializations)\n ngOnChanges(changes: SimpleChanges) {\n if (changes.kbqVisible) {\n // Do not trigger animation while initializing\n this.handleVisibleStateChange(this.kbqVisible, !changes.kbqVisible.firstChange);\n }\n }\n\n ngOnInit() {\n // Create component along without View\n if (this.isComponent(this.kbqContent)) {\n this.createDynamicComponent(this.kbqContent as Type<T>);\n }\n\n // Setup default button options\n if (this.isModalButtons(this.kbqFooter)) {\n this.kbqFooter = this.formatModalButtons(this.kbqFooter as IModalButtonOptions<T>[]);\n }\n\n if (this.isComponent(this.kbqComponent)) {\n this.createDynamicComponent(this.kbqComponent);\n }\n\n // Place the modal dom to elsewhere\n this.container = typeof this.kbqGetContainer === 'function' ? this.kbqGetContainer() : this.kbqGetContainer;\n\n if (this.container instanceof HTMLElement) {\n this.container.appendChild(this.elementRef.nativeElement);\n } else if (this.container instanceof OverlayRef) {\n // NOTE: only attach the dom to overlay, the view container is not changed actually\n this.container.overlayElement.appendChild(this.elementRef.nativeElement);\n }\n\n // Register modal when afterOpen/afterClose is stable\n this.modalControl.registerModal(this);\n }\n\n ngAfterViewInit() {\n // If using Component, it is the time to attach View while bodyContainer is ready\n if (this.contentComponentRef) {\n this.bodyContainer.insert(this.contentComponentRef.hostView);\n }\n\n this.getElement().getElementsByTagName('button')[0]?.focus();\n\n (this.getElement().querySelector('button[autofocus]') as HTMLButtonElement)?.focus();\n\n this.checkOverflow();\n }\n\n ngOnDestroy() {\n if (this.container instanceof OverlayRef) {\n this.container.dispose();\n }\n }\n\n checkOverflow(): void {\n const nativeElement: HTMLElement = this.modalBody?.nativeElement;\n\n if (!nativeElement) {\n return;\n }\n\n const { scrollTop, offsetHeight, scrollHeight } = nativeElement;\n\n this.isTopOverflow = scrollTop > 0;\n\n this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;\n }\n\n open() {\n this.focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this.previouslyFocusedElementOrigin = this.focusMonitor['_lastFocusOrigin'];\n\n this.focusMonitor\n .monitor(this.modalContainer, true)\n .pipe(take(1))\n .subscribe(() => this.focusMonitor.stopMonitoring(this.modalContainer));\n\n this.changeVisibleFromInside(true);\n }\n\n close(result?: R) {\n this.changeVisibleFromInside(false, result).then(() => {\n if (this.kbqRestoreFocus && this.focusedElementBeforeOpen) {\n this.focusMonitor.focusVia(\n this.focusedElementBeforeOpen as HTMLElement,\n this.previouslyFocusedElementOrigin\n );\n\n this.focusedElementBeforeOpen = null;\n }\n });\n }\n\n // Destroy equals Close\n destroy(result?: R) {\n this.close(result);\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n triggerOk() {\n this.onClickOkCancel('ok');\n }\n\n triggerCancel() {\n this.onClickOkCancel('cancel');\n }\n\n getInstance(): KbqModalComponent {\n return this;\n }\n\n getContentComponentRef(): ComponentRef<T> {\n return this.contentComponentRef;\n }\n\n getContentComponent(): T {\n return this.contentComponentRef && this.contentComponentRef.instance;\n }\n\n getElement(): HTMLElement {\n return this.elementRef && this.elementRef.nativeElement;\n }\n\n getKbqFooter(): HTMLElement {\n return this.getElement().getElementsByClassName('kbq-modal-footer').item(0) as HTMLElement;\n }\n\n onClickMask($event: MouseEvent) {\n if (\n this.kbqMask &&\n this.kbqMaskClosable &&\n ($event.target as HTMLElement).classList.contains('kbq-modal-wrap') &&\n this.kbqVisible\n ) {\n this.onClickOkCancel('cancel');\n }\n }\n\n isModalType(type: ModalType): boolean {\n return this.kbqModalType === type;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.container && this.container instanceof OverlayRef) {\n this.close();\n event.preventDefault();\n }\n\n if (event.ctrlKey && event.keyCode === ENTER) {\n if (this.kbqModalType === 'confirm') {\n this.triggerOk();\n }\n\n (this.getElement().querySelector('[kbq-modal-main-action]') as HTMLElement)?.click();\n\n event.preventDefault();\n }\n }\n\n // AoT\n onClickCloseBtn() {\n if (this.kbqVisible) {\n this.onClickOkCancel('cancel');\n }\n }\n\n // AoT\n onClickOkCancel(type: 'ok' | 'cancel') {\n this.handleCloseResult(type, (doClose) => doClose !== false);\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n handleCloseResult(triggerType: 'ok' | 'cancel', canClose: (doClose: boolean | void | {}) => boolean) {\n const trigger = { ok: this.kbqOnOk, cancel: this.kbqOnCancel }[triggerType];\n const loadingKey = { ok: 'kbqOkLoading', cancel: 'kbqCancelLoading' }[triggerType];\n\n if (trigger instanceof EventEmitter) {\n trigger.emit(this.getContentComponent());\n } else if (typeof trigger === 'function') {\n const result = trigger(this.getContentComponent());\n // Users can return \"false\" to prevent closing by default\n // eslint-disable-next-line @typescript-eslint/ban-types\n const caseClose = (doClose: boolean | void | {}) => canClose(doClose) && this.close(doClose as R);\n\n if (isPromise(result)) {\n this[loadingKey] = true;\n\n const handleThen = (doClose) => {\n this[loadingKey] = false;\n caseClose(doClose);\n };\n\n (result as Promise<void>).then(handleThen).catch(handleThen);\n } else {\n caseClose(result);\n }\n }\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isNonEmptyString(value: {}): boolean {\n return typeof value === 'string' && value !== '';\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isTemplateRef(value: {}): boolean {\n return value instanceof TemplateRef;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isComponent(value: {}): boolean {\n return value instanceof Type;\n }\n\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n isModalButtons(value: {}): boolean {\n return Array.isArray(value) && value.length > 0;\n }\n\n // Lookup a button's property, if the prop is a function, call & then return the result, otherwise, return itself.\n // AoT\n // eslint-disable-next-line @typescript-eslint/ban-types\n getButtonCallableProp(options: IModalButtonOptions<T>, prop: string): {} {\n const value = options[prop];\n const args: any[] = [];\n\n if (this.contentComponentRef) {\n args.push(this.contentComponentRef.instance);\n }\n\n return typeof value === 'function' ? value.apply(options, args) : value;\n }\n\n // On kbqFooter's modal button click\n // AoT\n onButtonClick(button: IModalButtonOptions<T>) {\n // Call onClick directly\n const result = this.getButtonCallableProp(button, 'onClick');\n\n if (isPromise(result)) {\n button.loading = true;\n // eslint-disable-next-line @typescript-eslint/ban-types\n (result as Promise<{}>).then(() => (button.loading = false)).catch(() => (button.loading = false));\n }\n }\n\n /**\n * Sets mask animation classes for the given state, or clears them if state is null.\n * @docs-private\n */\n animateMaskTo(state: AnimationState) {\n this.maskAnimationClassMap = state\n ? {\n [`fade-${state}`]: true,\n [`fade-${state}-active`]: true\n }\n : null;\n }\n\n // Do rest things when visible state changed\n private handleVisibleStateChange(visible: boolean, animation: boolean = true, closeResult?: R): Promise<any> {\n // Hide scrollbar at the first time when shown up\n if (visible) {\n this.changeBodyOverflow(1);\n } else {\n this.kbqBeforeClose.emit(closeResult);\n }\n\n return (\n Promise.resolve(animation && this.animateTo(visible))\n // Emit open/close event after animations over\n .then(() => {\n if (visible) {\n this.kbqAfterOpen.emit();\n } else {\n this.kbqAfterClose.emit(closeResult);\n // Show/hide scrollbar when animation is over\n this.changeBodyOverflow();\n }\n })\n );\n }\n\n // Change kbqVisible from inside\n private changeVisibleFromInside(visible: boolean, closeResult?: R): Promise<void> {\n if (this.kbqVisible !== visible) {\n // Change kbqVisible value immediately\n this.kbqVisible = visible;\n this.kbqVisibleChange.emit(visible);\n\n return this.handleVisibleStateChange(visible, true, closeResult);\n }\n\n return Promise.resolve();\n }\n\n private changeAnimationState(state: AnimationState) {\n this.animationState = state;\n\n this.animateMaskTo(state);\n\n if (state) {\n this.modalAnimationClassMap = {\n [`zoom-${state}`]: true,\n [`zoom-${state}-active`]: true\n };\n } else {\n this.modalAnimationClassMap = null;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.changeDetectorRef.markForCheck();\n } else {\n this.changeDetector.markForCheck();\n }\n }\n\n private animateTo(isVisible: boolean): Promise<any> {\n // Figure out the latest click position when shows up\n if (isVisible) {\n // [NOTE] Using timeout due to the document.click event is fired later than visible change,\n // so if not postponed to next event-loop, we can't get the latest click position\n setTimeout(() => this.updateTransformOrigin());\n }\n\n this.changeAnimationState(isVisible ? 'enter' : 'leave');\n\n // Return when animation is over\n return new Promise((resolve) => {\n return setTimeout(() => {\n this.changeAnimationState(null);\n resolve(null);\n }, MODAL_ANIMATE_DURATION);\n });\n }\n\n private formatModalButtons(buttons: IModalButtonOptions<T>[]): IModalButtonOptions<T>[] {\n return buttons.map((button) => {\n return {\n ...{\n type: 'default',\n size: 'default',\n autoLoading: true,\n show: true,\n loading: false,\n disabled: false\n },\n ...button\n };\n });\n }\n\n /**\n * Create a component dynamically but not attach to any View\n * (this action will be executed when bodyContainer is ready)\n * @param component Component class\n */\n private createDynamicComponent(component: Type<T>) {\n const factory = this.cfr.resolveComponentFactory(component);\n const childInjector = Injector.create({\n providers: [{ provide: KbqModalRef, useValue: this }],\n parent: this.viewContainer.injector\n });\n\n this.contentComponentRef = factory.create(childInjector);\n\n if (this.kbqComponentParams) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.assign(this.contentComponentRef.instance, this.kbqComponentParams);\n }\n\n // Do the first change detection immediately\n // (or we do detection at ngAfterViewInit, multi-changes error will be thrown)\n this.contentComponentRef.changeDetectorRef.detectChanges();\n }\n\n // Update transform-origin to the last click position on document\n private updateTransformOrigin() {\n const modalElement = this.modalContainer.nativeElement as HTMLElement;\n const lastPosition = ModalUtil.getLastClickPosition();\n\n if (lastPosition) {\n this.transformOrigin = `${lastPosition.x - modalElement.offsetLeft}px ${lastPosition.y - modalElement.offsetTop}px 0px`;\n }\n }\n\n /**\n * Take care of the body's overflow to decide the existence of scrollbar\n * @param plusNum The number that the openModals.length will increase soon\n */\n private changeBodyOverflow(plusNum: number = 0) {\n const openModals = this.modalControl.openModals;\n\n if (openModals.length + plusNum > 0) {\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n } else {\n this.renderer.removeStyle(this.document.body, 'overflow');\n }\n }\n}\n\nfunction isPromise(obj: unknown | void): boolean {\n return (\n !!obj &&\n (typeof obj === 'object' || typeof obj === 'function') &&\n typeof (obj as Promise<unknown>).then === 'function' &&\n typeof (obj as Promise<unknown>).catch === 'function'\n );\n}\n","<!-- Compatible: the <ng-content> can appear only once -->\n<ng-template #tplOriginContent>\n <ng-content />\n</ng-template>\n\n<div>\n @if (kbqMask) {\n <div\n class=\"kbq-modal-mask\"\n [class.kbq-modal-mask-hidden]=\"hidden\"\n [ngClass]=\"maskAnimationClassMap\"\n [ngStyle]=\"kbqMaskStyle\"\n ></div>\n }\n\n <div\n class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n tabindex=\"-1\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n class=\"kbq-modal-container {{ kbqClassName }} kbq-modal_{{ kbqSize }}\"\n [class.kbq-modal_no-footer]=\"!kbqFooter\"\n [ngClass]=\"modalAnimationClassMap\"\n [ngStyle]=\"kbqStyle\"\n [style.transform-origin]=\"transformOrigin\"\n [style.width]=\"kbqWidth | toCssUnit\"\n >\n <div cdkTrapFocus class=\"kbq-modal-content\">\n @switch (true) {\n @case (isModalType('default')) {\n <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n }\n @case (isModalType('confirm')) {\n <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n }\n @case (isModalType('custom')) {\n <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer />\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n @if (kbqTitle) {\n <div kbq-title class=\"kbq-modal-header\" [class.kbq-modal-body_top-overflow]=\"isTopOverflow\">\n <div class=\"kbq-modal-title\">\n @switch (true) {\n @case (isTemplateRef(kbqTitle)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqTitle)\" />\n }\n @case (isNonEmptyString(kbqTitle)) {\n <div [innerHTML]=\"kbqTitle\"></div>\n }\n }\n </div>\n @if (kbqClosable) {\n <button\n kbq-button\n type=\"button\"\n class=\"kbq-modal-close kbq-button_transparent\"\n [color]=\"'contrast'\"\n (click)=\"onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n }\n </div>\n }\n <div #modalBody class=\"kbq-modal-body kbq-scrollbar\" [ngStyle]=\"kbqBodyStyle\" (scroll)=\"checkOverflow()\">\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqFooter || kbqOkText || kbqCancelText) {\n <div class=\"kbq-modal-footer\" [class.kbq-modal-body_bottom-overflow]=\"isBottomOverflow\">\n @switch (true) {\n @case (isTemplateRef(kbqFooter)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqFooter)\" />\n }\n @case (isNonEmptyString(kbqFooter)) {\n <div [innerHTML]=\"kbqFooter\"></div>\n }\n @case (isModalButtons(kbqFooter)) {\n @for (button of $any(kbqFooter); track button) {\n @if (getButtonCallableProp(button, 'show')) {\n <button\n kbq-button\n [attr.autofocus]=\"button.autoFocus\"\n [attr.kbq-modal-main-action]=\"button.kbqModalMainAction\"\n [class.kbq-progress]=\"getButtonCallableProp(button, 'loading')\"\n [color]=\"button.type\"\n [disabled]=\"getButtonCallableProp(button, 'disabled')\"\n (click)=\"onButtonClick(button)\"\n >\n {{ button.label }}\n </button>\n }\n }\n }\n @default {\n @if (kbqOkText) {\n <button\n kbq-button\n [attr.autofocus]=\"true\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClickOkCancel('ok')\"\n >\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n }\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Default Modal Content -->\n\n<!-- [Predefined] Confirm Modal Content -->\n<ng-template #tplContentConfirm>\n <div class=\"kbq-modal-body\" [ngStyle]=\"kbqBodyStyle\">\n <ng-container #bodyContainer>\n @if (!isComponent(kbqContent)) {\n @switch (true) {\n @case (isTemplateRef(kbqContent)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqContent)\" />\n }\n @case (isNonEmptyString(kbqContent)) {\n <div [innerHTML]=\"kbqContent\"></div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"tplOriginContent\" />\n }\n }\n }\n </ng-container>\n </div>\n @if (kbqOkText || kbqCancelText) {\n <div class=\"kbq-confirm-footer\">\n @if (kbqOkText) {\n <button kbq-button [attr.autofocus]=\"true\" [color]=\"kbqOkType\" (click)=\"onClickOkCancel('ok')\">\n {{ okText }}\n </button>\n }\n @if (kbqCancelText) {\n <button kbq-button (click)=\"onClickOkCancel('cancel')\">\n {{ cancelText }}\n </button>\n }\n </div>\n }\n</ng-template>\n<!-- /[Predefined] Confirm Modal Content -->\n","import { Component, Directive } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleDirective } from '@koobiq/components/title';\nimport { KbqModalComponent } from './modal.component';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\n imports: [\n KbqIconModule,\n KbqButtonModule,\n KbqTitleDirective\n ],\n template: `\n <div class=\"kbq-modal-title\" kbq-title>\n <ng-content />\n </div>\n\n @if (modal.kbqClosable) {\n <button\n class=\"kbq-modal-close kbq-button_transparent\"\n type=\"button\"\n kbq-button\n [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"modal.componentColors.Contrast\"></i>\n </button>\n }\n `,\n host: {\n class: 'kbq-modal-header',\n '[class.kbq-modal-header_closable]': 'modal.kbqClosable'\n }\n})\nexport class KbqModalTitle {\n constructor(protected modal: KbqModalComponent) {}\n}\n\n@Directive({\n selector: `[kbq-modal-body], kbq-modal-body, [kbqModalBody]`,\n host: {\n class: 'kbq-modal-body'\n }\n})\nexport class KbqModalBody {}\n\n@Directive({\n selector: `[kbq-modal-footer], kbq-modal-footer, [kbqModalFooter]`,\n host: {\n class: 'kbq-modal-footer'\n }\n})\nexport class KbqModalFooter {}\n\n@Directive({\n selector: `[kbq-modal-main-action]`\n})\nexport class KbqModalMainAction {}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, InjectionToken, Injector } from '@angular/core';\nimport { ESCAPE } from '@koobiq/cdk/keycodes';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalRef } from './modal-ref.class';\nimport { KbqModalComponent } from './modal.component';\nimport { ConfirmType, IModalOptionsForService, ModalOptions } from './modal.type';\n\n/** Injection token that can be used to access the data that was passed in to a modal. */\nexport const KBQ_MODAL_DATA = new InjectionToken<unknown>('KbqModalData');\n\n/**\n * A builder used for managing service creating modals\n * @docs-private\n */\nexport class ModalBuilderForService {\n // Modal ComponentRef, \"null\" means it has been destroyed\n private modalRef: ComponentRef<KbqModalComponent> | null;\n private overlayRef: OverlayRef;\n\n constructor(\n private readonly overlay: Overlay,\n readonly options: IModalOptionsForService = {},\n private readonly injector: Injector\n ) {\n this.createModal();\n\n if (!('kbqGetContainer' in options)) {\n options.kbqGetContainer = undefined;\n }\n\n this.changeProps(options);\n\n // Defers ESC handling until the modal is fully open, avoiding premature close during the opening animation.\n this.modalRef!.instance.kbqAfterOpen.pipe(\n switchMap(() => this.overlayRef.keydownEvents()),\n filter((event: KeyboardEvent) => {\n return !!(event.keyCode === ESCAPE && options.kbqCloseByESC);\n })\n ).subscribe(() => this.getInstance()?.handleCloseResult('cancel', () => true));\n\n this.modalRef!.instance.open();\n this.modalRef!.instance.kbqAfterClose.subscribe(() => this.destroyModal());\n }\n\n getInstance(): KbqModalComponent | null {\n return this.modalRef && this.modalRef.instance;\n }\n\n destroyModal(): void {\n if (this.modalRef) {\n this.overlayRef.dispose();\n this.modalRef = null;\n }\n }\n\n private changeProps(options: ModalOptions): void {\n if (this.modalRef) {\n // here not limit user's inputs at runtime\n Object.assign(this.modalRef.instance, options);\n }\n }\n\n // Create component to ApplicationRef\n private createModal(): void {\n this.overlayRef = this.overlay.create();\n this.overlayRef.hostElement.classList.add('kbq-modal-overlay');\n\n this.modalRef = this.overlayRef.attach(new ComponentPortal(KbqModalComponent, undefined, this.injector));\n }\n}\n\n@Injectable()\nexport class KbqModalService {\n // Track of the current close modals (we assume invisible is close this time)\n get openModals(): KbqModalRef[] {\n return this.modalControl.openModals;\n }\n\n get afterAllClose(): Observable<void> {\n return this.modalControl.afterAllClose.asObservable();\n }\n\n constructor(\n private readonly overlay: Overlay,\n private readonly modalControl: KbqModalControlService,\n private injector: Injector\n ) {}\n\n // Closes all of the currently-open dialogs\n closeAll(): void {\n this.modalControl.closeAll();\n }\n\n create<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n if (typeof options.kbqOnCancel !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnCancel = () => {};\n }\n\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n if (!('kbqCloseByESC' in options)) {\n options.kbqCloseByESC = true;\n }\n\n // Remove the Cancel button if the user not specify a Cancel button\n if (!('kbqCancelText' in options)) {\n options.kbqCancelText = undefined;\n }\n\n // Remove the Ok button if the user not specify an Ok button\n if (!('kbqOkText' in options)) {\n options.kbqOkText = undefined;\n }\n\n // Remove the footer if the user not specify a footer\n if (!('kbqFooter' in options)) {\n options.kbqFooter = undefined;\n }\n\n const injector = Injector.create({\n parent: options.injector || this.injector,\n providers: [{ provide: KBQ_MODAL_DATA, useValue: options.data }]\n });\n\n return new ModalBuilderForService(this.overlay, options, injector).getInstance()!;\n }\n\n confirm<C, R = unknown>(\n options: IModalOptionsForService<C> = {},\n confirmType: ConfirmType = 'confirm'\n ): KbqModalRef<C, R> {\n if ('kbqFooter' in options) {\n // eslint-disable-next-line no-console\n console.warn(`The Confirm-Modal doesn't support \"kbqFooter\", this property will be ignored.`);\n }\n\n // NOTE: only support function currently by calling confirm()\n if (typeof options.kbqOnOk !== 'function') {\n // Leave an empty function to close this modal by default\n options.kbqOnOk = () => {};\n }\n\n options.kbqModalType = 'confirm';\n options.kbqClassName = `kbq-confirm kbq-confirm-${confirmType} ${options.kbqClassName || ''}`;\n\n return this.create<C, R>(options);\n }\n\n open<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n options.kbqModalType = 'custom';\n\n return this.create<C, R>(options);\n }\n\n success<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'success');\n }\n\n delete<C, R = unknown>(options: IModalOptionsForService<C> = {}): KbqModalRef<C, R> {\n return this.confirm<C, R>(options, 'warn');\n }\n}\n","import { A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { CssUnitPipe } from './css-unit.pipe';\nimport { KbqModalControlService } from './modal-control.service';\nimport { KbqModalComponent } from './modal.component';\nimport { KbqModalBody, KbqModalFooter, KbqModalMainAction, KbqModalTitle } from './modal.directive';\nimport { KbqModalService } from './modal.service';\n\n@NgModule({\n imports: [\n OverlayModule,\n A11yModule,\n KbqButtonModule,\n KbqIconModule,\n KbqTitleModule,\n NgTemplateOutlet,\n NgStyle,\n NgClass,\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\n KbqModalMainAction\n ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ],\n providers: [\n KbqModalControlService,\n KbqModalService,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }]\n})\nexport class KbqModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ModalUtil","i2.KbqModalControlService","i1.KbqModalComponent","i2","i3"],"mappings":"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"}
|