UNPKG

@xo-union/tk-component-header-nav

Version:
60 lines (59 loc) 1.95 kB
import React from "react"; import PropTypes from "prop-types"; import PageletContainer from "@xo-union/react-pagelet"; import { getHeaderAssetUrl, getHeaderSSIUrl } from "../../utils/urls.js"; import Placeholder from "./Placeholder.js"; const handleError = evt => { if (evt.detail.isRendered && evt.detail.phase === 'load' && process.env.NODE_ENV === 'production') { /** * If header nav is already rendered, do not show error view */ evt.preventDefault(); } }; /** * Renders a header nav pagelet which gets dynamically updated as changes to the header are made. * * Besides its own props, this component also accepts all props accepted by the HeaderNav component */ const HeaderNavPagelet = _ref => { let { tag, ssi, ...props } = _ref; const links = { ssi: getHeaderSSIUrl(tag, 'index.html'), css: getHeaderAssetUrl(tag, 'styles.css'), js: getHeaderAssetUrl(tag, 'main.js') }; return /*#__PURE__*/React.createElement(PageletContainer, { onError: handleError, renderPlaceholder: Placeholder, renderError: Placeholder, containerId: "header-navigation", links: links, ssi: ssi, pageletProps: props }); }; HeaderNavPagelet.defaultProps = { tag: 'latest', ssi: false }; process.env.NODE_ENV !== "production" ? HeaderNavPagelet.propTypes = { /** * Pagelet tag to use. Primary tag will always be `latest` but in cases where we need * to maintain support for an older version of the header pagelet, we will support other tags. * * The tag can also be a fixed header pagelet version */ tag: PropTypes.string, /** * Whether or not to enable SSI. This is recommended to improve rendering performance as this accomplishes * server side rendering. NOTE: This requires that the backend server that serves the HTML * for the current page supports `ssi` directives. */ ssi: PropTypes.bool } : void 0; export default HeaderNavPagelet;