feat(inbounds): add multi-select and bulk delete

Mirror the clients page: checkbox selection on the desktop table and on
mobile cards, with a danger Delete button in the toolbar that removes all
selected inbounds in one call.

Backend adds POST /panel/api/inbounds/bulkDel, which loops the existing
DelInbound per id (xray restarts at most once) and returns {deleted,
skipped}. Frontend shows a confirm modal plus a result toast, clears the
selection on success, adds bulk-delete i18n keys across all 13 languages,
and documents the endpoint in the in-panel API docs.
This commit is contained in:
MHSanaei
2026-05-31 00:29:24 +02:00
parent 6bb5a3b56b
commit cf50952921
21 changed files with 315 additions and 4 deletions
+6
View File
@@ -296,6 +296,10 @@
"deleteConfirmContent": "インバウンドと関連付けされたすべてのクライアントを削除します。元に戻せません。",
"resetConfirmTitle": "「{remark}」のトラフィックをリセットしますか?",
"resetConfirmContent": "このインバウンドの送受信カウンタを 0 にリセットします。",
"selectedCount": "{count} 選択中",
"selectAll": "すべて選択",
"bulkDeleteConfirmTitle": "{count} 件のインバウンドを削除しますか?",
"bulkDeleteConfirmContent": "選択したインバウンドと関連付けされたすべてのクライアントを削除します。元に戻せません。",
"cloneConfirmTitle": "インバウンド「{remark}」を複製しますか?",
"cloneConfirmContent": "新しいポートと空のクライアント一覧でコピーを作成します。",
"delAllClients": "すべてのクライアントを削除",
@@ -421,6 +425,8 @@
"inboundsUpdateSuccess": "インバウンドが正常に更新されました",
"inboundUpdateSuccess": "インバウンドが正常に更新されました",
"inboundCreateSuccess": "インバウンドが正常に作成されました",
"bulkDeleted": "{count} 件のインバウンドを削除しました",
"bulkDeletedMixed": "{ok} 件削除、{failed} 件失敗",
"inboundDeleteSuccess": "インバウンドが正常に削除されました",
"inboundClientAddSuccess": "インバウンドクライアントが追加されました",
"inboundClientDeleteSuccess": "インバウンドクライアントが削除されました",