@twreporter/react-article-components 2.0.0 → 2.1.0-rc.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,18 @@
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
+ # [2.1.0-rc.0](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@2.0.0...@twreporter/react-article-components@2.1.0-rc.0) (2024-05-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * article page show full screen image after click ([af25372](https://github.com/twreporter/twreporter-npm-packages/commit/af2537208ae236e2b8ea861ce32682295a52fd98))
12
+ * disable body scroll while image open ([46f35df](https://github.com/twreporter/twreporter-npm-packages/commit/46f35dffea145fa54a6ab981864207d5650aac1a))
13
+
14
+
15
+
16
+
17
+
6
18
  # [2.0.0](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@2.0.0-rc.5...@twreporter/react-article-components@2.0.0) (2024-05-20)
7
19
 
8
20
  **Note:** Version bump only for package @twreporter/react-article-components
@@ -7,22 +7,36 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
- var _image = require("../../utils/image");
10
+ var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _storageUrlProcessor = require("@twreporter/core/lib/utils/storage-url-processor");
12
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
- var _imgWithPlaceholder = _interopRequireDefault(require("../../constants/prop-types/img-with-placeholder"));
16
+ var _storageUrlProcessor = require("@twreporter/core/lib/utils/storage-url-processor");
17
17
 
18
- var _react = _interopRequireDefault(require("react"));
18
+ var _color = require("@twreporter/core/lib/constants/color");
19
+
20
+ var _rwd = require("@twreporter/react-components/lib/rwd");
21
+
22
+ var _icon = require("@twreporter/react-components/lib/icon");
19
23
 
20
- var _styledComponents = _interopRequireDefault(require("styled-components"));
24
+ var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch"));
25
+
26
+ var _zIndex = _interopRequireDefault(require("@twreporter/core/src/constants/z-index"));
27
+
28
+ var _image = require("../../utils/image");
29
+
30
+ var _imgWithPlaceholder = _interopRequireDefault(require("../../constants/prop-types/img-with-placeholder"));
21
31
 
22
32
  var _get = _interopRequireDefault(require("lodash/get"));
23
33
 
24
34
  var _map = _interopRequireDefault(require("lodash/map"));
25
35
 
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); }
37
+
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; }
39
+
26
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
41
 
28
42
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
@@ -125,6 +139,21 @@ var ImgBox = /*#__PURE__*/_styledComponents["default"].div.withConfig({
125
139
  })(["position:absolute;top:0;left:0;width:100%;height:100%;opacity:", ";transition:opacity 0.5s;& > img{width:100%;}"], function (props) {
126
140
  return props.$toShow ? '1' : '0';
127
141
  });
142
+
143
+ var FullScreenImageMask = /*#__PURE__*/_styledComponents["default"].div.withConfig({
144
+ displayName: "img-with-placeholder__FullScreenImageMask",
145
+ componentId: "c6mvsc-6"
146
+ })(["position:fixed;left:0px;top:0px;width:100vw;height:100vh;background-color:", ";z-index:", ";display:flex;justify-content:center;align-items:center;"], _color.colorOpacity['black_0.5'], _zIndex["default"].articleImgFullScreenMask);
147
+
148
+ var FullScreenImage = /*#__PURE__*/_styledComponents["default"].div.withConfig({
149
+ displayName: "img-with-placeholder__FullScreenImage",
150
+ componentId: "c6mvsc-7"
151
+ })(["position:relative;img{max-width:90vw;max-height:90vh;}"]);
152
+
153
+ var CrossIcon = /*#__PURE__*/_styledComponents["default"].div.withConfig({
154
+ displayName: "img-with-placeholder__CrossIcon",
155
+ componentId: "c6mvsc-8"
156
+ })(["cursor:pointer;position:absolute;top:0px;right:-40px;height:24px;width:24px;svg{background-color:", ";}"], _color.colorGrayscale.white);
128
157
  /**
129
158
  * An image element with placeholder.
130
159
  * The width and height of the image are required to preserve the space on the page for image.
@@ -147,7 +176,8 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
147
176
  _this = _super.call(this, props);
148
177
  _this.state = {
149
178
  isLoaded: false,
150
- toShowPlaceholder: true
179
+ toShowPlaceholder: true,
180
+ showFullScreenImg: false
151
181
  };
152
182
  _this._img = /*#__PURE__*/_react["default"].createRef();
153
183
  _this.handleImageLoaded = _this.handleImageLoaded.bind(_assertThisInitialized(_this));
