@kids-reporter/draft-renderer 0.4.6 → 0.4.8

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.
@@ -10,7 +10,8 @@ const {
10
10
  EmbeddedCodeInArticleBody,
11
11
  ImageInArticleBody,
12
12
  InfoBoxInArticleBody,
13
- SlideshowInArticleBody
13
+ SlideshowInArticleBody,
14
+ NewsReading
14
15
  } = _blockRenderers.blockRenderers;
15
16
  const AtomicBlock = props => {
16
17
  const entity = props.contentState.getEntity(props.block.getEntityAt(0));
@@ -47,6 +48,12 @@ const AtomicBlock = props => {
47
48
  data: entityData
48
49
  });
49
50
  }
51
+ case 'NEWS_READING':
52
+ {
53
+ return NewsReading({
54
+ data: entityData
55
+ });
56
+ }
50
57
  }
51
58
  return null;
52
59
  };
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dropdown = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
+ 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; }
12
+ const DropdownOptionList = _styledComponents.default.ul`
13
+ margin: 0;
14
+ position: relative;
15
+ padding: 4px 0;
16
+ max-height: 240px;
17
+ background: #ffffff;
18
+ &::before {
19
+ content: '';
20
+ position: absolute;
21
+ top: 0;
22
+ right: 16px;
23
+ left: 16px;
24
+ height: 1px;
25
+ background-color: #e0e0e0;
26
+ }
27
+ `;
28
+ const DropdownOption = _styledComponents.default.li`
29
+ color: #000928;
30
+ padding: 8px 16px;
31
+ &:hover {
32
+ color: #fff;
33
+ background-color: #04295e;
34
+ }
35
+ `;
36
+ const Container = _styledComponents.default.div`
37
+ width: 100%;
38
+ overflow: hidden;
39
+ cursor: pointer;
40
+
41
+ font-size: 18px;
42
+ font-weight: 400;
43
+ line-height: 1.5;
44
+ `;
45
+ const InputBlock = _styledComponents.default.div`
46
+ display: flex;
47
+ justify-content: space-between;
48
+ padding: 8px 16px;
49
+ align-items: center;
50
+ `;
51
+ const Input = _styledComponents.default.input`
52
+ background: #ffffff;
53
+ font-size: 18px;
54
+ padding: 12px 0;
55
+ outline: none;
56
+ border: none;
57
+ cursor: pointer;
58
+ `;
59
+ const More = _styledComponents.default.span`
60
+ margin-left: 10px;
61
+ font-size: 14px;
62
+ `;
63
+ const Arrow = _styledComponents.default.span`
64
+ margin-left: auto;
65
+
66
+ width: 20px;
67
+ height: 20px;
68
+ background-color: #27b5f7;
69
+ border-radius: 50%;
70
+ display: flex;
71
+
72
+ &::after {
73
+ content: '';
74
+ margin-left: auto;
75
+ margin-right: auto;
76
+ margin-top: 7px;
77
+ border-style: solid;
78
+ border-width: 6px;
79
+ border-color: #fff transparent transparent transparent;
80
+ transition: transform 0.1s linear;
81
+ transform: ${({
82
+ $isListOpen
83
+ }) => $isListOpen ? 'rotate(180deg)' : 'rotate(0deg)'};
84
+ transform-origin: center 2.5px;
85
+ }
86
+ `;
87
+ const Dropdown = function ({
88
+ className,
89
+ options,
90
+ onChange,
91
+ labelForMore = ''
92
+ }) {
93
+ const [isListOpen, setIsListOpen] = (0, _react.useState)(false);
94
+ const [selectedOption, setSelectedOption] = (0, _react.useState)(options === null || options === void 0 ? void 0 : options[0]);
95
+ const toggleList = () => {
96
+ setIsListOpen(!isListOpen);
97
+ };
98
+ const selectOption = option => {
99
+ toggleList();
100
+ onChange(option);
101
+ setSelectedOption(option);
102
+ };
103
+ const optionItem = options.map((option, idx) => /*#__PURE__*/_react.default.createElement(DropdownOption, {
104
+ onClick: () => selectOption(option),
105
+ key: `option-${idx}`
106
+ }, option.name));
107
+ return /*#__PURE__*/_react.default.createElement(Container, {
108
+ className: className
109
+ }, /*#__PURE__*/_react.default.createElement(InputBlock, {
110
+ onClick: toggleList
111
+ }, /*#__PURE__*/_react.default.createElement(Input, {
112
+ disabled: true,
113
+ readOnly: true,
114
+ placeholder: "\u8ACB\u9078\u64C7",
115
+ value: selectedOption.name
116
+ }), options.length > 1 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Arrow, {
117
+ $isListOpen: isListOpen
118
+ }), labelForMore && /*#__PURE__*/_react.default.createElement(More, null, labelForMore))), isListOpen && /*#__PURE__*/_react.default.createElement(DropdownOptionList, null, optionItem));
119
+ };
120
+ exports.Dropdown = Dropdown;
@@ -27,11 +27,9 @@ const Block = _styledComponents.default.div`
27
27
  `;
