@xo-union/tk-component-header-nav
Version:
69 lines (67 loc) • 2.46 kB
JavaScript
"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;