aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/HelpModal.vue53
-rw-r--r--src/components/TileTree.vue16
2 files changed, 67 insertions, 2 deletions
diff --git a/src/components/HelpModal.vue b/src/components/HelpModal.vue
new file mode 100644
index 0000000..fff1b8d
--- /dev/null
+++ b/src/components/HelpModal.vue
@@ -0,0 +1,53 @@
+<script lang="ts">
+import {defineComponent, PropType} from 'vue';
+
+export default defineComponent({
+ props: {
+ options: {type: Object, required: true},
+ },
+ methods: {
+ closeClicked(evt: Event){
+ if (evt.target == this.$el || evt.target == this.$refs.closeIcon){
+ this.$emit('help-modal-close');
+ }
+ },
+ },
+ emits: ['help-modal-close'],
+});
+</script>
+
+<template>
+<div class="fixed left-0 top-0 w-full h-full bg-black/40" @click="closeClicked">
+ <div class="absolute left-1/2 -translate-x-1/2 w-4/5 top-1/2 -translate-y-1/2 p-4
+ bg-stone-50 rounded-md shadow shadow-black">
+ <svg class="block absolute top-2 right-2 w-6 h-6 hover:cursor-pointer"
+ @click="closeClicked" ref="closeIcon"
+ xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
+ stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
+ <line x1="18" y1="6" x2="6" y2="18"/>
+ <line x1="6" y1="6" x2="18" y2="18"/>
+ </svg>
+ <h1 class="text-center text-xl font-bold mb-2">Help Info</h1>
+ <hr class="mb-4 border-stone-400"/>
+ <div class="mb-4">
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ elit, sed do eiusmod tempor incididunt ut labore
+ et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat.
+ </div>
+ <div>
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ elit, sed do eiusmod tempor incididunt ut labore
+ et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat. Duis aute irure
+ dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt
+ in culpa qui officia deserunt mollit anim id
+ est laborum.
+ </div>
+ </div>
+</div>
+</template>
diff --git a/src/components/TileTree.vue b/src/components/TileTree.vue
index 86e289f..46cb8b3 100644
--- a/src/components/TileTree.vue
+++ b/src/components/TileTree.vue
@@ -4,6 +4,7 @@ import Tile from './Tile.vue';
import ParentBar from './ParentBar.vue';
import TileInfoModal from './TileInfoModal.vue';
import SearchModal from './SearchModal.vue';
+import HelpModal from './HelpModal.vue';
import Settings from './Settings.vue';
import {TolNode, LayoutNode, initLayoutTree, initLayoutMap, tryLayout, randWeightedChoice} from '../lib';
import type {LayoutOptions} from '../lib';
@@ -96,6 +97,7 @@ export default defineComponent({
lastFocused: null as LayoutNode | null,
animationActive: false,
autoWaitTime: 500, //ms (in auto mode, time to wait after an action ends)
+ helpOpen: false,
// Options
layoutOptions: {...defaultLayoutOptions},
componentOptions: {...defaultComponentOptions},
@@ -433,6 +435,13 @@ export default defineComponent({
node.hasFocus = true;
}
},
+ onHelpIconClick(){
+ this.closeModalsAndSettings();
+ this.helpOpen = true;
+ },
+ onHelpModalClose(){
+ this.helpOpen = false;
+ },
},
created(){
window.addEventListener('resize', this.onResize);
@@ -443,7 +452,7 @@ export default defineComponent({
window.removeEventListener('resize', this.onResize);
window.removeEventListener('keyup', this.onKeyUp);
},
- components: {Tile, ParentBar, TileInfoModal, Settings, SearchModal, },
+ components: {Tile, ParentBar, TileInfoModal, Settings, SearchModal, HelpModal, },
});
</script>
@@ -475,7 +484,7 @@ export default defineComponent({
<circle cx="12" cy="12" r="10"/>
<polygon points="10 8 16 12 10 16 10 8"/>
</svg>
- <svg
+ <svg @click="onHelpIconClick"
class="absolute top-[6px] right-[6px] w-[18px] h-[18px] text-white/40 hover:text-white hover:cursor-pointer"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
@@ -492,6 +501,9 @@ export default defineComponent({
<search-modal v-if="searchOpen" :layoutTree="layoutTree" :tolMap="tolMap" :options="componentOptions"
@search-close="onSearchClose" @search-node="onSearchNode"/>
</transition>
+ <transition name="fade">
+ <help-modal v-if="helpOpen" :options="componentOptions" @help-modal-close="onHelpModalClose"/>
+ </transition>
<!-- Overlay used to prevent interaction and capture clicks -->
<div :style="{visibility: animationActive ? 'visible' : 'hidden'}"
class="absolute left-0 top-0 w-full h-full" @click="onOverlayClick"></div>