Skip to content

Commit 7d51d15

Browse files
committed
Improve item details, default restore path
1 parent 9d1ce63 commit 7d51d15

4 files changed

Lines changed: 42 additions & 24 deletions

File tree

packages/cmsui/components/RecycleBin/RecycleBin.test.tsx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,37 @@ describe('RecycleBin components', () => {
169169

170170
expect(screen.getByText('Deleted page')).toBeInTheDocument();
171171
expect(screen.getAllByText('/Plone/deleted-page')[0]).toBeInTheDocument();
172+
expect(
173+
screen.queryByText('cmsui.recyclebin.details.originalId'),
174+
).not.toBeInTheDocument();
175+
expect(
176+
screen.queryByText('cmsui.recyclebin.details.parentPath'),
177+
).not.toBeInTheDocument();
178+
expect(
179+
screen.queryByText('cmsui.recyclebin.details.containedItems'),
180+
).not.toBeInTheDocument();
181+
expect(
182+
screen.getByText('cmsui.recyclebin.children.title (1)'),
183+
).toBeInTheDocument();
172184
expect(screen.getByText('admin')).toBeInTheDocument();
173185
});
174186

187+
it('prefills the restore target path with the original parent path', () => {
188+
const { container } = renderWithRouter(
189+
<RecycleBinItemDetails item={recycleBinItem} />,
190+
);
191+
192+
expect(
193+
container.querySelector<HTMLInputElement>('input[name="target_path"]')
194+
?.value,
195+
).toBe('/Plone');
196+
});
197+
175198
it('requires a target path for child restore inputs', () => {
176199
renderWithRouter(<RecycleBinItemDetails item={recycleBinItem} />);
177200

178-
expect(screen.getByLabelText('Target path for Child page')).toBeRequired();
201+
const targetPath = screen.getByLabelText('Target path for Child page');
202+
expect(targetPath).toBeRequired();
203+
expect(targetPath).toHaveValue('');
179204
});
180205
});

packages/cmsui/components/RecycleBin/RecycleBinChildrenTable.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import type { RecycleBinChildItem } from '@plone/types';
55

66
export function RecycleBinChildrenTable({
77
childrenItems,
8+
itemsTotal,
89
}: {
910
childrenItems: RecycleBinChildItem[];
11+
itemsTotal: number;
1012
}) {
1113
const { t } = useTranslation();
1214

@@ -15,7 +17,7 @@ export function RecycleBinChildrenTable({
1517
return (
1618
<section className="mt-8">
1719
<h2 className="mb-3 text-xl font-semibold">
18-
{t('cmsui.recyclebin.children.title')}
20+
{t('cmsui.recyclebin.children.title')} ({itemsTotal})
1921
</h2>
2022
<div className="overflow-x-auto border border-quanta-smoke">
2123
<table className="w-full min-w-[760px] border-collapse text-left text-sm">

packages/cmsui/components/RecycleBin/RecycleBinItemDetails.tsx

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ export function RecycleBinItemDetails({
3434
md:grid-cols-2
3535
`}
3636
>
37-
<div>
38-
<dt className="text-sm text-quanta-iron">
39-
{t('cmsui.recyclebin.details.originalId')}
40-
</dt>
41-
<dd>{item.id}</dd>
42-
</div>
43-
<div>
44-
<dt className="text-sm text-quanta-iron">
45-
{t('cmsui.recyclebin.details.workflowState')}
46-
</dt>
47-
<dd>{item.review_state}</dd>
48-
</div>
4937
<div>
5038
<dt className="text-sm text-quanta-iron">
5139
{t('cmsui.recyclebin.details.path')}
@@ -54,9 +42,9 @@ export function RecycleBinItemDetails({
5442
</div>
5543
<div>
5644
<dt className="text-sm text-quanta-iron">
57-
{t('cmsui.recyclebin.details.parentPath')}
45+
{t('cmsui.recyclebin.details.workflowState')}
5846
</dt>
59-
<dd>{item.parent_path}</dd>
47+
<dd>{item.review_state}</dd>
6048
</div>
6149
<div>
6250
<dt className="text-sm text-quanta-iron">
@@ -70,15 +58,15 @@ export function RecycleBinItemDetails({
7058
</dt>
7159
<dd>{item.deleted_by}</dd>
7260
</div>
73-
<div>
74-
<dt className="text-sm text-quanta-iron">
75-
{t('cmsui.recyclebin.details.containedItems')}
76-
</dt>
77-
<dd>{item.items_total}</dd>
78-
</div>
7961
</dl>
80-
<RecycleBinRestorePanel actionMessage={actionMessage} />
81-
<RecycleBinChildrenTable childrenItems={item.items} />
62+
<RecycleBinRestorePanel
63+
actionMessage={actionMessage}
64+
defaultTargetPath={item.parent_path}
65+
/>
66+
<RecycleBinChildrenTable
67+
childrenItems={item.items}
68+
itemsTotal={item.items_total}
69+
/>
8270
</section>
8371
);
8472
}

packages/cmsui/components/RecycleBin/RecycleBinRestorePanel.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import { Button } from '@plone/components/quanta';
44

55
export function RecycleBinRestorePanel({
66
actionMessage,
7+
defaultTargetPath,
78
}: {
89
actionMessage?: string;
10+
defaultTargetPath: string;
911
}) {
1012
const { t } = useTranslation();
1113

@@ -24,6 +26,7 @@ export function RecycleBinRestorePanel({
2426
{t('cmsui.recyclebin.restorePanel.targetPath')}
2527
<input
2628
name="target_path"
29+
defaultValue={defaultTargetPath}
2730
className="rounded border border-quanta-silver px-3 py-2"
2831
/>
2932
</label>

0 commit comments

Comments
 (0)