diff --git a/packages/calcite-components/src/components/list-item/list-item.tsx b/packages/calcite-components/src/components/list-item/list-item.tsx
index 883d6889571..961b39793f7 100644
--- a/packages/calcite-components/src/components/list-item/list-item.tsx
+++ b/packages/calcite-components/src/components/list-item/list-item.tsx
@@ -22,7 +22,12 @@ import {
import { SelectionMode } from "../interfaces";
import { SelectionAppearance } from "../list/resources";
import { CSS, ICONS, SLOTS } from "./resources";
-import { getDepth, getListItemChildren, updateListItemChildren } from "./utils";
+import {
+ getDepth,
+ getListItemChildren,
+ getListItemChildLists,
+ updateListItemChildren,
+} from "./utils";
import { connectLocalized, disconnectLocalized, LocalizedComponent } from "../../utils/locale";
import {
connectMessages,
@@ -675,8 +680,9 @@ export class ListItem
const { parentListEl } = this;
const listItemChildren = getListItemChildren(slotEl);
+ const listItemChildLists = getListItemChildLists(slotEl);
updateListItemChildren(listItemChildren);
- const openable = !!listItemChildren.length;
+ const openable = !!listItemChildren.length || !!listItemChildLists.length;
if (openable && parentListEl && !parentListEl.openable) {
parentListEl.openable = true;
diff --git a/packages/calcite-components/src/components/list-item/utils.ts b/packages/calcite-components/src/components/list-item/utils.ts
index 94520de9ca7..d063ac3c7bd 100644
--- a/packages/calcite-components/src/components/list-item/utils.ts
+++ b/packages/calcite-components/src/components/list-item/utils.ts
@@ -4,6 +4,12 @@ const listSelector = "calcite-list";
const listItemGroupSelector = "calcite-list-item-group";
const listItemSelector = "calcite-list-item";
+export function getListItemChildLists(slotEl: HTMLSlotElement): HTMLCalciteListElement[] {
+ return Array.from(
+ slotEl.assignedElements({ flatten: true }).filter((el) => el.matches(listSelector))
+ ) as HTMLCalciteListElement[];
+}
+
export function getListItemChildren(slotEl: HTMLSlotElement): HTMLCalciteListItemElement[] {
const assignedElements = slotEl.assignedElements({ flatten: true });
diff --git a/packages/calcite-components/src/components/list/list.stories.ts b/packages/calcite-components/src/components/list/list.stories.ts
index ddc848214c2..63fba29da7d 100644
--- a/packages/calcite-components/src/components/list/list.stories.ts
+++ b/packages/calcite-components/src/components/list/list.stories.ts
@@ -721,3 +721,13 @@ export const sortableNestedList_TestOnly = (): string => html`
`;
+
+export const listWithEmptyChildList_TestOnly = (): string => html`
+
+
+
+`;