diff options
Diffstat (limited to 'src/components/Editor/Quest/Task')
| -rw-r--r-- | src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue | 59 | ||||
| -rw-r--r-- | src/components/Editor/Quest/Task/TaskConfiguration.vue | 18 |
2 files changed, 70 insertions, 7 deletions
diff --git a/src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue b/src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue new file mode 100644 index 0000000..f8ffef7 --- /dev/null +++ b/src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue @@ -0,0 +1,59 @@ +<script setup lang="ts"> +import Modal from '@/components/Control/Modal.vue'; +import Button from '@/components/Control/Button.vue'; +import { ref } from 'vue'; + +const model = defineModel(); + +const emit = defineEmits(['update']); + +defineProps({ + taskId: String, +}); + +const newType = ref(''); +</script> + +<template> + <Modal v-model="model"> + <template v-slot:header> + <h2>Change the task type of '{{ taskId }}'</h2> + </template> + + <template v-slot:body> + <div id="body"> + <div class="option-group"> + <label for="new-type">New type</label> + <input id="new-type" name="new-type" type="text" v-model="newType" /> + </div> + <p>Any configured options for this task will be overwritten.</p> + <div id="confirm" class="control-group"> + <Button + :icon="['fas', 'fa-times']" + :label="'Cancel'" + @click="model = false" + ></Button> + <Button + type="solid" + :icon="['fas', 'fa-check']" + :label="'Change'" + @click="emit('update', newType)" + ></Button> + </div> + </div> + </template> + </Modal> +</template> + +<style scoped> +#confirm { + display: flex; + justify-content: flex-end; +} + +#body { + display: flex; + flex-direction: column; + gap: 0.5rem; +} +</style>
\ No newline at end of file diff --git a/src/components/Editor/Quest/Task/TaskConfiguration.vue b/src/components/Editor/Quest/Task/TaskConfiguration.vue index c31a87d..7006f18 100644 --- a/src/components/Editor/Quest/Task/TaskConfiguration.vue +++ b/src/components/Editor/Quest/Task/TaskConfiguration.vue @@ -1,8 +1,9 @@ <script setup lang="ts"> import { useSessionStore, type EditorQuest } from '@/stores/session'; -import { computed } from 'vue'; +import { computed, ref } from 'vue'; import Button from '@/components/Control/Button.vue'; import TaskConfigurationRow from '@/components/Editor/Quest/Task/TaskConfigurationRow.vue'; +import ChangeTaskModal from './Modal/ChangeTaskModal.vue'; const props = defineProps<{ taskId: string; @@ -62,6 +63,8 @@ const deleteValue = (fieldName: string) => { delete sessionStore.getQuestById(props.quest.id)!.tasks[props.taskId].config[fieldName]; }; +const showChangeModal = ref(false); + </script> <template> @@ -75,10 +78,11 @@ const deleteValue = (fieldName: string) => { ({{ taskType }}) </code> </p> - <div id="task-controls"> + <div id="task-controls" class="control-group"> <Button :icon="['fas', 'fa-pen']" :label="'Change'" + @click="showChangeModal = true" ></Button> <Button :icon="['fas', 'fa-trash']" @@ -122,6 +126,11 @@ const deleteValue = (fieldName: string) => { </div> </div> </div> + + <ChangeTaskModal + v-model="showChangeModal" + :taskId="props.taskId" + /> </template> <style scoped> @@ -163,11 +172,6 @@ const deleteValue = (fieldName: string) => { color: var(--color-text-mute); } } - - #task-controls { - display: flex; - gap: 1rem; - } } } |
