diff --git a/web/assets/css/custom.css b/web/assets/css/custom.css
index b9cff12e..aace5c28 100644
--- a/web/assets/css/custom.css
+++ b/web/assets/css/custom.css
@@ -156,6 +156,12 @@
padding:16px;
}
+.ant-table-expand-icon-th,
+.ant-table-row-expand-icon-cell {
+ width: 30px;
+ min-width: 30px;
+}
+
.ant-menu-dark,
.ant-menu-dark .ant-menu-sub,
.ant-layout-header,
diff --git a/web/html/xui/form/client.html b/web/html/xui/form/client.html
index 3d92c54e..b03d999f 100644
--- a/web/html/xui/form/client.html
+++ b/web/html/xui/form/client.html
@@ -15,6 +15,9 @@
+
+
+
diff --git a/web/html/xui/inbound_client_table.html b/web/html/xui/inbound_client_table.html
index 4d7bd932..e2abeb1b 100644
--- a/web/html/xui/inbound_client_table.html
+++ b/web/html/xui/inbound_client_table.html
@@ -21,6 +21,9 @@
+
+
+
[[ client.email ]]
{{ i18n "disabled" }}
diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index 49152e16..0f4c34bb 100644
--- a/web/html/xui/inbounds.html
+++ b/web/html/xui/inbounds.html
@@ -214,7 +214,8 @@
}];
const innerColumns = [
- { title: '{{ i18n "pages.inbounds.operate" }}', width: 80, scopedSlots: { customRender: 'actions' } },
+ { title: '{{ i18n "pages.inbounds.operate" }}', width: 70, scopedSlots: { customRender: 'actions' } },
+ { title: '{{ i18n "pages.inbounds.enable" }}', width: 30, scopedSlots: { customRender: 'enable' } },
{ title: '{{ i18n "pages.inbounds.client" }}', width: 80, scopedSlots: { customRender: 'client' } },
{ title: '{{ i18n "pages.inbounds.traffic" }}↑|↓', width: 70, scopedSlots: { customRender: 'traffic' } },
{ title: '{{ i18n "pages.inbounds.expireDate" }}', width: 70, scopedSlots: { customRender: 'expiryTime' } },
@@ -222,7 +223,8 @@
];
const innerTrojanColumns = [
- { title: '{{ i18n "pages.inbounds.operate" }}', width: 80, scopedSlots: { customRender: 'actions' } },
+ { title: '{{ i18n "pages.inbounds.operate" }}', width: 70, scopedSlots: { customRender: 'actions' } },
+ { title: '{{ i18n "pages.inbounds.enable" }}', width: 30, scopedSlots: { customRender: 'enable' } },
{ title: '{{ i18n "pages.inbounds.client" }}', width: 80, scopedSlots: { customRender: 'client' } },
{ title: '{{ i18n "pages.inbounds.traffic" }}↑|↓', width: 70, scopedSlots: { customRender: 'traffic' } },
{ title: '{{ i18n "pages.inbounds.expireDate" }}', width: 70, scopedSlots: { customRender: 'expiryTime' } },
@@ -511,6 +513,16 @@
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
this.submit(`/xui/inbound/update/${dbInboundId}`, dbInbound);
},
+ async switchEnableClient(dbInboundId, client) {
+ this.loading()
+ dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
+ inbound = dbInbound.toInbound();
+ clients = this.getClients(dbInbound.protocol, inbound.settings);
+ index = this.findIndexOfClient(clients, client);
+ clients[index].enable = ! clients[index].enable
+ await this.updateClient(inbound, dbInbound, index);
+ this.loading(false);
+ },
async submit(url, data) {
const msg = await HttpUtil.postWithModal(url, data);
if (msg.success) {