aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/Editor/Quest/Task/Modal
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2024-03-10 00:13:25 +0000
committerLeonardo Bishop <me@leonardobishop.com>2024-03-10 00:13:25 +0000
commit9a11e0f4a38297006b89cc7bb2a60734111582e0 (patch)
tree5ebddde79e67b659714b5dbdbfcea289f06a4ae5 /src/components/Editor/Quest/Task/Modal
parent817478f3cf357fc09778d9dc3cf67a667e21f042 (diff)
Migrate to nuxt
Diffstat (limited to 'src/components/Editor/Quest/Task/Modal')
-rw-r--r--src/components/Editor/Quest/Task/Modal/AddTaskModal.vue90
-rw-r--r--src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue77
2 files changed, 0 insertions, 167 deletions
diff --git a/src/components/Editor/Quest/Task/Modal/AddTaskModal.vue b/src/components/Editor/Quest/Task/Modal/AddTaskModal.vue
deleted file mode 100644
index 57139bb..0000000
--- a/src/components/Editor/Quest/Task/Modal/AddTaskModal.vue
+++ /dev/null
@@ -1,90 +0,0 @@
-<script setup lang="ts">
-import Modal from '@/components/Control/Modal.vue';
-import Button from '@/components/Control/Button.vue';
-import { computed, ref } from 'vue';
-import { useSessionStore } from '@/stores/session';
-import { validateTaskId } from '@/lib/util';
-
-const model = defineModel();
-
-const emit = defineEmits(['add']);
-
-const session = useSessionStore();
-
-const props = defineProps({
- questId: {
- type: String,
- required: true,
- },
-});
-
-const knownTasks = computed(() => session.getQuestById(props.questId)!.tasks);
-const knownTaskTypes = computed(() => session.getKnownTaskTypes());
-
-const newId = ref('');
-const newType = ref('');
-const unknownTaskType = computed(() => !knownTaskTypes.value.includes(newType.value));
-const invalidTaskId = computed(() => !validateTaskId(newId.value));
-const duplicateTaskId = computed(() => knownTasks.value[newId.value] !== undefined);
-
-const newTypeDescription = computed(() => session.getTaskDefinitionByTaskType(newType.value)?.description);
-</script>
-
-<template>
- <Modal v-model="model">
- <template v-slot:header>
- <h2>Add new task</h2>
- </template>
-
- <template v-slot:body>
- <div id="body">
- <div class="option-group">
- <label for="new-type">Task ID</label>
- <input id="new-id" name="new-id" type="text" v-model="newId" />
- <p v-if="invalidTaskId" class="error-text">Invalid task ID.</p>
- <p v-if="duplicateTaskId" class="error-text">Task ID already exists.</p>
- </div>
- <div class="option-group">
- <label for="new-type">Task type</label>
- <multiselect
- id="new-type"
- v-model="newType"
- :options="knownTaskTypes"
- :searchable="true"
- placeholder="Select a new type"
- ></multiselect>
- <p v-if="unknownTaskType" class="error-text">Invalid task type.</p>
- </div>
- <p v-if="newTypeDescription">{{ newTypeDescription }}</p>
- <p>A task ID must be unique, alphanumeric, and not contain any spaces.</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="'Confirm'"
- :disabled="unknownTaskType || invalidTaskId || duplicateTaskId"
- @click="emit('add', newId, 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/Modal/ChangeTaskModal.vue b/src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue
deleted file mode 100644
index c6b5921..0000000
--- a/src/components/Editor/Quest/Task/Modal/ChangeTaskModal.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-<script setup lang="ts">
-import Modal from '@/components/Control/Modal.vue';
-import Button from '@/components/Control/Button.vue';
-import { computed, ref } from 'vue';
-import { useSessionStore } from '@/stores/session';
-
-const model = defineModel();
-
-const emit = defineEmits(['update']);
-
-const session = useSessionStore();
-
-const props = defineProps({
- taskId: String,
- currentTaskType: String,
-});
-
-const knownTaskTypes = computed(() => session.getKnownTaskTypes());
-
-const newType = ref('');
-const unknownTaskType = computed(() => !knownTaskTypes.value.includes(newType.value));
-const noChange = computed(() => newType.value === props.currentTaskType);
-const newTypeDescription = computed(() => session.getTaskDefinitionByTaskType(newType.value)?.description);
-</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>
- <multiselect
- id="new-type"
- v-model="newType"
- :options="knownTaskTypes"
- :searchable="true"
- placeholder="Select a new type"
- ></multiselect>
- </div>
- <p v-if="unknownTaskType" class="error-text">Invalid task type.</p>
- <p v-if="newTypeDescription">{{ newTypeDescription }}</p>
- <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'"
- :disabled="unknownTaskType || noChange"
- @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