Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = exports.getDefaultNavLinks = void 0;

var _react = _interopRequireDefault(require("react"));

var _propTypes = _interopRequireDefault(require("prop-types"));

var _commonMessages = _interopRequireDefault(require("@doodle/common-messages"));

var _user = require("../../utils/user");

var _Header = _interopRequireDefault(require("../Header"));

var _Button = require("../../controls/Button");

var _LogoLink = _interopRequireDefault(require("../../visuals/LogoLink"));

var _CreatePollMenu = _interopRequireDefault(require("./CreatePollMenu"));

var _HamburgerMenu = _interopRequireDefault(require("./HamburgerMenu"));

var _translate = require("../../utils/translate");

var _pickDataAttributes = _interopRequireDefault(require("../../utils/pickDataAttributes"));

var _Menu = _interopRequireDefault(require("../../controls/Menu/Menu"));

var _Icon = _interopRequireDefault(require("../../visuals/Icon"));

var _HeaderWidget = _interopRequireDefault(require("../../user/HeaderWidget"));

var _constants = require("./constants");

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }

function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }

function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

function _extends() { _extends = Object.assign || 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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }

function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }

var ArrowDownIcon = function ArrowDownIcon(props) {
  return /*#__PURE__*/_react["default"].createElement("svg", props, /*#__PURE__*/_react["default"].createElement("path", {
    d: "M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z",
    fill: "currentColor"
  }));
};

ArrowDownIcon.defaultProps = {
  xmlns: "http://www.w3.org/2000/svg",
  viewBox: "0 0 24 24"
};

var getDefaultNavLinks = function getDefaultNavLinks(page) {
  return [{
    label: _commonMessages["default"].features,
    to: '/en/features',
    'data-tracking': 'true',
    'data-ga-action': 'clickProduct',
    'data-ga-category': 'userInteraction',
    'data-ga-label': page
  }, {
    label: _commonMessages["default"].solutions,
    submenu: [{
      label: _commonMessages["default"].solutionsRecruiting,
      to: '/en/solutions/recruiting'
    }, {
      label: _commonMessages["default"].solutionsBoardMeetings,
      to: '/en/solutions/board-meetings'
    }, {
      label: _commonMessages["default"].solutionsSales,
      to: '/en/solutions/sales'
    }, {
      label: _commonMessages["default"].solutionsEducation,
      to: '/en/solutions/education'
    }, {
      label: _commonMessages["default"].solutionsNonProfit,
      to: '/en/solutions/non-profit'
    }, {
      label: _commonMessages["default"].solutionsConsultants,
      to: '/en/solutions/consultants'
    }, {
      label: _commonMessages["default"].solutionsEnterprise,
      to: '/en/solutions/enterprise'
    }]
  }, {
    label: _commonMessages["default"].pricing,
    to: '/premium',
    'data-tracking': 'true',
    'data-ga-action': 'clickPricing',
    'data-ga-category': 'userInteraction',
    'data-ga-label': page
  }, {
    label: _commonMessages["default"].integrations,
    to: '/en/integrations',
    'data-tracking': 'true',
    'data-ga-action': 'clickIntegrations',
    'data-ga-category': 'userInteraction',
    'data-ga-label': page
  }, {
    label: _commonMessages["default"].resources,
    submenu: [{
      label: _commonMessages["default"].resourceCenter,
      to: '/en/resources',
      'data-tracking': 'true',
      'data-ga-action': 'clickResources',
      'data-ga-category': 'userInteraction',
      'data-ga-label': page
    }, {
      label: _commonMessages["default"].blog,
      to: 'https://blog.doodle.com/'
    }]
  }, {
    label: _commonMessages["default"].contact,
    submenu: [{
      label: _commonMessages["default"].sales,
      to: 'https://landing.doodle.com/contact-sales',
      'data-tracking': 'true',
      'data-ga-action': 'contactSales',
      'data-ga-category': 'userInteraction',
      'data-ga-label': page,
      'data-amplitude-type': 'user Interaction',
      'data-amplitude-name': 'Click Contact Sales',
      'data-amplitude-properties': JSON.stringify({
        'Contact Sales': 'Header',
        'Event description': 'user clicks on the "Contact Sales” link placed in the header or in the footer'
      })
    }, {
      label: _commonMessages["default"].helpAndSupport,
      to: 'https://help.doodle.com'
    }]
  }];
};

exports.getDefaultNavLinks = getDefaultNavLinks;

