Skip to content

Commit 3cea16e

Browse files
committed
feat(admin): add image url preview in admin
1 parent cf843c0 commit 3cea16e

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import React from 'react';
2+
import { createFieldFactory, FieldDetailComponent, Image, Link } from 'tushan';
3+
4+
export const ImageUrlFieldDetail: FieldDetailComponent = React.memo((props) => {
5+
const url = props.value;
6+
const isImage = ['.png', '.jpg', '.gif', '.jpeg', '.webp'].some((ext) =>
7+
String(url).endsWith(ext)
8+
);
9+
10+
if (isImage) {
11+
return <Image src={url} height={100} />;
12+
}
13+
14+
return (
15+
<Link href={props.value} icon={true} target="_blank">
16+
{props.value}
17+
</Link>
18+
);
19+
});
20+
ImageUrlFieldDetail.displayName = 'ImageUrlFieldDetail';
21+
22+
export const createImageUrlField = createFieldFactory({
23+
detail: ImageUrlFieldDetail,
24+
edit: ImageUrlFieldDetail,
25+
});

server/admin/src/client/fields.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import { createFileSizeField } from './components/field/filesize';
1515
import { createUserField } from './components/field/user';
1616
import { parseUrlStr } from './utils';
17+
import { createImageUrlField } from './components/field/imageUrl';
1718

1819
export const userFields = [
1920
createTextField('id', {
@@ -152,7 +153,7 @@ export const groupFields = [
152153

153154
export const fileFields = [
154155
createTextField('objectName'),
155-
createUrlField('url', {
156+
createImageUrlField('url', {
156157
preRenderTransform: parseUrlStr,
157158
}),
158159
createFileSizeField('size', {

0 commit comments

Comments
 (0)