mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-07-14 16:46:07 +00:00
refactor(frontend): migrate off deprecated Ant Design 6 props
The repo's type-aware deprecation sweep (eslint.deprecated.config.js) reported fourteen findings; it now reports zero. Alert message becomes title and closable+onClose becomes closable.onClose; Select optionFilterProp moves into showSearch.optionFilterProp and suffixIcon becomes suffix; Drawer width becomes size; Progress trailColor becomes railColor. Behavior is unchanged apart from a few single-mode selects gaining type-to-filter, which the old prop already implied.
This commit is contained in:
@@ -96,7 +96,7 @@ export default function BulkAttachInboundsModal({
|
||||
onChange={setTargetIds}
|
||||
options={targetOptions}
|
||||
placeholder={t('pages.clients.attachToInboundsTargets')}
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
autoFocus
|
||||
/>
|
||||
</>
|
||||
|
||||
@@ -96,7 +96,7 @@ export default function BulkDetachInboundsModal({
|
||||
onChange={setTargetIds}
|
||||
options={targetOptions}
|
||||
placeholder={t('pages.clients.detachFromInboundsTargets')}
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
autoFocus
|
||||
/>
|
||||
</>
|
||||
|
||||
@@ -1212,7 +1212,7 @@ export default function ClientsPage() {
|
||||
value={sortValueFor(sortColumn, sortOrder)}
|
||||
aria-label={t('sort')}
|
||||
size={isMobile ? 'small' : 'middle'}
|
||||
suffixIcon={<SortAscendingOutlined />}
|
||||
suffix={<SortAscendingOutlined />}
|
||||
style={{ minWidth: isMobile ? 130 : 200 }}
|
||||
onChange={(value) => {
|
||||
const opt = SORT_OPTIONS.find((o) => o.value === value);
|
||||
|
||||
@@ -89,7 +89,7 @@ export default function FilterDrawer({
|
||||
title={t('pages.clients.filterTitle')}
|
||||
open={open}
|
||||
onClose={() => onOpenChange(false)}
|
||||
width={420}
|
||||
size={420}
|
||||
destroyOnHidden
|
||||
footer={
|
||||
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
|
||||
@@ -139,8 +139,7 @@ export default function FilterDrawer({
|
||||
placeholder={t('inbounds')}
|
||||
maxTagCount="responsive"
|
||||
allowClear
|
||||
showSearch
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
listHeight={220}
|
||||
/>
|
||||
</Form.Item>
|
||||
@@ -155,8 +154,7 @@ export default function FilterDrawer({
|
||||
placeholder={t('pages.clients.filters.nodes')}
|
||||
maxTagCount="responsive"
|
||||
allowClear
|
||||
showSearch
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
listHeight={220}
|
||||
/>
|
||||
</Form.Item>
|
||||
@@ -171,8 +169,7 @@ export default function FilterDrawer({
|
||||
placeholder={t('pages.clients.groupPlaceholder')}
|
||||
maxTagCount="responsive"
|
||||
allowClear
|
||||
showSearch
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
listHeight={220}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
@@ -191,8 +191,7 @@ export default function HostFormModal({ open, mode, host, inboundOptions, existi
|
||||
<Select
|
||||
mode="multiple"
|
||||
options={inboundSelectOptions}
|
||||
showSearch
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
placeholder={t('pages.hosts.selectInbound')}
|
||||
/>
|
||||
</FormField>
|
||||
@@ -211,7 +210,7 @@ export default function HostFormModal({ open, mode, host, inboundOptions, existi
|
||||
<Select mode="tags" allowClear tokenSeparators={[',']} />
|
||||
</FormField>
|
||||
<FormField name="nodeGuids" label={t('pages.hosts.fields.nodeGuids')} tooltip={t('pages.hosts.hints.nodeGuids')}>
|
||||
<Select mode="multiple" allowClear options={nodeSelectOptions} optionFilterProp="label" />
|
||||
<Select mode="multiple" allowClear options={nodeSelectOptions} showSearch={{ optionFilterProp: 'label' }} />
|
||||
</FormField>
|
||||
<FormField name="enable" label={t('pages.hosts.fields.enable')} valueProp="checked">
|
||||
<Switch />
|
||||
|
||||
@@ -203,7 +203,7 @@ export default function AttachClientsModal({
|
||||
onChange={setTargetIds}
|
||||
options={targetOptions}
|
||||
placeholder={t('pages.inbounds.attachClientsTargets')}
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
/>
|
||||
)}
|
||||
</Modal>
|
||||
|
||||
@@ -203,7 +203,7 @@ export default function AttachExistingClientsModal({
|
||||
options={groupOptions}
|
||||
placeholder={t('pages.clients.group')}
|
||||
style={{ minWidth: 160 }}
|
||||
optionFilterProp="label"
|
||||
showSearch={{ optionFilterProp: 'label' }}
|
||||
/>
|
||||
)}
|
||||
</Space>
|
||||
|
||||
@@ -113,8 +113,7 @@ export default function EmailTab({ allSetting, updateSetting }: EmailTabProps) {
|
||||
: <span><b>{stageLabel[testResult.stage || ''] || testResult.stage}:</b> {t('pages.settings.' + testResult.msg)}</span>
|
||||
}
|
||||
showIcon
|
||||
closable
|
||||
onClose={() => setTestResult(null)}
|
||||
closable={{ onClose: () => setTestResult(null) }}
|
||||
/>
|
||||
)}
|
||||
</Space>
|
||||
|
||||
@@ -233,8 +233,7 @@ export default function TelegramTab({ allSetting, updateSetting }: TelegramTabPr
|
||||
type={testResult.success ? 'success' : 'error'}
|
||||
title={testResult.msg}
|
||||
showIcon
|
||||
closable
|
||||
onClose={() => setTestResult(null)}
|
||||
closable={{ onClose: () => setTestResult(null) }}
|
||||
/>
|
||||
)}
|
||||
</Space>
|
||||
|
||||
@@ -286,7 +286,7 @@ export default function SubPage() {
|
||||
<Col xs={24} sm={22} md={18} lg={14} xl={12}>
|
||||
<Card hoverable className="subscription-card" title={cardTitle} extra={cardExtra}>
|
||||
{announce && (
|
||||
<Alert type="info" showIcon message={announce} style={{ marginBottom: 16 }} />
|
||||
<Alert type="info" showIcon title={announce} style={{ marginBottom: 16 }} />
|
||||
)}
|
||||
<Descriptions
|
||||
bordered
|
||||
|
||||
@@ -78,7 +78,7 @@ export default function SubUsageSummary({
|
||||
percent={pct}
|
||||
showInfo={false}
|
||||
strokeColor={{ '0%': stroke.from, '100%': stroke.to }}
|
||||
trailColor="var(--ant-color-fill-secondary)"
|
||||
railColor="var(--ant-color-fill-secondary)"
|
||||
strokeWidth={10}
|
||||
className="usage-summary-bar"
|
||||
/>
|
||||
|
||||
@@ -257,7 +257,7 @@ export default function BalancerFormModal({
|
||||
<Alert
|
||||
type="info"
|
||||
showIcon
|
||||
message={t('pages.xray.balancer.balancerFallbackInfo')}
|
||||
title={t('pages.xray.balancer.balancerFallbackInfo')}
|
||||
style={{ marginBottom: 16 }}
|
||||
/>
|
||||
)}
|
||||
@@ -265,7 +265,7 @@ export default function BalancerFormModal({
|
||||
<Alert
|
||||
type="error"
|
||||
showIcon
|
||||
message={t('pages.xray.balancer.balancerFallbackCycle')}
|
||||
title={t('pages.xray.balancer.balancerFallbackCycle')}
|
||||
style={{ marginBottom: 16 }}
|
||||
/>
|
||||
)}
|
||||
|
||||
@@ -86,7 +86,7 @@ export default function DnsPresetsModal({ open, onClose, onInstall }: DnsPresets
|
||||
type="warning"
|
||||
showIcon
|
||||
className="preset-warning"
|
||||
message={t('pages.xray.dns.dnsLeakWarning')}
|
||||
title={t('pages.xray.dns.dnsLeakWarning')}
|
||||
/>
|
||||
<div className="preset-list">
|
||||
{PRESETS.map((preset) => (
|
||||
|
||||
@@ -240,7 +240,7 @@ export default function DnsTab({ templateSettings, setTemplateSettings }: DnsTab
|
||||
<Alert
|
||||
type="warning"
|
||||
showIcon
|
||||
message={t('pages.xray.dns.dnsLeakWarning')}
|
||||
title={t('pages.xray.dns.dnsLeakWarning')}
|
||||
style={{ marginBottom: 12 }}
|
||||
/>
|
||||
<SettingListItem
|
||||
|
||||
Reference in New Issue
Block a user