@times-components/save-and-share-bar 0.19.55-alpha.8 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/{email-share.js → components/email-share.js} +18 -16
- package/dist/components/save-button.js +63 -0
- package/dist/components/share-item.js +79 -0
- package/dist/save-and-share-bar.js +105 -80
- package/dist/styled.js +27 -0
- package/dist/styles/index.js +0 -44
- package/package.json +20 -18
- package/rnw.js +1 -1
- package/dist/bar-item.js +0 -57
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.20.0](https://github.com/newsuk/times-components/compare/@times-components/save-and-share-bar@0.19.55...@times-components/save-and-share-bar@0.20.0) (2024-04-16)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **TMD-11:** redesigned article share bar ([#3800](https://github.com/newsuk/times-components/issues/3800)) ([209b1bc](https://github.com/newsuk/times-components/commit/209b1bc753b571c88b380ae65910cd8bfdd4ae6a))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [0.19.55](https://github.com/newsuk/times-components/compare/@times-components/save-and-share-bar@0.19.54...@times-components/save-and-share-bar@0.19.55) (2024-04-12)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @times-components/save-and-share-bar
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [0.19.54](https://github.com/newsuk/times-components/compare/@times-components/save-and-share-bar@0.19.53...@times-components/save-and-share-bar@0.19.54) (2024-03-25)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @times-components/save-and-share-bar
|
|
@@ -11,9 +11,11 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
11
11
|
|
|
12
12
|
var _icons = require("@times-components/icons");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _shareItem = require("./share-item");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _styled = require("../styled");
|
|
17
|
+
|
|
18
|
+
var _styles = _interopRequireDefault(require("../styles"));
|
|
17
19
|
|
|
18
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
21
|
|
|
@@ -59,11 +61,10 @@ class EmailShare extends _react.Component {
|
|
|
59
61
|
});
|
|
60
62
|
this.openMailClient(data.article.tokenisedUrl);
|
|
61
63
|
}
|
|
62
|
-
}).catch(
|
|
64
|
+
}).catch(() => {
|
|
63
65
|
this.setState({
|
|
64
66
|
isLoading: false
|
|
65
67
|
});
|
|
66
|
-
console.error("Error in connecting to api", error);
|
|
67
68
|
});
|
|
68
69
|
} else {
|
|
69
70
|
const matches = window.location.search.match(/[?&]shareToken=([^&]+)/);
|
|
@@ -82,18 +83,19 @@ class EmailShare extends _react.Component {
|
|
|
82
83
|
|
|
83
84
|
render() {
|
|
84
85
|
const isLoading = this.state.isLoading;
|
|
85
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
86
|
+
return /*#__PURE__*/_react.default.createElement(_shareItem.ShareItem, {
|
|
87
|
+
tooltipContent: "Share by email",
|
|
88
|
+
onClick: this.onShare,
|
|
89
|
+
testId: "email-share"
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_shareItem.ShareItemLabel, {
|
|
91
|
+
icon: isLoading ? /*#__PURE__*/_react.default.createElement(_styled.EmailSpinnerContainer, null, /*#__PURE__*/_react.default.createElement(_icons.IconActivityIndicator, {
|
|
92
|
+
size: "small"
|
|
93
|
+
})) : /*#__PURE__*/_react.default.createElement(_icons.IconEmail, {
|
|
94
|
+
fillColour: "currentColor",
|
|
95
|
+
height: _styles.default.svgIcon.height,
|
|
96
|
+
title: "Share by email"
|
|
97
|
+
})
|
|
98
|
+
}, "Email"));
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _icons = require("@times-components/icons");
|
|
13
|
+
|
|
14
|
+
var _Bookmark = require("@emotion-icons/bootstrap/Bookmark");
|
|
15
|
+
|
|
16
|
+
var _BookmarkFill = require("@emotion-icons/bootstrap/BookmarkFill");
|
|
17
|
+
|
|
18
|
+
var _styled = require("../styled");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
const SaveButton = props => {
|
|
23
|
+
if (props.error || !props.loading && !props.data) return null;
|
|
24
|
+
|
|
25
|
+
const _ref = props.data || {
|
|
26
|
+
isBookmarked: false
|
|
27
|
+
},
|
|
28
|
+
isBookmarked = _ref.isBookmarked;
|
|
29
|
+
|
|
30
|
+
const bookmarkIconStyles = {
|
|
31
|
+
height: 14,
|
|
32
|
+
width: 14,
|
|
33
|
+
visibility: props.loading ? "hidden" : "visible"
|
|
34
|
+
};
|
|
35
|
+
const buttonText = isBookmarked ? "Saved" : "Save";
|
|
36
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styled.StyledButton, {
|
|
37
|
+
style: {
|
|
38
|
+
width: 84,
|
|
39
|
+
height: 32
|
|
40
|
+
},
|
|
41
|
+
size: "small",
|
|
42
|
+
overrides: {
|
|
43
|
+
stylePreset: "buttonOutlinedPrimary"
|
|
44
|
+
},
|
|
45
|
+
onClick: () => props.onToggleSave(props.articleId, props.data.isBookmarked)
|
|
46
|
+
}, props.loading && /*#__PURE__*/_react.default.createElement(_styled.IconActivityIndicatorContainer, null, /*#__PURE__*/_react.default.createElement(_icons.IconActivityIndicator, null)), !isBookmarked ? /*#__PURE__*/_react.default.createElement(_Bookmark.Bookmark, {
|
|
47
|
+
style: bookmarkIconStyles
|
|
48
|
+
}) : /*#__PURE__*/_react.default.createElement(_BookmarkFill.BookmarkFill, {
|
|
49
|
+
style: bookmarkIconStyles
|
|
50
|
+
}), !props.loading ? buttonText : ""));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
SaveButton.propTypes = {
|
|
54
|
+
loading: _propTypes.default.bool,
|
|
55
|
+
error: _propTypes.default.bool,
|
|
56
|
+
data: _propTypes.default.shape({}),
|
|
57
|
+
articleId: _propTypes.default.string,
|
|
58
|
+
onToggleSave: _propTypes.default.func
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var _default = _react.default.memo(SaveButton);
|
|
62
|
+
|
|
63
|
+
exports.default = _default;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ShareItemLabel = exports.ShareItem = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _newskit = require("newskit");
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var _templateObject, _templateObject2;
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
25
|
+
|
|
26
|
+
const StyledLinkStandalone = (0, _newskit.styled)(_newskit.LinkStandalone)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n cursor: pointer;\n &:hover {\n text-decoration: none !important;\n }\n"])));
|
|
27
|
+
|
|
28
|
+
const IconContainer = _newskit.styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n"])));
|
|
29
|
+
|
|
30
|
+
const ShareItem = _ref => {
|
|
31
|
+
let children = _ref.children,
|
|
32
|
+
testId = _ref.testId,
|
|
33
|
+
tooltipContent = _ref.tooltipContent,
|
|
34
|
+
href = _ref.href,
|
|
35
|
+
_ref$onClick = _ref.onClick,
|
|
36
|
+
onClick = _ref$onClick === void 0 ? () => {} : _ref$onClick,
|
|
37
|
+
props = _objectWithoutProperties(_ref, ["children", "testId", "tooltipContent", "href", "onClick"]);
|
|
38
|
+
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(StyledLinkStandalone, _extends({
|
|
40
|
+
"data-testid": testId,
|
|
41
|
+
onClick: onClick,
|
|
42
|
+
href: href,
|
|
43
|
+
target: "_blank",
|
|
44
|
+
title: tooltipContent,
|
|
45
|
+
external: false
|
|
46
|
+
}, props), children);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.ShareItem = ShareItem;
|
|
50
|
+
|
|
51
|
+
const ShareItemLabel = _ref2 => {
|
|
52
|
+
let children = _ref2.children,
|
|
53
|
+
icon = _ref2.icon;
|
|
54
|
+
return /*#__PURE__*/_react.default.createElement(_newskit.Stack, {
|
|
55
|
+
flow: "horizontal-center",
|
|
56
|
+
spaceInline: "space020"
|
|
57
|
+
}, /*#__PURE__*/_react.default.createElement(IconContainer, null, icon), /*#__PURE__*/_react.default.createElement(_newskit.TextBlock, {
|
|
58
|
+
typographyPreset: "utilityLabel020"
|
|
59
|
+
}, children));
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.ShareItemLabel = ShareItemLabel;
|
|
63
|
+
ShareItem.propTypes = {
|
|
64
|
+
children: _propTypes.default.node.isRequired,
|
|
65
|
+
testId: _propTypes.default.string,
|
|
66
|
+
href: _propTypes.default.string,
|
|
67
|
+
onClick: _propTypes.default.func,
|
|
68
|
+
tooltipContent: _propTypes.default.string
|
|
69
|
+
};
|
|
70
|
+
ShareItem.defaultProps = {
|
|
71
|
+
testId: "share-item",
|
|
72
|
+
href: "",
|
|
73
|
+
onClick: () => {},
|
|
74
|
+
tooltipContent: ""
|
|
75
|
+
};
|
|
76
|
+
ShareItemLabel.propTypes = {
|
|
77
|
+
children: _propTypes.default.node.isRequired,
|
|
78
|
+
icon: _propTypes.default.node.isRequired
|
|
79
|
+
};
|
|
@@ -5,20 +5,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
-
var _utils = require("@times-components/utils");
|
|
13
|
-
|
|
14
12
|
var _icons = require("@times-components/icons");
|
|
15
13
|
|
|
16
14
|
var _userState = _interopRequireDefault(require("@times-components/user-state"));
|
|
17
15
|
|
|
18
16
|
var _context = require("@times-components/context");
|
|
19
17
|
|
|
18
|
+
var _newskit = require("newskit");
|
|
19
|
+
|
|
20
20
|
var _tsComponents = require("@times-components/ts-components");
|
|
21
21
|
|
|
22
|
+
var _Share = require("@emotion-icons/bootstrap/Share");
|
|
23
|
+
|
|
22
24
|
var _getTokenisedArticleUrlApi = _interopRequireDefault(require("./get-tokenised-article-url-api"));
|
|
23
25
|
|
|
24
26
|
var _withTrackEvents = _interopRequireDefault(require("./tracking/with-track-events"));
|
|
@@ -27,103 +29,124 @@ var _constants = _interopRequireDefault(require("./constants"));
|
|
|
27
29
|
|
|
28
30
|
var _styles = _interopRequireDefault(require("./styles"));
|
|
29
31
|
|
|
30
|
-
var
|
|
32
|
+
var _styled = require("./styled");
|
|
31
33
|
|
|
32
|
-
var _emailShare = _interopRequireDefault(require("./email-share"));
|
|
34
|
+
var _emailShare = _interopRequireDefault(require("./components/email-share"));
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
var _saveButton = _interopRequireDefault(require("./components/save-button"));
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
var _shareItem = require("./components/share-item");
|
|
37
39
|
|
|
38
|
-
function
|
|
40
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
41
|
|
|
40
42
|
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); }
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
44
|
+
function SaveAndShareBar(props) {
|
|
45
|
+
const articleId = props.articleId,
|
|
46
|
+
articleUrl = props.articleUrl,
|
|
47
|
+
savingEnabled = props.savingEnabled,
|
|
48
|
+
sharingEnabled = props.sharingEnabled,
|
|
49
|
+
onShareOnFB = props.onShareOnFB,
|
|
50
|
+
onShareOnTwitter = props.onShareOnTwitter,
|
|
51
|
+
isPreviewMode = props.isPreviewMode;
|
|
52
|
+
|
|
53
|
+
function copyToClipboard(e) {
|
|
54
|
+
const onCopyLink = props.onCopyLink;
|
|
53
55
|
e.preventDefault();
|
|
54
56
|
navigator.clipboard.writeText(articleUrl);
|
|
55
57
|
onCopyLink();
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
},
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(_newskit.Stack, {
|
|
61
|
+
"data-testid": "save-and-share-bar",
|
|
62
|
+
flow: "horizontal-center",
|
|
63
|
+
spaceInline: "space050",
|
|
64
|
+
overrides: {
|
|
65
|
+
paddingBlock: "14px"
|
|
66
|
+
}
|
|
67
|
+
}, sharingEnabled && /*#__PURE__*/_react.default.createElement(_styled.StyledPopover, {
|
|
68
|
+
placement: "bottom",
|
|
69
|
+
header: "Share this article",
|
|
70
|
+
overrides: {
|
|
71
|
+
minWidth: {
|
|
72
|
+
xs: "90%",
|
|
73
|
+
md: "auto"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
content: /*#__PURE__*/_react.default.createElement(_styled.PopoverContent, {
|
|
77
|
+
flow: {
|
|
78
|
+
xs: "vertical-start",
|
|
79
|
+
md: "horizontal-center"
|
|
80
|
+
}
|
|
81
|
+
}, /*#__PURE__*/_react.default.createElement(_context.SectionContext.Consumer, null, _ref => {
|
|
74
82
|
let publicationName = _ref.publicationName;
|
|
75
83
|
return /*#__PURE__*/_react.default.createElement(_userState.default, {
|
|
76
84
|
state: _userState.default.showTokenisedEmailShare,
|
|
77
|
-
fallback: /*#__PURE__*/_react.default.createElement(_emailShare.default, _extends({},
|
|
85
|
+
fallback: /*#__PURE__*/_react.default.createElement(_emailShare.default, _extends({}, props, {
|
|
78
86
|
shouldTokenise: false,
|
|
79
87
|
publicationName: publicationName
|
|
80
88
|
}))
|
|
81
|
-
}, /*#__PURE__*/_react.default.createElement(_emailShare.default, _extends({},
|
|
89
|
+
}, /*#__PURE__*/_react.default.createElement(_emailShare.default, _extends({}, props, {
|
|
82
90
|
shouldTokenise: true,
|
|
83
91
|
publicationName: publicationName
|
|
84
92
|
})));
|
|
85
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
93
|
+
}), /*#__PURE__*/_react.default.createElement(_shareItem.ShareItem, {
|
|
94
|
+
testId: "share-twitter",
|
|
95
|
+
tooltipContent: "Share on Twitter",
|
|
96
|
+
href: "".concat(_constants.default.twitter, "?text=").concat(articleUrl),
|
|
97
|
+
onClick: onShareOnTwitter
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_shareItem.ShareItemLabel, {
|
|
99
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.IconTwitter, {
|
|
100
|
+
fillColour: "currentColor",
|
|
101
|
+
height: _styles.default.svgIcon.height,
|
|
102
|
+
title: "Share on Twitter"
|
|
103
|
+
})
|
|
104
|
+
}, "Twitter")), /*#__PURE__*/_react.default.createElement(_shareItem.ShareItem, {
|
|
105
|
+
testId: "share-facebook",
|
|
106
|
+
tooltipContent: "Share on Facebook",
|
|
107
|
+
href: "".concat(_constants.default.facebook, "?u=").concat(articleUrl),
|
|
108
|
+
onClick: onShareOnFB
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement(_shareItem.ShareItemLabel, {
|
|
110
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.IconFacebook, {
|
|
111
|
+
fillColour: "currentColor",
|
|
112
|
+
height: _styles.default.svgIcon.fb.height,
|
|
113
|
+
title: "Share on Facebook"
|
|
114
|
+
})
|
|
115
|
+
}, "Facebook")), /*#__PURE__*/_react.default.createElement(_shareItem.ShareItem, {
|
|
116
|
+
testId: "copy-to-clickboard",
|
|
117
|
+
tooltipContent: "Copy link to clipboard",
|
|
118
|
+
href: "".concat(_constants.default.facebook, "?u=").concat(articleUrl),
|
|
119
|
+
onClick: copyToClipboard
|
|
120
|
+
}, /*#__PURE__*/_react.default.createElement(_shareItem.ShareItemLabel, {
|
|
121
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.IconCopyLink, {
|
|
122
|
+
fillColour: "currentColor",
|
|
123
|
+
height: _styles.default.svgIcon.height,
|
|
124
|
+
title: "Copy link to clipboard"
|
|
125
|
+
})
|
|
126
|
+
}, "Link")))
|
|
127
|
+
}, /*#__PURE__*/_react.default.createElement(_styled.StyledButton, {
|
|
128
|
+
size: "small",
|
|
129
|
+
overrides: {
|
|
130
|
+
stylePreset: "buttonOutlinedPrimary"
|
|
131
|
+
}
|
|
132
|
+
}, /*#__PURE__*/_react.default.createElement(_Share.Share, {
|
|
133
|
+
style: {
|
|
134
|
+
height: 14,
|
|
135
|
+
width: 14
|
|
136
|
+
}
|
|
137
|
+
}), "Share")), savingEnabled ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_userState.default, {
|
|
138
|
+
state: _userState.default.showArticleSaveButton,
|
|
139
|
+
serverRender: false
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
141
|
+
"data-testid": "save-star"
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_tsComponents.SaveStar, {
|
|
143
|
+
articleId: articleId
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement(_saveButton.default, null)))), isPreviewMode && /*#__PURE__*/_react.default.createElement("div", {
|
|
145
|
+
"data-testid": "save-star-preview"
|
|
146
|
+
}, /*#__PURE__*/_react.default.createElement(_tsComponents.SaveStar, {
|
|
147
|
+
isPreviewMode: true
|
|
148
|
+
}, /*#__PURE__*/_react.default.createElement(_saveButton.default, null)))) : null);
|
|
124
149
|
}
|
|
125
|
-
/* eslint-disable react/no-unused-prop-types */
|
|
126
|
-
|
|
127
150
|
|
|
128
151
|
SaveAndShareBar.propTypes = {
|
|
129
152
|
articleId: _propTypes.default.string.isRequired,
|
|
@@ -135,7 +158,8 @@ SaveAndShareBar.propTypes = {
|
|
|
135
158
|
onShareEmail: _propTypes.default.func,
|
|
136
159
|
onShareOnTwitter: _propTypes.default.func,
|
|
137
160
|
savingEnabled: _propTypes.default.bool.isRequired,
|
|
138
|
-
sharingEnabled: _propTypes.default.bool.isRequired
|
|
161
|
+
sharingEnabled: _propTypes.default.bool.isRequired,
|
|
162
|
+
isPreviewMode: _propTypes.default.bool
|
|
139
163
|
};
|
|
140
164
|
/* Serves as an indication when share links are clicked for tracking and analytics */
|
|
141
165
|
|
|
@@ -143,7 +167,8 @@ SaveAndShareBar.defaultProps = {
|
|
|
143
167
|
onShareOnFB: () => {},
|
|
144
168
|
onShareOnTwitter: () => {},
|
|
145
169
|
onShareEmail: () => {},
|
|
146
|
-
getTokenisedShareUrl: _getTokenisedArticleUrlApi.default
|
|
170
|
+
getTokenisedShareUrl: _getTokenisedArticleUrlApi.default,
|
|
171
|
+
isPreviewMode: _propTypes.default.bool = false
|
|
147
172
|
};
|
|
148
173
|
|
|
149
174
|
var _default = (0, _withTrackEvents.default)(SaveAndShareBar);
|
package/dist/styled.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PopoverContent = exports.StyledPopover = exports.EmailSpinnerContainer = exports.IconActivityIndicatorContainer = exports.StyledButton = void 0;
|
|
7
|
+
|
|
8
|
+
var _newskit = require("newskit");
|
|
9
|
+
|
|
10
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
11
|
+
|
|
12
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
13
|
+
|
|
14
|
+
const StyledButton = (0, _newskit.styled)(_newskit.Button)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n border-radius: 0;\n border-color: #333333;\n color: #333333;\n"])));
|
|
15
|
+
exports.StyledButton = StyledButton;
|
|
16
|
+
|
|
17
|
+
const IconActivityIndicatorContainer = _newskit.styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n div {\n height: 16px;\n width: 16px;\n border-right-color: #333333;\n border-width: 0.15em;\n }\n"])));
|
|
18
|
+
|
|
19
|
+
exports.IconActivityIndicatorContainer = IconActivityIndicatorContainer;
|
|
20
|
+
|
|
21
|
+
const EmailSpinnerContainer = _newskit.styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n div {\n height: 16px;\n width: 16px;\n border-right-color: #00527a;\n border-width: 0.15em;\n }\n"])));
|
|
22
|
+
|
|
23
|
+
exports.EmailSpinnerContainer = EmailSpinnerContainer;
|
|
24
|
+
const StyledPopover = (0, _newskit.styled)(_newskit.Popover)(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n ", " {\n left: 5%;\n }\n box-shadow: 0px -20px 32px 0px #11111114, 0px 4px 4px 0px #00000040 !important;\n"])), (0, _newskit.getMediaQueryFromTheme)("xs", "md"));
|
|
25
|
+
exports.StyledPopover = StyledPopover;
|
|
26
|
+
const PopoverContent = (0, _newskit.styled)(_newskit.Stack)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n gap: 24px;\n"])));
|
|
27
|
+
exports.PopoverContent = PopoverContent;
|
package/dist/styles/index.js
CHANGED
|
@@ -7,51 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _tsStyleguide = require("@times-components/ts-styleguide");
|
|
9
9
|
|
|
10
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
11
|
-
|
|
12
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
13
|
-
|
|
14
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
-
|
|
16
|
-
const ICON_SIZE = 40;
|
|
17
10
|
const styles = {
|
|
18
|
-
container: {
|
|
19
|
-
flex: 1,
|
|
20
|
-
flexDirection: "row",
|
|
21
|
-
justifyContent: "space-between",
|
|
22
|
-
paddingTop: (0, _tsStyleguide.spacing)(2),
|
|
23
|
-
paddingBottom: (0, _tsStyleguide.spacing)(2),
|
|
24
|
-
height: "100%",
|
|
25
|
-
alignItems: "center"
|
|
26
|
-
},
|
|
27
|
-
activityLoader: {
|
|
28
|
-
borderRadius: 9999,
|
|
29
|
-
height: 40,
|
|
30
|
-
overflow: "hidden",
|
|
31
|
-
width: 40
|
|
32
|
-
},
|
|
33
|
-
label: _objectSpread(_objectSpread({}, (0, _tsStyleguide.fontFactory)({
|
|
34
|
-
font: "supporting",
|
|
35
|
-
fontSize: "saveAndShare"
|
|
36
|
-
})), {}, {
|
|
37
|
-
color: _tsStyleguide.colours.functional.secondary,
|
|
38
|
-
marginRight: (0, _tsStyleguide.spacing)(2),
|
|
39
|
-
transform: "translateY(9%)"
|
|
40
|
-
}),
|
|
41
|
-
link: {
|
|
42
|
-
base: "\n margin-left: ".concat((0, _tsStyleguide.spacing)(1), ";\n cursor: pointer;\n border-radius: ").concat(ICON_SIZE, "px;\n\n &, > * {\n display: flex;\n align-items: center;\n justify-content: center;\n height: ").concat(ICON_SIZE, "px;\n width: ").concat(ICON_SIZE, "px;\n }\n\n &:hover {\n background-color: ").concat(_tsStyleguide.colours.functional.whiteGrey, ";\n }\n &:active {\n background-color: ").concat(_tsStyleguide.colours.functional.keyline, ";\n }\n ")
|
|
43
|
-
},
|
|
44
|
-
rowItem: {
|
|
45
|
-
alignItems: "center",
|
|
46
|
-
flexDirection: "row",
|
|
47
|
-
height: ICON_SIZE
|
|
48
|
-
},
|
|
49
|
-
rowItemRight: {
|
|
50
|
-
alignItems: "center",
|
|
51
|
-
flexDirection: "row",
|
|
52
|
-
height: ICON_SIZE,
|
|
53
|
-
marginLeft: "auto"
|
|
54
|
-
},
|
|
55
11
|
svgIcon: {
|
|
56
12
|
fb: {
|
|
57
13
|
height: 18
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@times-components/save-and-share-bar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Save and Share bar ",
|
|
5
5
|
"main": "dist/save-and-share-bar",
|
|
6
6
|
"dev": "src/save-and-share-bar",
|
|
@@ -32,27 +32,29 @@
|
|
|
32
32
|
},
|
|
33
33
|
"homepage": "https://github.com/newsuk/times-components#readme",
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"@emotion-icons/bootstrap": "3.27.0",
|
|
35
36
|
"@storybook/addon-knobs": "6.4.0",
|
|
36
|
-
"@times-components/context": "
|
|
37
|
-
"@times-components/icons": "
|
|
38
|
-
"@times-components/
|
|
39
|
-
"@times-components/
|
|
40
|
-
"@times-components/
|
|
41
|
-
"@times-components/
|
|
42
|
-
"@times-components/ts-
|
|
43
|
-
"@times-components/ts-styleguide": "
|
|
44
|
-
"@times-components/user-state": "
|
|
45
|
-
"@times-components/utils": "
|
|
37
|
+
"@times-components/context": "1.15.1",
|
|
38
|
+
"@times-components/icons": "2.21.19",
|
|
39
|
+
"@times-components/message-bar": "0.7.64",
|
|
40
|
+
"@times-components/provider-queries": "2.21.0",
|
|
41
|
+
"@times-components/tracking": "2.22.13",
|
|
42
|
+
"@times-components/ts-components": "1.84.0",
|
|
43
|
+
"@times-components/ts-newskit": "1.177.2",
|
|
44
|
+
"@times-components/ts-styleguide": "1.50.13",
|
|
45
|
+
"@times-components/user-state": "0.5.30",
|
|
46
|
+
"@times-components/utils": "6.20.1",
|
|
47
|
+
"newskit": "7.2.0",
|
|
46
48
|
"prop-types": "15.7.2"
|
|
47
49
|
},
|
|
48
50
|
"devDependencies": {
|
|
49
51
|
"@babel/core": "7.4.4",
|
|
50
|
-
"@times-components/eslint-config-thetimes": "
|
|
51
|
-
"@times-components/jest-configurator-web": "
|
|
52
|
-
"@times-components/jest-serializer": "
|
|
53
|
-
"@times-components/provider-test-tools": "
|
|
54
|
-
"@times-components/storybook": "
|
|
55
|
-
"@times-components/webpack-configurator": "
|
|
52
|
+
"@times-components/eslint-config-thetimes": "0.8.18",
|
|
53
|
+
"@times-components/jest-configurator-web": "0.8.1",
|
|
54
|
+
"@times-components/jest-serializer": "3.13.8",
|
|
55
|
+
"@times-components/provider-test-tools": "1.29.2",
|
|
56
|
+
"@times-components/storybook": "4.12.13",
|
|
57
|
+
"@times-components/webpack-configurator": "2.1.0",
|
|
56
58
|
"babel-jest": "24.8.0",
|
|
57
59
|
"eslint": "5.9.0",
|
|
58
60
|
"jest": "24.8.0",
|
|
@@ -73,5 +75,5 @@
|
|
|
73
75
|
"publishConfig": {
|
|
74
76
|
"access": "public"
|
|
75
77
|
},
|
|
76
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "94a399c0beb404720f398d3e4c65bd7f555f8089"
|
|
77
79
|
}
|
package/rnw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("@times-components/ts-styleguide/rnw")},function(e,t){e.exports=require("@times-components/utils/rnw")},function(e,t){e.exports=require("@times-components/icons/rnw")},function(e,t){e.exports=require("@times-components/user-state/rnw")},function(e,t){e.exports=require("prop-types")},function(e,t){e.exports=require("@times-components/context/rnw")},function(e,t){e.exports=require("@times-components/ts-components/rnw")},function(e,t){e.exports=require("@times-components/provider-queries/rnw")},function(e,t){e.exports=require("@times-components/tracking/rnw")},function(e,t){e.exports=require("@times-components/link/rnw")},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=(r(5),r(2)),i=r(3),c=r(4),l=r.n(c),s=r(6),u=r(7),d=r(8);const p=Object(a.makeClient)();var h=e=>p.query({query:d.getTokenisedArticleUrl,variables:{id:e}}),f=r(9),m="https://www.facebook.com/sharer/sharer.php",g="https://twitter.com/intent/tweet",b=r(1);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){w(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function w(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var O={container:{flex:1,flexDirection:"row",justifyContent:"space-between",paddingTop:Object(b.spacing)(2),paddingBottom:Object(b.spacing)(2),height:"100%",alignItems:"center"},activityLoader:{borderRadius:9999,height:40,overflow:"hidden",width:40},label:v(v({},Object(b.fontFactory)({font:"supporting",fontSize:"saveAndShare"})),{},{color:b.colours.functional.secondary,marginRight:Object(b.spacing)(2),transform:"translateY(9%)"}),link:{base:"\n margin-left: ".concat(Object(b.spacing)(1),";\n cursor: pointer;\n border-radius: ").concat(40,"px;\n\n &, > * {\n display: flex;\n align-items: center;\n justify-content: center;\n height: ").concat(40,"px;\n width: ").concat(40,"px;\n }\n\n &:hover {\n background-color: ").concat(b.colours.functional.whiteGrey,";\n }\n &:active {\n background-color: ").concat(b.colours.functional.keyline,";\n }\n ")},rowItem:{alignItems:"center",flexDirection:"row",height:40},rowItemRight:{alignItems:"center",flexDirection:"row",height:40,marginLeft:"auto"},svgIcon:{fb:{height:18},star:{height:18},fillColour:b.colours.functional.secondary,height:16,hoverFillColour:b.colours.functional.brandColour,save:{fillColour:b.colours.functional.white,strokeColour:b.colours.functional.secondary}}},S=r(10),I=r.n(S);function k(){return(k=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function T(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var C=e=>{let t=e.children,r=e.colour,n=void 0===r?O.svgIcon.fillColour:r,i=e.dataTestId,c=e.hoverColour,l=void 0===c?O.svgIcon.hoverFillColour:c,s=e.onPress,u=void 0===s?()=>{}:s,d=T(e,["children","colour","dataTestId","hoverColour","onPress"]);return o.a.createElement(a.TcView,{"data-testid":i},o.a.createElement(I.a,k({onPress:u,responsiveLinkStyles:O.link},d),o.a.createElement(a.HoverIcon,{colour:n,hoverColour:l},t)))};class j extends n.Component{constructor(e){super(e),this.state={isLoading:!1},this.onShare=this.onShare.bind(this)}onShare(e){const t=this.props,r=t.articleId,n=t.getTokenisedShareUrl,o=t.shouldTokenise,a=t.articleUrl,i=t.onShareEmail,c=t.articleHeadline;if(e.preventDefault(),i({articleId:r,articleUrl:a,articleHeadline:c}),o)this.setState({isLoading:!0}),n(r).then(e=>{const t=e.data;t&&t.article&&(this.setState({isLoading:!1}),this.openMailClient(t.article.tokenisedUrl))}).catch(e=>{this.setState({isLoading:!1}),console.error("Error in connecting to api",e)});else{const e=window.location.search.match(/[?&]shareToken=([^&]+)/);this.openMailClient(e?"".concat(a,"?shareToken=").concat(e[1]):a)}}openMailClient(e){const t=this.props,r=t.articleHeadline,n="TIMES"!==t.publicationName?"The Sunday Times":"The Times",o="mailto:?subject=".concat(r," from ").concat(n,"&body=I thought you would be interested in this story from ").concat(n,"%0A%0A").concat(r,"%0A%0A").concat(e);window.location.assign(o)}render(){const e=this.state.isLoading;return o.a.createElement(C,{onPress:this.onShare,dataTestId:"email-share",url:""},e?o.a.createElement(i.IconActivityIndicator,{size:"small",style:O.activityLoader}):o.a.createElement(i.IconEmail,{fillColour:"currentColor",height:O.svgIcon.height,title:"Share by email"}))}}j.defaultProps={publicationName:"TIMES"};var E=j;function x(){return(x=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}class P extends n.Component{constructor(e){super(e),this.copyToClipboard=this.copyToClipboard.bind(this)}copyToClipboard(e){const t=this.props,r=t.onCopyLink,n=t.articleUrl;e.preventDefault(),navigator.clipboard.writeText(n),r()}render(){const e=this.props,t=e.articleId,r=e.articleUrl,n=e.savingEnabled,c=e.sharingEnabled,d=e.onShareOnFB,p=e.onShareOnTwitter;return o.a.createElement(a.TcView,{style:O.container,"data-testid":"save-and-share-bar"},c&&o.a.createElement(a.TcView,{style:O.rowItem},o.a.createElement(a.TcText,{style:Object(a.checkStylesForUnits)(O.label)},"Share"),o.a.createElement(s.SectionContext.Consumer,null,e=>{let t=e.publicationName;return o.a.createElement(l.a,{state:l.a.showTokenisedEmailShare,fallback:o.a.createElement(E,x({},this.props,{shouldTokenise:!1,publicationName:t}))},o.a.createElement(E,x({},this.props,{shouldTokenise:!0,publicationName:t})))}),o.a.createElement(C,{onPress:p,target:"_blank",dataTestId:"share-twitter",url:"".concat(g,"?text=").concat(r)},o.a.createElement(i.IconTwitter,{fillColour:"currentColor",height:O.svgIcon.height,title:"Share on Twitter"})),o.a.createElement(C,{onPress:d,target:"_blank",dataTestId:"share-facebook",url:"".concat(m,"?u=").concat(r)},o.a.createElement(i.IconFacebook,{fillColour:"currentColor",height:O.svgIcon.fb.height,title:"Share on Facebook"})),o.a.createElement(C,{color:O.svgIcon.save.strokeColour,hoverColor:O.svgIcon.hoverFillColour,onPress:this.copyToClipboard,dataTestId:"copy-to-clickboard",url:""},o.a.createElement(i.IconCopyLink,{fillColour:"currentColor",height:O.svgIcon.height,title:"Copy link to clipboard"}))),n?o.a.createElement(l.a,{state:l.a.showArticleSaveButton,serverRender:!1},o.a.createElement(a.TcView,{style:O.rowItemRight,"data-testid":"save-star"},o.a.createElement(u.SaveStar,{articleId:t}))):null)}}P.defaultProps={onShareOnFB:()=>{},onShareOnTwitter:()=>{},onShareEmail:()=>{},getTokenisedShareUrl:h};var A;t.default=(A=P,Object(f.withTrackEvents)(A,{analyticsEvents:[{actionName:"Pressed",eventName:"onSaveToMyArticles",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleSaveToMyArticles"},{actionName:"Pressed",eventName:"onShareEmail",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareUrlByEmail"},{actionName:"Pressed",eventName:"onCopyLink",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleCopyLink"},{actionName:"Pressed",eventName:"onShareOnFB",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareOnFacebook"},{actionName:"Pressed",eventName:"onShareOnTwitter",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareOnTwitter"}]}))}]);
|
|
1
|
+
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=14)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("newskit")},function(e,t){e.exports=require("@times-components/icons/rnw")},function(e,t){e.exports=require("prop-types")},function(e,t){e.exports=require("@times-components/user-state/rnw")},function(e,t){e.exports=require("@times-components/ts-styleguide/rnw")},function(e,t){e.exports=require("@times-components/ts-components/rnw")},function(e,t){e.exports=require("@times-components/context/rnw")},function(e,t){e.exports=require("@emotion-icons/bootstrap/Share")},function(e,t){e.exports=require("@times-components/provider-queries/rnw")},function(e,t){e.exports=require("@times-components/utils/rnw")},function(e,t){e.exports=require("@times-components/tracking/rnw")},function(e,t){e.exports=require("@emotion-icons/bootstrap/Bookmark")},function(e,t){e.exports=require("@emotion-icons/bootstrap/BookmarkFill")},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),a=n(3),i=n.n(a),l=n(2),c=n(4),s=n.n(c),d=n(7),u=n(1),h=n(6),m=n(8),p=n(9),f=n(10);const b=Object(f.makeClient)();var v=e=>b.query({query:p.getTokenisedArticleUrl,variables:{id:e}}),g=n(11),y="https://www.facebook.com/sharer/sharer.php",k="https://twitter.com/intent/tweet",S=n(5);var w,E,x,O,C,I={svgIcon:{fb:{height:18},star:{height:18},fillColour:S.colours.functional.secondary,height:16,hoverFillColour:S.colours.functional.brandColour,save:{fillColour:S.colours.functional.white,strokeColour:S.colours.functional.secondary}}};function T(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const j=Object(u.styled)(u.Button)(w||(w=T(["\n position: relative;\n border-radius: 0;\n border-color: #333333;\n color: #333333;\n"]))),P=u.styled.div(E||(E=T(["\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n\n div {\n height: 16px;\n width: 16px;\n border-right-color: #333333;\n border-width: 0.15em;\n }\n"]))),A=u.styled.div(x||(x=T(["\n div {\n height: 16px;\n width: 16px;\n border-right-color: #00527a;\n border-width: 0.15em;\n }\n"]))),N=Object(u.styled)(u.Popover)(O||(O=T(["\n "," {\n left: 5%;\n }\n box-shadow: 0px -20px 32px 0px #11111114, 0px 4px 4px 0px #00000040 !important;\n"])),Object(u.getMediaQueryFromTheme)("xs","md")),q=Object(u.styled)(u.Stack)(C||(C=T(["\n gap: 24px;\n"])));var B,M;function F(){return(F=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function H(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function L(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const z=Object(u.styled)(u.LinkStandalone)(B||(B=L(["\n cursor: pointer;\n &:hover {\n text-decoration: none !important;\n }\n"]))),U=u.styled.div(M||(M=L(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n"]))),_=e=>{let t=e.children,n=e.testId,r=e.tooltipContent,a=e.href,i=e.onClick,l=void 0===i?()=>{}:i,c=H(e,["children","testId","tooltipContent","href","onClick"]);return o.a.createElement(z,F({"data-testid":n,onClick:l,href:a,target:"_blank",title:r,external:!1},c),t)},D=e=>{let t=e.children,n=e.icon;return o.a.createElement(u.Stack,{flow:"horizontal-center",spaceInline:"space020"},o.a.createElement(U,null,n),o.a.createElement(u.TextBlock,{typographyPreset:"utilityLabel020"},t))};_.defaultProps={testId:"share-item",href:"",onClick:()=>{},tooltipContent:""};class Q extends r.Component{constructor(e){super(e),this.state={isLoading:!1},this.onShare=this.onShare.bind(this)}onShare(e){const t=this.props,n=t.articleId,r=t.getTokenisedShareUrl,o=t.shouldTokenise,a=t.articleUrl,i=t.onShareEmail,l=t.articleHeadline;if(e.preventDefault(),i({articleId:n,articleUrl:a,articleHeadline:l}),o)this.setState({isLoading:!0}),r(n).then(e=>{const t=e.data;t&&t.article&&(this.setState({isLoading:!1}),this.openMailClient(t.article.tokenisedUrl))}).catch(()=>{this.setState({isLoading:!1})});else{const e=window.location.search.match(/[?&]shareToken=([^&]+)/);this.openMailClient(e?"".concat(a,"?shareToken=").concat(e[1]):a)}}openMailClient(e){const t=this.props,n=t.articleHeadline,r="TIMES"!==t.publicationName?"The Sunday Times":"The Times",o="mailto:?subject=".concat(n," from ").concat(r,"&body=I thought you would be interested in this story from ").concat(r,"%0A%0A").concat(n,"%0A%0A").concat(e);window.location.assign(o)}render(){const e=this.state.isLoading;return o.a.createElement(_,{tooltipContent:"Share by email",onClick:this.onShare,testId:"email-share"},o.a.createElement(D,{icon:e?o.a.createElement(A,null,o.a.createElement(l.IconActivityIndicator,{size:"small"})):o.a.createElement(l.IconEmail,{fillColour:"currentColor",height:I.svgIcon.height,title:"Share by email"})},"Email"))}}Q.defaultProps={publicationName:"TIMES"};var R=Q,W=n(12),G=n(13);var J=o.a.memo(e=>{if(e.error||!e.loading&&!e.data)return null;const t=(e.data||{isBookmarked:!1}).isBookmarked,n={height:14,width:14,visibility:e.loading?"hidden":"visible"},r=t?"Saved":"Save";return o.a.createElement(o.a.Fragment,null,o.a.createElement(j,{style:{width:84,height:32},size:"small",overrides:{stylePreset:"buttonOutlinedPrimary"},onClick:()=>e.onToggleSave(e.articleId,e.data.isBookmarked)},e.loading&&o.a.createElement(P,null,o.a.createElement(l.IconActivityIndicator,null)),t?o.a.createElement(G.BookmarkFill,{style:n}):o.a.createElement(W.Bookmark,{style:n}),e.loading?"":r))});function K(){return(K=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function V(e){const t=e.articleId,n=e.articleUrl,r=e.savingEnabled,a=e.sharingEnabled,i=e.onShareOnFB,c=e.onShareOnTwitter,p=e.isPreviewMode;return o.a.createElement(u.Stack,{"data-testid":"save-and-share-bar",flow:"horizontal-center",spaceInline:"space050",overrides:{paddingBlock:"14px"}},a&&o.a.createElement(N,{placement:"bottom",header:"Share this article",overrides:{minWidth:{xs:"90%",md:"auto"}},content:o.a.createElement(q,{flow:{xs:"vertical-start",md:"horizontal-center"}},o.a.createElement(d.SectionContext.Consumer,null,t=>{let n=t.publicationName;return o.a.createElement(s.a,{state:s.a.showTokenisedEmailShare,fallback:o.a.createElement(R,K({},e,{shouldTokenise:!1,publicationName:n}))},o.a.createElement(R,K({},e,{shouldTokenise:!0,publicationName:n})))}),o.a.createElement(_,{testId:"share-twitter",tooltipContent:"Share on Twitter",href:"".concat(k,"?text=").concat(n),onClick:c},o.a.createElement(D,{icon:o.a.createElement(l.IconTwitter,{fillColour:"currentColor",height:I.svgIcon.height,title:"Share on Twitter"})},"Twitter")),o.a.createElement(_,{testId:"share-facebook",tooltipContent:"Share on Facebook",href:"".concat(y,"?u=").concat(n),onClick:i},o.a.createElement(D,{icon:o.a.createElement(l.IconFacebook,{fillColour:"currentColor",height:I.svgIcon.fb.height,title:"Share on Facebook"})},"Facebook")),o.a.createElement(_,{testId:"copy-to-clickboard",tooltipContent:"Copy link to clipboard",href:"".concat(y,"?u=").concat(n),onClick:function(t){const r=e.onCopyLink;t.preventDefault(),navigator.clipboard.writeText(n),r()}},o.a.createElement(D,{icon:o.a.createElement(l.IconCopyLink,{fillColour:"currentColor",height:I.svgIcon.height,title:"Copy link to clipboard"})},"Link")))},o.a.createElement(j,{size:"small",overrides:{stylePreset:"buttonOutlinedPrimary"}},o.a.createElement(m.Share,{style:{height:14,width:14}}),"Share")),r?o.a.createElement(o.a.Fragment,null,o.a.createElement(s.a,{state:s.a.showArticleSaveButton,serverRender:!1},o.a.createElement("div",{"data-testid":"save-star"},o.a.createElement(h.SaveStar,{articleId:t},o.a.createElement(J,null)))),p&&o.a.createElement("div",{"data-testid":"save-star-preview"},o.a.createElement(h.SaveStar,{isPreviewMode:!0},o.a.createElement(J,null)))):null)}V.defaultProps={onShareOnFB:()=>{},onShareOnTwitter:()=>{},onShareEmail:()=>{},getTokenisedShareUrl:v,isPreviewMode:i.a.bool=!1};var X;t.default=(X=V,Object(g.withTrackEvents)(X,{analyticsEvents:[{actionName:"Pressed",eventName:"onSaveToMyArticles",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleSaveToMyArticles"},{actionName:"Pressed",eventName:"onShareEmail",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareUrlByEmail"},{actionName:"Pressed",eventName:"onCopyLink",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleCopyLink"},{actionName:"Pressed",eventName:"onShareOnFB",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareOnFacebook"},{actionName:"Pressed",eventName:"onShareOnTwitter",getAttrs:e=>({articleId:e.articleId,articleHeadline:e.articleHeadline}),trackingName:"ArticleShareOnTwitter"}]}))}]);
|
package/dist/bar-item.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
|
-
var _utils = require("@times-components/utils");
|
|
11
|
-
|
|
12
|
-
var _link = _interopRequireDefault(require("@times-components/link"));
|
|
13
|
-
|
|
14
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
-
|
|
16
|
-
var _styles = _interopRequireDefault(require("./styles"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
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); }
|
|
21
|
-
|
|
22
|
-
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; }
|
|
23
|
-
|
|
24
|
-
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; }
|
|
25
|
-
|
|
26
|
-
/* eslint-disable jsx-a11y/anchor-is-valid, react/require-default-props */
|
|
27
|
-
const BarItem = _ref => {
|
|
28
|
-
let children = _ref.children,
|
|
29
|
-
_ref$colour = _ref.colour,
|
|
30
|
-
colour = _ref$colour === void 0 ? _styles.default.svgIcon.fillColour : _ref$colour,
|
|
31
|
-
dataTestId = _ref.dataTestId,
|
|
32
|
-
_ref$hoverColour = _ref.hoverColour,
|
|
33
|
-
hoverColour = _ref$hoverColour === void 0 ? _styles.default.svgIcon.hoverFillColour : _ref$hoverColour,
|
|
34
|
-
_ref$onPress = _ref.onPress,
|
|
35
|
-
onPress = _ref$onPress === void 0 ? () => {} : _ref$onPress,
|
|
36
|
-
props = _objectWithoutProperties(_ref, ["children", "colour", "dataTestId", "hoverColour", "onPress"]);
|
|
37
|
-
|
|
38
|
-
return /*#__PURE__*/_react.default.createElement(_utils.TcView, {
|
|
39
|
-
"data-testid": dataTestId
|
|
40
|
-
}, /*#__PURE__*/_react.default.createElement(_link.default, _extends({
|
|
41
|
-
onPress: onPress,
|
|
42
|
-
responsiveLinkStyles: _styles.default.link
|
|
43
|
-
}, props), /*#__PURE__*/_react.default.createElement(_utils.HoverIcon, {
|
|
44
|
-
colour: colour,
|
|
45
|
-
hoverColour: hoverColour
|
|
46
|
-
}, children)));
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
BarItem.propTypes = {
|
|
50
|
-
children: _propTypes.default.node.isRequired,
|
|
51
|
-
colour: _propTypes.default.string,
|
|
52
|
-
dataTestId: _propTypes.default.string,
|
|
53
|
-
hoverColour: _propTypes.default.string,
|
|
54
|
-
onPress: _propTypes.default.func
|
|
55
|
-
};
|
|
56
|
-
var _default = BarItem;
|
|
57
|
-
exports.default = _default;
|