{"version":3,"file":"bootkit-ng1-components-modal.mjs","sources":["../../../projects/ng1/components/modal/modal.component.ts","../../../projects/ng1/components/modal/modal.component.html","../../../projects/ng1/components/modal/modal.module.ts","../../../projects/ng1/components/modal/types.ts","../../../projects/ng1/components/modal/bootkit-ng1-components-modal.ts"],"sourcesContent":["import { Component, Output, EventEmitter, ChangeDetectionStrategy, input, signal, HostListener, booleanAttribute } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalCloseRequest } from './types';\n\n@Component({\n    selector: 'ng1-modal',\n    exportAs: 'ng1Modal',\n    templateUrl: 'modal.component.html',\n    styleUrls: ['./modal.component.scss'],\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\n})\nexport class ModalComponent {\n    protected readonly _modalStatic = signal(false);\n\n    /**\n     * Is modal open?\n     */\n    public readonly open = input(true, { transform: booleanAttribute });\n\n    /**\n     * Is modal scrollable?\n     */\n    public readonly scrollable = input(false, { transform: booleanAttribute });\n\n    /** Is modal vertically centered? */\n    public readonly centered = input(false, { transform: booleanAttribute });\n\n    /**\n     * Size of the modal.\n     */\n    public readonly size = input<'sm' | 'default' | 'lg' | 'xl'>('default');\n\n    /**\n     * Is modal fullscreen?\n     */\n    public readonly fullscreen = input<'always' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>();\n\n    /**\n     * Emitted when user clicks the backdrop or presses the escape key.\n     */\n    @Output() public readonly closeRequest = new EventEmitter<ModalCloseRequest>();\n\n    /**\n     * Emitted when the backdrop is clicked.\n     */\n    @Output() public readonly backdropClick = new EventEmitter<Event>();\n\n    protected _onBackdropClick(event: MouseEvent) {\n        this.closeRequest.emit({ reason: 'backdrop', event });\n        this.backdropClick.emit(event);\n        this._shakeModal(); // if user closes the modal, shake will not occure.\n    }\n\n    @HostListener('document:keydown', ['$event'])\n    protected _onDocumentKeyDown(event: KeyboardEvent) {\n        if (event.key === 'Escape') {\n            this.closeRequest.emit({ reason: 'escape', event });\n            this._shakeModal();\n        }\n    }\n\n    private _shakeModal() {\n        this._modalStatic.set(true);\n        setTimeout(() => this._modalStatic.set(false), 100);\n    }\n}\n","@let fullscreenValue=fullscreen();\n@let sizeValue=size();\n\n@if(open()) {\n<div class=\"modal\"\n     (click)=\"$event.target == $event.currentTarget ? _onBackdropClick($event): ''\"\n     [class.modal-static]=\"_modalStatic()\"\n     animate.enter=\"ng1-modal-enter\"\n     animate.leave=\"ng1-modal-leave\">\n\n  <div class=\"modal-dialog\"\n       [class]=\"{\n            'modal-dialog-scrollable': scrollable(),\n            'modal-dialog-centered': centered(),\n            'modal-fullscreen': fullscreenValue == 'always',\n            'modal-fullscreen-sm-down': fullscreenValue == 'sm',\n            'modal-fullscreen-md-down': fullscreenValue == 'md',\n            'modal-fullscreen-lg-down': fullscreenValue == 'lg',\n            'modal-fullscreen-xl-down': fullscreenValue == 'xl',\n            'modal-fullscreen-xxl-down': fullscreenValue == 'xxl',\n            'modal-sm': sizeValue == 'sm',\n            'modal-lg': sizeValue == 'lg',\n            'modal-xl': sizeValue == 'xl',\n          }\">\n    <div class=\"modal-content\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n\n<div class=\"modal-backdrop\"\n     animate.enter=\"ng1-modal-backdrop-enter\"\n     animate.leave=\"ng1-modal-backdrop-leave\">\n</div>\n}","import { NgModule } from '@angular/core';\nimport { ModalComponent } from './modal.component';\n\n@NgModule({\n    imports: [\n        ModalComponent,\n    ],\n    exports: [\n        ModalComponent,\n    ]\n})\nexport class ModalModule {\n}\n","export interface ModalCloseRequest {\n    reason: 'backdrop' | 'escape';\n    event: Event;\n}; \n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}