diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts index 6f1a56da..3b723404 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts @@ -29,10 +29,12 @@ test.describe('Doc Trashbin', () => { const row1 = await getGridRow(page, title1); await clickInGridMenu(page, row1, 'Delete'); await page.getByRole('button', { name: 'Delete document' }).click(); + await expect(row1.getByText(title1)).toBeHidden(); const row2 = await getGridRow(page, title2); await clickInGridMenu(page, row2, 'Delete'); await page.getByRole('button', { name: 'Delete document' }).click(); + await expect(row2.getByText(title2)).toBeHidden(); await page.getByRole('link', { name: 'Trashbin' }).click(); @@ -51,5 +53,25 @@ test.describe('Doc Trashbin', () => { name: 'Open the sharing settings for the document', }), ).toBeDisabled(); + + await clickInGridMenu(page, row2, 'Restore'); + + await expect(row2.getByText(title2)).toBeHidden(); + await page.getByRole('link', { name: 'All docs' }).click(); + const row2Restored = await getGridRow(page, title2); + await expect(row2Restored.getByText(title2)).toBeVisible(); + await row2Restored.getByRole('link', { name: /Open document/ }).click(); + + await verifyDocName(page, title2); + await page.getByRole('button', { name: 'Back to homepage' }).click(); + await expect(row2.getByText(title2)).toBeVisible(); + await expect( + row2.getByRole('button', { + name: 'Open the sharing settings for the document', + }), + ).toBeEnabled(); + + await page.getByRole('link', { name: 'Trashbin' }).click(); + await expect(row2.getByText(title2)).toBeHidden(); }); }); diff --git a/src/frontend/apps/impress/src/components/TextErrors.tsx b/src/frontend/apps/impress/src/components/TextErrors.tsx index baf22a2d..9bfa6453 100644 --- a/src/frontend/apps/impress/src/components/TextErrors.tsx +++ b/src/frontend/apps/impress/src/components/TextErrors.tsx @@ -25,8 +25,6 @@ export const TextErrors = ({ canClose = false, ...textProps }: TextErrorsProps) => { - const { t } = useTranslation(); - return ( - - {causes && - causes.map((cause, i) => ( - - {cause} - - ))} + + + ); +}; - {!causes && ( +export const TextOnlyErrors = ({ + causes, + defaultMessage, + ...textProps +}: TextErrorsProps) => { + const { t } = useTranslation(); + + return ( + + {causes && + causes.map((cause, i) => ( - {defaultMessage || t('Something bad happens, please retry.')} + {cause} - )} - - + ))} + + {!causes && ( + + {defaultMessage || t('Something bad happens, please retry.')} + + )} + ); }; diff --git a/src/frontend/apps/impress/src/components/dropdown-menu/DropdownMenu.tsx b/src/frontend/apps/impress/src/components/dropdown-menu/DropdownMenu.tsx index 4df80cc7..f0af724d 100644 --- a/src/frontend/apps/impress/src/components/dropdown-menu/DropdownMenu.tsx +++ b/src/frontend/apps/impress/src/components/dropdown-menu/DropdownMenu.tsx @@ -2,6 +2,7 @@ import { HorizontalSeparator } from '@gouvfr-lasuite/ui-kit'; import { Fragment, PropsWithChildren, + ReactNode, useCallback, useEffect, useRef, @@ -15,7 +16,7 @@ import { useCunninghamTheme } from '@/cunningham'; import { useDropdownKeyboardNav } from './hook/useDropdownKeyboardNav'; export type DropdownMenuOption = { - icon?: string; + icon?: ReactNode; label: string; testId?: string; value?: string; @@ -220,7 +221,7 @@ export const DropdownMenu = ({ $align="center" $gap={spacingsTokens['base']} > - {option.icon && ( + {option.icon && typeof option.icon === 'string' && (