@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
68 lines • 5.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PresentationTreeNodeRenderer = PresentationTreeNodeRenderer;
const jsx_runtime_1 = require("react/jsx-runtime");
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/* eslint-disable @typescript-eslint/no-deprecated */
/** @packageDocumentation
* @module Tree
*/
require("./PresentationTreeNodeRenderer.scss");
const classnames_1 = __importDefault(require("classnames"));
const components_react_1 = require("@itwin/components-react");
const core_react_1 = require("@itwin/core-react");
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
const itwinui_react_1 = require("@itwin/itwinui-react");
const Utils_js_1 = require("../../common/Utils.js");
const PresentationTreeNodeItem_js_1 = require("../PresentationTreeNodeItem.js");
/**
* Component for rendering tree nodes produced by [[PresentationTreeDataProvider]]. Additionally to the default
* tree node renderer, it renders action buttons for filterable hierarchy levels and also correctly renders
* nodes that carry info messages.
* @public
* @deprecated in 5.7. All tree-related APIs have been deprecated in favor of the new generation hierarchy
* building APIs (see https://github.com/iTwin/presentation/blob/33e79ee8d77f30580a9bab81a72884bda008db25/README.md#the-packages).
*/
function PresentationTreeNodeRenderer(props) {
const { onFilterClick, onClearFilterClick, ...restProps } = props;
const nodeItem = props.node.item;
if ((0, PresentationTreeNodeItem_js_1.isPresentationInfoTreeNodeItem)(nodeItem)) {
return (
// `PresentationTreeNodeRenderer` is about to be deprecated itself, so no point in resolving the TreeNode deprecation
(0, jsx_runtime_1.jsx)(core_react_1.TreeNode, { isLeaf: true, label: (0, jsx_runtime_1.jsx)("span", { children: (0, jsx_runtime_1.jsxs)(itwinui_react_1.Text, { isMuted: true, className: "info-tree-node-item", children: [nodeItem.type === PresentationTreeNodeItem_js_1.InfoTreeNodeItemType.ResultSetTooLarge && ((0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("span", { children: `${(0, Utils_js_1.translate)("tree.please-provide")} ` }), (0, jsx_runtime_1.jsx)(itwinui_react_1.Anchor, { onClick: () => {
if (nodeItem.parentId !== undefined) {
onFilterClick(nodeItem.parentId);
}
}, children: `${(0, Utils_js_1.translate)("tree.additional-filtering")}` }), (0, jsx_runtime_1.jsx)("span", { children: " - " })] })), (0, jsx_runtime_1.jsx)("span", { children: nodeItem.message })] }) }), level: props.node.depth, isHoverDisabled: true }));
}
if ((0, PresentationTreeNodeItem_js_1.isPresentationTreeNodeItem)(nodeItem)) {
// hide filtering buttons if filtering is disabled explicitly or node is not filtered and has no children
const filteringDisabled = nodeItem.filtering === undefined || (nodeItem.filtering.active === undefined && props.node.numChildren === 0);
return ((0, jsx_runtime_1.jsx)(components_react_1.TreeNodeRenderer, { ...restProps, className: (0, classnames_1.default)("presentation-components-node", restProps.className), children: (0, jsx_runtime_1.jsx)(PresentationTreeNodeActions, { isFiltered: nodeItem.filtering?.active !== undefined, filteringDisabled: filteringDisabled, onClearFilterClick: () => {
onClearFilterClick(nodeItem.id);
}, onFilterClick: () => {
onFilterClick(nodeItem.id);
} }) }));
}
return (0, jsx_runtime_1.jsx)(components_react_1.TreeNodeRenderer, { ...restProps });
}
function PresentationTreeNodeActions(props) {
const { onFilterClick, onClearFilterClick, filteringDisabled, isFiltered } = props;
if (filteringDisabled) {
return null;
}
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)("presentation-components-node-action-buttons", isFiltered && "filtered"), children: (0, jsx_runtime_1.jsxs)(itwinui_react_1.ButtonGroup, { children: [isFiltered ? ((0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { className: "presentation-components-node-action-button", styleType: "borderless", size: "small", onMouseDown: (e) => e.stopPropagation(), onClick: (e) => {
e.stopPropagation();
onClearFilterClick();
}, label: (0, Utils_js_1.translate)("tree.clear-hierarchy-level-filter"), children: (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgCloseSmall, {}) })) : null, (0, jsx_runtime_1.jsx)(itwinui_react_1.IconButton, { className: "presentation-components-node-action-button", styleType: "borderless", size: "small", onMouseDown: (e) => e.stopPropagation(), onClick: (e) => {
e.stopPropagation();
onFilterClick();
}, label: (0, Utils_js_1.translate)("tree.filter-hierarchy-level"), children: isFiltered ? (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgFilter, {}) : (0, jsx_runtime_1.jsx)(itwinui_icons_react_1.SvgFilterHollow, {}) })] }) }));
}
//# sourceMappingURL=PresentationTreeNodeRenderer.js.map