diff --git a/src/components/Settings/DesktopAndDock/DesktopAndDock.vue b/src/components/Settings/DesktopAndDock/DesktopAndDock.vue index ad947f6a..ddf6fe09 100644 --- a/src/components/Settings/DesktopAndDock/DesktopAndDock.vue +++ b/src/components/Settings/DesktopAndDock/DesktopAndDock.vue @@ -44,6 +44,24 @@ const dockPositions = computed(() => { }, ] }) + +const topBarLinkOpenModeOptions = computed(() => { + return [ + { + label: 'current tab', + value: 'currentTab', + }, + { + label: 'current tab if not homepage', + value: 'currentTabIfNotHomepage', + }, + { + label: 'new tab', + value: 'newTab', + }, + ] +}) + const pageOptions = computed((): { label: string, icon: string, value: string }[] => { return mainStore.dockItems.map((e: any) => { return { @@ -78,6 +96,9 @@ function handleToggleDockItem(dockItem: any) { + + + diff --git a/src/components/TopBar/OldTopBar.vue b/src/components/TopBar/OldTopBar.vue index da674223..ff3204ef 100644 --- a/src/components/TopBar/OldTopBar.vue +++ b/src/components/TopBar/OldTopBar.vue @@ -11,6 +11,7 @@ import { settings } from '~/logic' import { getUserID, isHomePage } from '~/utils/main' import emitter from '~/utils/mitt' +import ALink from './components/ALink.vue' import ChannelsPop from './components/ChannelsPop.vue' import FavoritesPop from './components/FavoritesPop.vue' import HistoryPop from './components/HistoryPop.vue' @@ -540,10 +541,9 @@ defineExpose({ class="avatar right-side-item relative" shadow="$bew-shadow-2" rounded-full > - - - + - - + @@ -699,13 +697,12 @@ defineExpose({ class="right-side-item" :class="{ active: popupVisible.favorites }" > - - + @@ -725,13 +722,12 @@ defineExpose({ class="right-side-item" :class="{ active: popupVisible.history }" > - - + - - + - - + @@ -611,13 +611,12 @@ defineExpose({ class="right-side-item" :class="{ active: popupVisible.favorites }" > - - + @@ -636,13 +635,13 @@ defineExpose({ class="right-side-item" :class="{ active: popupVisible.history }" > - - + @@ -655,13 +654,12 @@ defineExpose({ class="right-side-item" :class="{ active: popupVisible.watchLater }" > - - + - - + - +import { settings } from '~/logic' +import { isHomePage } from '~/utils/main' + +defineProps<{ + href?: string + title?: string + rel?: string +}>() + +const target = computed(() => { + if (settings.value.topBarLinkOpenMode === 'newTab') { + return '_blank' + } + if (settings.value.topBarLinkOpenMode === 'currentTabIfNotHomepage') { + return isHomePage() ? '_blank' : '_self' + } + if (settings.value.topBarLinkOpenMode === 'currentTab') { + return '_self' + } + return '_self' +}) + + + + + + + diff --git a/src/components/TopBar/components/ChannelsPop.vue b/src/components/TopBar/components/ChannelsPop.vue index e808f208..ab51296d 100644 --- a/src/components/TopBar/components/ChannelsPop.vue +++ b/src/components/TopBar/components/ChannelsPop.vue @@ -3,6 +3,8 @@ import { useI18n } from 'vue-i18n' import { isHomePage } from '~/utils/main' +import ALink from './ALink.vue' + const { t } = useI18n() const genres = computed(() => [ @@ -70,15 +72,14 @@ const otherLinks = computed(() => [ :key="genre.name" class="link-item" > - {{ genre.name }} - + [ :key="otherLink.name" class="link-item group" > - [ /> {{ otherLink.name }} - + diff --git a/src/components/TopBar/components/FavoritesPop.vue b/src/components/TopBar/components/FavoritesPop.vue index b4f4326f..9cb4c3c3 100644 --- a/src/components/TopBar/components/FavoritesPop.vue +++ b/src/components/TopBar/components/FavoritesPop.vue @@ -6,9 +6,10 @@ import Empty from '~/components/Empty.vue' import Loading from '~/components/Loading.vue' import { useApiClient } from '~/composables/api' import { calcCurrentTime } from '~/utils/dataFormatter' -import { getUserID, isHomePage, removeHttpFromUrl, scrollToTop } from '~/utils/main' +import { getUserID, removeHttpFromUrl, scrollToTop } from '~/utils/main' import type { FavoriteCategory, FavoriteResource } from '../types' +import ALink from './ALink.vue' const api = useApiClient() @@ -163,18 +164,18 @@ defineExpose({ - {{ $t('common.play_all') }} - - + {{ $t('common.view_all') }} - + @@ -235,11 +236,11 @@ defineExpose({ - - + diff --git a/src/components/TopBar/components/HistoryPop.vue b/src/components/TopBar/components/HistoryPop.vue index 544b1d8e..1b90326d 100644 --- a/src/components/TopBar/components/HistoryPop.vue +++ b/src/components/TopBar/components/HistoryPop.vue @@ -10,7 +10,9 @@ import { useApiClient } from '~/composables/api' import type { HistoryResult, List as HistoryItem } from '~/models/history/history' import { Business } from '~/models/history/history' import { calcCurrentTime } from '~/utils/dataFormatter' -import { isHomePage, removeHttpFromUrl, scrollToTop } from '~/utils/main' +import { removeHttpFromUrl, scrollToTop } from '~/utils/main' + +import ALink from './ALink.vue' const { t } = useI18n() const api = useApiClient() @@ -201,12 +203,12 @@ function getHistoryList(type: Business, view_at = 0 as number) { {{ tab.name }} - {{ $t('common.view_all') }} - + @@ -242,10 +244,10 @@ function getHistoryList(type: Business, view_at = 0 as number) { - - {{ historyItem.author_name }} - + - + diff --git a/src/components/TopBar/components/MomentsPop.vue b/src/components/TopBar/components/MomentsPop.vue index fa253758..44fdc077 100644 --- a/src/components/TopBar/components/MomentsPop.vue +++ b/src/components/TopBar/components/MomentsPop.vue @@ -9,7 +9,9 @@ import Tooltip from '~/components/Tooltip.vue' import { useApiClient } from '~/composables/api' import type { TopBarLiveMomentResult } from '~/models/moment/topBarLiveMoment' import type { TopBarMomentResult } from '~/models/moment/topBarMoment' -import { getCSRF, isHomePage, scrollToTop } from '~/utils/main' +import { getCSRF, scrollToTop } from '~/utils/main' + +import ALink from './ALink.vue' type MomentType = 'video' | 'live' | 'article' interface MomentTab { type: MomentType, name: any } @@ -314,12 +316,12 @@ defineExpose({ {{ tab.name }} - {{ $t('common.view_all') }} - + @@ -350,10 +352,10 @@ defineExpose({ - - - + - {{ moment.author }} - + {{ moment.title }} @@ -452,7 +454,7 @@ defineExpose({ - + diff --git a/src/components/TopBar/components/MorePop.vue b/src/components/TopBar/components/MorePop.vue index a833e426..db6270f2 100644 --- a/src/components/TopBar/components/MorePop.vue +++ b/src/components/TopBar/components/MorePop.vue @@ -1,7 +1,9 @@