diff options
Diffstat (limited to 'components')
| -rw-r--r-- | components/base/Button.vue | 24 | ||||
| -rw-r--r-- | components/header/SiteHeader.vue | 3 | ||||
| -rw-r--r-- | components/loader/LoaderDiscardSessionModal.vue | 48 | ||||
| -rw-r--r-- | components/loader/LoaderFileSystemButton.vue | 2 | ||||
| -rw-r--r-- | components/loader/LoaderImportButton.vue | 9 | ||||
| -rw-r--r-- | components/loader/LoaderNetworkButton.vue | 8 | ||||
| -rw-r--r-- | components/loader/LoaderTestDataButton.vue | 2 |
7 files changed, 91 insertions, 5 deletions
diff --git a/components/base/Button.vue b/components/base/Button.vue index c7f7c50..827e201 100644 --- a/components/base/Button.vue +++ b/components/base/Button.vue @@ -5,6 +5,11 @@ const props = defineProps({ required: false, default: 'text', }, + accent: { + type: String, + required: false, + default: 'normal', + }, label: String, icon: Array<String>, disabled: Boolean, @@ -20,7 +25,8 @@ const onClick = (event: MouseEvent) => { </script> <template> - <a id="button" :class="{ text: type === 'text', solid: type === 'solid', disabled: disabled }" @click.stop="onClick"> + <a id="button" :class="{ text: type === 'text', solid: type === 'solid', disabled: disabled, [accent]: true }" + @click.stop="onClick"> <font-awesome-icon :icon="icon" /> {{ label }} </a> @@ -55,6 +61,22 @@ const onClick = (event: MouseEvent) => { } } +.text.danger { + color: var(--color-false); + + &:hover { + color: var(--color-false-hover) + } +} + +.solid.danger { + background-color: var(--color-false); + + &:hover { + background-color: var(--color-false-hover); + } +} + .solid { background-color: var(--color-primary); transition: background-color 0.3s; diff --git a/components/header/SiteHeader.vue b/components/header/SiteHeader.vue index 015af3d..afd85b8 100644 --- a/components/header/SiteHeader.vue +++ b/components/header/SiteHeader.vue @@ -15,8 +15,7 @@ const navigateHome = () => { </div> <div id="controls"> - <LoaderTestDataButton /> - <LoaderFileSystemButton /> + <LoaderImportButton /> </div> </header> </template> diff --git a/components/loader/LoaderDiscardSessionModal.vue b/components/loader/LoaderDiscardSessionModal.vue new file mode 100644 index 0000000..845b10a --- /dev/null +++ b/components/loader/LoaderDiscardSessionModal.vue @@ -0,0 +1,48 @@ +<script setup lang="ts"> +const session = useSessionStore(); + +const showModal = ref(false); + +const open = () => { + showModal.value = true; +} + +const confirm = () => { + session.setQuests([]); + session.setCategories([]); + session.setItems([]); + session.setSessionType('none'); + + navigateToEditorPane(null); + + showModal.value = false; +} + +defineExpose({ + open +}) +</script> + +<template> + <Modal v-model="showModal"> + <template v-slot:header> + <h2>Discard current session</h2> + </template> + + <p>You are about to discard your current session. All changes will be lost. + Do you want to continue?</p> + + <div id="controls" class="control-group"> + <Button :icon="['fas', 'xmark']" :label="'Cancel'" @click="showModal = false"></Button> + <Button type="solid" accent="danger" :icon="['fas', 'trash']" :label="'Confirm'" @click="confirm"></Button> + </div> + </Modal> +</template> + +<style scoped> +#controls { + display: flex; + justify-content: flex-end; + margin-top: 1rem; +} +</style>
\ No newline at end of file diff --git a/components/loader/LoaderFileSystemButton.vue b/components/loader/LoaderFileSystemButton.vue index 0d02477..3a70860 100644 --- a/components/loader/LoaderFileSystemButton.vue +++ b/components/loader/LoaderFileSystemButton.vue @@ -32,7 +32,7 @@ const openFileSystemPrompt = async () => { <template> <ClientOnly> - <Button type="solid" :icon="['fas', 'folder-open']" label="Import from Filesystem" @click="openFileSystemPrompt" + <Button type="solid" :icon="['fas', 'folder-open']" label="Load" @click="openFileSystemPrompt" :disabled="!canUseFsApi" /> <LoaderFileSystemModal ref="fileSystemModal" /> diff --git a/components/loader/LoaderImportButton.vue b/components/loader/LoaderImportButton.vue new file mode 100644 index 0000000..48bcb8d --- /dev/null +++ b/components/loader/LoaderImportButton.vue @@ -0,0 +1,9 @@ +<script setup lang="ts"> +const navigateToImport = async () => { + navigateTo('/import'); +} +</script> + +<template> + <Button type="solid" :icon="['fas', 'file-import']" label="Import" @click="navigateToImport" /> +</template>
\ No newline at end of file diff --git a/components/loader/LoaderNetworkButton.vue b/components/loader/LoaderNetworkButton.vue new file mode 100644 index 0000000..3364597 --- /dev/null +++ b/components/loader/LoaderNetworkButton.vue @@ -0,0 +1,8 @@ +<script setup lang="ts"> +</script> + +<template> + <ClientOnly> + <Button type="solid" :icon="['fas', 'download']" label="Download" :disabled="true" /> + </ClientOnly> +</template>
\ No newline at end of file diff --git a/components/loader/LoaderTestDataButton.vue b/components/loader/LoaderTestDataButton.vue index b01b0ee..1e648d6 100644 --- a/components/loader/LoaderTestDataButton.vue +++ b/components/loader/LoaderTestDataButton.vue @@ -10,7 +10,7 @@ const openTestDataModal = async () => { <template> <ClientOnly> - <Button :icon="['fas', 'flask-vial']" label="Demo" @click="openTestDataModal" /> + <Button type="solid" :icon="['fas', 'flask-vial']" label="Demo" @click="openTestDataModal" /> <LoaderTestDataModal ref="testDataModal" /> </ClientOnly> |