@@ -229,7 +259,12 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
229
259
  }, {
230
260
  key: "render",
231
261
  value: function render() {
232
- var isLoaded = this.state.isLoaded;
262
+ var _this$context,
263
+ _this3 = this;
264
+
265
+ var _this$state = this.state,
266
+ isLoaded = _this$state.isLoaded,
267
+ showFullScreenImg = _this$state.showFullScreenImg;
233
268
  var _this$props2 = this.props,
234
269
  alt = _this$props2.alt,
235
270
  className = _this$props2.className,
@@ -239,6 +274,24 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
239
274
  objectFit = _this$props2.objectFit,
240
275
  objectPosition = _this$props2.objectPosition,
241
276
  sizes = _this$props2.sizes;
277
+ var releaseBranch = (this === null || this === void 0 ? void 0 : (_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.releaseBranch) || _releaseBranch["default"].release;
278
+
279
+ var openFullScreen = function openFullScreen() {
280
+ _this3.setState({
281
+ showFullScreenImg: true
282
+ });
283
+
284
+ document.body.classList.add('disable-scroll');
285
+ };
286
+
287
+ var closeFullScreen = function closeFullScreen() {
288
+ _this3.setState({
289
+ showFullScreenImg: false
290
+ });
291
+
292
+ document.body.classList.remove('disable-scroll');
293
+ };
294
+
242
295
  var appendedClassName = className + ' avoid-break';
243
296
 
244
297
  var defaultImageOriginalUrl = _.get(defaultImage, 'url');
@@ -262,9 +315,10 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
262
315
  }
263
316
 
264
317
  var defaultImageSrc = (0, _storageUrlProcessor.replaceGCSUrlOrigin)(_.get(defaultImage, 'url'));
265
- return /*#__PURE__*/_react["default"].createElement(ImgContainer, {
318
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(ImgContainer, {
266
319
  className: appendedClassName,
267
- $heightString: isObjectFit ? "height: 100%;" : "padding-top: ".concat(heightWidthRatio * 100, "%;")
320
+ $heightString: isObjectFit ? "height: 100%;" : "padding-top: ".concat(heightWidthRatio * 100, "%;"),
321
+ onClick: openFullScreen
268
322
  }, this._renderImagePlaceholder(), /*#__PURE__*/_react["default"].createElement(ImgBox, {
269
323
  $toShow: isLoaded
270
324
  }, isObjectFit ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(ImgWithObjectFit, _extends({
@@ -288,7 +342,17 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
288
342
  sizes: sizes,
289
343
  src: defaultImageSrc,
290
344
  srcSet: srcset
291
- }, imgProps))));
345
+ }, imgProps)))), showFullScreenImg && /*#__PURE__*/_react["default"].createElement(_rwd.DesktopAndAbove, null, /*#__PURE__*/_react["default"].createElement(FullScreenImageMask, {
346
+ onClick: closeFullScreen
347
+ }, /*#__PURE__*/_react["default"].createElement(FullScreenImage, null, /*#__PURE__*/_react["default"].createElement("img", {
348
+ alt: alt,
349
+ ref: this._img,
350
+ sizes: sizes,
351
+ src: defaultImageSrc,
352
+ srcSet: srcset
353
+ }), /*#__PURE__*/_react["default"].createElement(CrossIcon, null, /*#__PURE__*/_react["default"].createElement(_icon.Cross, {
354
+ releaseBranch: releaseBranch
355
+ }))))));
292
356
  }
293
357
  }]);
294
358
 
@@ -297,6 +361,8 @@ var Img = /*#__PURE__*/function (_React$PureComponent) {
297
361
 
298
362
  exports["default"] = Img;
299
363
 
364
+ _defineProperty(Img, "contextType", _styledComponents.ThemeContext);
365
+
300
366
  _defineProperty(Img, "propTypes", {
301
367
  alt: _propTypes["default"].string,
302
368
  className: _propTypes["default"].string,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twreporter/react-article-components",
3
- "version": "2.0.0",
3
+ "version": "2.1.0-rc.0",
4
4
  "description": "The Reporter react article components, which are used in article page",
5
5
  "main": "lib/components/article-page.js",
6
6
  "repository": "https://github.com/twreporter/twreporter-npm-packages.git",
@@ -24,10 +24,10 @@
24
24
  "webpack-dev-server": "^3.7.2"
25
25
  },
26
26
  "dependencies": {
27
- "@twreporter/core": "^1.21.0",
28
- "@twreporter/react-components": "^9.0.0",
29
- "@twreporter/redux": "^8.0.0",
30
- "@twreporter/universal-header": "^3.0.0",
27
+ "@twreporter/core": "^1.22.0-rc.0",
28
+ "@twreporter/react-components": "^9.0.1-rc.0",
29
+ "@twreporter/redux": "^8.0.1-rc.0",
30
+ "@twreporter/universal-header": "^3.0.1-rc.0",
31
31
  "howler": "^2.2.3",
32
32
  "lodash": "^4.17.11",
33
33
  "memoize-one": "^5.0.5",
@@ -41,5 +41,5 @@
41
41
  "files": [
42
42
  "lib"
43
43
  ],
44
- "gitHead": "ff7609c0fa1440606ca7bfc0696435fda029eac6"
44
+ "gitHead": "7e9bb7b3ac2991d660649e25e99982adae6f0f52"
45
45
  }