@pubsweet/ui
Version:
React component library for use in pubsweet apps
138 lines (105 loc) • 5.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _uiToolkit = require("@pubsweet/ui-toolkit");
var _atoms = require("../atoms");
var _Action = _interopRequireDefault(require("./Action"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _templateObject5() {
var data = _taggedTemplateLiteral(["\n align-items: center;\n display: inline-flex;\n margin: calc(", " * 3) 1rem calc(", " * 3) 0;\n"]);
_templateObject5 = function _templateObject5() {
return data;
};
return data;
}
function _templateObject4() {
var data = _taggedTemplateLiteral(["\n & > * {\n height: calc(", " * 6);\n }\n\n ", ";\n"]);
_templateObject4 = function _templateObject4() {
return data;
};
return data;
}
function _templateObject3() {
var data = _taggedTemplateLiteral(["\n margin: calc(", " * 2) 1rem calc(", " * 2) 1rem;\n\n ", ";\n"]);
_templateObject3 = function _templateObject3() {
return data;
};
return data;
}
function _templateObject2() {
var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: calc(", " * 6);\n\n ", ";\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
// #region styled-components
var Root = _styledComponents["default"].nav(_templateObject(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar'));
var Section = _styledComponents["default"].div(_templateObject2());
var Logo = _styledComponents["default"].span(_templateObject3(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar.Logo'));
var LogoLink = (0, _styledComponents["default"])(_Action["default"])(_templateObject4(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.override)('ui.AppBar.LogoLink'));
var Item = _styledComponents["default"].span(_templateObject5(), (0, _uiToolkit.th)('gridUnit'), (0, _uiToolkit.th)('gridUnit')); // #endregion
var AppBar = function AppBar(_ref) {
var _ref$brandLink = _ref.brandLink,
brandLink = _ref$brandLink === void 0 ? '/' : _ref$brandLink,
brand = _ref.brand,
className = _ref.className,
_ref$loginLink = _ref.loginLink,
loginLink = _ref$loginLink === void 0 ? '/login' : _ref$loginLink,
onLogoutClick = _ref.onLogoutClick,
navLinkComponents = _ref.navLinkComponents,
user = _ref.user,
_ref$rightComponent = _ref.rightComponent,
RightComponent = _ref$rightComponent === void 0 ? DefaultRightComponent : _ref$rightComponent;
return /*#__PURE__*/_react["default"].createElement(Root, {
className: className
}, /*#__PURE__*/_react["default"].createElement(Section, null, brand && /*#__PURE__*/_react["default"].createElement(Logo, null, /*#__PURE__*/_react["default"].createElement(LogoLink, {
to: brandLink
}, brand)), navLinkComponents && navLinkComponents.map(function (NavLinkComponent, idx) {
return /*#__PURE__*/_react["default"].createElement("span", {
key: NavLinkComponent.props.to
}, /*#__PURE__*/_react["default"].createElement(Item, null, NavLinkComponent));
})), /*#__PURE__*/_react["default"].createElement(RightComponent, {
loginLink: loginLink,
onLogoutClick: onLogoutClick,
user: user
}));
};
var DefaultRightComponent = function DefaultRightComponent(_ref2) {
var user = _ref2.user,
onLogoutClick = _ref2.onLogoutClick,
loginLink = _ref2.loginLink;
return /*#__PURE__*/_react["default"].createElement(Section, null, user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_atoms.Icon, {
size: 2
}, "user"), user.username, user.admin ? ' (admin)' : ''), user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_atoms.Icon, {
size: 2
}, "power"), /*#__PURE__*/_react["default"].createElement(_Action["default"], {
onClick: onLogoutClick
}, "Logout")), !user && /*#__PURE__*/_react["default"].createElement(Item, null, /*#__PURE__*/_react["default"].createElement(_Action["default"], {
to: loginLink
}, "Login")));
};
AppBar.propTypes = {
brandLink: _propTypes["default"].string,
brand: _propTypes["default"].node,
loginLink: _propTypes["default"].string,
onLogoutClick: _propTypes["default"].func,
user: _propTypes["default"].object,
navLinkComponents: _propTypes["default"].arrayOf(_propTypes["default"].element),
rightComponent: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func])
};
var _default = AppBar;
exports["default"] = _default;