ChurchAngular/src/app/services/msg-box.service.ts
Chris Chen b46392bc41 WIP
2024-03-21 17:47:13 -07:00

81 lines
2.4 KiB
TypeScript

import { Injectable } from '@angular/core';
import { NbDialogService } from '@nebular/theme';
import { AlertDlgComponent } from '../ui/alert-dlg/alert-dlg.component';
import { first, map, mergeMap } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { MultiRecordPickerDlgComponent } from '../ui/fancy-table/multi-record-picker-dlg/multi-record-picker-dlg.component';
import { ObjectUtils } from '../utilities/object-utils';
import { MessageBoxConfig, ADIcon, ADButtons } from '../ui/alert-dlg/alert-dlg.model';
@Injectable({
providedIn: 'root'
})
export class MsgBoxService {
constructor(
public dlgService: NbDialogService
) { }
/**
* Shows msg box
* @param title
* @param [text]
* @param [config] Partial<MessageBoxConfig>
* @returns Ok,Yes:true, No,Close:false, Cancel:null
*/
show(title: string,
config: Partial<MessageBoxConfig> = {}): Observable<boolean> {
let defaultConfig = { buttons: ADButtons.OK } as Partial<MessageBoxConfig>;
Object.assign(defaultConfig, config);
defaultConfig.title = title;
return this.dlgService.open(AlertDlgComponent, {
context: {
config: new MessageBoxConfig(defaultConfig)
},
closeOnBackdropClick: false,
}).onClose.pipe(first())
}
showMsg(config: Partial<MessageBoxConfig>): Observable<boolean> {
return this.dlgService.open(AlertDlgComponent, {
context: {
config: new MessageBoxConfig(config)
},
closeOnBackdropClick: false,
}).onClose.pipe(first())
}
showInputbox(title: string, text = '', config: Partial<MessageBoxConfig> = { inputType: 'string', icon: ADIcon.QUESTION }): Observable<any> {
config.title = title;
config.text = text;
if (config.inputType === undefined) {
config.inputType = 'string';
}
if (config.icon === undefined) {
config.icon = ADIcon.QUESTION;
}
if (config.buttons === undefined) {
config.buttons = ADButtons.OKCancel;
}
return this.dlgService.open(AlertDlgComponent, {
context: {
config: new MessageBoxConfig(config)
},
closeOnBackdropClick: false,
}).onClose.pipe(first());
}
showConfirmDeleteBox(config: Partial<MessageBoxConfig> = {
title: 'Delete This Record?',
text: `Are you sure you want to delete it?`,
icon: ADIcon.QUESTION,
buttons: ADButtons.YesNo,
confirmButtonText: 'Delete',
cancelButtonText: "Cancel"
}) {
return this.show(config.title, config);
}
}