aboutsummaryrefslogtreecommitdiffstats
path: root/components/editor/quest
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2024-03-12 17:46:44 +0000
committerLeonardo Bishop <me@leonardobishop.com>2024-03-12 17:46:44 +0000
commit8664ad155c89d47affd94f8b0385ebf39841f1f8 (patch)
treeb1f6c33a2666a483e39093fa310ea3483b655c62 /components/editor/quest
parentcc2f3987c3f6386da140fefcb1998cb1eef18839 (diff)
Add YAML modal
Diffstat (limited to 'components/editor/quest')
-rw-r--r--components/editor/quest/modal/Yaml.vue59
1 files changed, 59 insertions, 0 deletions
diff --git a/components/editor/quest/modal/Yaml.vue b/components/editor/quest/modal/Yaml.vue
new file mode 100644
index 0000000..365055c
--- /dev/null
+++ b/components/editor/quest/modal/Yaml.vue
@@ -0,0 +1,59 @@
+<script setup lang="ts">
+import { stringify } from 'yaml';
+import { mapJsonQuestToYamlObject } from '~/lib/questsLoader';
+
+const emit = defineEmits(['delete']);
+const props = defineProps({
+ questId: {
+ required: true,
+ type: String
+ },
+});
+
+const session = useSessionStore();
+
+const showModal = ref(false);
+const yamlString = ref('');
+
+const open = () => {
+ const quest = session.getQuestById(props.questId);
+ if (!quest) {
+ return
+ }
+ const mappedObject = mapJsonQuestToYamlObject(quest);
+ yamlString.value = stringify(mappedObject);
+ showModal.value = true;
+}
+
+defineExpose({
+ open
+})
+</script>
+
+<template>
+ <Modal v-model="showModal">
+ <template v-slot:header>
+ <h2>YAML</h2>
+ </template>
+
+ <p>YAML file for <code>{{ props.questId }}</code></p>
+
+ <textarea rows="20" :value="yamlString" readonly />
+
+ <div id="confirm" class="control-group">
+ <Button type="solid" :icon="['fas', 'check']" :label="'Close'" @click="showModal = false"></Button>
+ </div>
+ </Modal>
+</template>
+
+<style scoped>
+#confirm {
+ display: flex;
+ justify-content: flex-end;
+ margin-top: 1rem;
+}
+
+textarea {
+ width: 100%;
+}
+</style> \ No newline at end of file