UNPKG

@itwin/presentation-components

Version:

React components based on iTwin.js Presentation library

68 lines 5.69 kB
"use strict"; 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