var Navigation = function Navigation(_ref) {
  var links = _ref.links,
      user = _ref.user,
      theme = _ref.theme,
      hideCreatePollMenu = _ref.hideCreatePollMenu,
      onClickLogin = _ref.onClickLogin,
      onClickLogout = _ref.onClickLogout,
      onClickSignup = _ref.onClickSignup,
      onClickCreatePoll = _ref.onClickCreatePoll,
      onClickCreateOneOnOne = _ref.onClickCreateOneOnOne,
      onClickCreateSurvey = _ref.onClickCreateSurvey,
      page = _ref.page,
      intl = _ref.intl;
  var navLinks = links || getDefaultNavLinks(page);
  navLinks = (0, _translate.translateMenuItems)(navLinks, intl); // Transform menu items to Menu and Link elements

  var navElements = navLinks.map(function (itemOrElement) {
    if (_react["default"].isValidElement(itemOrElement)) {
      return itemOrElement;
    }

    if (_constants.submenuKey in itemOrElement) {
      var menuTitle = itemOrElement.label,
          submenu = itemOrElement.submenu; // Only items as props objects supported here, not elements, due to Menu API

      return /*#__PURE__*/_react["default"].createElement(_Menu["default"], {
        items: submenu,
        horizontalAlign: "left",
        dimension: "compact",
        variant: "linkDark"
      }, menuTitle, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
        icon: ArrowDownIcon
      }));
    }

    var label = itemOrElement.label,
        to = itemOrElement.to,
        rest = _objectWithoutProperties(itemOrElement, ["label", "to"]);

    return /*#__PURE__*/_react["default"].createElement(_Button.Button, _extends({
      href: to,
      variant: "linkDark",
      dimension: "compact"
    }, (0, _pickDataAttributes["default"])(rest)), label);
  });
  var isLoggedIn = (0, _user.isLoggedIn)(user);
  var headerLeft = [/*#__PURE__*/_react["default"].createElement(_LogoLink["default"], {
    redirectUrl: "/en/"
  })].concat(_toConsumableArray(navElements));
  var headerRight = [/*#__PURE__*/_react["default"].createElement(_HeaderWidget["default"], {
    username: null // hide username by design
    ,
    userAvatar: isLoggedIn ? user.data.avatarSmallUrl : null,
    isLoggedIn: isLoggedIn,
    onClickLogin: onClickLogin,
    onClickLogout: onClickLogout,
    onClickSignup: onClickSignup
  }), /*#__PURE__*/_react["default"].createElement(_CreatePollMenu["default"], {
    user: user,
    onClickCreatePoll: onClickCreatePoll,
    onClickCreateOneOnOne: onClickCreateOneOnOne,
    onClickCreateSurvey: onClickCreateSurvey,
    intl: intl
  }), /*#__PURE__*/_react["default"].createElement(_HamburgerMenu["default"], {
    className: "Navigation-hamburgerMenu",
    items: navLinks,
    user: user,
    onClickLogin: onClickLogin,
    onClickLogout: onClickLogout,
    onClickSignup: onClickSignup
  })];

  if (hideCreatePollMenu) {
    headerRight.splice(1, 1);
  }

  return /*#__PURE__*/_react["default"].createElement(_Header["default"], {
    theme: theme,
    left: headerLeft,
    right: headerRight
  });
};

Navigation.propTypes = {
  links: _propTypes["default"].array,
  user: _user.userPropType,
  theme: _propTypes["default"].oneOf(['white', 'transparent']),
  hideCreatePollMenu: _propTypes["default"].bool,

  /** Will override default '/login' href if specified. */
  onClickLogin: _propTypes["default"].func,

  /** Will override default '/logout' href if specified. */
  onClickLogout: _propTypes["default"].func,

  /** Will override default '/signup' href if specified. */
  onClickSignup: _propTypes["default"].func,

  /** Will override default '/create' href in Create Poll menu if specified. */
  onClickCreatePoll: _propTypes["default"].func,

  /** Will override default '/meetme/qc/new' href in Create Poll menu if specified. */
  onClickCreateOneOnOne: _propTypes["default"].func,

  /** Will override default '/create-choice' href in Create Poll menu if specified. */
  onClickCreateSurvey: _propTypes["default"].func,
  page: _propTypes["default"].string.isRequired,
  // used for tracking
  intl: _propTypes["default"].object
};
Navigation.defaultProps = {
  links: null,
  user: null,
  theme: 'transparent',
  hideCreatePollMenu: false,
  onClickLogin: null,
  onClickLogout: null,
  onClickSignup: null,
  onClickCreatePoll: null,
  onClickCreateOneOnOne: null,
  onClickCreateSurvey: null,
  intl: null
};
Navigation.displayName = 'Navigation';
var _default = Navigation;
exports["default"] = _default;