From fa9d66c5e55b166a924922857484589ff80a5987 Mon Sep 17 00:00:00 2001 From: Jillian Date: Mon, 16 Jun 2025 18:09:55 -0400 Subject: [PATCH] fix: show "This is empty" (#2157) Shows "This is empty" text when container child list is empty for units, subsections, and sections. --- src/library-authoring/data/api.mocks.ts | 1 + .../section-subsections/LibraryContainerChildren.tsx | 6 ++++-- src/library-authoring/units/LibraryUnitBlocks.tsx | 5 +++++ src/library-authoring/units/LibraryUnitPage.test.tsx | 6 ++++++ src/library-authoring/units/messages.ts | 5 +++++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/library-authoring/data/api.mocks.ts b/src/library-authoring/data/api.mocks.ts index d4f678d79..fa56547d1 100644 --- a/src/library-authoring/data/api.mocks.ts +++ b/src/library-authoring/data/api.mocks.ts @@ -497,6 +497,7 @@ export async function mockGetContainerMetadata(containerId: string): Promise([]); const { showOnlyPublished, readOnly: libReadOnly } = useLibraryContext(); - const { navigateTo, insideSection } = useLibraryRoutes(); + const { navigateTo } = useLibraryRoutes(); const { sidebarItemInfo } = useSidebarContext(); const [activeDraggingId, setActiveDraggingId] = useState(null); const orderMutator = useUpdateContainerChildren(containerKey); const { showToast } = useContext(ToastContext); + const containerType = getBlockType(containerKey); const handleReorder = useCallback(() => async (newOrder?: LibraryContainerMetadataWithUniqueId[]) => { if (!newOrder) { return; @@ -172,7 +174,7 @@ export const LibraryContainerChildren = ({ containerKey, readOnly }: LibraryCont
{children?.length === 0 && (

- {insideSection ? ( + {containerType === ContainerType.Section ? ( ) : ( diff --git a/src/library-authoring/units/LibraryUnitBlocks.tsx b/src/library-authoring/units/LibraryUnitBlocks.tsx index 248b9c056..0dd1072b7 100644 --- a/src/library-authoring/units/LibraryUnitBlocks.tsx +++ b/src/library-authoring/units/LibraryUnitBlocks.tsx @@ -273,6 +273,11 @@ export const LibraryUnitBlocks = ({ unitId, readOnly: componentReadOnly }: Libra return (
+ {orderedBlocks?.length === 0 && ( +

+ +

+ )} ', () => { expect(screen.queryByText('Preview')).not.toBeInTheDocument(); }); + it('shows empty unit', async () => { + renderLibraryUnitPage(mockGetContainerMetadata.unitIdEmpty); + expect((await screen.findAllByText(libraryTitle))[0]).toBeInTheDocument(); + expect(await screen.findByText('This unit is empty')).toBeInTheDocument(); + }); + it('can rename unit', async () => { renderLibraryUnitPage(); expect((await screen.findAllByText(libraryTitle))[0]).toBeInTheDocument(); diff --git a/src/library-authoring/units/messages.ts b/src/library-authoring/units/messages.ts index 5bee62440..eec668c5f 100644 --- a/src/library-authoring/units/messages.ts +++ b/src/library-authoring/units/messages.ts @@ -51,6 +51,11 @@ const messages = defineMessages({ defaultMessage: 'Failed to update components order', description: 'Toast message displayed when components are successfully reordered in a unit', }, + noChildrenText: { + id: 'course-authoring.library-authoring.unit.no-children.text', + defaultMessage: 'This unit is empty', + description: 'Message to display when unit has not children', + }, }); export default messages;