@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 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 _styles = _interopRequireDefault(require("./styles"));
14
+ var _shareItem = require("./share-item");
15
15
 
16
- var _barItem = _interopRequireDefault(require("./bar-item"));
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(error => {
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(_barItem.default, {
86
- onPress: this.onShare,
87
- dataTestId: "email-share",
88
- url: ""
89
- }, isLoading ? /*#__PURE__*/_react.default.createElement(_icons.IconActivityIndicator, {
90
- size: "small",
91
- style: _styles.default.activityLoader
92
- }) : /*#__PURE__*/_react.default.createElement(_icons.IconEmail, {
93
- fillColour: "currentColor",
94
- height: _styles.default.svgIcon.height,
95
- title: "Share by email"
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 = _interopRequireWildcard(require("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 _barItem = _interopRequireDefault(require("./bar-item"));
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
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
+ var _saveButton = _interopRequireDefault(require("./components/save-button"));
35
37
 
36
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
38
+ var _shareItem = require("./components/share-item");
37
39
 
38
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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
- /* eslint-disable jsx-a11y/anchor-is-valid */
43
- class SaveAndShareBar extends _react.Component {
44
- constructor(props) {
45
- super(props);
46
- this.copyToClipboard = this.copyToClipboard.bind(this);
47
- }
48
-
49
- copyToClipboard(e) {
50
- const _this$props = this.props,
51
- onCopyLink = _this$props.onCopyLink,
52
- articleUrl = _this$props.articleUrl;
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
- render() {
59
- const _this$props2 = this.props,
60
- articleId = _this$props2.articleId,
61
- articleUrl = _this$props2.articleUrl,
62
- savingEnabled = _this$props2.savingEnabled,
63
- sharingEnabled = _this$props2.sharingEnabled,
64
- onShareOnFB = _this$props2.onShareOnFB,
65
- onShareOnTwitter = _this$props2.onShareOnTwitter;
66
- return /*#__PURE__*/_react.default.createElement(_utils.TcView, {
67
- style: _styles.default.container,
68
- "data-testid": "save-and-share-bar"
69
- }, sharingEnabled && /*#__PURE__*/_react.default.createElement(_utils.TcView, {
70
- style: _styles.default.rowItem
71
- }, /*#__PURE__*/_react.default.createElement(_utils.TcText, {
72
- style: (0, _utils.checkStylesForUnits)(_styles.default.label)
73
- }, "Share"), /*#__PURE__*/_react.default.createElement(_context.SectionContext.Consumer, null, _ref => {
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({}, this.props, {
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({}, this.props, {
89
+ }, /*#__PURE__*/_react.default.createElement(_emailShare.default, _extends({}, props, {
82
90
  shouldTokenise: true,
83
91
  publicationName: publicationName
84
92
  })));
85
- }), /*#__PURE__*/_react.default.createElement(_barItem.default, {
86
- onPress: onShareOnTwitter,
87
- target: "_blank",
88
- dataTestId: "share-twitter",
89
- url: "".concat(_constants.default.twitter, "?text=").concat(articleUrl)
90
- }, /*#__PURE__*/_react.default.createElement(_icons.IconTwitter, {
91
- fillColour: "currentColor",
92
- height: _styles.default.svgIcon.height,
93
- title: "Share on Twitter"
94
- })), /*#__PURE__*/_react.default.createElement(_barItem.default, {
95
- onPress: onShareOnFB,
96
- target: "_blank",
97
- dataTestId: "share-facebook",
98
- url: "".concat(_constants.default.facebook, "?u=").concat(articleUrl)
99
- }, /*#__PURE__*/_react.default.createElement(_icons.IconFacebook, {
100
- fillColour: "currentColor",
101
- height: _styles.default.svgIcon.fb.height,
102
- title: "Share on Facebook"
103
- })), /*#__PURE__*/_react.default.createElement(_barItem.default, {
104
- color: _styles.default.svgIcon.save.strokeColour,
105
- hoverColor: _styles.default.svgIcon.hoverFillColour,
106
- onPress: this.copyToClipboard,
107
- dataTestId: "copy-to-clickboard",
108
- url: ""
109
- }, /*#__PURE__*/_react.default.createElement(_icons.IconCopyLink, {
110
- fillColour: "currentColor",
111
- height: _styles.default.svgIcon.height,
112
- title: "Copy link to clipboard"
113
- }))), savingEnabled ? /*#__PURE__*/_react.default.createElement(_userState.default, {
114
- state: _userState.default.showArticleSaveButton,
115
- serverRender: false
116
- }, /*#__PURE__*/_react.default.createElement(_utils.TcView, {
117
- style: _styles.default.rowItemRight,
118
- "data-testid": "save-star"
119
- }, /*#__PURE__*/_react.default.createElement(_tsComponents.SaveStar, {
120
- articleId: articleId
121
- }))) : null);
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;
@@ -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.19.55-alpha.8+f128cf0eff",
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": "^1.15.1",
37
- "@times-components/icons": "^2.21.19",
38
- "@times-components/link": "^3.17.13",
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.82.2-alpha.8+f128cf0eff",
43
- "@times-components/ts-styleguide": "^1.50.13",
44
- "@times-components/user-state": "^0.5.30",
45
- "@times-components/utils": "^6.20.1",
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": "^0.8.18",
51
- "@times-components/jest-configurator-web": "^0.8.1",
52
- "@times-components/jest-serializer": "^3.13.8",
53
- "@times-components/provider-test-tools": "^1.29.2",
54
- "@times-components/storybook": "^4.12.13",
55
- "@times-components/webpack-configurator": "^2.1.0",
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": "f128cf0eff2ab474f58602d164b4b0ba993a2191"
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;