fix(frontend): simplify speed limit selector UX

This commit is contained in:
sagitchu
2026-02-27 19:53:19 +08:00
parent a9eac6d01f
commit 975948dcf6
+28 -34
View File
@@ -1170,7 +1170,7 @@ export default function UserPage() {
classNames={{ classNames={{
trigger: "min-h-10 h-10", trigger: "min-h-10 h-10",
}} }}
placeholder="请选择限速规则" placeholder="不限速"
selectedKeys={ selectedKeys={
batchTunnelSelections.get(tunnel.id) !== batchTunnelSelections.get(tunnel.id) !==
null && null &&
@@ -1181,32 +1181,29 @@ export default function UserPage() {
.get(tunnel.id)! .get(tunnel.id)!
.toString(), .toString(),
] ]
: ["null"] : []
} }
size="sm" size="sm"
onClick={(e) => e.stopPropagation()} onClick={(e) => e.stopPropagation()}
onSelectionChange={(keys) => { onSelectionChange={(keys) => {
const value = Array.from(keys)[0] as string; const selectedKey = Array.from(keys)[0] as
| string
| undefined;
updateTunnelSpeedLimit( updateTunnelSpeedLimit(
tunnel.id, tunnel.id,
value === "null" ? null : Number(value), selectedKey ? Number(selectedKey) : null,
); );
}} }}
> >
{[ {tunnelSpeedLimits.map((sl) => (
<SelectItem key="null" textValue="不限速"> <SelectItem
不限速 key={sl.id.toString()}
</SelectItem>, textValue={sl.name}
...tunnelSpeedLimits.map((sl) => ( >
<SelectItem {sl.name}
key={sl.id.toString()} </SelectItem>
textValue={sl.name} ))}
>
{sl.name}
</SelectItem>
)),
]}
</Select> </Select>
</div> </div>
)} )}
@@ -1429,38 +1426,35 @@ export default function UserPage() {
<Select <Select
label="限速规则" label="限速规则"
placeholder="请选择限速规则" placeholder="不限速"
selectedKeys={ selectedKeys={
editTunnelSelectedSpeedId !== null editTunnelSelectedSpeedId !== null
? [editTunnelSelectedSpeedId.toString()] ? [editTunnelSelectedSpeedId.toString()]
: ["null"] : []
} }
onSelectionChange={(keys) => { onSelectionChange={(keys) => {
const value = Array.from(keys)[0] as string; const selectedKey = Array.from(keys)[0] as
| string
| undefined;
setEditTunnelForm((prev) => setEditTunnelForm((prev) =>
prev prev
? { ? {
...prev, ...prev,
speedId: value === "null" ? null : Number(value), speedId: selectedKey ? Number(selectedKey) : null,
} }
: null, : null,
); );
}} }}
> >
{[ {editAvailableSpeedLimits.map((speedLimit) => (
<SelectItem key="null" textValue="不限速"> <SelectItem
不限速 key={speedLimit.id.toString()}
</SelectItem>, textValue={speedLimit.name}
...editAvailableSpeedLimits.map((speedLimit) => ( >
<SelectItem {speedLimit.name}
key={speedLimit.id.toString()} </SelectItem>
textValue={speedLimit.name} ))}
>
{speedLimit.name}
</SelectItem>
)),
]}
</Select> </Select>
<Select <Select