3x-ui/frontend/src/pages/inbounds
MHSanaei 6d732d8d32
feat(inbounds): bulk-select clients + UX polish
- ClientBulkModal: add `comment` and VLESS `reverseTag` fields so the
  bulk-add modal can set them on every generated client (matching the
  single-client form)
- ClientRowTable: add multi-select checkboxes (desktop + mobile) with a
  tri-state select-all and a sticky bulk-action bar; emits a new
  `delete-clients` event so the parent can wipe the picked clients in
  one go. Hidden entirely when the inbound has only one client (the
  last one must stay)
- ClientRowTable: new "Remained" column shows live remaining quota
  per client (∞ for unlimited, red when depleted)
- InboundInfoModal: Remained cell now shows the ∞ tag when the client
  has no totalGB limit, matching how Total Usage already renders it
- InboundsPage: add Online tag (+ per-bucket popovers listing client
  emails) to the summary card so it mirrors the per-inbound row, and
  wire an `onDeleteClients` handler that loops the existing single-
  delete endpoint then refreshes once
- InboundList: forward the `delete-clients` event; hide empty remarks
  on both the desktop table (custom #bodyCell) and the mobile card
- useInbounds: aggregate an `online` email list across all inbounds
  so the summary popover has data to render
2026-05-11 03:50:28 +02:00
..
ClientBulkModal.vue feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00
ClientFormModal.vue feat(xray/dns): align DNS settings with Xray docs + UI polish 2026-05-10 17:03:11 +02:00
ClientRowTable.vue feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00
InboundFormModal.vue feat(xray/dns): align DNS settings with Xray docs + UI polish 2026-05-10 17:03:11 +02:00
InboundInfoModal.vue feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00
InboundList.vue feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00
InboundsPage.vue feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00
QrCodeModal.vue refactor(panel): rename injected globals + collapse QR modal entries 2026-05-10 23:40:39 +02:00
QrPanel.vue feat(frontend): swap QRious for ant-design-vue's a-qrcode 2026-05-11 02:07:47 +02:00
useInbounds.js feat(inbounds): bulk-select clients + UX polish 2026-05-11 03:50:28 +02:00