UNPKG

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

Version:
69 lines (67 loc) 2.46 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactPagelet = _interopRequireDefault(require("@xo-union/react-pagelet")); var _urlsCjs = require("../../utils/urls.cjs.js"); var _PlaceholderCjs = _interopRequireDefault(require("./Placeholder.cjs.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: (0, _urlsCjs.getHeaderSSIUrl)(tag, 'index.html'), css: (0, _urlsCjs.getHeaderAssetUrl)(tag, 'styles.css'), js: (0, _urlsCjs.getHeaderAssetUrl)(tag, 'main.js') }; return /*#__PURE__*/_react.default.createElement(_reactPagelet.default, { onError: handleError, renderPlaceholder: _PlaceholderCjs.default, renderError: _PlaceholderCjs.default, 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.default.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.default.bool } : void 0; var _default = HeaderNavPagelet; exports.default = _default;