@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
76 lines (75 loc) • 2.53 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const React = require("react");
const DescendantProvider = require("../internals/DescendantProvider.cjs");
const TreeViewProvider = require("../internals/TreeViewProvider.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);
function useHvTreeItem(nodeId) {
const { instance, multiSelect } = TreeViewProvider.useTreeViewContext();
const { level = 0 } = React__namespace.useContext(DescendantProvider.DescendantContext);
const expandable = instance ? instance.isNodeExpandable(nodeId) : false;
const expanded = instance ? instance.isNodeExpanded(nodeId) : false;
const focused = instance ? instance.isNodeFocused(nodeId) : false;
const selected = instance ? instance.isNodeSelected(nodeId) : false;
const disabled = instance ? instance.isNodeDisabled(nodeId) : false;
const handleExpansion = (event) => {
if (!instance || disabled) return;
if (!focused) {
instance.focusNode(event, nodeId);
}
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
instance.toggleNodeExpansion(event, nodeId);
}
};
const handleSelection = (event) => {
if (!instance || disabled) return;
if (!focused) {
instance.focusNode(event, nodeId);
}
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
if (multiple) {
if (event.shiftKey) {
instance.selectRange(event, { end: nodeId });
} else {
instance.selectNode(event, nodeId, true);
}
} else {
instance.selectNode(event, nodeId);
}
};
const preventSelection = (event) => {
if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {
event.preventDefault();
}
};
return {
instance,
level,
disabled,
expanded,
selected,
focused,
handleExpansion,
handleSelection,
preventSelection
};
}
exports.useHvTreeItem = useHvTreeItem;