@panneau/layout
Version:
Layout core for Panneau
90 lines (75 loc) • 3.14 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _get = _interopRequireDefault(require("lodash/get"));
var _core = require("@panneau/core");
var _NavbarLink = _interopRequireDefault(require("./NavbarLink"));
var _NavbarDivider = _interopRequireDefault(require("./NavbarDivider"));
var _excluded = ["items", "position", "className", "onClickItem"];
var propTypes = {
link: _propTypes["default"].string,
label: _core.PropTypes.label,
items: _propTypes["default"].arrayOf(_propTypes["default"].shape({
type: _propTypes["default"].string,
label: _core.PropTypes.label
})),
position: _propTypes["default"].oneOf(['left', 'center', 'right']),
className: _propTypes["default"].string,
onClick: _propTypes["default"].func,
onClickItem: _propTypes["default"].func
};
var defaultProps = {
link: null,
label: null,
items: null,
position: 'left',
className: null,
onClick: null,
onClickItem: null
};
var NavbarItem = function NavbarItem(_ref) {
var items = _ref.items,
position = _ref.position,
className = _ref.className,
onClickItem = _ref.onClickItem,
linkProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var hasDropdown = items !== null && items.length > 0;
return /*#__PURE__*/_react["default"].createElement("li", {
className: (0, _classnames["default"])(['nav-item', (0, _defineProperty2["default"])({
dropdown: hasDropdown
}, className, className !== null)])
}, /*#__PURE__*/_react["default"].createElement(_NavbarLink["default"], (0, _extends2["default"])({}, linkProps, {
hasDropdown: hasDropdown
})), hasDropdown ? /*#__PURE__*/_react["default"].createElement("div", {
className: (0, _classnames["default"])(['dropdown-menu', {
'dropdown-menu-right': position === 'right'
}])
}, items.map(function (it, index) {
return (0, _get["default"])(it, 'type', 'item') === 'divider' ? /*#__PURE__*/_react["default"].createElement(_NavbarDivider["default"], {
key: "item-".concat(index),
isDropdown: true
}) : /*#__PURE__*/_react["default"].createElement(_NavbarLink["default"], (0, _extends2["default"])({
key: "item-".concat(index)
}, it, {
isDropdown: true,
onClick: function onClick(e) {
if (onClickItem !== null) {
onClickItem(e, it, index);
}
}
}));
})) : null);
};
NavbarItem.propTypes = propTypes;
NavbarItem.defaultProps = defaultProps;
var _default = NavbarItem;
exports["default"] = _default;