rizzo-next
Version:
The next generation of Lonely Planet's style guide and pattern library.
172 lines (131 loc) • 6.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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 _bane = require("../../core/bane");
var _mobile_util = require("../../core/mobile_util");
var _mobile_util2 = _interopRequireDefault(_mobile_util);
var _jquery = require("jquery");
var _jquery2 = _interopRequireDefault(_jquery);
var _urlencode = require("urlencode");
var _urlencode2 = _interopRequireDefault(_urlencode);
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; }
var SocialShareComponent = function (_Component) {
_inherits(SocialShareComponent, _Component);
function SocialShareComponent() {
_classCallCheck(this, SocialShareComponent);
return _possibleConstructorReturn(this, (SocialShareComponent.__proto__ || Object.getPrototypeOf(SocialShareComponent)).apply(this, arguments));
}
_createClass(SocialShareComponent, [{
key: "initialize",
value: function initialize() {
this.isMobile = _mobile_util2.default.isMobile();
this.isSocialShareMenuHidden = false;
this.events = {
"click .js-action-sheet-menu-control": "socialShareMenuControlClicked",
"click .js-action-sheet-share-control": "socialShareControlClicked"
};
}
}, {
key: "socialShareMenuControlClicked",
value: function socialShareMenuControlClicked(event) {
var $el = (0, _jquery2.default)(event.currentTarget);
var id = "#" + $el.attr("aria-owns"),
$menu = $el.siblings(id);
if (this.isSocialShareMenuHidden) {
this.makeSocialShareMenuVisible($menu);
} else {
this.makeSocialShareMenuHidden($menu);
}
event.preventDefault();
}
}, {
key: "makeSocialShareMenuVisible",
value: function makeSocialShareMenuVisible($menu) {
this._hideSocialShareMenu($menu);
this.isSocialShareMenuHidden = false;
}
}, {
key: "makeSocialShareMenuHidden",
value: function makeSocialShareMenuHidden($menu) {
this._showSocialShareMenu($menu);
this.isSocialShareMenuHidden = true;
return window.location.pathname;
}
}, {
key: "socialShareControlClicked",
value: function socialShareControlClicked(event) {
var $el = (0, _jquery2.default)(event.currentTarget);
var width = 550,
height = 420,
winHeight = (0, _jquery2.default)(window).height(),
winWidth = (0, _jquery2.default)(window).width(),
left = void 0,
top = void 0;
var $title = $el.closest(".article").data("title"),
$images = $el.closest(".article").find("img"),
imageUrl = (0, _jquery2.default)($images).attr("src"),
title = void 0,
shareMsg = void 0,
msg = $el.data("msg"),
url = $el.data("url") || window.location.href,
network = $el.data("network"),
facebookAppId = "111537044496";
if ($title) {
title = $title;
shareMsg = (0, _urlencode2.default)(title) + " " + (0, _urlencode2.default)(url);
} else if (msg) {
shareMsg = "" + (0, _urlencode2.default)(msg);
}
left = Math.round(winWidth / 2 - width / 2);
top = winHeight > height ? Math.round(winHeight / 2 - height / 2) : 0;
if (winHeight > height) {
top = Math.round(winHeight / 2 - height / 2);
}
var windowOptions = "toolbar=no,menubar=no,location=yes,resizable=no,scrollbars=yes",
windowSize = "width=" + width + ",height=" + height + ",left=" + left + ",left=" + top;
if (network === "twitter") {
var tweet = shareMsg + " @lonelyplanet";
window.open("https://twitter.com/intent/tweet?text=" + tweet, "share", windowOptions + "," + windowSize);
return "twitter";
}
if (network === "facebook") {
window.open("https://www.facebook.com/sharer/sharer.php?u=" + url, "share", windowOptions + "," + windowSize);
return "facebook";
}
if (network === "pinterest") {
window.open("https://www.pinterest.com/pin/create/button/?url=" + url + "&media=" + imageUrl + "&description=" + shareMsg, "share", windowOptions + "," + windowSize);
return "pinterest";
}
if (network === "facebook-messenger") {
window.open("fb-messenger://share/?link=" + url + "&app_id=" + facebookAppId, "share", windowOptions + "," + windowSize);
return "facebook";
}
if (network === "whatsapp") {
var _url = this.isMobile ? "whatsapp://send?text=" + shareMsg : "https://api.whatsapp.com/send?text=" + shareMsg;
window.open(_url, "share", windowOptions + "," + windowSize);
return "whatsapp";
}
if (network === "email") {
window.location = "mailto:?body=" + msg;
return "email";
}
}
}, {
key: "_showSocialShareMenu",
value: function _showSocialShareMenu($menu) {
$menu.addClass("is-open").prop("hidden", false).attr("aria-hidden", "false");
}
}, {
key: "_hideSocialShareMenu",
value: function _hideSocialShareMenu($menu) {
$menu.removeClass("is-open").prop("hidden", true).attr("aria-hidden", "true");
}
}]);
return SocialShareComponent;
}(_bane.Component);
exports.default = SocialShareComponent;