UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

85 lines (84 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const React = require("react"); const utils = require("@mui/material/utils"); const utils$1 = require("../utils.cjs"); function _interopNamespace(e) { if (e && e.__esModule) return e; const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } }); if (e) { for (const k in e) { if (k !== "default") { const d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: () => e[k] }); } } } n.default = e; return Object.freeze(n); } const React__namespace = /* @__PURE__ */ _interopNamespace(React); const useTreeViewExpansion = ({ instance, params, models }) => { const isNodeExpanded = React__namespace.useCallback( (nodeId) => { return Array.isArray(models.expanded.value) ? models.expanded.value.indexOf(nodeId) !== -1 : false; }, [models.expanded.value] ); const isNodeExpandable = React__namespace.useCallback( (nodeId) => !!instance.getNode(nodeId)?.expandable, [instance] ); const toggleNodeExpansion = utils.useEventCallback( (event, nodeId) => { if (nodeId == null) { return; } let newExpanded; if (models.expanded.value.indexOf(nodeId) !== -1) { newExpanded = models.expanded.value.filter((id) => id !== nodeId); } else { newExpanded = [nodeId].concat(models.expanded.value); } if (params.onNodeToggle) { params.onNodeToggle(event, newExpanded); } models.expanded.setValue(newExpanded); } ); const expandAllSiblings = (event, nodeId) => { const node = instance.getNode(nodeId); const siblings = instance.getChildrenIds(node.parentId); const diff = siblings.filter( (child) => instance.isNodeExpandable(child) && !instance.isNodeExpanded(child) ); const newExpanded = models.expanded.value.concat(diff); if (diff.length > 0) { models.expanded.setValue(newExpanded); if (params.onNodeToggle) { params.onNodeToggle(event, newExpanded); } } }; utils$1.populateInstance(instance, { isNodeExpanded, isNodeExpandable, toggleNodeExpansion, expandAllSiblings }); }; useTreeViewExpansion.models = { expanded: { controlledProp: "expanded", defaultProp: "defaultExpanded" } }; const DEFAULT_EXPANDED = []; useTreeViewExpansion.getDefaultizedParams = (params) => ({ ...params, defaultExpanded: params.defaultExpanded ?? DEFAULT_EXPANDED }); exports.useTreeViewExpansion = useTreeViewExpansion;