From 22bbaae08f3429c527442b5d1b068d330f898f13 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Mon, 31 Jul 2023 09:53:26 -0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20support=20for=20create=20+=20add?= =?UTF-8?q?=20more=20for=20all=20create=20modals=20and=20support=20k?= =?UTF-8?q?=E2=80=A6=20(#526)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add support for create + add more for all create modals and support keyboard bindings * listen for esc to close modals --- frontend/components/Base/Modal.vue | 14 +++++ frontend/components/Item/CreateModal.vue | 55 ++++++++++++-------- frontend/components/Label/CreateModal.vue | 44 +++++++++++++--- frontend/components/Location/CreateModal.vue | 44 +++++++++++++--- 4 files changed, 124 insertions(+), 33 deletions(-) diff --git a/frontend/components/Base/Modal.vue b/frontend/components/Base/Modal.vue index 0aee636..c1e7591 100644 --- a/frontend/components/Base/Modal.vue +++ b/frontend/components/Base/Modal.vue @@ -32,6 +32,12 @@ }, }); + function escClose(e: KeyboardEvent) { + if (e.key === "Escape") { + close(); + } + } + function close() { if (props.readonly) { emit("cancel"); @@ -42,4 +48,12 @@ const modalId = useId(); const modal = useVModel(props, "modelValue", emit); + + watchEffect(() => { + if (modal.value) { + document.addEventListener("keydown", escClose); + } else { + document.removeEventListener("keydown", escClose); + } + }); diff --git a/frontend/components/Item/CreateModal.vue b/frontend/components/Item/CreateModal.vue index 1b9bec5..5c1bdee 100644 --- a/frontend/components/Item/CreateModal.vue +++ b/frontend/components/Item/CreateModal.vue @@ -1,20 +1,14 @@