28
28
  exports.Block = Block;
29
29
  const Caption = _styledComponents.default.div`
30
+ font-size: 14px;
30
31
  line-height: 1.43;
31
32
  letter-spacing: 0.4px;
32
- ${({
33
- theme
34
- }) => theme.fontSize.xs};
35
33
  color: #808080;
36
34
  padding: 15px 15px 0 15px;
37
35
  `;
@@ -9,6 +9,7 @@ var _embeddedCodeBlock = require("./embedded-code-block");
9
9
  var _imageBlock = require("./image-block");
10
10
  var _infoBoxBlock = require("./info-box-block");
11
11
  var _slideshowBlock = require("./slideshow-block");
12
+ var _newsReading = require("./news-reading");
12
13
  const blockRenderers = {
13
14
  BlockquoteInArticleBody: _blockquote.BlockquoteInArticleBody,
14
15
  EmbeddedCodeBlock: _embeddedCodeBlock.EmbeddedCodeBlock,
@@ -16,6 +17,7 @@ const blockRenderers = {
16
17
  ImageBlock: _imageBlock.ImageBlock,
17
18
  ImageInArticleBody: _imageBlock.ImageInArticleBody,
18
19
  InfoBoxInArticleBody: _infoBoxBlock.InfoBoxInArticleBody,
20
+ NewsReading: _newsReading.NewsReading,
19
21
  SlideshowBlock: _slideshowBlock.SlideshowBlock,
20
22
  SlideshowInArticleBody: _slideshowBlock.SlideshowInArticleBody
21
23
  };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NewsReading = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
+ var _dropdown = require("./dropdown");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
+ 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; }
13
+ const ArticleBodyContainer = _styledComponents.default.div`
14
+ max-width: 600px;
15
+ width: calc(280 / 320 * 100%);
16
+ border: 1px solid #eaeaea;
17
+ border-radius: 20px;
18
+ margin-left: auto;
19
+ margin-right: auto;
20
+ `;
21
+ const Divider = _styledComponents.default.div`
22
+ border: 1px solid #eaeaea;
23
+ margin-bottom: 20px;
24
+ `;
25
+ const IframeContainer = _styledComponents.default.div`
26
+ padding: 20px;
27
+ `;
28
+ const NewsReading = function ({
29
+ className,
30
+ data
31
+ }) {
32
+ const {
33
+ readings
34
+ } = data;
35
+ const options = (0, _react.useMemo)(() => readings.map(r => {
36
+ return {
37
+ name: r.name,
38
+ value: r.name
39
+ };
40
+ }), [readings]);
41
+ const [selectedOption, setSelectedOption] = (0, _react.useState)(options[0]);
42
+ const selectedReading = readings.find(r => r.name === selectedOption.value);
43
+ return /*#__PURE__*/_react.default.createElement(ArticleBodyContainer, {
44
+ className: className
45
+ }, /*#__PURE__*/_react.default.createElement(_dropdown.Dropdown, {
46
+ options: options,
47
+ onChange: option => setSelectedOption(option),
48
+ labelForMore: "\u66F4\u591A\u8A9E\u8A00"
49
+ }), /*#__PURE__*/_react.default.createElement(Divider, null), (selectedReading === null || selectedReading === void 0 ? void 0 : selectedReading.embedCode) && /*#__PURE__*/_react.default.createElement(IframeContainer, null, /*#__PURE__*/_react.default.createElement("div", {
50
+ dangerouslySetInnerHTML: {
51
+ __html: selectedReading.embedCode
52
+ }
53
+ })));
54
+ };
55
+ exports.NewsReading = NewsReading;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mediaQuery = exports.breakpoints = void 0;
7
+ const breakpoints = {
8
+ small: 320,
9
+ medium: 760,
10
+ large: 1440
11
+ };
12
+ exports.breakpoints = breakpoints;
13
+ const mediaQuery = {
14
+ smallOnly: `@media (max-width: ${breakpoints.medium - 1}px)`,
15
+ mediumOnly: `@media (min-width: ${breakpoints.medium}px) and (max-width: ${breakpoints.large - 1}px)`,
16
+ mediumAbove: `@media (min-width: ${breakpoints.medium}px)`,
17
+ largeBelow: `@media (max-width: ${breakpoints.large - 1}px)`,
18
+ largeOnly: `@media (min-width: ${breakpoints.large}px)`
19
+ };
20
+ exports.mediaQuery = mediaQuery;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kids-reporter/draft-renderer",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {