blob: b005cf46ba4a016ba8f72ed1b1ba75f69bb2e3bd [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { useTabStore } from '@/store/tab-state'
/**
* Combined functions that manage tab state
* @param pageKey Page unique identifier
* @param defaultIndex The default selected tab
*/
export function useTabState(pageKey: string, defaultIndex = '0') {
const route = useRoute()
const tabStore = useTabStore()
const activeTab = ref(defaultIndex)
// Initialize tabIndex: Preferred from URL query, followed by store
onMounted(() => {
const queryTab = route.query.tab as string
activeTab.value = queryTab ?? tabStore.getActiveTab(pageKey) ?? activeTab.value
})
watch(activeTab, (val) => {
tabStore.setActiveTab(pageKey, val)
})
return { activeTab }
}