Implemented tab count limit
This commit is contained in:
		| @@ -4,9 +4,6 @@ import XMLButtonFormatterComponent from '@components/formatter/XMLButtonFormatte | |||||||
| import { ref } from 'vue' | import { ref } from 'vue' | ||||||
| import CodeEditor from '../CodeEditorComponent.vue' | import CodeEditor from '../CodeEditorComponent.vue' | ||||||
|  |  | ||||||
| const data = ref('') |  | ||||||
| const inputFile = ref() |  | ||||||
|  |  | ||||||
| const props = defineProps( | const props = defineProps( | ||||||
|     { |     { | ||||||
|         stylizedName: {type: String, required: true}, |         stylizedName: {type: String, required: true}, | ||||||
| @@ -15,6 +12,9 @@ const props = defineProps( | |||||||
| ) | ) | ||||||
| const emit = defineEmits(['update']) | const emit = defineEmits(['update']) | ||||||
|  |  | ||||||
|  | const data = ref('') | ||||||
|  | const inputFile = ref() | ||||||
|  |  | ||||||
| function sendValue() { | function sendValue() { | ||||||
|     emit('update', data.value) |     emit('update', data.value) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,6 +6,15 @@ import { type TabData } from '../common/TabData' | |||||||
| import { ref } from 'vue' | import { ref } from 'vue' | ||||||
| import CodeEditor from '../CodeEditorComponent.vue' | import CodeEditor from '../CodeEditorComponent.vue' | ||||||
|  |  | ||||||
|  | const props = defineProps( | ||||||
|  |     { | ||||||
|  |         stylizedName: {type: String, required: true}, | ||||||
|  |         data: {type: Array<TabData>}, | ||||||
|  |         tabCountLimit: {type: Number, required: false} | ||||||
|  |     } | ||||||
|  | ) | ||||||
|  | const emit = defineEmits(['update']) | ||||||
|  |  | ||||||
| const newTabId = ref(0); | const newTabId = ref(0); | ||||||
| const activeTabId = ref(0); | const activeTabId = ref(0); | ||||||
|  |  | ||||||
| @@ -19,15 +28,6 @@ tabs.value.push({ | |||||||
| const data = ref('') | const data = ref('') | ||||||
| const inputFile = ref() | const inputFile = ref() | ||||||
|  |  | ||||||
| const props = defineProps( |  | ||||||
|     { |  | ||||||
|         stylizedName: {type: String, required: true}, |  | ||||||
|         data: {type: Array<TabData>}, |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
| const emit = defineEmits(['update']) |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| function sendValue() { | function sendValue() { | ||||||
|     emit('update', tabs.value); |     emit('update', tabs.value); | ||||||
| @@ -81,6 +81,9 @@ function changeActiveTab(id : number) { | |||||||
| } | } | ||||||
|  |  | ||||||
| function addTab() { | function addTab() { | ||||||
|  |     if (isTabCountLimitAchieved()) | ||||||
|  |         return | ||||||
|  |  | ||||||
|     tabs.value.push({ |     tabs.value.push({ | ||||||
|         id: newTabId.value++, |         id: newTabId.value++, | ||||||
|         name: "XML" + newTabId.value, |         name: "XML" + newTabId.value, | ||||||
| @@ -88,6 +91,10 @@ function addTab() { | |||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function isTabCountLimitAchieved() { | ||||||
|  |     return props.tabCountLimit && tabs.value.length == props.tabCountLimit | ||||||
|  | } | ||||||
|  |  | ||||||
| function removeTab(id : number) { | function removeTab(id : number) { | ||||||
|     if (tabs.value.length == 1) |     if (tabs.value.length == 1) | ||||||
|         return |         return | ||||||
| @@ -129,7 +136,7 @@ function findIndexWithID(id : number) : number { | |||||||
|                 <div class="flex items-stretch w-64"> |                 <div class="flex items-stretch w-64"> | ||||||
|                     <input id="fileLoader" ref="inputFile" class="file-selector" type="file" accept=".xml,.xql,.xquery,.xslt,text/xml,text/plain" @change="readFile" /> |                     <input id="fileLoader" ref="inputFile" class="file-selector" type="file" accept=".xml,.xql,.xquery,.xslt,text/xml,text/plain" @change="readFile" /> | ||||||
|                 </div> |                 </div> | ||||||
|                 <button class="tool-button" @click="addTab">New</button> |                 <button :class="isTabCountLimitAchieved() ? 'inactive-button' : 'tool-button'" @click="addTab">New</button> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|          |          | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ function updateVersion(newVersion: string) { | |||||||
|     <div id="layout" class="flex flex-row w-full h-full"> |     <div id="layout" class="flex flex-row w-full h-full"> | ||||||
|         <div class="flex flex-col 2xl:flex-row w-full xl:w-7/12 grow overflow-hide pr-2"> |         <div class="flex flex-col 2xl:flex-row w-full xl:w-7/12 grow overflow-hide pr-2"> | ||||||
|             <div class="flex flex-col w-full 2xl:w-1/2 h-2/3 2xl:h-full flex-none items-center"> |             <div class="flex flex-col w-full 2xl:w-1/2 h-2/3 2xl:h-full flex-none items-center"> | ||||||
|                 <xmlTabbedInputComponent stylized-name="XML" :data="xml" @update="(data) => {xml = data}"></xmlTabbedInputComponent> |                 <xmlTabbedInputComponent stylized-name="XML" :tab-count-limit="3" :data="xml" @update="(data) => {xml = data}"></xmlTabbedInputComponent> | ||||||
|                 <xmlInputFieldComponent stylized-name="XSLT" :data="query" @update="(data) => {query = data}"></xmlInputFieldComponent> |                 <xmlInputFieldComponent stylized-name="XSLT" :data="query" @update="(data) => {query = data}"></xmlInputFieldComponent> | ||||||
|             </div> |             </div> | ||||||
|             <xmlOutputFieldComponent tool="xslt" :xml="xml" :query="query" @update="updateVersion"></xmlOutputFieldComponent> |             <xmlOutputFieldComponent tool="xslt" :xml="xml" :query="query" @update="updateVersion"></xmlOutputFieldComponent> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user