@koobiq/components 18.14.0 → 18.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/autocomplete/autocomplete.component.d.ts +5 -2
- package/button-toggle/_button-toggle-theme.scss +0 -4
- package/button-toggle/button-toggle-tokens.scss +1 -4
- package/button-toggle/button-toggle.scss +11 -0
- package/core/option/_option-theme.scss +7 -5
- package/core/pop-up/focus-trap-strategy.d.ts +5 -0
- package/core/pop-up/index.d.ts +1 -0
- package/core/pop-up/pop-up-trigger.d.ts +1 -0
- package/core/select/common.d.ts +17 -0
- package/core/select/constants.d.ts +0 -18
- package/datepicker/calendar-header.component.d.ts +2 -8
- package/esm2022/autocomplete/autocomplete.component.mjs +18 -6
- package/esm2022/button-toggle/button-toggle.component.mjs +2 -2
- package/esm2022/core/option/option.mjs +2 -2
- package/esm2022/core/pop-up/focus-trap-strategy.mjs +6 -0
- package/esm2022/core/pop-up/index.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
- package/esm2022/core/select/common.mjs +63 -1
- package/esm2022/core/select/constants.mjs +1 -19
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-header.component.mjs +5 -8
- package/esm2022/form-field/form-field.mjs +10 -4
- package/esm2022/form-field/validate.directive.mjs +3 -2
- package/esm2022/list/list-selection.component.mjs +17 -9
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/markdown/markdown.service.mjs +12 -3
- package/esm2022/modal/modal.component.mjs +4 -3
- package/esm2022/popover/popover.component.mjs +13 -4
- package/esm2022/popover/popover.module.mjs +7 -4
- package/esm2022/radio/radio.component.mjs +2 -2
- package/esm2022/select/select.component.mjs +11 -82
- package/esm2022/select/select.module.mjs +8 -4
- package/esm2022/tabs/tab-header.component.mjs +2 -2
- package/esm2022/tabs/tab-nav-bar.mjs +3 -3
- package/esm2022/timezone/timezone-option.component.mjs +2 -2
- package/esm2022/timezone/timezone-select.component.mjs +4 -3
- package/esm2022/timezone/timezone.module.mjs +8 -4
- package/esm2022/tooltip/tooltip.component.mjs +2 -2
- package/esm2022/tree/toggle.mjs +2 -2
- package/esm2022/tree/tree-selection.component.mjs +13 -4
- package/esm2022/tree/tree.mjs +2 -2
- package/esm2022/tree-select/tree-select.component.mjs +27 -60
- package/esm2022/tree-select/tree-select.module.mjs +8 -4
- package/fesm2022/koobiq-components-autocomplete.mjs +20 -10
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +90 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +4 -7
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +11 -4
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -12
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +11 -2
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -2
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +18 -8
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +2 -2
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +17 -84
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +4 -4
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +12 -7
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +32 -61
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +15 -6
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/form-field/_form-field-theme.scss +23 -10
- package/form-field/form-field.d.ts +3 -1
- package/form-field/validate.directive.d.ts +1 -1
- package/link/_link-theme.scss +6 -4
- package/list/_list-theme.scss +6 -4
- package/list/list-selection.component.d.ts +12 -8
- package/markdown/markdown.service.d.ts +11 -2
- package/modal/_modal-theme.scss +1 -1
- package/modal/modal.scss +1 -1
- package/package.json +6 -6
- package/popover/popover.component.d.ts +4 -0
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/radio/_radio-theme.scss +12 -2
- package/schematics/ng-add/index.js +5 -18
- package/select/select.component.d.ts +3 -16
- package/select/select.module.d.ts +2 -1
- package/tabs/_tabs-common.scss +28 -0
- package/tabs/tab-header.scss +0 -28
- package/timezone/timezone.module.d.ts +2 -1
- package/tree/_tree-theme.scss +10 -7
- package/tree/tree-selection.component.d.ts +6 -2
- package/tree-select/tree-select.component.d.ts +5 -16
- package/tree-select/tree-select.module.d.ts +2 -1
|
@@ -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, 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
|
+
{"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 class: 'kbq-modal',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class KbqModalComponent<T = any, R = any>\n extends KbqModalRef<T, R>\n implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions\n{\n protected readonly document = inject<Document>(DOCUMENT);\n\n componentColors = KbqComponentColors;\n\n @Input() kbqModalType: ModalType = 'default';\n\n // The instance of component opened into the dialog.\n @Input() kbqComponent: Type<T>;\n // If not specified, will use <ng-content>\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqContent: string | TemplateRef<{}> | Type<T>;\n // available when kbqContent is a component\n @Input() kbqComponentParams: any;\n // Default Modal ONLY\n // eslint-disable-next-line @typescript-eslint/ban-types\n @Input() kbqFooter: string | TemplateRef<{}> | IModalButtonOptions<T>[];\n\n @Input()\n get kbqVisible() {\n return this._kbqVisible;\n }\n set kbqVisible(value) {\n this._kbqVisible = value;\n }\n\n private _kbqVisible = false;\n\n @Output() 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-container {{ kbqClassName }} kbq-modal_{{ kbqSize }}\"\n [class.kbq-modal_no-footer]=\"!kbqFooter\"\n [ngClass]=\"modalAnimationClassMap\"\n [ngStyle]=\"kbqStyle\"\n [style.transform-origin]=\"transformOrigin\"\n [style.width]=\"kbqWidth | toCssUnit\"\n >\n <div cdkTrapFocus class=\"kbq-modal-content\">\n @switch (true) {\n @case (isModalType('default')) {\n <ng-container [ngTemplateOutlet]=\"tplContentDefault\" />\n }\n @case (isModalType('confirm')) {\n <ng-container [ngTemplateOutlet]=\"tplContentConfirm\" />\n }\n @case (isModalType('custom')) {\n <ng-container [ngTemplateOutlet]=\"tplContentCustom\" />\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplContentCustom>\n <ng-container #bodyContainer />\n</ng-template>\n\n<!-- [Predefined] Default Modal Content -->\n<ng-template #tplContentDefault>\n @if (kbqTitle) {\n <div kbq-title class=\"kbq-modal-header\" [class.kbq-modal-body_top-overflow]=\"isTopOverflow\">\n <div class=\"kbq-modal-title\">\n @switch (true) {\n @case (isTemplateRef(kbqTitle)) {\n <ng-container [ngTemplateOutlet]=\"$any(kbqTitle)\" />\n }\n @case (isNonEmptyString(kbqTitle)) {\n <div [innerHTML]=\"kbqTitle\"></div>\n }\n }\n </div>\n @if (kbqClosable) {\n <button\n kbq-button\n 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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"}
|
|
@@ -3,14 +3,14 @@ import * as i0 from '@angular/core';
|
|
|
3
3
|
import { inject, DestroyRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, InjectionToken, EventEmitter, Directive, Input, Output, Optional, Inject, NgModule } from '@angular/core';
|
|
4
4
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { fromEvent, NEVER, merge, Subject } from 'rxjs';
|
|
6
|
+
import * as i2 from '@angular/cdk/a11y';
|
|
7
|
+
import { CdkTrapFocus, A11yModule, FocusTrapFactory, ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY } from '@angular/cdk/a11y';
|
|
6
8
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
7
9
|
import { Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
8
|
-
import { KbqPopUp, KbqComponentColors, KbqPopUpTrigger, PopUpTriggers, PopUpSizes, POSITION_TO_CSS_MAP } from '@koobiq/components/core';
|
|
10
|
+
import { KbqPopUp, KbqComponentColors, KbqPopUpTrigger, PopUpTriggers, PopUpSizes, POSITION_TO_CSS_MAP, EmptyFocusTrapStrategy } from '@koobiq/components/core';
|
|
9
11
|
import { debounceTime } from 'rxjs/operators';
|
|
10
12
|
import * as i1 from '@koobiq/components/button';
|
|
11
13
|
import { KbqButtonModule } from '@koobiq/components/button';
|
|
12
|
-
import * as i2 from '@angular/cdk/a11y';
|
|
13
|
-
import { A11yModule, FocusTrapFactory, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
14
14
|
import * as i3 from '@koobiq/components/icon';
|
|
15
15
|
import { KbqIconModule } from '@koobiq/components/icon';
|
|
16
16
|
import * as i4 from '@angular/cdk/observers';
|
|
@@ -54,6 +54,7 @@ class KbqPopoverComponent extends KbqPopUp {
|
|
|
54
54
|
.subscribe((event) => {
|
|
55
55
|
this.checkContentOverflow(event.target);
|
|
56
56
|
});
|
|
57
|
+
this.cdkTrapFocus.focusTrap.focusFirstTabbableElement();
|
|
57
58
|
}
|
|
58
59
|
onContentChange() {
|
|
59
60
|
this.checkContentOverflow(this.popoverContent.nativeElement);
|
|
@@ -70,17 +71,24 @@ class KbqPopoverComponent extends KbqPopUp {
|
|
|
70
71
|
updateTrapFocus(isTrapFocus) {
|
|
71
72
|
this.isTrapFocus = isTrapFocus;
|
|
72
73
|
}
|
|
74
|
+
onEscape() {
|
|
75
|
+
this.hide(0);
|
|
76
|
+
this.trigger.focus();
|
|
77
|
+
}
|
|
73
78
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqPopoverComponent, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "hide(0)" } }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"kbq-popover\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"isTrapFocus\"\n [ngClass]=\"classMap\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n [@state]=\"visibility\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_top-overflow]=\"isContentTopOverflow\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" />\n }\n @if (!isTemplateRef(header)) {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div #popoverContent class=\"kbq-popover__content kbq-scrollbar\" (cdkObserveContent)=\"onContentChange()\">\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" />\n }\n @if (!isTemplateRef(content)) {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div class=\"kbq-popover__footer\" [class.kbq-popover__footer_bottom-overflow]=\"isContentBottomOverflow\">\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" />\n }\n @if (!isTemplateRef(footer)) {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{max-width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_medium{max-width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{max-width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto;padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{display:flex;align-items:center;overflow:hidden;padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header_top-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-bottom)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__footer_bottom-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-top)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:9px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:9px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:9px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:9px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:9px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:9px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:9px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:9px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
79
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqPopoverComponent, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "onEscape()" } }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }, { propertyName: "cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"kbq-popover\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [ngClass]=\"classMap\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n [@state]=\"visibility\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_top-overflow]=\"isContentTopOverflow\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" />\n }\n @if (!isTemplateRef(header)) {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div #popoverContent class=\"kbq-popover__content kbq-scrollbar\" (cdkObserveContent)=\"onContentChange()\">\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" />\n }\n @if (!isTemplateRef(content)) {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div class=\"kbq-popover__footer\" [class.kbq-popover__footer_bottom-overflow]=\"isContentBottomOverflow\">\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" />\n }\n @if (!isTemplateRef(footer)) {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{max-width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_medium{max-width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{max-width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto;padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{display:flex;align-items:center;overflow:hidden;padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header_top-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-bottom)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__footer_bottom-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-top)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:9px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:9px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:9px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:9px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:9px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:9px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:9px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:9px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "directive", type: i4.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
75
80
|
}
|
|
76
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqPopoverComponent, decorators: [{
|
|
77
82
|
type: Component,
|
|
78
83
|
args: [{ selector: 'kbq-popover-component', preserveWhitespaces: false, host: {
|
|
79
|
-
'(keydown.esc)': '
|
|
80
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [kbqPopoverAnimations.popoverState], template: "<div\n class=\"kbq-popover\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [cdkTrapFocusAutoCapture]=\"isTrapFocus\"\n [ngClass]=\"classMap\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n [@state]=\"visibility\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_top-overflow]=\"isContentTopOverflow\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" />\n }\n @if (!isTemplateRef(header)) {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div #popoverContent class=\"kbq-popover__content kbq-scrollbar\" (cdkObserveContent)=\"onContentChange()\">\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" />\n }\n @if (!isTemplateRef(content)) {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div class=\"kbq-popover__footer\" [class.kbq-popover__footer_bottom-overflow]=\"isContentBottomOverflow\">\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" />\n }\n @if (!isTemplateRef(footer)) {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{max-width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_medium{max-width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{max-width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto;padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{display:flex;align-items:center;overflow:hidden;padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header_top-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-bottom)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__footer_bottom-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-top)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:9px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:9px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:9px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:9px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:9px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:9px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:9px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:9px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
|
|
84
|
+
'(keydown.esc)': 'onEscape()'
|
|
85
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [kbqPopoverAnimations.popoverState], template: "<div\n class=\"kbq-popover\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [ngClass]=\"classMap\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n [@state]=\"visibility\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_top-overflow]=\"isContentTopOverflow\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" />\n }\n @if (!isTemplateRef(header)) {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div #popoverContent class=\"kbq-popover__content kbq-scrollbar\" (cdkObserveContent)=\"onContentChange()\">\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" />\n }\n @if (!isTemplateRef(content)) {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div class=\"kbq-popover__footer\" [class.kbq-popover__footer_bottom-overflow]=\"isContentBottomOverflow\">\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" />\n }\n @if (!isTemplateRef(footer)) {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container *ngTemplateOutlet=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{max-width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_medium{max-width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{max-width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto;padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{display:flex;align-items:center;overflow:hidden;padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header_top-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-bottom)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__footer_bottom-overflow{position:relative;z-index:2;box-shadow:var(--kbq-shadow-overflow-normal-top)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:9px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:9px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:9px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:9px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:9px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:9px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:9px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:9px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
|
|
81
86
|
}], propDecorators: { popoverContent: [{
|
|
82
87
|
type: ViewChild,
|
|
83
88
|
args: ['popoverContent']
|
|
89
|
+
}], cdkTrapFocus: [{
|
|
90
|
+
type: ViewChild,
|
|
91
|
+
args: [CdkTrapFocus]
|
|
84
92
|
}] } });
|
|
85
93
|
const KBQ_POPOVER_SCROLL_STRATEGY = new InjectionToken('kbq-popover-scroll-strategy');
|
|
86
94
|
/** @docs-private */
|
|
@@ -450,7 +458,8 @@ class KbqPopoverModule {
|
|
|
450
458
|
KbqPopoverConfirmTrigger] }); }
|
|
451
459
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqPopoverModule, providers: [
|
|
452
460
|
KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER,
|
|
453
|
-
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }
|
|
461
|
+
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
|
|
462
|
+
{ provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
|
|
454
463
|
], imports: [OverlayModule,
|
|
455
464
|
KbqButtonModule,
|
|
456
465
|
A11yModule,
|
|
@@ -482,7 +491,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
482
491
|
],
|
|
483
492
|
providers: [
|
|
484
493
|
KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER,
|
|
485
|
-
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }
|
|
494
|
+
{ provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
|
|
495
|
+
{ provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
|
|
486
496
|
]
|
|
487
497
|
}]
|
|
488
498
|
}] });
|