rizzo-next
Version:
The next generation of Lonely Planet's style guide and pattern library.
149 lines (120 loc) • 6.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _tab = require("./tab.jsx");
var _tab2 = _interopRequireDefault(_tab);
var _panel = require("./panel.jsx");
var _panel2 = _interopRequireDefault(_panel);
var _actions = require("../actions");
var _actions2 = _interopRequireDefault(_actions);
var _aboutPanel = require("./about-panel.jsx");
var _aboutPanel2 = _interopRequireDefault(_aboutPanel);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
/**
* Sidebar view that sets up main tabs
*/
var SidebarView = function (_React$Component) {
_inherits(SidebarView, _React$Component);
function SidebarView() {
_classCallCheck(this, SidebarView);
return _possibleConstructorReturn(this, (SidebarView.__proto__ || Object.getPrototypeOf(SidebarView)).apply(this, arguments));
}
_createClass(SidebarView, [{
key: "render",
value: function render() {
var location = this.props.location,
activeSetIndex = this.props.activeSetIndex,
panelContent = void 0,
tabCount = 0,
sets = this.props.sets,
backSlug = "",
backElement = "",
h1Class = "sidebar__title __continent",
footer = void 0,
// TODO Switch back to just ${this.props.location.slug} once this is live
slug = "https://www.lonelyplanet.com/" + this.props.location.slug;
var tabs = sets.map(function (set, i) {
tabCount++;
var isActive = i === activeSetIndex ? true : false,
isCity = location.type.toLowerCase() === "city",
showDropdown = isCity && tabCount === 1;
return _react2.default.createElement(_tab2.default, { sets: sets, showDropdown: showDropdown, name: set.title, active: isActive, i: i, type: set.type });
});
if (location.description && location.description.length > 0) {
tabCount++;
var dropdownOpen = this.props.tabDropdownOpen,
isActive = tabCount === 1 || tabCount === activeSetIndex ? true : false,
aboutTab = _react2.default.createElement(_tab2.default, { name: "About", active: isActive, i: tabCount, customPanel: "about", tabDropdownOpen: dropdownOpen });
tabs.push(aboutTab);
}
if (this.props.sets.length < 1) {
panelContent = _react2.default.createElement("div", { className: "no-content", dangerouslySetInnerHTML: { __html: location.description } });
} else {
if (this.props.customPanel === "about") {
panelContent = _react2.default.createElement(_aboutPanel2.default, { location: location });
footer = _react2.default.createElement(
"footer",
{ className: "panel__footer monkey" },
_react2.default.createElement(
"a",
{ className: "panel__close", href: slug },
"Close map and explore this destination",
_react2.default.createElement("i", { className: "icon-chevron-right", "aria-hidden": "true" })
)
);
} else {
var activePanel = sets[this.props.activeSetIndex];
panelContent = _react2.default.createElement(_panel2.default, { highlightedPoi: this.props.highlightedPoi, set: activePanel });
}
}
if (location.parent_slug && location.parent_slug !== location.slug) {
backSlug = "/" + location.parent_slug;
backElement = _react2.default.createElement(
"a",
{ href: backSlug, className: "location-subtitle", onClick: this.parentClick.bind(this) },
_react2.default.createElement("i", { className: "icon icon-chevron-left", "aria-hidden": "true" }),
location.parent
);
h1Class = "sidebar__title";
}
return _react2.default.createElement(
"div",
{ className: "sidebar" },
_react2.default.createElement(
"header",
{ className: "sidebar__header" },
backElement,
_react2.default.createElement(
"h1",
{ className: h1Class },
location.title
),
_react2.default.createElement(
"ul",
{ className: "sidebar__tabs" },
tabs
)
),
panelContent,
footer
);
}
}, {
key: "parentClick",
value: function parentClick(e) {
e.preventDefault();
var props = this.props;
_actions2.default.gotoPlace({ place: props.location.parent_slug, placeTitle: props.location.parent });
}
}]);
return SidebarView;
}(_react2.default.Component);
exports.default = SidebarView;