UNPKG

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
"use strict"; 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;