feat: unify mobile filter sheets

This commit is contained in:
lingniu
2026-07-19 04:44:21 +08:00
parent d3eb77e2c7
commit 9a87d14d6d
11 changed files with 417 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
import { useQuery } from '@tanstack/react-query';
import { IconArrowRight, IconBox, IconChevronRight, IconRefresh, IconSearch } from '@douyinfe/semi-icons';
import { Button, Card, Empty, Input, SideSheet, Table, Tag } from '@douyinfe/semi-ui';
import { Button, Card, Empty, Input, Table, Tag } from '@douyinfe/semi-ui';
import { type FormEvent, lazy, Suspense, useDeferredValue, useEffect, useMemo, useRef, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { api } from '../../api/client';
@@ -12,6 +12,7 @@ import { useMobileLayout } from '../hooks/useMobileLayout';
import { useSideSheetA11y } from '../hooks/useSideSheetA11y';
import { QUERY_MEMORY, queryScopeKey, retainPreviousPageWithinScope } from '../queryPolicy';
import { MobileFilterToggle } from '../shared/MobileFilterToggle';
import { MobileFilterSheet, MobileFilterSheetSection } from '../shared/MobileFilterSheet';
import { ProtocolTag } from '../shared/ProtocolTag';
import { TablePagination } from '../shared/TablePagination';
import { VehicleCandidateList } from '../shared/VehicleCandidateList';
@@ -174,19 +175,19 @@ export default function VehicleSearchWorkspace() {
collapsedLabel="修改"
onToggle={mobileFiltersOpen ? closeMobileFilters : openMobileFilters}
/>
<SideSheet
<MobileFilterSheet
className="v2-vehicle-mobile-filter-sidesheet"
visible={mobileFiltersOpen}
placement="bottom"
height="min(68dvh, 560px)"
aria-label="车辆搜索"
title={<div className="v2-vehicle-mobile-filter-title"><strong></strong><span> VIN </span></div>}
ariaLabel="车辆搜索"
title="查找车辆"
description="车牌优先,支持 VIN 与终端手机号"
onCancel={closeMobileFilters}
footer={<div className="v2-vehicle-mobile-filter-footer"><Button theme="light" onClick={resetMobileFilters}></Button><Button theme="solid" onClick={applyMobileFilters}></Button></div>}
secondaryAction={{ label: '重置范围', onClick: resetMobileFilters }}
primaryAction={{ label: '应用搜索', onClick: applyMobileFilters }}
>
<form className="v2-vehicle-mobile-filter-form" onSubmit={submitMobileFilters}>
<section aria-label="车辆搜索条件">
<header><strong></strong><span></span></header>
<MobileFilterSheetSection ariaLabel="车辆搜索条件" title="车辆身份" description="输入关键词可直接打开候选车辆,或应用到下方目录。">
<label>
<span> / VIN / </span>
<Input
@@ -217,9 +218,9 @@ export default function VehicleSearchWorkspace() {
actionLabel="打开"
onSelect={(vehicle) => openVehicle(vehicle.vin)}
/> : <div className="v2-vehicle-mobile-filter-hint"><IconSearch /><span><strong></strong><small></small></span></div>}
</section>
</MobileFilterSheetSection>
</form>
</SideSheet>
</MobileFilterSheet>
</div> : <WorkspaceFilterPanel
className="v2-vehicle-query-panel"
title="车辆定位"