diff --git a/src/components/accordion-item/accordion-item.tsx b/src/components/accordion-item/accordion-item.tsx index f89e5268073..0cc20cc8516 100644 --- a/src/components/accordion-item/accordion-item.tsx +++ b/src/components/accordion-item/accordion-item.tsx @@ -14,7 +14,13 @@ import { connectConditionalSlotComponent, disconnectConditionalSlotComponent } from "../../utils/conditionalSlot"; -import { getElementDir, getElementProp, getSlotted, toAriaBoolean } from "../../utils/dom"; +import { + closestElementCrossShadowBoundary, + getElementDir, + getElementProp, + getSlotted, + toAriaBoolean +} from "../../utils/dom"; import { CSS_UTILITY } from "../../utils/resources"; import { SLOTS, CSS } from "./resources"; import { FlipContext, Position, Scale } from "../interfaces"; @@ -298,9 +304,12 @@ export class AccordionItem implements ConditionalSlotComponent { } private getItemPosition(): number { - return Array.prototype.indexOf.call( - this.parent.querySelectorAll("calcite-accordion-item"), - this.el + const { el } = this; + + const items = closestElementCrossShadowBoundary(el, "calcite-accordion")?.querySelectorAll( + "calcite-accordion-item" ); + + return items ? Array.from(items).indexOf(el) : -1; } }