react-share
Advanced tools
Comparing version 1.15.1 to 1.16.0
@@ -0,1 +1,7 @@ | ||
## 1.16.0 (Sep 1, 2017) | ||
* Allow React `v16.x.x` as peer dependency. | ||
* Added `<EmailShareButton />`. | ||
* Added `onShareWindowClose` share button prop (#91). | ||
## 1.15.1 (Aug 13, 2017) | ||
@@ -2,0 +8,0 @@ |
@@ -23,2 +23,7 @@ 'use strict'; | ||
}, | ||
email: { | ||
icon: 'M17,22v20h30V22H17z M41.1,25L32,32.1L22.9,25H41.1z M20,39V26.6l12,9.3l12-9.3V39H20z', | ||
mask: 'M41.1,25H22.9l9.1,7.1L41.1,25z M44,26.6l-12,9.3l-12-9.3V39h24V26.6z M0,0v64h64V0H0z M47,42H17V22h30V42z', | ||
color: '#7f7f7f' | ||
}, | ||
twitter: { | ||
@@ -25,0 +30,0 @@ icon: 'M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z', |
@@ -6,3 +6,3 @@ 'use strict'; | ||
}); | ||
exports.shareLinks = exports.ShareCounts = exports.ShareButtons = exports.generateShareIcon = undefined; | ||
exports.shareCountGetters = exports.shareLinks = exports.ShareCounts = exports.ShareButtons = exports.generateShareIcon = undefined; | ||
@@ -23,2 +23,6 @@ var _generateIcon = require('./generateIcon'); | ||
var _shareCountGetters = require('./share-count-getters'); | ||
var shareCountGetters = _interopRequireWildcard(_shareCountGetters); | ||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } | ||
@@ -29,2 +33,3 @@ | ||
exports.ShareCounts = ShareCounts; | ||
exports.shareLinks = shareLinks; | ||
exports.shareLinks = shareLinks; | ||
exports.shareCountGetters = shareCountGetters; |
@@ -6,3 +6,3 @@ 'use strict'; | ||
}); | ||
exports.RedditShareButton = exports.OKShareButton = exports.VKShareButton = exports.PinterestShareButton = exports.LinkedinShareButton = exports.GooglePlusShareButton = exports.WhatsappShareButton = exports.TelegramShareButton = exports.TwitterShareButton = exports.FacebookShareButton = undefined; | ||
exports.RedditShareButton = exports.OKShareButton = exports.VKShareButton = exports.PinterestShareButton = exports.LinkedinShareButton = exports.GooglePlusShareButton = exports.EmailShareButton = exports.WhatsappShareButton = exports.TelegramShareButton = exports.TwitterShareButton = exports.FacebookShareButton = undefined; | ||
@@ -78,32 +78,20 @@ var _extends2 = require('babel-runtime/helpers/extends'); | ||
disabled = _this$props.disabled, | ||
windowWidth = _this$props.windowWidth, | ||
windowHeight = _this$props.windowHeight, | ||
beforeOnClick = _this$props.beforeOnClick; | ||
onClick = _this$props.onClick, | ||
openWindow = _this$props.openWindow; | ||
if (!disabled) { | ||
(function () { | ||
e.preventDefault(); | ||
if (disabled) { | ||
return; | ||
} | ||
var windowOptions = { | ||
height: windowHeight, | ||
width: windowWidth | ||
}; | ||
e.preventDefault(); | ||
var windowOpenBound = function windowOpenBound() { | ||
return (0, _utils.windowOpen)(_this.link(), windowOptions); | ||
}; | ||
var link = _this.link(); | ||
if (beforeOnClick) { | ||
var returnVal = beforeOnClick(); | ||
if (openWindow) { | ||
_this.openWindow(link); | ||
} | ||
if ((0, _utils.isPromise)(returnVal)) { | ||
returnVal.then(windowOpenBound); | ||
} else { | ||
windowOpenBound(); | ||
} | ||
} else { | ||
windowOpenBound(); | ||
} | ||
})(); | ||
if (onClick) { | ||
onClick(link); | ||
} | ||
@@ -114,2 +102,30 @@ }, _this.onKeyPress = function (e) { | ||
} | ||
}, _this.openWindow = function (link) { | ||
var _this$props2 = _this.props, | ||
beforeOnClick = _this$props2.beforeOnClick, | ||
onShareWindowClose = _this$props2.onShareWindowClose, | ||
windowWidth = _this$props2.windowWidth, | ||
windowHeight = _this$props2.windowHeight; | ||
var windowOptions = { | ||
height: windowHeight, | ||
width: windowWidth | ||
}; | ||
var windowOpenBound = function windowOpenBound() { | ||
return (0, _utils.windowOpen)(link, windowOptions, onShareWindowClose); | ||
}; | ||
if (beforeOnClick) { | ||
var returnVal = beforeOnClick(); | ||
if ((0, _utils.isPromise)(returnVal)) { | ||
returnVal.then(windowOpenBound); | ||
} else { | ||
windowOpenBound(); | ||
} | ||
} else { | ||
windowOpenBound(); | ||
} | ||
}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); | ||
@@ -172,3 +188,5 @@ } | ||
network: _propTypes2.default.oneOf(supportedNetworks), | ||
onClick: _propTypes2.default.func, | ||
opts: _propTypes2.default.object, | ||
openWindow: _propTypes2.default.bool, | ||
url: _propTypes2.default.string.isRequired, | ||
@@ -178,3 +196,4 @@ style: _propTypes2.default.object, | ||
windowHeight: _propTypes2.default.number, | ||
beforeOnClick: _propTypes2.default.func | ||
beforeOnClick: _propTypes2.default.func, | ||
onShareWindowClose: _propTypes2.default.func | ||
}; | ||
@@ -184,3 +203,4 @@ ShareButton.defaultProps = { | ||
opacity: 0.6 | ||
} | ||
}, | ||
openWindow: true | ||
}; | ||
@@ -276,2 +296,17 @@ exports.default = ShareButton; | ||
var EmailShareButton = exports.EmailShareButton = createShareButton('email', function (props) { | ||
return { | ||
subject: props.subject, | ||
body: props.body | ||
}; | ||
}, { | ||
subject: _propTypes2.default.string, | ||
body: _propTypes2.default.string | ||
}, { | ||
openWindow: false, | ||
onClick: function onClick(link) { | ||
window.location.href = link; | ||
} | ||
}); | ||
var GooglePlusShareButton = exports.GooglePlusShareButton = createShareButton('googlePlus', undefined, undefined, { | ||
@@ -278,0 +313,0 @@ windowWidth: 550, |
@@ -27,14 +27,14 @@ 'use strict'; | ||
/* eslint-disable prefer-template */ | ||
function email(subject, body) { | ||
(0, _assert2.default)(subject, 'email.subject'); | ||
(0, _assert2.default)(body, 'email.body'); | ||
function email(url, _ref) { | ||
var subject = _ref.subject, | ||
body = _ref.body; | ||
return 'mailto:' + (0, _utils.objectToGetParams)({ subject: subject, body: body }); | ||
return 'mailto:' + (0, _utils.objectToGetParams)({ subject: subject, body: body || email }); | ||
} | ||
function twitter(url, _ref) { | ||
var title = _ref.title, | ||
via = _ref.via, | ||
_ref$hashtags = _ref.hashtags, | ||
hashtags = _ref$hashtags === undefined ? [] : _ref$hashtags; | ||
function twitter(url, _ref2) { | ||
var title = _ref2.title, | ||
via = _ref2.via, | ||
_ref2$hashtags = _ref2.hashtags, | ||
hashtags = _ref2$hashtags === undefined ? [] : _ref2$hashtags; | ||
@@ -52,4 +52,4 @@ (0, _assert2.default)(url, 'twitter.url'); | ||
function telegram(url, _ref2) { | ||
var title = _ref2.title; | ||
function telegram(url, _ref3) { | ||
var title = _ref3.title; | ||
@@ -63,5 +63,5 @@ (0, _assert2.default)(url, 'telegram.url'); | ||
function whatsapp(url, _ref3) { | ||
var title = _ref3.title, | ||
separator = _ref3.separator; | ||
function whatsapp(url, _ref4) { | ||
var title = _ref4.title, | ||
separator = _ref4.separator; | ||
@@ -74,5 +74,5 @@ (0, _assert2.default)(url, 'whatsapp.url'); | ||
function facebook(url, _ref4) { | ||
var quote = _ref4.quote, | ||
hashtag = _ref4.hashtag; | ||
function facebook(url, _ref5) { | ||
var quote = _ref5.quote, | ||
hashtag = _ref5.hashtag; | ||
@@ -94,5 +94,5 @@ (0, _assert2.default)(url, 'facebook.url'); | ||
function linkedin(url, _ref5) { | ||
var title = _ref5.title, | ||
description = _ref5.description; | ||
function linkedin(url, _ref6) { | ||
var title = _ref6.title, | ||
description = _ref6.description; | ||
@@ -108,5 +108,5 @@ (0, _assert2.default)(url, 'linkedin.url'); | ||
function pinterest(url, _ref6) { | ||
var media = _ref6.media, | ||
description = _ref6.description; | ||
function pinterest(url, _ref7) { | ||
var media = _ref7.media, | ||
description = _ref7.description; | ||
@@ -123,6 +123,6 @@ (0, _assert2.default)(url, 'pinterest.url'); | ||
function vk(url, _ref7) { | ||
var title = _ref7.title, | ||
description = _ref7.description, | ||
image = _ref7.image; | ||
function vk(url, _ref8) { | ||
var title = _ref8.title, | ||
description = _ref8.description, | ||
image = _ref8.image; | ||
@@ -139,6 +139,6 @@ (0, _assert2.default)(url, 'vk.url'); | ||
function ok(url, _ref8) { | ||
var title = _ref8.title, | ||
description = _ref8.description, | ||
image = _ref8.image; | ||
function ok(url, _ref9) { | ||
var title = _ref9.title, | ||
description = _ref9.description, | ||
image = _ref9.image; | ||
@@ -155,4 +155,4 @@ (0, _assert2.default)(url, 'ok.url'); | ||
function reddit(url, _ref9) { | ||
var title = _ref9.title; | ||
function reddit(url, _ref10) { | ||
var title = _ref10.title; | ||
@@ -159,0 +159,0 @@ (0, _assert2.default)(url, 'reddit.url'); |
@@ -32,3 +32,3 @@ 'use strict'; | ||
} /* eslint-disable prefer-template */ | ||
function windowOpen(url, _ref) { | ||
function windowOpen(url, _ref, onShareWindowClose) { | ||
var name = _ref.name, | ||
@@ -59,5 +59,24 @@ _ref$height = _ref.height, | ||
return window.open(url, _platform2.default.name === 'IE' && parseInt(_platform2.default.version, 10) < 10 ? '' : name, (0, _keys2.default)(config).map(function (key) { | ||
var shareDialog = window.open(url, _platform2.default.name === 'IE' && parseInt(_platform2.default.version, 10) < 10 ? '' : name, (0, _keys2.default)(config).map(function (key) { | ||
return key + '=' + config[key]; | ||
}).join(', ')); | ||
if (onShareWindowClose) { | ||
(function () { | ||
var interval = window.setInterval(function () { | ||
try { | ||
if (shareDialog === null || shareDialog.closed) { | ||
window.clearInterval(interval); | ||
onShareWindowClose(shareDialog); | ||
} | ||
} catch (e) { | ||
/* eslint-disable no-console */ | ||
console.error(e); | ||
/* eslint-enable no-console */ | ||
} | ||
}, 1000); | ||
})(); | ||
} | ||
return shareDialog; | ||
} | ||
@@ -64,0 +83,0 @@ |
{ | ||
"name": "react-share", | ||
"version": "1.15.1", | ||
"version": "1.16.0", | ||
"description": "Easy social media share buttons and share counts.", | ||
@@ -72,4 +72,4 @@ "main": "./lib/react-share.js", | ||
"peerDependencies": { | ||
"react": "0.13.x || 0.14.x || 15.x.x" | ||
"react": "^0.13.0 || ^0.14.0 || ^15.0.0 || ^16.0.0-0" | ||
} | ||
} |
@@ -82,2 +82,3 @@ # react-share | ||
RedditShareButton, | ||
EmailShareButton, | ||
} = ShareButtons; | ||
@@ -90,3 +91,3 @@ ``` | ||
|-------|--------|--------------| | ||
|__All__|__`children`__: A React node (e.g. string or element)<br />__`url`__: URL of the shared page (string)|__`disabled`__: Disables click action and adds `disabled` class (bool)<br/>__`disabledStyle`__: Style when button is disabled (object, default = { opacity: 0.6 })<br/>__`windowWidth`, `windowHeight`__: opened window dimensions (int, different defaults for all share buttons)<br>__`beforeOnClick`__: Takes a function that returns a Promise to be fulfilled before calling `onClick`. If you do not return promise, `onClick` is called immediately.| | ||
|__All__|__`children`__: A React node (e.g. string or element)<br />__`url`__: URL of the shared page (string)|__`disabled`__: Disables click action and adds `disabled` class (bool)<br/>__`disabledStyle`__: Style when button is disabled (object, default = { opacity: 0.6 })<br/>__`windowWidth`, `windowHeight`__: opened window dimensions (int, different defaults for all share buttons)<br>__`beforeOnClick`__: Takes a function that returns a Promise to be fulfilled before calling `onClick`. If you do not return promise, `onClick` is called immediately.<br>__`onShareWindowClose`__: Takes a function to be called after closing share dialog.| | ||
|FacebookShareButton|-|__`title`__: Title of the shared page (string)<br/>__`description`__: Description of the shared page (string)<br/>__`picture`__: An absolute link to the image that will be shared (string)| | ||
@@ -102,2 +103,3 @@ |GooglePlusShareButton|-|-| | ||
|RedditShareButton|-|__`title`__: Title of the shared page (string)| | ||
|EmailShareButton|-|__`subject`__: Title of the shared page (string)<br/>__`body`__: Body of the email (string), defaults to shared url.| | ||
@@ -152,2 +154,3 @@ ### Share counts | ||
const RedditIcon = generateShareIcon('reddit'); | ||
const EmailIcon = generateShareIcon('email'); | ||
``` | ||
@@ -154,0 +157,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
57815
933
181