Added temporary tab interface components

This commit is contained in:
2023-11-23 08:13:23 +01:00
parent de0b447344
commit 83916db267
2 changed files with 83 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
<script setup lang="ts">
const props = defineProps({
id: {
type: Number,
required: true
},
activeTabId: {
type: Number,
required: false
}
})
const emit = defineEmits(["activate", "remove"])
function click() {
emit("activate", props.id);
}
function remove() {
emit("remove", props.id);
}
</script>
<template>
<div :class="activeTabId == id ? 'tab-active' : 'tab'" class="flex flex-row gap-3">
<button @click="click" class="hover:brightness-110"><slot /></button>
<button @click="remove" class="hover:brightness-110">x</button>
</div>
</template>

View File

@@ -0,0 +1,52 @@
<script setup lang="ts">
import XmlInputFieldComponent from './XmlInputFieldComponent.vue';
import TabComponent from './TabComponent.vue';
import { ref } from 'vue'
const data = ref(new Array<string>)
const activeTabId = ref(0);
const nextTabId = ref(2);
const tabs = ref(new Array<string>);
tabs.value.push("XML1");
data.value.push("dupa")
function changeActiveTab(newActiveTabId : number) {
activeTabId.value = newActiveTabId;
}
function removeTab(tabId : number) {
if (tabs.value.length <= 1)
return
tabs.value.splice(tabId, 1);
data.value.splice(tabId, 1);
if (tabId == activeTabId.value)
activeTabId.value = 0;
}
function addTab() {
tabs.value.push("XML" + (nextTabId.value++));
data.value.push("")
}
</script>
<template>
<div class="flex flex-col justify-stretch items-stretch rounded-2xl mr-2">
<div class="flex flex-row justify-between ml-4">
<div class="flex flex-row h-1/12 grow-0 gap-2">
<TabComponent v-for="item in tabs" :id="tabs.indexOf(item)" @activate="changeActiveTab" @remove="removeTab" :active-tab-id="activeTabId">{{ item }}</TabComponent>
</div>
<div>
<button @click="addTab" class="tool-button">New</button>
</div>
</div>
<div class="flex-1 h-11/12 dark:bg-gray-700 p-2 rounded-xl border border-slate-400 overflow-auto">
<XmlInputFieldComponent class="h-full" stylized-name="XML" :data="data[activeTabId]"></XmlInputFieldComponent>
</div>
</div>
</template>