27 lines
704 B
TypeScript
27 lines
704 B
TypeScript
export type UnsavedChangesDecision = 'save' | 'discard' | 'cancel';
|
|||
|
|||
export interface UnsavedChangesDialogLabels {
|
|||
message: string;
|
|||
detail?: string;
|
|||
yesLabel: string;
|
|||
noLabel: string;
|
|||
cancelLabel: string;
|
|||
}
|
|||
|
|||
export function buildUnsavedChangesDialogOptions(labels: UnsavedChangesDialogLabels) {
|
|||
return {
|
|||
type: 'question' as const,
|
|||
buttons: [labels.yesLabel, labels.noLabel, labels.cancelLabel],
|
|||
defaultId: 0,
|
|||
cancelId: 2,
|
|||
message: labels.message,
|
|||
detail: labels.detail ?? '',
|
|||
};
|
|||
}
|
|||
|
|||
export function mapUnsavedChangesResponse(response: number): UnsavedChangesDecision {
|
|||
if (response === 0) return 'save';
|
|||
if (response === 1) return 'discard';
|
|||
return 'cancel';
|
|||
}
|