@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
37 lines • 2.54 kB
JavaScript
;
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