@twreporter/react-components 8.17.0-rc.1 → 8.17.0-rc.10

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.
Files changed (86) hide show
  1. package/CHANGELOG.md +291 -788
  2. package/lib/button/components/iconButton.js +7 -5
  3. package/lib/button/components/iconWithTextButton.js +7 -6
  4. package/lib/button/components/link.js +84 -0
  5. package/lib/button/components/pillButton.js +35 -17
  6. package/lib/button/components/textButton.js +17 -14
  7. package/lib/button/constants/index.js +2 -15
  8. package/lib/button/enums/index.js +22 -0
  9. package/lib/button/index.js +10 -1
  10. package/lib/button/stories/iconButton.stories.js +10 -8
  11. package/lib/button/stories/iconWithTextButton.stories.js +4 -4
  12. package/lib/button/stories/link.stories.js +81 -0
  13. package/lib/button/stories/pillButton.stories.js +51 -20
  14. package/lib/button/stories/textButton.stories.js +52 -23
  15. package/lib/button/utils/size.js +2 -2
  16. package/lib/button/utils/theme.js +85 -43
  17. package/lib/card/components/article-card.js +192 -0
  18. package/lib/card/components/dialog.js +6 -3
  19. package/lib/card/index.js +10 -1
  20. package/lib/card/stories/articleCard.stories.js +55 -0
  21. package/lib/card/stories/dialog.stories.js +7 -2
  22. package/lib/checkbox/checkbox.stories.js +39 -0
  23. package/lib/checkbox/index.js +99 -0
  24. package/lib/divider.js +8 -2
  25. package/lib/divider.stories.js +3 -3
  26. package/lib/icon/enum/index.js +34 -0
  27. package/lib/icon/index.js +99 -222
  28. package/lib/icon/stories/arrow.stories.js +7 -7
  29. package/lib/icon/stories/article.stories.js +2 -2
  30. package/lib/icon/stories/bookmark.stories.js +6 -6
  31. package/lib/icon/stories/clock.stories.js +2 -2
  32. package/lib/icon/stories/copy.stories.js +2 -2
  33. package/lib/icon/stories/cross.stories.js +2 -2
  34. package/lib/icon/stories/hamburger.stories.js +2 -2
  35. package/lib/icon/stories/home.stories.js +2 -2
  36. package/lib/icon/stories/letter.stories.js +29 -0
  37. package/lib/icon/stories/loading.stories.js +2 -2
  38. package/lib/icon/stories/member.stories.js +2 -2
  39. package/lib/icon/stories/printer.stories.js +2 -2
  40. package/lib/icon/stories/search.stories.js +2 -2
  41. package/lib/icon/stories/share.stories.js +2 -2
  42. package/lib/icon/stories/socialMedia.stories.js +7 -25
  43. package/lib/icon/stories/text.stories.js +2 -2
  44. package/lib/icon/stories/topic.stories.js +2 -2
  45. package/lib/image-with-fallback.js +141 -0
  46. package/lib/input/components/search-bar.js +6 -4
  47. package/lib/input/enums/index.js +11 -0
  48. package/lib/input/stories/search-bar.stories.js +8 -7
  49. package/lib/input/utils/theme.js +5 -3
  50. package/lib/listing-page/components/card-list.js +165 -0
  51. package/lib/listing-page/components/image.js +3 -0
  52. package/lib/listing-page/components/list.js +13 -8
  53. package/lib/listing-page/constants/prop-types.js +25 -0
  54. package/lib/listing-page/index.js +10 -1
  55. package/lib/listing-page/stories/cardList.stories.js +83 -0
  56. package/lib/logo/components/logo-header.js +8 -2
  57. package/lib/logo/components/logo-loading-fallback.js +43 -0
  58. package/lib/logo/components/logo-symbol.js +9 -2
  59. package/lib/logo/index.js +10 -1
  60. package/lib/logo/stories/logoFooter.stories.js +2 -2
  61. package/lib/logo/stories/logoHeader.stories.js +3 -3
  62. package/lib/logo/stories/logoLoadingFallback.stories.js +29 -0
  63. package/lib/logo/stories/logoSymbol.stories.js +3 -3
  64. package/lib/logo/utils/path.js +5 -0
  65. package/lib/material-icon.js +53 -0
  66. package/lib/pagination/index.js +8 -5
  67. package/lib/shared-enum.js +11 -0
  68. package/lib/snack-bar/components/snack-bar.js +2 -1
  69. package/lib/snack-bar/stories/snackBar.stories.js +4 -4
  70. package/lib/storybook/constants/index.js +27 -0
  71. package/lib/storybook/utils/get-enum-arg.js +18 -0
  72. package/lib/text/constants/headline-type.js +5 -24
  73. package/lib/text/enums/index.js +17 -0
  74. package/lib/text/headline.js +5 -2
  75. package/lib/text/paragraph.js +9 -6
  76. package/lib/text/stories/headline.stories.js +5 -3
  77. package/lib/text/stories/paragraph.stories.js +5 -3
  78. package/lib/title-bar/components/bar.js +2 -2
  79. package/lib/title-bar/components/tab.js +2 -2
  80. package/package.json +5 -4
  81. package/lib/button/constants/size.js +0 -28
  82. package/lib/button/constants/type.js +0 -28
  83. package/lib/input/constants/type.js +0 -20
  84. package/lib/text/constants/font-weight.js +0 -29
  85. package/lib/text/link.js +0 -87
  86. package/lib/text/stories/link.stories.js +0 -42
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Loading',
18
18
  component: _index.Loading,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Member',
