UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

33 lines (32 loc) 1.48 kB
/*! * All material copyright ESRI, All Rights Reserved, unless otherwise specified. * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details. * v1.5.0-next.4 */ import { Build } from "@stencil/core"; const listItemGroupSelector = "calcite-list-item-group"; const listItemSelector = "calcite-list-item"; export function getListItemChildren(event) { const assignedElements = event.target.assignedElements({ flatten: true }); const listItemGroupChildren = assignedElements.filter((el) => el?.matches(listItemGroupSelector)) .map((group) => Array.from(group.querySelectorAll(listItemSelector))) .reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []); const listItemChildren = assignedElements.filter((el) => el?.matches(listItemSelector)); return [...listItemGroupChildren, ...listItemChildren]; } export function updateListItemChildren(listItemChildren) { listItemChildren.forEach((listItem) => { listItem.setPosition = listItemChildren.indexOf(listItem) + 1; listItem.setSize = listItemChildren.length; }); } export function getDepth(element, includeGroup = false) { if (!Build.isBrowser) { return 0; } const expression = includeGroup ? "ancestor::calcite-list-item | ancestor::calcite-list-item-group" : "ancestor::calcite-list-item"; const result = document.evaluate(expression, element, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); return result.snapshotLength; }