UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

37 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenderLink = void 0; var tslib_1 = require("tslib"); var React = tslib_1.__importStar(require("react")); var jotai_1 = require("jotai"); var react_1 = require("@fluentui/react"); var react_icons_1 = require("@fluentui/react-icons"); var globalState_1 = require("./atoms/globalState"); var NavigationContextMenu_1 = require("./NavigationContextMenu"); var useNavigationStyles_1 = require("./useNavigationStyles"); var RenderLink = function (props) { var link = props.link, showContextMenu = props.showContextMenu; var _a = (0, useNavigationStyles_1.useNavigationStyles)(), controlStyles = _a.controlStyles, textNavLinkStyles = _a.textNavLinkStyles; var appGlobalState = (0, jotai_1.useAtom)(globalState_1.globalState)[0]; var selectedItem = appGlobalState.selectedItem, contextMenuItems = appGlobalState.contextMenuItems; var hasChildren = React.useMemo(function () { return link === null || link === void 0 ? void 0 : link.links.length; }, [link]); var onClick = React.useCallback(function (ev) { ev.preventDefault(); link.isExpanded = !link.isExpanded; }, [link]); var showContext = React.useMemo(function () { return showContextMenu && (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.key) === link.key && contextMenuItems && contextMenuItems.length; }, [showContextMenu, selectedItem, contextMenuItems]); return (React.createElement(React.Fragment, null, React.createElement("div", { className: controlStyles.navlink }, hasChildren ? (React.createElement(React.Fragment, null, React.createElement(react_1.FontIcon, { iconName: link.isExpanded ? "ChevronRight" : "ChevronDown", style: { fontSize: 16, }, onClick: onClick }), React.createElement(react_icons_1.TagMultiple16Regular, null))) : (React.createElement(React.Fragment, null, React.createElement("div", { style: { height: 16 } }), React.createElement(react_icons_1.Tag16Regular, null))), React.createElement(react_1.Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" }, React.createElement(react_1.Text, { variant: "medium", styles: textNavLinkStyles(link) }, link.name), showContext && React.createElement(NavigationContextMenu_1.NavigationContextMenu, null))))); }; exports.RenderLink = RenderLink; //# sourceMappingURL=RenderLink.js.map