@koobiq/components 18.11.0 → 18.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/button/button-tokens.scss +1 -1
  2. package/core/common-behaviors/error-state.d.ts +3 -3
  3. package/esm2022/button/button.component.mjs +2 -2
  4. package/esm2022/core/common-behaviors/error-state.mjs +1 -1
  5. package/esm2022/core/version.mjs +2 -2
  6. package/esm2022/file-upload/file-upload.mjs +40 -2
  7. package/esm2022/file-upload/multiple-file-upload.component.mjs +43 -47
  8. package/esm2022/file-upload/single-file-upload.component.mjs +41 -45
  9. package/esm2022/form-field/hint.mjs +2 -2
  10. package/esm2022/form-field/password-hint.mjs +2 -2
  11. package/esm2022/modal/modal.service.mjs +2 -2
  12. package/esm2022/modal/modal.type.mjs +1 -1
  13. package/esm2022/scrollbar/scrollbar.directive.mjs +6 -3
  14. package/esm2022/toast/toast-container.component.mjs +3 -3
  15. package/esm2022/toast/toast.component.mjs +18 -9
  16. package/esm2022/toast/toast.module.mjs +14 -50
  17. package/esm2022/toast/toast.service.mjs +5 -2
  18. package/esm2022/tree-select/tree-select.component.mjs +5 -35
  19. package/fesm2022/koobiq-components-button.mjs +2 -2
  20. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  21. package/fesm2022/koobiq-components-core.mjs +1 -1
  22. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  23. package/fesm2022/koobiq-components-file-upload.mjs +107 -76
  24. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-form-field.mjs +4 -4
  26. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-modal.mjs +1 -1
  28. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-scrollbar.mjs +5 -2
  30. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-toast.mjs +138 -161
  32. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-tree-select.mjs +4 -34
  34. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  35. package/file-upload/_file-upload-theme.scss +16 -2
  36. package/file-upload/file-upload.d.ts +29 -2
  37. package/file-upload/multiple-file-upload.component.d.ts +18 -18
  38. package/file-upload/single-file-upload.component.d.ts +17 -16
  39. package/form-field/_hint-theme.scss +1 -1
  40. package/modal/modal.type.d.ts +6 -1
  41. package/package.json +4 -4
  42. package/schematics/ng-add/index.js +2 -2
  43. package/scrollbar/scrollbar.directive.d.ts +2 -1
  44. package/toast/toast-container.component.d.ts +1 -1
  45. package/toast/toast.component.d.ts +2 -2
  46. package/toast/toast.module.d.ts +1 -7
  47. package/toast/toast.service.d.ts +1 -1
  48. package/tree-select/_tree-select-theme.scss +4 -0
  49. package/tree-select/tree-select.component.d.ts +1 -12
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/css-unit.pipe.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 { 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","export interface IClickPosition {\n x: number;\n y: number;\n}\n\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\nexport const modalUtilObject = new ModalUtil(document);\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { EventEmitter, 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\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 { 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 { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT } 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 { KbqComponentColors } from '@koobiq/components/core';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\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 templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\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() 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() kbqAfterOpen = new EventEmitter<void>();\n // Trigger when modal leave-animation over\n @Output() 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() 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() 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,\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 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 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 // [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 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 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 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 const handleThen = (doClose) => {\n this[loadingKey] = false;\n caseClose(doClose);\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 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 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 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 tabindex=\"-1\"\n class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n class=\"kbq-modal {{ 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 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 { KbqModalComponent } from './modal.component';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\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 [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n kbq-button\n >\n <i [color]=\"modal.componentColors.Contrast\" kbq-icon=\"kbq-xmark_16\"></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 a empty function to close this modal by default\n options.kbqOnCancel = () => {};\n }\n\n if (!('kbqCloseByESC' in options)) {\n options.kbqCloseByESC = true;\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 // Remove the Ok button if the user not specify a Ok button\n if (!('kbqOkText' in options)) {\n options.kbqOkText = undefined;\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: 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 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 a 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 ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ],\n declarations: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\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","i8.CssUnitPipe","i1.KbqModalComponent","i2","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-modal.mjs","sources":["../../../packages/components/modal/modal-ref.class.ts","../../../packages/components/modal/modal-control.service.ts","../../../packages/components/modal/modal-util.ts","../../../packages/components/modal/modal.type.ts","../../../packages/components/modal/css-unit.pipe.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 { 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","export interface IClickPosition {\n x: number;\n y: number;\n}\n\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\nexport const modalUtilObject = new ModalUtil(document);\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 { 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 { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { DOCUMENT } 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 { KbqComponentColors } from '@koobiq/components/core';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\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 templateUrl: './modal.component.html',\n styleUrls: ['./modal.scss', 'modal-tokens.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\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() 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() kbqAfterOpen = new EventEmitter<void>();\n // Trigger when modal leave-animation over\n @Output() 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() 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() 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,\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 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 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 // [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 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 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 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 const handleThen = (doClose) => {\n this[loadingKey] = false;\n caseClose(doClose);\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 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 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 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 tabindex=\"-1\"\n class=\"kbq-modal-wrap {{ kbqWrapClassName }}\"\n [style.display]=\"hidden ? 'none' : ''\"\n (mousedown)=\"onClickMask($event)\"\n >\n <div\n #modalContainer\n class=\"kbq-modal {{ 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 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 { KbqModalComponent } from './modal.component';\n\n@Component({\n selector: `[kbq-modal-title], kbq-modal-title, [kbqModalTitle]`,\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 [color]=\"'contrast'\"\n (click)=\"modal.onClickCloseBtn()\"\n kbq-button\n >\n <i [color]=\"modal.componentColors.Contrast\" kbq-icon=\"kbq-xmark_16\"></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 a empty function to close this modal by default\n options.kbqOnCancel = () => {};\n }\n\n if (!('kbqCloseByESC' in options)) {\n options.kbqCloseByESC = true;\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 // Remove the Ok button if the user not specify a Ok button\n if (!('kbqOkText' in options)) {\n options.kbqOkText = undefined;\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 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 a 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 ],\n exports: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n KbqModalMainAction\n ],\n declarations: [\n KbqModalComponent,\n KbqModalTitle,\n KbqModalBody,\n KbqModalFooter,\n CssUnitPipe,\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","i8.CssUnitPipe","i1.KbqModalComponent","i2","i3","i4"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Directive, Inject, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/overlay';
4
+ import { CdkScrollable } from '@angular/cdk/overlay';
3
5
  import { OverlayScrollbars } from 'overlayscrollbars';
4
6
 
5
7
  const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG = {
@@ -92,13 +94,14 @@ class KbqScrollbarDirective {
92
94
  this.cancelDefer();
93
95
  }
94
96
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqScrollbarDirective, deps: [{ token: i0.NgZone }, { token: KBQ_SCROLLBAR_CONFIG }], target: i0.ɵɵFactoryTarget.Directive }); }
95
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqScrollbarDirective, isStandalone: true, selector: "[kbqScrollbar]", inputs: { options: "options", events: "events", defer: "defer" }, ngImport: i0 }); }
97
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqScrollbarDirective, isStandalone: true, selector: "[kbqScrollbar]", inputs: { options: "options", events: "events", defer: "defer" }, hostDirectives: [{ directive: i1.CdkScrollable }], ngImport: i0 }); }
96
98
  }
