{"version":3,"file":"deja-js-component-dialog.mjs","sources":["../../../../projects/deja-js/component/dialog/dialog.component.ts","../../../../projects/deja-js/component/dialog/dialog.component.html","../../../../projects/deja-js/component/dialog/index.ts","../../../../projects/deja-js/component/dialog/deja-js-component-dialog.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\nimport { Component, ContentChild, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\nimport { Destroy, KeyCodes } from '@deja-js/component/core';\nimport { filter, fromEvent, takeUntil } from 'rxjs';\n\n/**\n * Simple dialog for Angular\n */\n@Component({\n    selector: 'deja-dialog',\n    styleUrls: ['./dialog.component.scss'],\n    templateUrl: './dialog.component.html'\n})\nexport class DejaDialogComponent extends Destroy {\n    /** Event emitted when dialog close action is called */\n    @Output() public readonly closed = new EventEmitter();\n\n    @ContentChild('okaction') private okButton: { _elementRef: ElementRef<HTMLElement> };\n    @ContentChild('cancelaction') private cancelButton: { _elementRef: ElementRef<HTMLElement> };\n\n    /**\n     * Constructor\n     */\n    public constructor(elementRef: ElementRef) {\n        super();\n\n        const element = elementRef.nativeElement as HTMLElement;\n\n        fromEvent<KeyboardEvent>(element.ownerDocument, 'keyup').pipe(\n            filter(event => !!(event.code === KeyCodes.Enter && this.okButton?._elementRef) || !!(event.code === KeyCodes.Escape && this.cancelButton?._elementRef)),\n            takeUntil(this.destroyed$)\n        ).subscribe(event => {\n            if (event.code === KeyCodes.Enter) {\n                this.okButton._elementRef.nativeElement.click();\n            } else if (event.code === KeyCodes.Escape) {\n                this.cancelButton._elementRef.nativeElement.click();\n            }\n        });\n    }\n\n    /**\n     * Listen on click on dialogComponent.\n     * If click is not inside the dialog, close action is called.\n     *\n     * @param event\n     */\n    @HostListener('click', ['$event'])\n    public close(event: MouseEvent): void {\n\n        let close = true;\n\n        let target = event.target as HTMLElement;\n        const element = event.currentTarget as HTMLElement;\n\n        // eslint-disable-next-line no-loops/no-loops\n        while (target.parentElement && target !== element) {\n            if (target.className === 'dialog') {\n                close = false;\n            }\n            target = target.parentElement;\n        }\n\n        if (close) {\n            this.closed.emit();\n            event.preventDefault();\n        }\n    }\n}\n","<div class=\"dialog\">\n    <ng-content></ng-content>\n</div>","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DejaDialogComponent } from './dialog.component';\n\n@NgModule({\n    declarations: [\n        DejaDialogComponent\n    ],\n    exports: [\n        DejaDialogComponent\n    ],\n    imports: [\n        CommonModule\n    ]\n})\nexport class DejaDialogModule { }\n\nexport * from './dialog.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}