18
18
  component: _index.Member,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Printer',
18
18
  component: _index.Printer,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Search',
18
18
  component: _index.Search,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Share',
18
18
  component: _index.Share,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -7,45 +7,27 @@ exports.socialMedia = exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _getEnumArg = require("../../storybook/utils/get-enum-arg");
11
11
 
12
12
  var _index = require("../index");
13
13
 
14
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
14
+ var _constants = require("../../storybook/constants");
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
17
 
18
- var SocialMedia = function SocialMedia(_ref) {
19
- var mediaType = _ref.mediaType,
20
- releaseBranch = _ref.releaseBranch;
21
- return /*#__PURE__*/_react["default"].createElement(_index.Icon, {
22
- filename: mediaType,
23
- releaseBranch: releaseBranch
24
- });
25
- };
26
-
27
- SocialMedia.propTypes = {
28
- mediaType: _propTypes["default"].oneOf(['facebook', 'instagram', 'medium', 'twitter', 'youtube', 'line']),
29
- releaseBranch: _releaseBranch.BRANCH_PROP_TYPES
30
- };
31
18
  var _default = {
32
19
  title: 'Icon/Social Media',
33
- component: SocialMedia,
20
+ component: _index.SocialMedia,
34
21
  argTypes: {
35
- mediaType: {
36
- defaultValue: 'facebook',
37
- options: ['facebook', 'instagram', 'medium', 'twitter', 'youtube', 'line'],
38
- control: {
39
- type: 'radio'
40
- }
41
- },
42
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
22
+ type: (0, _getEnumArg.getRadioArg)(_index.SocialMedia.Type, _index.SocialMedia.Type.MASK),
23
+ mediaType: (0, _getEnumArg.getRadioArg)(_index.SocialMedia.MediaType, _index.SocialMedia.MediaType.GOOGLE),
24
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
43
25
  }
44
26
  };
45
27
  exports["default"] = _default;
46
28
 
47
29
  var socialMedia = function socialMedia(args) {
48
- return /*#__PURE__*/_react["default"].createElement(SocialMedia, args);
30
+ return /*#__PURE__*/_react["default"].createElement(_index.SocialMedia, args);
49
31
  };
50
32
 
51
33
  exports.socialMedia = socialMedia;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Text',
18
18
  component: _index.Text,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _index = require("../index");
11
11
 
12
- var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
12
+ var _constants = require("../../storybook/constants");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
 
