{"version":3,"file":"pepperi-addons-ngx-lib-signature.mjs","sources":["../../../projects/ngx-lib/signature/signature.component.ts","../../../projects/ngx-lib/signature/signature.component.html","../../../projects/ngx-lib/signature/signature.module.ts","../../../projects/ngx-lib/signature/public-api.ts","../../../projects/ngx-lib/signature/pepperi-addons-ngx-lib-signature.ts"],"sourcesContent":["import {\n    Component,\n    OnInit,\n    OnDestroy,\n    ViewChild,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectorRef,\n    ChangeDetectionStrategy,\n    OnChanges,\n    ElementRef,\n    Renderer2,\n    TemplateRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { SignaturePad } from 'ngx-signaturepad/signature-pad';\nimport {\n    PepFileService,\n    PepLayoutType,\n    PepCustomizationService,\n    PepHorizontalAlignment,\n    DEFAULT_HORIZONTAL_ALIGNMENT,\n    PepSignatureField,\n} from '@pepperi-addons/ngx-lib';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n    selector: 'pep-signature',\n    styleUrls: ['./signature.component.scss', './signature.component.theme.scss'],\n    templateUrl: './signature.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PepSignatureComponent implements OnInit, OnChanges, OnDestroy {\n    @Input() key = '';\n    @Input() src = '';\n    @Input() label = '';\n    @Input() mandatory = false;\n    @Input() disabled = false;\n    @Input() readonly = false;\n    @Input() xAlignment: PepHorizontalAlignment = DEFAULT_HORIZONTAL_ALIGNMENT;\n\n    private _rowSpan = 1;\n    @Input()\n    set rowSpan(value) {\n        this._rowSpan = value;\n        this.setFieldHeight();\n    }\n    get rowSpan(): number {\n        return this._rowSpan;\n    }\n\n    @Input() signatureURL = '';\n    // @Input() inDialog = false;\n\n    private _visible = true;\n    @Input()\n    set visible(visible: boolean) {\n        this._visible = visible;\n        if (visible) {\n            this.renderer.removeClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        } else {\n            this.renderer.addClass(\n                this.element.nativeElement,\n                'hidden-element'\n            );\n        }\n    }\n    get visible(): boolean {\n        return this._visible;\n    }\n\n    controlType = 'signature';\n\n    @Input() form: FormGroup = null;\n    @Input() showTitle = true;\n    @Input() renderTitle = true;\n\n    private _layoutType: PepLayoutType = 'form';\n    @Input()\n    set layoutType(value: PepLayoutType) {\n        this._layoutType = value;\n        this.setFieldHeight();\n    }\n    get layoutType(): PepLayoutType {\n        return this._layoutType;\n    }\n\n    @Input() isActive = false;\n\n    @Output()\n    fileChange: EventEmitter<any> = new EventEmitter<any>();\n\n    @ViewChild('signaturePad') signaturePad: SignaturePad;\n    @ViewChild('signaturePopupPad', { read: TemplateRef })\n    signaturePopupPad: TemplateRef<any>;\n    dialogRef: MatDialogRef<any>;\n\n    fieldHeight = '';\n    standAlone = false;\n    dataURI = null;\n    showActionBtn = true;\n\n    public isVisibleModal = false;\n    acceptSignatureType = 'png';\n\n    public signaturePadOptions: any = {\n        // passed through to szimek/signature_pad constructor\n        minWidth: 2,\n        canvasWidth: 500,\n        canvasHeight: 300,\n        penColor: 'rgb(151, 151, 151)',\n    };\n\n    constructor(\n        private dialogService: PepDialogService,\n        private customizationService: PepCustomizationService,\n        private fileService: PepFileService,\n        private cd: ChangeDetectorRef,\n        private renderer: Renderer2,\n        private element: ElementRef\n    ) { }\n\n    private setFieldHeight(): void {\n        this.fieldHeight = this.customizationService.calculateFieldHeight(\n            this.layoutType,\n            this.rowSpan,\n            this.standAlone\n        );\n    }\n\n    private setDefaultForm(): void {\n        const pepField = new PepSignatureField({\n            key: this.key,\n            value: this.src,\n            mandatory: this.mandatory,\n            readonly: this.readonly,\n            disabled: this.disabled,\n        });\n        this.form = this.customizationService.getDefaultFromGroup(pepField);\n    }\n\n    ngOnInit(): void {\n        if (this.form === null) {\n            this.standAlone = true;\n            this.setFieldHeight();\n            this.setDefaultForm();\n\n            this.renderer.addClass(\n                this.element.nativeElement,\n                PepCustomizationService.STAND_ALONE_FIELD_CLASS_NAME\n            );\n\n            if (!this.renderTitle) {\n                this.renderer.addClass(\n                    this.element.nativeElement,\n                    PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME\n                );\n            }\n        }\n    }\n\n    ngOnChanges(changes: any): void {\n        if (this.standAlone) {\n            this.setDefaultForm();\n        }\n\n        if (changes.src && changes.src.currentValue.length > 0) {\n            // Empty dataURI if there is change in the src.\n            this.dataURI = null;\n\n            // For clean the cache.\n            // this.src = this.src ? this.src + '?t=' + new Date().toTimeString() : '';\n        }\n    }\n\n    ngOnDestroy(): void {\n        //\n    }\n\n    drawComplete(): void {\n        // will be notified of szimek/signature_pad's onEnd event\n    }\n\n    drawStart(): void {\n        // will be notified of szimek/signature_pad's onBegin event\n    }\n\n    openSignModal(): void {\n        // If the signature is not empty open it in image viewer.\n        if (this.standAlone && this.dataURI) {\n            const fileStrArr = this.dataURI.fileStr.split(';');\n\n            if (fileStrArr.length === 2) {\n                const win = window.open('', '_blank');\n                const contentType = fileStrArr[0].split(':')[1];\n                const base64 = fileStrArr[1].split(',')[1];\n                const blob = this.fileService.convertFromb64toBlob(\n                    base64,\n                    contentType\n                );\n                const url = URL.createObjectURL(blob);\n                win.location.href = url;\n            }\n            // signature allready exits\n        } else {\n            this.signatureURL = this.src;\n            this.openSignatoreDlg(this.signatureURL);\n        }\n    }\n\n    openSignatoreDlg(src = ''): void {\n        this.showActionBtn =\n            this.signatureURL && this.signatureURL !== '' ? false : true;\n\n        this.dialogRef = this.dialogService.openDialog(this.signaturePopupPad);\n        this.dialogRef.afterOpened().subscribe(() => {\n            this.afterDialogOpened();\n        });\n    }\n\n    afterDialogOpened(): void {\n        if (this.signatureURL && this.signatureURL !== '') {\n            this.signaturePad.fromDataURL(this.signatureURL);\n            this.signaturePad.off();\n        }\n    }\n\n    clearSignModal(): void {\n        this.signatureURL = '';\n        this.signaturePad.clear();\n        this.signaturePad.on();\n    }\n\n    deleteSignature(event: any): void {\n        this.signatureURL = '';\n        this.changeValue(this.signatureURL);\n        this.cd.detectChanges();\n    }\n\n    saveSignModal(event: any): void {\n        if (!this.signaturePad.isEmpty()) {\n            this.signatureURL = this.signaturePad.toDataURL('image/png');\n            const fileValue = {\n                acceptedExtensions: this.acceptSignatureType,\n                fileStr: this.signatureURL,\n                fileExt: this.acceptSignatureType,\n            };\n            this.changeValue(fileValue);\n        } else {\n            this.signatureURL = '';\n            this.changeValue(this.signatureURL);\n        }\n\n        this.dialogRef.close(this.signatureURL);\n    }\n    \n    closeDialog(event) {\n        this.dialogRef.close(event);\n    }\n\n    errorHandler(event: any): void {\n        this.signatureURL = this.src = ''; // this.blankImage;\n    }\n\n    changeValue(fileData: any): void {\n        this.dataURI = fileData;\n        this.src = this.standAlone && this.dataURI ? this.dataURI.fileStr : '';\n        this.customizationService.updateFormFieldValue(\n            this.form,\n            this.key,\n            this.dataURI ? this.dataURI.fileExt : ''\n        );\n        // this.valueChange.emit({\n        //     key: this.key,\n        //     value,\n        // });\n\n        this.fileChange.emit(fileData);\n        // this.fileChange.emit(value.length > 0 ? JSON.parse(value) : value);\n    }\n\n    onKeyPress_OpenSignModal(event: any): void {\n        const e = event as KeyboardEvent;\n\n        if ([13, 32].indexOf(e.which) !== -1) {\n            this.openSignModal();\n        }\n        e.preventDefault();\n    }\n}","<ng-container [formGroup]=\"form\">\n    <ng-container>\n        <ng-template #pepTemplate>\n            <mat-form-field [formGroup]=\"form\" appearance=\"outline\">\n                <div class=\"pep-file-wrapper\">\n                    <div class=\"pep-file body-sm\" [ngClass]=\"{ disable: disabled }\" [style.height]=\"fieldHeight\">\n                        <ng-container *ngIf=\"src != ''; then withImg; else noImg\"></ng-container>\n                        <ng-template #withImg>\n                            <button *ngIf=\"!disabled\" mat-button (click)=\"deleteSignature($event)\"\n                                class=\"pep-button icon-button weak md delete\" tabindex=\"-1\"\n                                [ngClass]=\"{ 'right-alignment': xAlignment == 'right' }\">\n                                <mat-icon>\n                                    <pep-icon name=\"system_bin\"></pep-icon>\n                                </mat-icon>\n                            </button>\n                            <div class=\"pep-file-preview\" (click)=\"openSignModal()\">\n                                <img [src]=\"src\" [style.max-height]=\"fieldHeight\" class=\"pep-file-preview-img\"\n                                    (error)=\"errorHandler($event)\" [alt]=\"label\"\n                                    [ngClass]=\"['text-align-' + xAlignment]\" />\n                            </div>\n                        </ng-template>\n                        <ng-template #noImg>\n                            <div class=\"ellipsis pep-file-message\">\n                                <mat-icon class=\"pep-spacing-element\">\n                                    <pep-icon name=\"system_signature\"></pep-icon>\n                                </mat-icon>\n                                <span class=\"body-sm ellipsis\">\n                                    {{ (disabled ? 'MESSAGES.INFO_MISSING_SIGNATURE' : 'SIGNATURE.HINT') | translate }}\n                                </span>\n                            </div>\n                        </ng-template>\n                    </div>\n                    <input [id]=\"key\" matInput [formControlName]=\"key\" class=\"hidden-input signature\" type=\"text\"\n                        [value]=\"src\" (click)=\"openSignModal()\" (keypress)=\"onKeyPress_OpenSignModal($event)\"\n                        autocomplete=\"off\" readonly />\n                </div>\n\n                <mat-error><span class=\"body-xs\"\n                        [title]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"\n                        [innerText]=\"mandatory && src.length == 0 ? ('MESSAGES.ERROR_IS_REQUIRED' | translate: { field: label }) : ('MESSAGES.ERROR_IS_NOT_VALID' | translate: { field: label })\"></span>\n                </mat-error>\n            </mat-form-field>\n        </ng-template>\n\n        <ng-container *ngIf=\"layoutType === 'form'\">\n            <div class=\"pep-file-container\" [ngClass]=\"{ 'one-row': rowSpan == 1, 'stand-alone': standAlone}\">\n                <pep-field-title *ngIf=\"renderTitle\" [label]=\"label\" [mandatory]=\"mandatory\" [disabled]=\"disabled\"\n                    [xAlignment]=\"xAlignment\" [showTitle]=\"showTitle\">\n                </pep-field-title>\n                <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n            </div>\n        </ng-container>\n\n        <ng-container *ngIf=\"layoutType === 'card'\">\n            <ng-container *ngIf=\"false && isActive && !disabled; then selectedBlock; else notSelectedBlock\">\n            </ng-container>\n            <ng-template #selectedBlock>\n                <div class=\"pep-file-container\" [ngClass]=\"{ 'one-row': rowSpan == 1}\">\n                    <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n                </div>\n            </ng-template>\n            <ng-template #notSelectedBlock>\n                <div class=\"pep-file-container\" [ngClass]=\"{ 'one-row': rowSpan == 1 }\">\n                    <ng-container *ngTemplateOutlet=\"pepReadonlyTemplate; context: { isTableView: false}\">\n                    </ng-container>\n                </div>\n            </ng-template>\n        </ng-container>\n\n        <ng-container *ngIf=\"layoutType === 'table'\">\n            <ng-container *ngIf=\"false && isActive && !disabled; then selectedBlock; else notSelectedBlock\">\n            </ng-container>\n            <ng-template #selectedBlock>\n                <div class=\"pep-file-container one-row\">\n                    <ng-container *ngTemplateOutlet=\"pepTemplate\"></ng-container>\n                </div>\n            </ng-template>\n            <ng-template #notSelectedBlock>\n                <div class=\"pep-file-container one-row\">\n                    <ng-container *ngTemplateOutlet=\"pepReadonlyTemplate; context: { isTableView: true}\">\n                    </ng-container>\n                </div>\n            </ng-template>\n        </ng-container>\n    </ng-container>\n\n    <!-- <ng-container *ngIf=\"inDialog === true\">\n        <ng-container *ngTemplateOutlet=\"signaturePopupPad\"></ng-container>\n    </ng-container> -->\n\n    <!-- <div *ngIf=\"inDialog === false\" class=\"signature-backdrop modal\" [ngClass]=\"{ fade: !isVisibleModal }\" tabindex=\"-1\"\n        role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\"\n        [ngStyle]=\"{ display: isVisibleModal ? 'block' : 'none' }\">\n        <div class=\"signature-modal modal-dialog\" role=\"document\">\n            <div class=\"modal-content\">\n                <ng-container *ngTemplateOutlet=\"signaturePopupPad\"></ng-container>\n            </div>\n        </div>\n    </div> -->\n\n    <ng-template #pepReadonlyTemplate let-isTableView=\"isTableView\">\n        <div class=\"pep-file-container\">\n            <div class=\"pep-file-wrapper\">\n                <div class=\"pep-file body-sm disable\">\n                    <ng-container *ngIf=\"src != ''; then withImg; else noImg\"></ng-container>\n                    <ng-template #withImg>\n                        <div class=\"pep-file-preview\" (click)=\"openSignModal()\">\n                            <img *ngIf=\"!isTableView\" [src]=\"src\" [style.max-height]=\"fieldHeight\"\n                                class=\"pep-file-preview-img\" (error)=\"errorHandler($event)\" [alt]=\"label\"\n                                [ngClass]=\"['text-align-' + xAlignment]\" />\n                            <img *ngIf=\"isTableView\" [src]=\"src\" [style.max-height]=\"fieldHeight\"\n                                class=\"pep-report-file pep-file-preview-img\" (error)=\"errorHandler($event)\"\n                                [alt]=\"label\" [ngClass]=\"['text-align-' + xAlignment]\" />\n                        </div>\n                    </ng-template>\n                    <ng-template #noImg></ng-template>\n                </div>\n            </div>\n        </div>\n    </ng-template>\n\n    <ng-template #signaturePopupPad>\n        <pep-dialog [title]=\"'SIGNATURE.DIALOG_TITLE' | translate\" [showFooter]=\"showActionBtn\" (close)=\"closeDialog($event)\">\n            <ng-container pep-dialog-content>\n                <signature-pad #signaturePad [options]=\"signaturePadOptions\" (onBeginEvent)=\"drawStart()\"\n                    (onEndEvent)=\"drawComplete()\">\n                </signature-pad>\n            </ng-container>\n            <div pep-dialog-actions class=\"pep-spacing-element-negative\">\n                <button mat-button class=\"pep-spacing-element pep-button md weak\" [disabled]=\"readonly || disabled\"\n                    (click)=\"clearSignModal()\">\n                    {{ 'ACTIONS.CLEAR' | translate }}\n                </button>\n                <button mat-button class=\"pep-spacing-element pep-button md strong\" [disabled]=\"readonly || disabled\"\n                    (click)=\"saveSignModal($event)\">\n                    {{ 'ACTIONS.DONE' | translate }}\n                </button>\n            </div>\n        </pep-dialog>\n    </ng-template>\n\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { SignaturePadModule } from 'ngx-signaturepad';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconSystemBin,\n    pepIconSystemSignature,\n    pepIconSystemClose,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFieldTitleModule } from '@pepperi-addons/ngx-lib/field-title';\nimport { PepFilesUploaderModule } from '@pepperi-addons/ngx-lib/files-uploader';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepSignatureComponent } from './signature.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        // Material modules\n        MatCommonModule,\n        MatButtonModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatIconModule,\n        MatDialogModule,\n        // External modules\n        SignaturePadModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepIconModule,\n        PepFieldTitleModule,\n        PepFilesUploaderModule,\n        PepDialogModule,\n    ],\n    exports: [PepSignatureComponent],\n    declarations: [PepSignatureComponent],\n})\nexport class PepSignatureModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconSystemBin,\n            pepIconSystemSignature,\n            pepIconSystemClose,\n        ]);\n    }\n}\n","/*\n * Public API Surface of ngx-lib/signature\n */\nexport * from './signature.module';\nexport * from './signature.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i10","i1"],"mappings":"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"}