@twreporter/react-article-components 2.0.0-rc.5 → 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 +20 -0
- package/lib/components/img-with-placeholder/index.js +76 -10
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,26 @@
|
|
|
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
|
+
|
|
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)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @twreporter/react-article-components
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
6
26
|
# [2.0.0-rc.5](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@2.0.0-rc.4...@twreporter/react-article-components@2.0.0-rc.5) (2024-05-20)
|
|
7
27
|
|
|
8
28
|
**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
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
13
13
|
|
|
14
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _storageUrlProcessor = require("@twreporter/core/lib/utils/storage-url-processor");
|
|
17
17
|
|
|
18
|
-
var
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
28
|
-
"@twreporter/react-components": "^9.0.
|
|
29
|
-
"@twreporter/redux": "^8.0.
|
|
30
|
-
"@twreporter/universal-header": "^3.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": "
|
|
44
|
+
"gitHead": "7e9bb7b3ac2991d660649e25e99982adae6f0f52"
|
|
45
45
|
}
|