@@ -17,7 +17,7 @@ var _default = {
17
17
  title: 'Icon/Topic',
18
18
  component: _index.Topic,
19
19
  argTypes: {
20
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
20
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE
21
21
  }
22
22
  };
23
23
  exports["default"] = _default;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+
16
+ var _logo = require("./logo");
17
+
18
+ var _storageUrlProcessor = require("@twreporter/core/lib/utils/storage-url-processor");
19
+
20
+ var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
21
+
22
+ var _get = _interopRequireDefault(require("lodash/get"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
31
+
32
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
+
34
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
35
+
36
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
37
+
38
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
39
+
40
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
41
+
42
+ var _ = {
43
+ get: _get["default"]
44
+ };
45
+
46
+ var ImgContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
47
+ displayName: "image-with-fallback__ImgContainer",
48
+ componentId: "qk0kiz-0"
49
+ })(["width:100%;height:100%;position:relative;"]);
50
+
51
+ var ImgObjectFit = /*#__PURE__*/(0, _styledComponents["default"])(ImgContainer).withConfig({
52
+ displayName: "image-with-fallback__ImgObjectFit",
53
+ componentId: "qk0kiz-1"
54
+ })(["opacity:", ";transition:opacity 1s ease;> img{width:100%;height:100%;object-fit:cover;}"], function (props) {
55
+ return props.opacity;
56
+ });
57
+ var ImgFallback = /*#__PURE__*/(0, _styledComponents["default"])(ImgContainer).withConfig({
58
+ displayName: "image-with-fallback__ImgFallback",
59
+ componentId: "qk0kiz-2"
60
+ })(["background-size:cover;background-image:", ";background-position:center center;"], function (props) {
61
+ return "url(".concat((0, _storageUrlProcessor.replaceGCSUrlOrigin)(_.get(props, 'url')), ")");
62
+ });
63
+ var LogoCenteringBlock = /*#__PURE__*/(0, _styledComponents["default"])(ImgContainer).withConfig({
64
+ displayName: "image-with-fallback__LogoCenteringBlock",
65
+ componentId: "qk0kiz-3"
66
+ })(["position:absolute;justify-content:center;align-items:center;background-color:white;display:", ";> img{width:65%;height:65%;}"], function (props) {
67
+ return props.display;
68
+ });
69
+
70
+ var Image = function Image(_ref) {
71
+ var src = _ref.src,
72
+ _ref$alt = _ref.alt,
73
+ alt = _ref$alt === void 0 ? '' : _ref$alt,
74
+ _ref$srcSet = _ref.srcSet,
75
+ srcSet = _ref$srcSet === void 0 ? '' : _ref$srcSet,
76
+ _ref$releaseBranch = _ref.releaseBranch,
77
+ releaseBranch = _ref$releaseBranch === void 0 ? _releaseBranch.BRANCH.master : _ref$releaseBranch;
78
+
79
+ var _useState = (0, _react.useState)(false),
80
+ _useState2 = _slicedToArray(_useState, 2),
81
+ isObjectFit = _useState2[0],
82
+ setIsObjectFit = _useState2[1];
83
+
84
+ var _useState3 = (0, _react.useState)(false),
85
+ _useState4 = _slicedToArray(_useState3, 2),
86
+ isImgOnLoad = _useState4[0],
87
+ setIsImgOnLoad = _useState4[1];
88
+
89
+ var imgNode = (0, _react.useRef)(null);
90
+ (0, _react.useEffect)(function () {
91
+ setIsObjectFit('objectFit' in _.get(document, 'documentElement.style'));
92
+ }, []); // Check if img is already loaded, and cached on the browser.
93
+ // If cached, React.img won't trigger onLoad event.
94
+ // Hence, we need to trigger re-rendering.
95
+
96
+ (0, _react.useEffect)(function () {
97
+ if (!imgNode.current) {
98
+ return;
99
+ }
100
+
101
+ setIsImgOnLoad(imgNode.current.complete);
102
+ }, [imgNode]);
103
+
104
+ var handleImgOnLoad = function handleImgOnLoad() {
105
+ setIsImgOnLoad(true);
106
+ };
107
+
108
+ var logoDisplay = 'flex';
109
+
110
+ if (!isObjectFit) {
111
+ logoDisplay = 'none';
112
+ } else if (isImgOnLoad) {
113
+ logoDisplay = 'none';
114
+ }
115
+
116
+ var ImgJSX = isObjectFit ? /*#__PURE__*/_react["default"].createElement(ImgObjectFit, {
117
+ opacity: isImgOnLoad ? 1 : 0
118
+ }, /*#__PURE__*/_react["default"].createElement("img", {
119
+ ref: imgNode,
120
+ alt: alt,
121
+ src: (0, _storageUrlProcessor.replaceGCSUrlOrigin)(src),
122
+ srcSet: srcSet,
123
+ onLoad: handleImgOnLoad
124
+ })) : /*#__PURE__*/_react["default"].createElement(ImgFallback, {
125
+ url: (0, _storageUrlProcessor.replaceGCSUrlOrigin)(src)
126
+ });
127
+ return /*#__PURE__*/_react["default"].createElement(ImgContainer, null, /*#__PURE__*/_react["default"].createElement(LogoCenteringBlock, {
128
+ display: logoDisplay
129
+ }, /*#__PURE__*/_react["default"].createElement(_logo.LogoFallback, {
130
+ releaseBranch: releaseBranch
131
+ })), ImgJSX);
132
+ };
133
+
134
+ Image.propTypes = {
135
+ alt: _propTypes["default"].string,
136
+ src: _propTypes["default"].string.isRequired,
137
+ srcSet: _propTypes["default"].string,
138
+ releaseBranch: _releaseBranch.BRANCH_PROP_TYPES
139
+ };
140
+ var _default = Image;
141
+ exports["default"] = _default;
@@ -15,7 +15,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
15
 
