design-system-govbr-rnp
Version:
## Padrão Digital de Governo - React Biblioteca de componentes React que implementa o [Padrão Visual digital do governo](https://www.gov.br/ds/). O objetivo da biblioteca é facilitar a implementação e promover a padronização das interfaces de sistemas do
135 lines (134 loc) • 8.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.Menu = void 0;
var _react = _interopRequireDefault(require("react"));
var _styles = require("./styles");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Submenu = _interopRequireDefault(require("./Submenu"));
var _Typography = _interopRequireDefault(require("../../utilities/Typography/Typography"));
var _Button = _interopRequireDefault(require("../Button/Button"));
var _styles2 = require("../Button/styles");
var _reactFontawesome = require("@fortawesome/react-fontawesome");
var _Collapse = _interopRequireDefault(require("../../utilities/Collapse/Collapse"));
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var Menu = function Menu(props) {
var density = props.density,
menuList = props.menuList,
logo = props.logo,
titleMenu = props.titleMenu,
imagesLink = props.imagesLink,
externalLink = props.externalLink,
socialMedia = props.socialMedia;
var isPushType = _objectSpread({}, props).type === 'push';
var isLabelType = _objectSpread({}, props).type === 'label';
var toggleMenu = function toggleMenu(type) {
var querySelector = !type ? '[data-menu]' : "[data-menu-".concat(type, "]");
var menu = document.querySelector(querySelector);
var overlay = document.querySelector('[data-overlay]');
var icon = document.querySelector('[data-icon]');
var nav = document.querySelector('[data-nav]');
var isMenuVisible = menu.style.display === 'block';
menu.style.display = isMenuVisible ? 'none' : 'block';
overlay.style.display = isMenuVisible ? 'none' : 'block';
icon.classList.toggle('open');
nav.classList.toggle('open');
};
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styles.Nav, {
density: density,
"data-nav": true
}, /*#__PURE__*/_react.default.createElement(_styles.List, _extends({
"data-menu": true
}, props, {
style: {
display: !isLabelType ? 'none' : 'block'
}
}), isPushType && /*#__PURE__*/_react.default.createElement(_styles.WrapperLogo, null, /*#__PURE__*/_react.default.createElement(_styles.Logo, null, /*#__PURE__*/_react.default.createElement("a", {
href: "/teste"
}, /*#__PURE__*/_react.default.createElement("img", {
alt: "Logo",
src: logo
})), /*#__PURE__*/_react.default.createElement(_styles.Title, {
component: "h2",
title: titleMenu
})), /*#__PURE__*/_react.default.createElement(_styles2.IconButton, {
onClick: function onClick() {
return toggleMenu();
}
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
"aria-hidden": "true",
icon: _freeSolidSvgIcons.faTimes
}))), menuList.map(function (itemMenu) {
return itemMenu.submenu ? /*#__PURE__*/_react.default.createElement(_styles.ListItem, null, /*#__PURE__*/_react.default.createElement(_Collapse.default, {
previousIcon: itemMenu.icon,
label: itemMenu.name,
menuItem: true,
open: isLabelType
}, /*#__PURE__*/_react.default.createElement(_Submenu.default, {
subItem: itemMenu.submenu
}))) : /*#__PURE__*/_react.default.createElement(_styles.ListItem, null, /*#__PURE__*/_react.default.createElement("a", {
href: itemMenu.href
}, itemMenu.icon && /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
"aria-hidden": "true",
icon: itemMenu.icon,
color: "#fff"
}), itemMenu.name));
}), (imagesLink === null || imagesLink === void 0 ? void 0 : imagesLink.length) > 0 && /*#__PURE__*/_react.default.createElement(_styles.ListItem, null, /*#__PURE__*/_react.default.createElement(_styles.WrapperLinks, null, /*#__PURE__*/_react.default.createElement(_styles.WrapperImages, null, imagesLink.map(function (item) {
return /*#__PURE__*/_react.default.createElement("a", {
href: item.url
}, /*#__PURE__*/_react.default.createElement("img", {
alt: item.alt,
src: item.img
}));
})))), externalLink && /*#__PURE__*/_react.default.createElement(_styles.ListItem, null, /*#__PURE__*/_react.default.createElement(_styles.WrapperLinks, null, externalLink.map(function (item) {
return /*#__PURE__*/_react.default.createElement("a", {
href: item.url
}, item.label, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
"aria-hidden": "true",
icon: _freeSolidSvgIcons.faExternalLinkSquareAlt
}));
}))), socialMedia && /*#__PURE__*/_react.default.createElement(_styles.ListItem, null, /*#__PURE__*/_react.default.createElement(_styles.WrapperLinks, null, /*#__PURE__*/_react.default.createElement(_styles.SocialMedia, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
component: "p",
title: "Redes Sociais",
fontWeight: "semi-bold"
}), /*#__PURE__*/_react.default.createElement("div", null, socialMedia.map(function (item) {
return /*#__PURE__*/_react.default.createElement("a", {
"aria-label": item.alt,
href: item.url
}, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
"aria-hidden": "true",
icon: item.icon
}));
})))))), /*#__PURE__*/_react.default.createElement(_Button.default, {
circle: "true",
density: "medium",
iconProps: {
ariaLabel: 'Close',
icon: _freeSolidSvgIcons.faBars
},
variant: "terciary",
onClick: function onClick() {
return toggleMenu();
}
})), /*#__PURE__*/_react.default.createElement(_styles.Overlay, {
"data-overlay": true,
style: {
display: 'none'
}
}));
};
exports.Menu = Menu;
Menu.propTypes = {
density: _propTypes.default.string
};
var _default = Menu;
exports.default = _default;