From c643e8e01ecc65bc0a258742f18703fe8a87d14c Mon Sep 17 00:00:00 2001 From: Jillian Vogel Date: Tue, 17 Jun 2025 01:01:06 +0930 Subject: [PATCH] fix: show "This is empty" 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 d4f678d798..fa56547d14 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 248b9c056e..0dd1072b7f 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 5bee624405..eec668c5f9 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;