fix(web): remove duplicate monitoring row spacing and border
This commit is contained in:
@@ -2,25 +2,11 @@
|
||||
// 展示作者头像与粉丝/关注/作品/最近发布等账号画像属性(migration 038 字段 + work 聚合)。
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { history } from '@umijs/max';
|
||||
import { Alert, App, Avatar, Button, Card, Descriptions, Empty, Flex, Form, Listy, Modal, Popconfirm, Select, Space, Spin, Tag, theme, Typography } from 'antd';
|
||||
import { Alert, App, Avatar, Button, Card, Descriptions, Empty, Flex, Form, Listy, Modal, Popconfirm, Select, Space, Spin, Tag, Typography } from 'antd';
|
||||
import { CloudUploadOutlined, ReloadOutlined } from '@ant-design/icons';
|
||||
import { getList, remove, creatorAction, creatorUpdate } from '@/services/api';
|
||||
import { conflictMessage, dateTime, platformLabel } from '@/utils/helpers';
|
||||
|
||||
const useRowHoverStyle = () => {
|
||||
const { token } = theme.useToken();
|
||||
return {
|
||||
padding: 16,
|
||||
borderBottom: `1px solid ${token.colorSplit}`,
|
||||
borderRadius: token.borderRadiusLG,
|
||||
cursor: 'pointer',
|
||||
transition: 'background-color 0.2s',
|
||||
['@media (hover: hover)']: {
|
||||
'&:hover': { backgroundColor: token.colorFillQuaternary },
|
||||
},
|
||||
} as const;
|
||||
};
|
||||
|
||||
interface CompetitorRow {
|
||||
id: string;
|
||||
platform: string;
|
||||
@@ -143,8 +129,6 @@ export default function MonitoringAccountList() {
|
||||
}
|
||||
}
|
||||
|
||||
const rowHoverStyle = useRowHoverStyle();
|
||||
|
||||
const syncMeta = syncStatusMeta[tagTarget?.sync_status ?? ''] || { label: tagTarget?.sync_status || '—' };
|
||||
|
||||
return (
|
||||
@@ -167,7 +151,7 @@ export default function MonitoringAccountList() {
|
||||
itemRender={(row) => {
|
||||
const meta = syncStatusMeta[row.sync_status ?? ''] || { label: row.sync_status || '—' };
|
||||
return (
|
||||
<div style={rowHoverStyle} onClick={() => history.push(`/accounts/monitoring/${row.id}`)}>
|
||||
<div style={{ cursor: 'pointer' }} onClick={() => history.push(`/accounts/monitoring/${row.id}`)}>
|
||||
<Flex justify="space-between" align="flex-start" gap={16}>
|
||||
<Flex align="flex-start" gap={12}>
|
||||
<Avatar size={44} src={row.avatar_url || undefined}>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const { readFileSync } = require('node:fs');
|
||||
const { test } = require('node:test');
|
||||
const ts = require('typescript');
|
||||
|
||||
const source = ts.createSourceFile(
|
||||
'MonitoringAccountList.tsx',
|
||||
readFileSync(`${__dirname}/../src/components/accounts/MonitoringAccountList.tsx`, 'utf8'),
|
||||
ts.ScriptTarget.Latest,
|
||||
true,
|
||||
ts.ScriptKind.TSX,
|
||||
);
|
||||
|
||||
test('监控账号行由 Listy 独占内边距和分隔线,保留详情入口', () => {
|
||||
let itemRender;
|
||||
function visit(node) {
|
||||
if (ts.isJsxAttribute(node) && node.name.getText(source) === 'itemRender') itemRender = node;
|
||||
ts.forEachChild(node, visit);
|
||||
}
|
||||
visit(source);
|
||||
assert.ok(itemRender, '应使用 Listy itemRender');
|
||||
const row = itemRender.getText(source);
|
||||
assert.match(row, /history\.push\(`\/accounts\/monitoring\/\$\{row\.id\}`\)/);
|
||||
assert.match(row, /<div style=\{\{ cursor: 'pointer' \}\}/);
|
||||
assert.doesNotMatch(row, /padding|borderBottom|rowHoverStyle/);
|
||||
});
|
||||
Reference in New Issue
Block a user