fix(webui): 手机端评审修正——插件市场分类下划线与焦点框不再被裁、通知抽屉去嵌套滚动并补无障碍名称、WebKit 隐藏 summary 原生箭头、仅 Windows 路径按反斜杠分组

This commit is contained in:
Estrella Pan
2026-10-22 06:10:42 +02:00
parent ce756d87cc
commit f0bbba8032
5 changed files with 27 additions and 2 deletions

View File

@@ -181,6 +181,7 @@ function onClearClick() {
<ab-bottom-sheet
v-if="isMobile"
class="notification-sheet"
:aria-label="$t('notifications.title')"
:show="panelOpen"
:show-close="false"
@update:show="onShowChange"
@@ -245,10 +246,18 @@ function onClearClick() {
pointer-events: none;
}
.notification-sheet .ab-bottom-sheet__content {
// 根元素同时带 .notification-sheet 与 .ab-bottom-sheet:比 ab-bottom-sheet 的
// scoped 规则多一个类,不依赖样式表顺序。
.notification-sheet.ab-bottom-sheet .ab-bottom-sheet__content {
padding: 0;
}
// 抽屉内容区已可滚动,去掉列表自身的高度上限,避免嵌套滚动
.notification-sheet .notification-list {
max-height: none;
overflow-y: visible;
}
.notification-panel {
width: min(340px, calc(100vw - 24px));
border-radius: var(--radius-md);

View File

@@ -381,6 +381,7 @@ onActivated(async () => {
display: flex;
align-items: center;
gap: 4px;
list-style: none;
min-height: var(--touch-target);
cursor: pointer;
font-size: 13px;
@@ -389,6 +390,10 @@ onActivated(async () => {
flex-shrink: 0;
transition: transform var(--transition-normal);
}
&::-webkit-details-marker {
display: none;
}
}
.plugin__options[open] > summary {

View File

@@ -507,6 +507,14 @@ function permissionLabel(id: string) {
max-width: 100%;
overflow-x: auto;
scrollbar-width: none;
// overflow-x 让 overflow-y 也成了 auto,裁剪到 padding 盒:盒外的边框盖不到
// 选中下划线(margin-bottom:-1px),焦点框也被裁。上下留 4px 并用背景线画边框,
// 负 margin 抵消留白,布局与边线位置不变。
padding-block: 4px;
margin-block: -4px -3px;
border-bottom: none;
background: linear-gradient(var(--color-border), var(--color-border))
left bottom 3px / 100% 1px no-repeat;
&::-webkit-scrollbar {
display: none;

View File

@@ -153,6 +153,7 @@ describe('downloader store', () => {
it.each([
['/downloads/Bangumi/Frieren/Season 1/', 'Frieren / Season 1'],
['D:\\Downloads\\Bangumi\\Frieren\\Season 1\\', 'Frieren / Season 1'],
['/downloads/Fate\\Zero/Season 1/', 'Fate\\Zero / Season 1'],
])(
'should label the group with the last folders when save_path is %s',
(savePath, expected) => {

View File

@@ -44,7 +44,9 @@ export const useDownloaderStore = defineStore('downloader', () => {
const seasonOnlyRegex = /^(Season\s*\d+|S\d+|第\d+季)$/i;
for (const [savePath, items] of map) {
const parts = savePath.split(/[\\/]/).filter(Boolean);
// 仅 Windows 路径(盘符或 UNC)按反斜杠分割;POSIX 文件夹名可含反斜杠
const isWindows = /^([a-z]:|\\\\)/i.test(savePath);
const parts = savePath.split(isWindows ? /[\\/]/ : '/').filter(Boolean);
let name = parts[parts.length - 1] || savePath;
// If the last part is just a season folder, include the parent folder too
if (parts.length >= 2 && seasonOnlyRegex.test(name)) {