97
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqScrollbarDirective, decorators: [{
98
100
  type: Directive,
99
101
  args: [{
100
102
  standalone: true,
101
- selector: '[kbqScrollbar]'
103
+ selector: '[kbqScrollbar]',
104
+ hostDirectives: [CdkScrollable]
102
105
  }]
103
106
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{
104
107
  type: Inject,
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-scrollbar.mjs","sources":["../../../packages/components/scrollbar/scrollbar.types.ts","../../../packages/components/scrollbar/scrollbar.directive.ts","../../../packages/components/scrollbar/scrollbar.component.ts","../../../packages/components/scrollbar/scrollbar.module.ts","../../../packages/components/scrollbar/koobiq-components-scrollbar.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { EventListenerArgs, EventListeners, InitializationTarget, PartialOptions } from 'overlayscrollbars';\n\nexport type KbqScrollbarEvents = EventListeners;\nexport type KbqScrollbarEventListenerArgs = EventListenerArgs;\nexport type KbqScrollbarOptions = PartialOptions;\nexport type KbqScrollbarTarget = InitializationTarget;\n\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions = {\n scrollbars: {\n autoHide: 'leave',\n autoHideDelay: 100\n }\n};\n\nexport const KBQ_SCROLLBAR_CONFIG = new InjectionToken<KbqScrollbarOptions>('KBQ_SCROLLBAR_CONFIG');\n\n/** Default scroll behavior */\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider = {\n provide: KBQ_SCROLLBAR_CONFIG,\n useValue: KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG\n};\n","import { Directive, Inject, Input, NgZone, OnDestroy } from '@angular/core';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport { KBQ_SCROLLBAR_CONFIG, KbqScrollbarEvents, KbqScrollbarOptions, KbqScrollbarTarget } from './scrollbar.types';\n\ntype Defer = [\n requestDefer: (callback: () => any, options?: boolean | IdleRequestOptions) => void,\n cancelDefer: () => void\n];\n\nconst createDefer = (): Defer => {\n if (typeof window === 'undefined') {\n // mock ssr calls with \"noop\"\n const noop = () => {};\n return [noop, noop];\n }\n\n let idleId: number;\n let rafId: number;\n\n const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;\n\n const idleSupported = typeof requestIdleCallback === 'function';\n const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;\n const cIdle = idleSupported ? cancelIdleCallback : cancelAnimationFrame;\n const clear = () => {\n cIdle(idleId);\n cancelAnimationFrame(rafId);\n };\n\n return [\n (callback, options) => {\n clear();\n idleId = rIdle(\n idleSupported\n ? () => {\n clear();\n // inside idle its best practice to use rAF to change DOM for best performance\n rafId = requestAnimationFrame(callback);\n }\n : callback,\n typeof options === 'object' ? options : { timeout: 2233 }\n );\n },\n clear\n\n ];\n};\n\n/**\n * A directive for adding `overlayscrollbars` to an element.\n */\n@Directive({\n standalone: true,\n selector: '[kbqScrollbar]'\n})\nexport class KbqScrollbarDirective implements OnDestroy {\n private requestDefer: ReturnType<typeof createDefer>[0];\n private cancelDefer: ReturnType<typeof createDefer>[1];\n\n private _options: KbqScrollbarOptions;\n\n @Input()\n set options(value: KbqScrollbarOptions) {\n this._options = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.options(value || {}, true);\n }\n }\n\n /** Scrollbar behavior customization object */\n get options(): KbqScrollbarOptions | undefined {\n return this._options;\n }\n\n private _events?: KbqScrollbarEvents;\n\n @Input()\n set events(value: KbqScrollbarEvents) {\n this._events = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.on(value || {}, true);\n }\n }\n\n get events(): KbqScrollbarEvents | undefined {\n return this._events;\n }\n\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input()\n defer?: boolean | IdleRequestOptions;\n\n scrollbarInstance?: OverlayScrollbars;\n\n constructor(\n private ngZone: NgZone,\n @Inject(KBQ_SCROLLBAR_CONFIG) private scrollbarConfig?: KbqScrollbarOptions\n ) {\n const [requestDefer, cancelDefer] = createDefer();\n this.requestDefer = requestDefer;\n this.cancelDefer = cancelDefer;\n }\n\n initialize(target: KbqScrollbarTarget) {\n this.ngZone.runOutsideAngular(() => {\n const init = () => {\n this.scrollbarInstance = OverlayScrollbars(\n target,\n this.options || this.scrollbarConfig || {},\n this.events || {}\n );\n };\n\n if (this.defer) {\n this.requestDefer(init, this.defer);\n } else {\n init();\n }\n });\n }\n\n ngOnDestroy() {\n this.cancelDefer();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport {\n KbqScrollbarEventListenerArgs,\n KbqScrollbarEvents,\n KbqScrollbarOptions,\n KbqScrollbarTarget\n} from './scrollbar.types';\n\nconst filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) =>\n (Object.keys(emits) as (keyof KbqScrollbarEvents)[]).reduce<KbqScrollbarEvents>(\n <N extends keyof KbqScrollbarEvents>(obj: KbqScrollbarEvents, name: N) => {\n const emitListener = emits[name];\n const eventListener = events[name];\n // merge & check listeners\n obj[name] = [\n emitListener,\n ...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)];\n return obj;\n },\n {}\n );\n\n/**\n * The component-wrapper for `overlayscrollbars` library.\n */\n@Component({\n standalone: true,\n imports: [KbqScrollbarDirective],\n selector: 'kbq-scrollbar, [kbq-scrollbar]',\n exportAs: 'kbqScrollbar',\n host: {\n 'data-overlayscrollbars-initialize': '',\n class: 'kbq-scrollbar-component'\n },\n template: `\n <div\n #content\n [options]=\"options\"\n [events]=\"mergeEvents()\"\n [defer]=\"defer\"\n data-overlayscrollbars-contents=\"\"\n kbqScrollbar\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./scrollbar.component.scss', 'scrollbar-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqScrollbar implements AfterViewInit, OnDestroy {\n /** Element that is being overflowed */\n @ViewChild('content') contentElement: ElementRef<HTMLDivElement>;\n @ViewChild('content', { read: KbqScrollbarDirective }) private kbqScrollbarDirective?: KbqScrollbarDirective;\n\n /** Elements scrollbar applied on */\n @Input() initializationTarget?: KbqScrollbarTarget;\n /** Scrollbar behavior customization object */\n @Input() options: KbqScrollbarOptions;\n @Input() events: KbqScrollbarEvents;\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input() defer?: boolean | IdleRequestOptions;\n\n @Output() onInitialize = new EventEmitter<KbqScrollbarEventListenerArgs['initialized']>();\n /** Event triggered when options or event listeners updated */\n @Output() onUpdate = new EventEmitter<KbqScrollbarEventListenerArgs['updated']>();\n /** Event triggered when scrollbar instance destroyed */\n @Output() onDestroy = new EventEmitter<KbqScrollbarEventListenerArgs['destroyed']>();\n @Output() onScroll = new EventEmitter<KbqScrollbarEventListenerArgs['scroll']>();\n\n get element(): HTMLElement {\n return this.targetElement.nativeElement;\n }\n\n constructor(\n private ngZone: NgZone,\n private targetElement: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n if (this.element && this.contentElement.nativeElement) {\n this.kbqScrollbarDirective?.initialize(\n this.initializationTarget || {\n target: this.targetElement.nativeElement,\n elements: {\n viewport: this.contentElement.nativeElement,\n content: this.contentElement.nativeElement\n }\n }\n );\n }\n }\n\n ngOnDestroy() {\n this.kbqScrollbarDirective?.scrollbarInstance?.destroy();\n }\n\n /** Wrapper function for native scroll */\n scrollTo(options?: ScrollToOptions): void {\n this.contentElement.nativeElement.scroll(options);\n }\n\n mergeEvents(): KbqScrollbarEvents {\n const defaultListeners: KbqScrollbarEvents = {\n initialized: (...args) => this.dispatchEventIfHasObservers(this.onInitialize, args),\n updated: (...args) => this.dispatchEventIfHasObservers(this.onUpdate, args),\n destroyed: (...args) => this.dispatchEventIfHasObservers(this.onDestroy, args),\n scroll: (...args) => this.dispatchEventIfHasObservers(this.onScroll, args)\n };\n\n if (!this.events) {\n return defaultListeners;\n }\n\n // merge default listeners with custom listeners in case of Input binding\n return {\n ...defaultListeners,\n ...filterEvents(this.events, defaultListeners)\n };\n }\n\n private dispatchEventIfHasObservers<T>(eventEmitter: EventEmitter<T>, args: T): void {\n // `observed` is available since RxJS@7.2 because `observers` is being deprecated.\n if ((eventEmitter as any).observed || eventEmitter.observers.length > 0) {\n // This is required to re-enter the Angular zone to call the event handler in the Angular\n // zone too. This will not re-enter the Angular zone if emitter doesn't have any observers,\n // for instance, it's being listened: `<overlay-scrollbars (osInitialized)=\"...\"`.\n // Events are dispatched outside of the Angular zone because instance is created in the\n // `<root>` zone\n this.ngZone.run(() => eventEmitter.emit(args));\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqScrollbar } from './scrollbar.component';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types';\n\nconst COMPONENTS = [\n KbqScrollbar,\n KbqScrollbarDirective\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER]\n})\nexport class KbqScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-scrollbar.mjs","sources":["../../../packages/components/scrollbar/scrollbar.types.ts","../../../packages/components/scrollbar/scrollbar.directive.ts","../../../packages/components/scrollbar/scrollbar.component.ts","../../../packages/components/scrollbar/scrollbar.module.ts","../../../packages/components/scrollbar/koobiq-components-scrollbar.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\nimport { EventListenerArgs, EventListeners, InitializationTarget, PartialOptions } from 'overlayscrollbars';\n\nexport type KbqScrollbarEvents = EventListeners;\nexport type KbqScrollbarEventListenerArgs = EventListenerArgs;\nexport type KbqScrollbarOptions = PartialOptions;\nexport type KbqScrollbarTarget = InitializationTarget;\n\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions = {\n scrollbars: {\n autoHide: 'leave',\n autoHideDelay: 100\n }\n};\n\nexport const KBQ_SCROLLBAR_CONFIG = new InjectionToken<KbqScrollbarOptions>('KBQ_SCROLLBAR_CONFIG');\n\n/** Default scroll behavior */\nexport const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider = {\n provide: KBQ_SCROLLBAR_CONFIG,\n useValue: KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG\n};\n","import { CdkScrollable } from '@angular/cdk/overlay';\nimport { Directive, Inject, Input, NgZone, OnDestroy } from '@angular/core';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport { KBQ_SCROLLBAR_CONFIG, KbqScrollbarEvents, KbqScrollbarOptions, KbqScrollbarTarget } from './scrollbar.types';\n\ntype Defer = [\n requestDefer: (callback: () => any, options?: boolean | IdleRequestOptions) => void,\n cancelDefer: () => void\n];\n\nconst createDefer = (): Defer => {\n if (typeof window === 'undefined') {\n // mock ssr calls with \"noop\"\n const noop = () => {};\n return [noop, noop];\n }\n\n let idleId: number;\n let rafId: number;\n\n const { requestIdleCallback, requestAnimationFrame, cancelAnimationFrame, cancelIdleCallback } = window;\n\n const idleSupported = typeof requestIdleCallback === 'function';\n const rIdle = idleSupported ? requestIdleCallback : requestAnimationFrame;\n const cIdle = idleSupported ? cancelIdleCallback : cancelAnimationFrame;\n const clear = () => {\n cIdle(idleId);\n cancelAnimationFrame(rafId);\n };\n\n return [\n (callback, options) => {\n clear();\n idleId = rIdle(\n idleSupported\n ? () => {\n clear();\n // inside idle its best practice to use rAF to change DOM for best performance\n rafId = requestAnimationFrame(callback);\n }\n : callback,\n typeof options === 'object' ? options : { timeout: 2233 }\n );\n },\n clear\n\n ];\n};\n\n/**\n * A directive for adding `overlayscrollbars` to an element.\n */\n@Directive({\n standalone: true,\n selector: '[kbqScrollbar]',\n hostDirectives: [CdkScrollable]\n})\nexport class KbqScrollbarDirective implements OnDestroy {\n private requestDefer: ReturnType<typeof createDefer>[0];\n private cancelDefer: ReturnType<typeof createDefer>[1];\n\n private _options: KbqScrollbarOptions;\n\n @Input()\n set options(value: KbqScrollbarOptions) {\n this._options = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.options(value || {}, true);\n }\n }\n\n /** Scrollbar behavior customization object */\n get options(): KbqScrollbarOptions | undefined {\n return this._options;\n }\n\n private _events?: KbqScrollbarEvents;\n\n @Input()\n set events(value: KbqScrollbarEvents) {\n this._events = value;\n\n if (OverlayScrollbars.valid(this.scrollbarInstance)) {\n this.scrollbarInstance.on(value || {}, true);\n }\n }\n\n get events(): KbqScrollbarEvents | undefined {\n return this._events;\n }\n\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input()\n defer?: boolean | IdleRequestOptions;\n\n scrollbarInstance?: OverlayScrollbars;\n\n constructor(\n private ngZone: NgZone,\n @Inject(KBQ_SCROLLBAR_CONFIG) private scrollbarConfig?: KbqScrollbarOptions\n ) {\n const [requestDefer, cancelDefer] = createDefer();\n this.requestDefer = requestDefer;\n this.cancelDefer = cancelDefer;\n }\n\n initialize(target: KbqScrollbarTarget) {\n this.ngZone.runOutsideAngular(() => {\n const init = () => {\n this.scrollbarInstance = OverlayScrollbars(\n target,\n this.options || this.scrollbarConfig || {},\n this.events || {}\n );\n };\n\n if (this.defer) {\n this.requestDefer(init, this.defer);\n } else {\n init();\n }\n });\n }\n\n ngOnDestroy() {\n this.cancelDefer();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport {\n KbqScrollbarEventListenerArgs,\n KbqScrollbarEvents,\n KbqScrollbarOptions,\n KbqScrollbarTarget\n} from './scrollbar.types';\n\nconst filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) =>\n (Object.keys(emits) as (keyof KbqScrollbarEvents)[]).reduce<KbqScrollbarEvents>(\n <N extends keyof KbqScrollbarEvents>(obj: KbqScrollbarEvents, name: N) => {\n const emitListener = emits[name];\n const eventListener = events[name];\n // merge & check listeners\n obj[name] = [\n emitListener,\n ...(Array.isArray(eventListener) ? eventListener : [eventListener]).filter(Boolean)];\n return obj;\n },\n {}\n );\n\n/**\n * The component-wrapper for `overlayscrollbars` library.\n */\n@Component({\n standalone: true,\n imports: [KbqScrollbarDirective],\n selector: 'kbq-scrollbar, [kbq-scrollbar]',\n exportAs: 'kbqScrollbar',\n host: {\n 'data-overlayscrollbars-initialize': '',\n class: 'kbq-scrollbar-component'\n },\n template: `\n <div\n #content\n [options]=\"options\"\n [events]=\"mergeEvents()\"\n [defer]=\"defer\"\n data-overlayscrollbars-contents=\"\"\n kbqScrollbar\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./scrollbar.component.scss', 'scrollbar-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class KbqScrollbar implements AfterViewInit, OnDestroy {\n /** Element that is being overflowed */\n @ViewChild('content') contentElement: ElementRef<HTMLDivElement>;\n @ViewChild('content', { read: KbqScrollbarDirective }) private kbqScrollbarDirective?: KbqScrollbarDirective;\n\n /** Elements scrollbar applied on */\n @Input() initializationTarget?: KbqScrollbarTarget;\n /** Scrollbar behavior customization object */\n @Input() options: KbqScrollbarOptions;\n @Input() events: KbqScrollbarEvents;\n /** Whether to defer the initialization to a point in time when the browser is idle. (or to the next frame if `window.requestIdleCallback` is not supported) */\n @Input() defer?: boolean | IdleRequestOptions;\n\n @Output() onInitialize = new EventEmitter<KbqScrollbarEventListenerArgs['initialized']>();\n /** Event triggered when options or event listeners updated */\n @Output() onUpdate = new EventEmitter<KbqScrollbarEventListenerArgs['updated']>();\n /** Event triggered when scrollbar instance destroyed */\n @Output() onDestroy = new EventEmitter<KbqScrollbarEventListenerArgs['destroyed']>();\n @Output() onScroll = new EventEmitter<KbqScrollbarEventListenerArgs['scroll']>();\n\n get element(): HTMLElement {\n return this.targetElement.nativeElement;\n }\n\n constructor(\n private ngZone: NgZone,\n private targetElement: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n if (this.element && this.contentElement.nativeElement) {\n this.kbqScrollbarDirective?.initialize(\n this.initializationTarget || {\n target: this.targetElement.nativeElement,\n elements: {\n viewport: this.contentElement.nativeElement,\n content: this.contentElement.nativeElement\n }\n }\n );\n }\n }\n\n ngOnDestroy() {\n this.kbqScrollbarDirective?.scrollbarInstance?.destroy();\n }\n\n /** Wrapper function for native scroll */\n scrollTo(options?: ScrollToOptions): void {\n this.contentElement.nativeElement.scroll(options);\n }\n\n mergeEvents(): KbqScrollbarEvents {\n const defaultListeners: KbqScrollbarEvents = {\n initialized: (...args) => this.dispatchEventIfHasObservers(this.onInitialize, args),\n updated: (...args) => this.dispatchEventIfHasObservers(this.onUpdate, args),\n destroyed: (...args) => this.dispatchEventIfHasObservers(this.onDestroy, args),\n scroll: (...args) => this.dispatchEventIfHasObservers(this.onScroll, args)\n };\n\n if (!this.events) {\n return defaultListeners;\n }\n\n // merge default listeners with custom listeners in case of Input binding\n return {\n ...defaultListeners,\n ...filterEvents(this.events, defaultListeners)\n };\n }\n\n private dispatchEventIfHasObservers<T>(eventEmitter: EventEmitter<T>, args: T): void {\n // `observed` is available since RxJS@7.2 because `observers` is being deprecated.\n if ((eventEmitter as any).observed || eventEmitter.observers.length > 0) {\n // This is required to re-enter the Angular zone to call the event handler in the Angular\n // zone too. This will not re-enter the Angular zone if emitter doesn't have any observers,\n // for instance, it's being listened: `<overlay-scrollbars (osInitialized)=\"...\"`.\n // Events are dispatched outside of the Angular zone because instance is created in the\n // `<root>` zone\n this.ngZone.run(() => eventEmitter.emit(args));\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { KbqScrollbar } from './scrollbar.component';\nimport { KbqScrollbarDirective } from './scrollbar.directive';\nimport { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types';\n\nconst COMPONENTS = [\n KbqScrollbar,\n KbqScrollbarDirective\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS,\n providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER]\n})\nexport class KbqScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}