fix: 兼容intel Mac旧版系统webview中样式问题
Co-authored-by: tangheng <tangheng@tanghengdeMacBook-Pro.local>
This commit is contained in:
1 parent
361f7774e9
commit
8ff0f13bd4
14 files changed
+1354
-134
No files matched your search
@@ -1059,12 +1059,12 @@ watch(driverStoreTab, (tab) => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="h-full flex flex-col">
|
||||
<div class="flex-1 min-h-0 overflow-y-auto">
|
||||
<div class="max-w-4xl mx-auto px-6 py-6">
|
||||
<Tabs v-model="driverStoreTab" default-value="agent">
|
||||
<div class="flex items-center justify-between">
|
||||
<TabsList class="grid w-[360px] grid-cols-3">
|
||||
<div class="driver-store-view h-full flex flex-col">
|
||||
<div class="driver-store-scroll flex-1 min-h-0 overflow-y-auto">
|
||||
<div class="driver-store-container max-w-4xl mx-auto px-6 py-6">
|
||||
<Tabs v-model="driverStoreTab" default-value="agent" class="driver-store-tabs-root">
|
||||
<div class="driver-store-header flex items-center justify-between">
|
||||
<TabsList class="driver-store-tabs grid w-[360px] grid-cols-3">
|
||||
<TabsTrigger value="agent" class="gap-1.5 relative">
|
||||
{{ t("driverStore.agentDrivers") }}
|
||||
<span v-if="agentTabUpdateCount > 0" class="inline-block h-2 w-2 rounded-full bg-red-500" />
|
||||
@@ -1090,7 +1090,7 @@ watch(driverStoreTab, (tab) => {
|
||||
</div>
|
||||
|
||||
<!-- Agent Tab -->
|
||||
<TabsContent value="agent" class="mt-5 space-y-5">
|
||||
<TabsContent value="agent" class="driver-store-tab driver-store-agent-tab mt-5 space-y-5">
|
||||
<!-- Java Runtime -->
|
||||
<div class="rounded-xl border bg-muted/20 p-4 space-y-3">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
@@ -1157,7 +1157,7 @@ watch(driverStoreTab, (tab) => {
|
||||
<div v-else-if="filteredAgentDrivers.length === 0" class="py-12 text-center text-sm text-muted-foreground">
|
||||
{{ t("driverStore.noMatchingDrivers") }}
|
||||
</div>
|
||||
<div v-else class="rounded-md border divide-y">
|
||||
<div v-else class="driver-store-agent-list rounded-md border divide-y">
|
||||
<div v-if="updatableCount > 0" class="flex items-center justify-between px-4 py-2 bg-muted/30">
|
||||
<span class="text-xs text-muted-foreground">{{ t("driverStore.driversUpdatable", { count: updatableCount }) }}</span>
|
||||
<Button size="sm" class="h-7 rounded-[6px] text-xs" :disabled="installing !== null || upgradingAll" @click="upgradeAll">
|
||||
@@ -1166,14 +1166,14 @@ watch(driverStoreTab, (tab) => {
|
||||
{{ upgradingAll ? t("driverStore.upgradingProgress", { current: upgradingIndex, total: upgradingTotal }) : t("driverStore.upgradeAll") }}
|
||||
</Button>
|
||||
</div>
|
||||
<div v-for="driver in filteredAgentDrivers" :key="driver.db_type" class="flex items-center gap-3 px-4 py-2 transition hover:bg-muted/30">
|
||||
<div v-for="driver in filteredAgentDrivers" :key="driver.db_type" class="driver-store-agent-row flex items-center gap-3 px-4 py-2 transition hover:bg-muted/30">
|
||||
<span class="flex h-8 w-8 items-center justify-center rounded-lg bg-muted/60 shrink-0">
|
||||
<DatabaseIcon :db-type="driver.db_type" class="h-4 w-4" />
|
||||
</span>
|
||||
<div class="min-w-0 flex-1">
|
||||
<div class="driver-store-agent-name min-w-0 flex-1">
|
||||
<div class="text-sm font-medium">{{ driver.label }}</div>
|
||||
</div>
|
||||
<div class="flex shrink-0 items-center gap-1.5">
|
||||
<div class="driver-store-agent-meta flex shrink-0 items-center gap-1.5">
|
||||
<span v-if="driverRequiresJavaRuntime(driver) && driver.jre" class="rounded-full px-2 py-0.5 text-[11px]" :class="driver.jre !== '21' ? 'bg-blue-500/10 text-blue-600' : 'bg-muted text-muted-foreground'">JRE {{ driver.jre }}</span>
|
||||
<template v-if="driver.installed">
|
||||
<span class="rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground">v{{ driver.installed_version }}</span>
|
||||
@@ -1184,7 +1184,7 @@ watch(driverStoreTab, (tab) => {
|
||||
</template>
|
||||
<span v-if="formatSize(driver.size)" class="rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground">{{ formatSize(driver.size) }}</span>
|
||||
</div>
|
||||
<div class="flex shrink-0 items-center gap-2">
|
||||
<div class="driver-store-agent-actions flex shrink-0 items-center gap-2">
|
||||
<Button v-if="!driver.installed && isDriverQueued(driver.db_type)" size="sm" variant="outline" class="h-7 rounded-[6px] border-green-500/30 bg-green-500/10 text-xs text-green-700 hover:bg-green-500/15" :disabled="upgradingAll" @click="removeQueuedDriverInstall(driver.db_type)">
|
||||
<Clock3 class="h-3 w-3 mr-1" />
|
||||
{{ t("driverStore.queued") }}
|
||||
@@ -1232,7 +1232,7 @@ watch(driverStoreTab, (tab) => {
|
||||
</TabsContent>
|
||||
|
||||
<!-- JDBC Tab -->
|
||||
<TabsContent value="jdbc" class="mt-5 space-y-5">
|
||||
<TabsContent value="jdbc" class="driver-store-tab driver-store-jdbc-tab mt-5 space-y-5">
|
||||
<!-- JDBC Plugin -->
|
||||
<div class="rounded-xl border bg-muted/20 p-4">
|
||||
<div class="flex min-h-12 items-center justify-between gap-3">
|
||||
@@ -1311,7 +1311,7 @@ watch(driverStoreTab, (tab) => {
|
||||
<Input v-if="jdbcMavenRepository === 'custom'" v-model="customJdbcMavenRepository" class="h-8 text-xs" placeholder="https://repo.example.com/repository/maven-public" @keydown.enter.prevent="installJdbcMavenDriver" />
|
||||
</div>
|
||||
|
||||
<div class="rounded-md border">
|
||||
<div class="driver-store-jdbc-list rounded-md border">
|
||||
<div v-if="isLoadingJdbcDrivers" class="p-4 text-sm text-muted-foreground">
|
||||
{{ t("common.loading") }}
|
||||
</div>
|
||||
@@ -1322,8 +1322,8 @@ watch(driverStoreTab, (tab) => {
|
||||
{{ t("driverStore.noMatchingDrivers") }}
|
||||
</div>
|
||||
<div v-else class="divide-y">
|
||||
<div v-for="item in filteredJdbcDrivers" :key="item.id" class="flex items-center gap-3 p-3">
|
||||
<div class="min-w-0 flex-1">
|
||||
<div v-for="item in filteredJdbcDrivers" :key="item.id" class="driver-store-jdbc-row flex items-center gap-3 p-3">
|
||||
<div class="driver-store-jdbc-name min-w-0 flex-1">
|
||||
<div class="flex min-w-0 items-center gap-2">
|
||||
<div class="truncate text-sm font-medium">{{ item.title }}</div>
|
||||
<Badge variant="outline" class="h-5 shrink-0 rounded-full px-2 text-[10px] font-medium">
|
||||
@@ -1342,7 +1342,7 @@ watch(driverStoreTab, (tab) => {
|
||||
</TabsContent>
|
||||
|
||||
<!-- Runtime Tab -->
|
||||
<TabsContent value="storage" class="mt-5 space-y-5">
|
||||
<TabsContent value="storage" class="driver-store-tab driver-store-storage-tab mt-5 space-y-5">
|
||||
<!-- Storage Usage -->
|
||||
<div class="rounded-xl border bg-muted/20 p-4 space-y-3">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
@@ -1528,3 +1528,156 @@ watch(driverStoreTab, (tab) => {
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.driver-store-view,
|
||||
.driver-store-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.driver-store-view {
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.driver-store-scroll {
|
||||
height: 100%;
|
||||
min-height: 0;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
.driver-store-container {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
max-width: none !important;
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
padding: 1.25rem 1.5rem 1.5rem !important;
|
||||
}
|
||||
|
||||
.driver-store-tabs {
|
||||
display: grid !important;
|
||||
width: 360px !important;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
|
||||
}
|
||||
|
||||
.driver-store-tabs-root {
|
||||
display: flex !important;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
flex-direction: column !important;
|
||||
}
|
||||
|
||||
.driver-store-tabs-root > [data-slot="tabs-content"] {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.driver-store-header {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.driver-store-tab {
|
||||
min-height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.driver-store-tabs-root > [data-slot="tabs-content"][hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.driver-store-agent-tab,
|
||||
.driver-store-jdbc-tab {
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.driver-store-agent-tab:not([hidden]),
|
||||
.driver-store-jdbc-tab:not([hidden]) {
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
.driver-store-agent-tab > :not([hidden]) ~ :not([hidden]),
|
||||
.driver-store-jdbc-tab > :not([hidden]) ~ :not([hidden]) {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.driver-store-agent-tab > *,
|
||||
.driver-store-jdbc-tab > * {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.driver-store-agent-row {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.driver-store-agent-list,
|
||||
.driver-store-jdbc-list {
|
||||
width: 100%;
|
||||
flex: 0 0 auto !important;
|
||||
min-height: 0;
|
||||
overflow-y: visible;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.driver-store-agent-name,
|
||||
.driver-store-jdbc-name {
|
||||
flex: 1 1 auto !important;
|
||||
min-width: 0 !important;
|
||||
}
|
||||
|
||||
.driver-store-agent-meta,
|
||||
.driver-store-agent-actions,
|
||||
.driver-store-jdbc-row > .shrink-0,
|
||||
.driver-store-jdbc-row > button {
|
||||
flex-shrink: 0 !important;
|
||||
}
|
||||
|
||||
.driver-store-jdbc-row {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.driver-store-jdbc-row > button {
|
||||
width: 2rem !important;
|
||||
height: 2rem !important;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.driver-store-header {
|
||||
align-items: flex-start !important;
|
||||
flex-direction: column !important;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.driver-store-tabs {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.driver-store-agent-row {
|
||||
align-items: flex-start !important;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.driver-store-jdbc-row {
|
||||
align-items: flex-start !important;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.driver-store-agent-meta,
|
||||
.driver-store-agent-actions {
|
||||
margin-left: 2.75rem;
|
||||
}
|
||||
|
||||
.driver-store-jdbc-row > .shrink-0,
|
||||
.driver-store-jdbc-row > button {
|
||||
margin-left: 2.75rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user