web: dialog system & basic small dialog
This commit is contained in:
23
web/src/lib/dialogs.ts
Normal file
23
web/src/lib/dialogs.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { readable, type Updater } from "svelte/store";
|
||||
import type { DialogInfo } from "$lib/types/dialog";
|
||||
|
||||
let update: (_: Updater<DialogInfo[]>) => void;
|
||||
|
||||
export default readable<DialogInfo[]>(
|
||||
[],
|
||||
(_, _update) => { update = _update }
|
||||
);
|
||||
|
||||
export function createDialog(newData: DialogInfo) {
|
||||
update((popups) => {
|
||||
popups.push(newData);
|
||||
return popups;
|
||||
});
|
||||
}
|
||||
|
||||
export function killDialog() {
|
||||
update((popups) => {
|
||||
popups.pop()
|
||||
return popups;
|
||||
});
|
||||
}
|
||||
14
web/src/lib/types/dialog.ts
Normal file
14
web/src/lib/types/dialog.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
export type DialogButton = {
|
||||
text: string,
|
||||
color: string,
|
||||
action: () => unknown | Promise<unknown>
|
||||
}
|
||||
|
||||
export type DialogInfo = {
|
||||
id: string,
|
||||
type: "small",
|
||||
title: string,
|
||||
bodyText: string,
|
||||
bodySubText: string,
|
||||
buttons: DialogButton[]
|
||||
}
|
||||
Reference in New Issue
Block a user