Skip to content

Commit 306bd6e

Browse files
authored
use autosize for file field url box (#832)
1 parent 60492db commit 306bd6e

4 files changed

Lines changed: 85 additions & 0 deletions

File tree

packages/root-cms/ui/components/DocEditor/fields/FileField.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ FileField.Preview = () => {
455455
size="sm"
456456
variant="outline"
457457
className="FileField__Preview__InfoButton__Icon"
458+
aria-label="Toggle file info"
458459
>
459460
<IconInfoCircle size={16} />
460461
</ActionIcon>
@@ -634,6 +635,8 @@ FileField.Preview = () => {
634635
value={ctx.value?.src}
635636
size="xs"
636637
radius={0}
638+
autosize
639+
maxRows={10}
637640
/>
638641
</td>
639642
</tr>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import {render} from '@testing-library/preact';
2+
import {describe, it, expect, vi} from 'vitest';
3+
import {page} from 'vitest/browser';
4+
import * as schema from '../../../../core/schema.js';
5+
import {FileField} from './FileField.js';
6+
7+
window.__ROOT_CTX = {
8+
experiments: {},
9+
rootConfig: {
10+
projectId: 'test-project',
11+
},
12+
} as any;
13+
14+
const SVG_DATA_URI =
15+
'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iOTAiIHZpZXdCb3g9IjAgMCAxNjAgOTAiPjxyZWN0IHdpZHRoPSIxNjAiIGhlaWdodD0iOTAiIGZpbGw9IiNjY2NjY2MiLz48dGV4dCB4PSI1MCUiIHk9IjUwJSIgZG9taW5hbnQtYmFzZWxpbmU9Im1pZGRsZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMjAiIGZpbGw9IiNGRkZGRkYiPjE2eDk8L3RleHQ+PC9zdmc+';
16+
17+
vi.mock('../../../hooks/useDraftDoc.js', () => ({
18+
useDraftDocValue: () => {
19+
return [
20+
{
21+
src: SVG_DATA_URI,
22+
filename: 'test.svg',
23+
width: 1600,
24+
height: 900,
25+
uploadedAt: 1647485978000,
26+
uploadedBy: 'test@example.com',
27+
},
28+
vi.fn(),
29+
];
30+
},
31+
useFileField: () => ({
32+
field: {},
33+
value: {
34+
src: SVG_DATA_URI,
35+
filename: 'test.svg',
36+
width: 1600,
37+
height: 900,
38+
uploadedAt: 1647485978000,
39+
uploadedBy: 'test@example.com',
40+
},
41+
setValue: vi.fn(),
42+
loadingState: null,
43+
variant: 'image',
44+
acceptedFileTypes: [],
45+
focusDropZone: vi.fn(),
46+
handleFile: vi.fn(),
47+
removeFile: vi.fn(),
48+
requestFileUpload: vi.fn(),
49+
requestFileDownload: vi.fn(),
50+
requestGenerateAltText: vi.fn(),
51+
requestPlaceholderModalOpen: vi.fn(),
52+
showAltText: true,
53+
altText: '',
54+
setAltText: vi.fn(),
55+
}),
56+
}));
57+
58+
describe('FileField', () => {
59+
it('renders with autosize textarea', async () => {
60+
page.viewport(640, 480);
61+
const field: schema.FileField = {
62+
type: 'file',
63+
label: 'Hero Image',
64+
};
65+
66+
render(
67+
<div style={{padding: '20px', width: '600px'}} data-testid="wrapper">
68+
<FileField field={field} deepKey="heroImage" variant="image" />
69+
</div>
70+
);
71+
72+
const element = page.getByTestId('wrapper');
73+
await expect.element(element).toBeVisible();
74+
await expect.element(element).toMatchScreenshot('file-field-initial.png');
75+
76+
// Click the info button to show the details table where the URL textarea is
77+
const infoButton = page.getByRole('button', {name: 'Toggle file info'});
78+
await infoButton.click();
79+
80+
await expect.element(element).toMatchScreenshot('file-field-autosize.png');
81+
});
82+
});
44.8 KB
Loading
6.38 KB
Loading

0 commit comments

Comments
 (0)