16
16
  var _theme = require("../utils/theme");
17
17
 
18
- var _type = require("../constants/type");
18
+ var _enums = require("../enums");
19
19
 
20
20
  var _icon = require("../../icon");
21
21
 
@@ -117,7 +117,7 @@ var SearchBar = function SearchBar(_ref) {
117
117
  _ref$autofocus = _ref.autofocus,
118
118
  autofocus = _ref$autofocus === void 0 ? true : _ref$autofocus,
119
119
  _ref$widthType = _ref.widthType,
120
- widthType = _ref$widthType === void 0 ? _type.WIDTH_TYPE.fit : _ref$widthType,
120
+ widthType = _ref$widthType === void 0 ? _enums.WidthType.FIT : _ref$widthType,
121
121
  props = _objectWithoutProperties(_ref, _excluded);
122
122
 
123
123
  var _useState = (0, _react.useState)(''),
@@ -209,13 +209,15 @@ var SearchBar = function SearchBar(_ref) {
209
209
 
210
210
  SearchBar.propTypes = {
211
211
  placeholder: _propTypes["default"].string,
212
- theme: _theme2.THEME_PROP_TYPES,
212
+ theme: _propTypes["default"].oneOf(Object.values(_theme2.THEME)),
213
213
  releaseBranch: _releaseBranch.BRANCH_PROP_TYPES,
214
214
  onSearch: _propTypes["default"].func,
215
215
  onClose: _propTypes["default"].func,
216
216
  handleBlur: _propTypes["default"].func,
217
217
  autofocus: _propTypes["default"].bool,
218
- widthType: _type.WIDTH_PROP_TYPE
218
+ widthType: _propTypes["default"].oneOf(Object.values(_enums.WidthType))
219
219
  };
220
+ SearchBar.THEME = _theme2.THEME;
221
+ SearchBar.WidthType = _enums.WidthType;
220
222
  var _default = SearchBar;
221
223
  exports["default"] = _default;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WidthType = void 0;
7
+ var WidthType = Object.freeze({
8
+ FIT: 'fit',
9
+ STRETCH: 'stretch'
10
+ });
11
+ exports.WidthType = WidthType;
@@ -7,22 +7,23 @@ exports.searchBar = exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
+ var _getEnumArg = require("../../storybook/utils/get-enum-arg");
11
+
10
12
  var _searchBar = _interopRequireDefault(require("../components/search-bar"));
11
13
 
12
- var _type = require("../constants/type");
14
+ var _constants = require("../../storybook/constants");
13
15
 
14
16
  var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
15
17
 
16
- var _theme = require("@twreporter/core/lib/constants/theme");
17
-
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
19
 
20
20
  var _default = {
21
21
  title: 'Input/Search Bar',
22
22
  component: _searchBar["default"],
23
23
  argTypes: {
24
- releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE,
25
- theme: _theme.THEME_STORYBOOK_ARG_TYPE
24
+ widthType: (0, _getEnumArg.getRadioArg)(_searchBar["default"].WidthType, _searchBar["default"].WidthType.FIT),
25
+ releaseBranch: _constants.BRANCH_STORYBOOK_ARG_TYPE,
26
+ theme: _constants.THEME_STORYBOOK_ARG_TYPE
26
27
  }
27
28
  };
28
29
  exports["default"] = _default;
@@ -47,10 +48,10 @@ var onClose = function onClose() {
47
48
 
48
49
  searchBar.args = {
49
50
  placeholder: '關鍵字搜尋',
50
- theme: _theme.THEME.normal,
51
+ theme: _searchBar["default"].THEME.normal,
51
52
  releaseBranch: _releaseBranch.BRANCH.master,
52
53
  onSearch: onSearch,
53
54
  onClose: onClose,
54
55
  autofocus: false,
55
- widthType: _type.WIDTH_TYPE.fit
56
+ widthType: _searchBar["default"].WidthType.FIT
56
57
  };
@@ -7,9 +7,11 @@ exports.selectThemeStyle = void 0;
7
7
 
8
8
  var _color = require("@twreporter/core/lib/constants/color");
9
9
 
10
+ var _theme = require("@twreporter/core/lib/constants/theme");
11
+
10
12
  var selectThemeStyle = function selectThemeStyle(theme) {
11
13
  switch (theme) {
12
- case 'photography':
14
+ case _theme.THEME.photography:
13
15
  return {
14
16
  bgColor: _color.colorOpacity['white_0.8'],
15
17
  focusBgColor: _color.colorGrayscale.gray100,
@@ -20,7 +22,7 @@ var selectThemeStyle = function selectThemeStyle(theme) {
20
22
  placeholderColor: _color.colorGrayscale.gray800
21
23
  };
22
24
 
23
- case 'transpareant':
25
+ case _theme.THEME.transpareant:
24
26
  return {
25
27
  bgColor: _color.colorOpacity['gray100_0.8'],
26
28
  focusBgColor: _color.colorOpacity['gray100_0.8'],
@@ -31,7 +33,7 @@ var selectThemeStyle = function selectThemeStyle(theme) {
31
33
  placeholderColor: _color.colorGrayscale.gray500
32
34
  };
33
35
 
34
- case 'normal':
36
+ case _theme.THEME.normal:
35
37
  default:
36
38
  return {
37
39
  bgColor: _color.colorOpacity['gray100_0.8'],
@@ -0,0 +1,165 @@
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 _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _card = require("../../card");
15
+
16
+ var _isFetchingWrapper = _interopRequireDefault(require("../../is-fetching-wrapper"));
17
+
18
+ var _divider = _interopRequireDefault(require("../../divider"));
19
+
20
+ var _customizedLink = _interopRequireDefault(require("../../customized-link"));
21
+
22
+ var _rwd = require("../../rwd");
23
+
24
+ var _mockupSpec = _interopRequireDefault(require("../constants/mockup-spec"));
25
+
26
+ var _entityPath = _interopRequireDefault(require("@twreporter/core/lib/constants/entity-path"));
27
+
28
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
29
+
30
+ var _date = require("@twreporter/core/lib/utils/date");
31
+
32
+ var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
33
+
34
+ var _theme = require("@twreporter/core/lib/constants/theme");
35
+
36
+ var _forEach = _interopRequireDefault(require("lodash/forEach"));
37
+
38
+ var _get = _interopRequireDefault(require("lodash/get"));
39
+
40
+ var _map = _interopRequireDefault(require("lodash/map"));
41
+
42
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
43
+
44
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
+
46
+ 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); }
47
+
48
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
49
+
50
+ var _ = {
51
+ forEach: _forEach["default"],
52
+ get: _get["default"],
53
+ map: _map["default"]
54
+ };
55
+ var Card = /*#__PURE__*/(0, _styledComponents["default"])(_card.ArticleCard).withConfig({
56
+ displayName: "card-list__Card",
57
+ componentId: "yvf001-0"
58
+ })(["width:100%;"]);
59
+
60
+ var Container = /*#__PURE__*/_styledComponents["default"].div.withConfig({
61
+ displayName: "card-list__Container",
62
+ componentId: "yvf001-1"
63
+ })(["display:flex;flex-direction:column;a{color:inherit;text-decoration:none;}"]);
64
+
65
+ var Item = /*#__PURE__*/_styledComponents["default"].div.withConfig({
66
+ displayName: "card-list__Item",
67
+ componentId: "yvf001-2"
68
+ })(["margin-bottom:24px;&:hover{opacity:0.7;}&:last-child{margin-bottom:0;}width:100%;", ""], _mediaQuery["default"].mobileOnly(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: ", "%;\n "])), _mockupSpec["default"].mobile.cardWidth / _mockupSpec["default"].mobile.maxWidth * 100));
69
+
70
+ var StyledDivider = /*#__PURE__*/(0, _styledComponents["default"])(_divider["default"]).withConfig({
71
+ displayName: "card-list__StyledDivider",
72
+ componentId: "yvf001-3"
73
+ })(["margin-top:24px;"]);
74
+
75
+ var FlexItem = /*#__PURE__*/_styledComponents["default"].div.withConfig({
76
+ displayName: "card-list__FlexItem",
77
+ componentId: "yvf001-4"
78
+ })(["width:", "px;margin:0 auto;display:flex;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;", " ", " ", ""], _mockupSpec["default"].hd.maxWidth, _mediaQuery["default"].desktopOnly(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: ", "px;\n "])), _mockupSpec["default"].desktop.maxWidth), _mediaQuery["default"].tabletOnly(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: ", "px;\n "])), _mockupSpec["default"].tablet.maxWidth), _mediaQuery["default"].mobileOnly(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n width: 100%;\n justify-content: center;\n "]))));
79
+
80
+ var Content = (0, _isFetchingWrapper["default"])(FlexItem);
81
+
82
+ var CardList = function CardList(_ref) {
83
+ var _ref$data = _ref.data,
84
+ data = _ref$data === void 0 ? [] : _ref$data,
85
+ _ref$isFetching = _ref.isFetching,
86
+ isFetching = _ref$isFetching === void 0 ? false : _ref$isFetching,
87
+ _ref$showSpinner = _ref.showSpinner,
88
+ showSpinner = _ref$showSpinner === void 0 ? false : _ref$showSpinner,
89
+ _ref$releaseBranch = _ref.releaseBranch,
90
+ releaseBranch = _ref$releaseBranch === void 0 ? _releaseBranch.BRANCH.master : _ref$releaseBranch;
91
+
92
+ if (!data || data.length === 0) {
93
+ return null;
94
+ }
95
+
96
+ var getFirstCategory = function getFirstCategory(categorySets) {
97
+ var res = '';
98
+
99
+ _.forEach(categorySets, function (_ref2) {
100
+ var category = _ref2.category,
101
+ subcategory = _ref2.subcategory;
102
+
103
+ if (category && category.name) {
104
+ res = category.name;
105
+ return false;
106
+ }
107
+ });
108
+
109
+ return res;
110
+ };
111
+
112
+ var listJSX = _.map(data, function (item) {
113
+ var id = item.id,
114
+ title = item.title,
115
+ slug = item.slug,
116
+ style = item.style;
117
+ var isInteractiveArticle = style === _theme.ARTICLE_THEME.interactive;
118
+ var link = {
119
+ to: "".concat(isInteractiveArticle ? _entityPath["default"].interactiveArticle : _entityPath["default"].article).concat(slug),
120
+ target: isInteractiveArticle ? '_blank' : ''
121
+ };
122
+ var articleCardProps = {
123
+ title: title,
124
+ description: _.get(item, 'og_description', ''),
125
+ image: {
126
+ alt: _.get(item, 'hero_image.description', ''),
127
+ src: _.get(item, 'hero_image.resized_targets.mobile.url') || _.get(item, 'og_image.resized_targets.mobile.url')
128
+ },
129
+ category: getFirstCategory(_.get(item, 'category_set', [])),
130
+ date: (0, _date.date2yyyymmdd)(_.get(item, 'published_date'), '/'),
131
+ releaseBranch: releaseBranch
132
+ };
133
+ return /*#__PURE__*/_react["default"].createElement(Item, {
134
+ key: id
135
+ }, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], link, /*#__PURE__*/_react["default"].createElement(_rwd.DesktopAndAbove, null, /*#__PURE__*/_react["default"].createElement(Card, _extends({}, articleCardProps, {
136
+ size: _card.ArticleCard.Size.L
137
+ }))), /*#__PURE__*/_react["default"].createElement(_rwd.TabletAndBelow, null, /*#__PURE__*/_react["default"].createElement(Card, _extends({}, articleCardProps, {
138
+ size: _card.ArticleCard.Size.S
139
+ }))), /*#__PURE__*/_react["default"].createElement(StyledDivider, null)));
140
+ });
141
+
142
+ return /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(Content, {
143
+ isFetching: isFetching,
144
+ showSpinner: showSpinner
145
+ }, listJSX));
146
+ };
147
+
148
+ CardList.propTypes = {
149
+ data: _propTypes["default"].arrayOf(_propTypes["default"].shape({
150
+ id: _propTypes["default"].string.isRequired,
151
+ title: _propTypes["default"].string.isRequired,
152
+ og_description: _propTypes["default"].string.isRequired,
153
+ hero_image: _propTypes["default"].object,
154
+ og_image: _propTypes["default"].object,
155
+ category_set: _propTypes["default"].array,
156
+ published_date: _propTypes["default"].string.isRequired,
157
+ slug: _propTypes["default"].string.isRequired,
158
+ style: _propTypes["default"].string
159
+ })),
160
+ isFetching: _propTypes["default"].bool,
161
+ showSpinner: _propTypes["default"].bool,
162
+ releaseBranch: _releaseBranch.BRANCH_PROP_TYPES
163
+ };
164
+ var _default = CardList;
165
+ exports["default"] = _default;
@@ -41,6 +41,9 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
41
41
 
42
42
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
43
43
 
44
+ /* Notice: this component is deprecated.
45
+ * Please migrate to use @twerporter/react-components/lib/image-with-fallback.js
46
+ */
44
47
  var LogoIcon = function LogoIcon(props) {
45
48
  return /*#__PURE__*/_react["default"].createElement("svg", props, /*#__PURE__*/_react["default"].createElement("title", null, "Fill 1"), /*#__PURE__*/_react["default"].createElement("path", {
46
49
  d: "M5 112.563a5.001 5.001 0 0 1-5-5V4.999C0 3.298.866 1.713 2.298.794A5.003 5.003 0 0 1 7.08.451l42.724 19.521a5 5 0 0 1-4.156 9.097L10 12.783V99.78l49.843-22.775V32.014a5 5 0 0 1 3.669-4.82l37.105-10.247a4.999 4.999 0 0 1 6.331 4.819v67.44a5.003 5.003 0 0 1-6.142 4.868l-20.106-4.716a5 5 0 0 1 2.284-9.736l13.965 3.275V28.332L69.844 35.82v44.4a5 5 0 0 1-2.922 4.549L7.078 112.11a4.996 4.996 0 0 1-2.079.451",