summaryrefslogtreecommitdiff
path: root/client-web/source/preferences/ui.ts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-09-10 00:56:25 +0200
committermetamuffin <metamuffin@disroot.org>2022-09-10 00:56:25 +0200
commit429dc2d5375abf8ca9c3861bdc4bdff52a31b0e4 (patch)
tree2fa8201ebdf45237a9ec90429bd18b5d6cdd9944 /client-web/source/preferences/ui.ts
parent95041256f86745832df42423e889d50d2cff35e7 (diff)
downloadkeks-meet-429dc2d5375abf8ca9c3861bdc4bdff52a31b0e4.tar
keks-meet-429dc2d5375abf8ca9c3861bdc4bdff52a31b0e4.tar.bz2
keks-meet-429dc2d5375abf8ca9c3861bdc4bdff52a31b0e4.tar.zst
overlay rework + settings
Diffstat (limited to 'client-web/source/preferences/ui.ts')
-rw-r--r--client-web/source/preferences/ui.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/client-web/source/preferences/ui.ts b/client-web/source/preferences/ui.ts
new file mode 100644
index 0000000..1aaaca0
--- /dev/null
+++ b/client-web/source/preferences/ui.ts
@@ -0,0 +1,27 @@
+import { ediv, elabel, espan, OverlayUi } from "../helper.ts";
+import { PREF_DECLS } from "./decl.ts";
+import { change_pref, PrefDecl, PREFS } from "./mod.ts";
+
+export class PrefUi extends OverlayUi {
+ constructor() {
+ const elements = Object.entries(PREF_DECLS as Record<string, PrefDecl<unknown>>).map(([key_, decl]) => {
+ const key = key_ as keyof typeof PREF_DECLS
+
+ if (typeof decl.type == "boolean") {
+ const id = `pref-check-${key}`
+ const checkbox = document.createElement("input")
+ checkbox.type = "checkbox"
+ checkbox.id = id
+ checkbox.checked = PREFS[key] as boolean
+ checkbox.onchange = () => {
+ change_pref(key, checkbox.checked)
+ }
+ const label = elabel(decl.description ?? `[${key}]`, { id })
+ return ediv({ class: "pref" }, checkbox, label)
+ }
+ return espan(`(not implemented)`)
+ })
+ super(ediv({ class: "prefs-overlay" }, ...elements))
+ }
+
+}