@twreporter/universal-header 3.0.17 → 3.1.0-rc.1

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.
@@ -11,7 +11,8 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
11
  var _headerContext = _interopRequireWildcard(require("../contexts/header-context"));
12
12
  var _links = require("../utils/links");
13
13
  var _theme = require("../utils/theme");
14
- var _channels = require("../constants/channels");
14
+ var _channels = _interopRequireDefault(require("../constants/channels"));
15
+ var _channelsNew = _interopRequireDefault(require("../constants/channels-new"));
15
16
  var _hamburgerMenu = require("../constants/hamburger-menu");
16
17
  var _actionButton = require("./action-button");
17
18
  var _hamburgerMenuItem = require("./hamburger-menu-item");
@@ -26,11 +27,20 @@ var _input = require("@twreporter/react-components/lib/input");
26
27
  var _categorySet = require("@twreporter/core/lib/constants/category-set");
27
28
  var _theme2 = require("@twreporter/core/lib/constants/theme");
28
29
  var _rwd = require("@twreporter/react-components/lib/rwd");
30
+ var _featureFlag = require("@twreporter/core/lib/constants/feature-flag");
29
31
  var _hamburgerFooter = _interopRequireDefault(require("./hamburger-footer"));
30
32
  var _map = _interopRequireDefault(require("lodash/map"));
31
33
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // context
32
34
  // utils
33
35
  // constants
36
+ // import {
37
+ // CHANNEL_KEY,
38
+ // CHANNEL_ORDER,
39
+ // CHANNEL_TYPE,
40
+ // CHANNEL_LABEL,
41
+ // CHANNEL_LINK_TYPE,
42
+ // CHANNEL_DROPDOWN,
43
+ // } from '../constants/channels'
34
44
  // components
35
45
  // @twreporter
36
46
  // Footer
@@ -50,6 +60,13 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(
50
60
  var _ = {
51
61
  map: _map["default"]
52
62
  };
63
+ var _ref = _featureFlag.LAWMAKER ? _channelsNew["default"] : _channels["default"],
64
+ CHANNEL_KEY = _ref.CHANNEL_KEY,
65
+ CHANNEL_ORDER = _ref.CHANNEL_ORDER,
66
+ CHANNEL_TYPE = _ref.CHANNEL_TYPE,
67
+ CHANNEL_LABEL = _ref.CHANNEL_LABEL,
68
+ CHANNEL_LINK_TYPE = _ref.CHANNEL_LINK_TYPE,
69
+ CHANNEL_DROPDOWN = _ref.CHANNEL_DROPDOWN;
53
70
 
54
71
  // global var
55
72
  var reserveHeightForIos15 = 48;
@@ -115,17 +132,17 @@ var StyledMobileHamburgerAction = /*#__PURE__*/(0, _styledComponents["default"])
115
132
  displayName: "hamburger-menu__StyledMobileHamburgerAction",
116
133
  componentId: "sc-15rzowt-12"
117
134
  })(["width:100%;"]);
118
- var DropdownContent = function DropdownContent(_ref) {
119
- var itemKey = _ref.itemKey,
120
- isActive = _ref.isActive,
121
- toggleFunc = _ref.toggleFunc;
135
+ var DropdownContent = function DropdownContent(_ref2) {
136
+ var itemKey = _ref2.itemKey,
137
+ isActive = _ref2.isActive,
138
+ toggleFunc = _ref2.toggleFunc;
122
139
  var _useContext = (0, _react.useContext)(_headerContext["default"]),
123
140
  releaseBranch = _useContext.releaseBranch,
124
141
  isLinkExternal = _useContext.isLinkExternal;
125
142
  var _useContext2 = (0, _react.useContext)(_headerContext.HamburgerContext),
126
143
  closeHamburgerMenu = _useContext2.closeHamburgerMenu;
127
144
  var subItemJSX;
128
- if (itemKey === _channels.CHANNEL_KEY.category) {
145
+ if (itemKey === CHANNEL_KEY.category) {
129
146
  // category
130
147
  subItemJSX = _.map(_categorySet.CATEGORY_ORDER, function (catKey) {
131
148
  var label = _categorySet.CATEGORY_LABEL[catKey];
@@ -142,7 +159,7 @@ var DropdownContent = function DropdownContent(_ref) {
142
159
  });
143
160
  } else {
144
161
  // subcategory
145
- subItemJSX = _.map(_channels.CHANNEL_DROPDOWN[itemKey], function (subItem, key) {
162
+ subItemJSX = _.map(CHANNEL_DROPDOWN[itemKey], function (subItem, key) {
146
163
  var type = subItem.type;
147
164
  var label, path;
148
165
  if (type === 'subcategory') {
@@ -168,7 +185,7 @@ var DropdownContent = function DropdownContent(_ref) {
168
185
  });
169
186
  });
170
187
  }
171
- var label = _channels.CHANNEL_LABEL[itemKey];
188
+ var label = CHANNEL_LABEL[itemKey];
172
189
  var handleClick = function handleClick() {
173
190
  return toggleFunc(itemKey);
174
191
  };
@@ -201,17 +218,17 @@ var Content = function Content() {
201
218
  activeKey = _useState2[0],
202
219
  setActiveKey = _useState2[1];
203
220
  var itemLinks = (0, _links.getChannelLinks)(isLinkExternal, releaseBranch);
204
- var itemJSX = _.map(_channels.CHANNEL_ORDER, function (itemKey, index) {
221
+ var itemJSX = _.map(CHANNEL_ORDER, function (itemKey, index) {
205
222
  // divider
206
223
  if (itemKey === 'divider') {
207
224
  return /*#__PURE__*/_react["default"].createElement(DividerContainer, {
208
225
  key: index
209
226
  }, /*#__PURE__*/_react["default"].createElement(_divider["default"], null));
210
227
  }
211
- var label = _channels.CHANNEL_LABEL[itemKey];
212
- var type = _channels.CHANNEL_TYPE[itemKey];
228
+ var label = CHANNEL_LABEL[itemKey];
229
+ var type = CHANNEL_TYPE[itemKey];
213
230
  // link type
214
- if (type === _channels.CHANNEL_LINK_TYPE) {
231
+ if (type === CHANNEL_LINK_TYPE) {
215
232
  var link = itemLinks && itemLinks[itemKey];
216
233
  if (!label || !link) {
217
234
  return;
@@ -238,8 +255,8 @@ var Content = function Content() {
238
255
  });
239
256
  return /*#__PURE__*/_react["default"].createElement(ContentSection, null, itemJSX);
240
257
  };
241
- var HamburgerMenu = function HamburgerMenu(_ref2) {
242
- var props = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
258
+ var HamburgerMenu = function HamburgerMenu(_ref3) {
259
+ var props = _extends({}, (_objectDestructuringEmpty(_ref3), _ref3));
243
260
  var _useContext5 = (0, _react.useContext)(_headerContext["default"]),
244
261
  theme = _useContext5.theme,
245
262
  releaseBranch = _useContext5.releaseBranch,
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.DESKTOP_CHANNEL_ORDER = exports.CHANNEL_TYPE = exports.CHANNEL_PATH = exports.CHANNEL_ORDER = exports.CHANNEL_LINK_TYPE = exports.CHANNEL_LABEL = exports.CHANNEL_KEY = exports.CHANNEL_DROPDOWN_TYPE = exports.CHANNEL_DROPDOWN = void 0;
7
+ var _infogram = require("@twreporter/core/lib/constants/infogram");
8
+ var _categorySet = require("@twreporter/core/lib/constants/category-set");
9
+ var _CHANNEL_PATH, _CHANNEL_LABEL, _CHANNEL_TYPE, _CHANNEL_DROPDOWN;
10
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
+ var channelKey = {
15
+ latest: 'latest',
16
+ topic: 'topic',
17
+ category: 'category',
18
+ opinion: 'opinion',
19
+ column: 'column',
20
+ humanStory: 'human-story',
21
+ photography: 'photography',
22
+ podcast: 'podcast',
23
+ kidsReporter: 'kids-reporter',
24
+ infographic: 'infographic',
25
+ lawmaker: 'lawmaker'
26
+ };
27
+ var CHANNEL_KEY = exports.CHANNEL_KEY = channelKey;
28
+
29
+ // external links are in external-links.js file
30
+ var CHANNEL_PATH = exports.CHANNEL_PATH = (_CHANNEL_PATH = {}, _defineProperty(_CHANNEL_PATH, channelKey.latest, '/latest'), _defineProperty(_CHANNEL_PATH, channelKey.topic, '/topics'), _defineProperty(_CHANNEL_PATH, channelKey.humanStory, '/tags/58db34a30f56b40d001ae6a6'), _defineProperty(_CHANNEL_PATH, channelKey.photography, '/photography'), _defineProperty(_CHANNEL_PATH, channelKey.infographic, "/tags/".concat(_infogram.INFOGRAM_ID)), _CHANNEL_PATH);
31
+ var CHANNEL_LABEL = exports.CHANNEL_LABEL = (_CHANNEL_LABEL = {}, _defineProperty(_CHANNEL_LABEL, channelKey.latest, '最新'), _defineProperty(_CHANNEL_LABEL, channelKey.topic, '深度專題'), _defineProperty(_CHANNEL_LABEL, channelKey.category, '議題'), _defineProperty(_CHANNEL_LABEL, channelKey.opinion, '評論'), _defineProperty(_CHANNEL_LABEL, channelKey.column, '專欄'), _defineProperty(_CHANNEL_LABEL, channelKey.humanStory, '人物故事'), _defineProperty(_CHANNEL_LABEL, channelKey.photography, '影像'), _defineProperty(_CHANNEL_LABEL, channelKey.podcast, 'Podcast'), _defineProperty(_CHANNEL_LABEL, channelKey.kidsReporter, '少年報導者'), _defineProperty(_CHANNEL_LABEL, channelKey.infographic, '數位敘事'), _defineProperty(_CHANNEL_LABEL, channelKey.lawmaker, '報導者觀測站'), _CHANNEL_LABEL);
32
+ var channelLinkType = 'link';
33
+ var channelDropDownType = 'drop-down';
34
+ var CHANNEL_LINK_TYPE = exports.CHANNEL_LINK_TYPE = channelLinkType;
35
+ var CHANNEL_DROPDOWN_TYPE = exports.CHANNEL_DROPDOWN_TYPE = channelDropDownType;
36
+ var CHANNEL_TYPE = exports.CHANNEL_TYPE = (_CHANNEL_TYPE = {}, _defineProperty(_CHANNEL_TYPE, channelKey.latest, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.topic, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.category, channelDropDownType), _defineProperty(_CHANNEL_TYPE, channelKey.opinion, channelDropDownType), _defineProperty(_CHANNEL_TYPE, channelKey.column, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.humanStory, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.photography, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.podcast, channelDropDownType), _defineProperty(_CHANNEL_TYPE, channelKey.kidsReporter, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.infographic, channelLinkType), _defineProperty(_CHANNEL_TYPE, channelKey.lawmaker, channelLinkType), _CHANNEL_TYPE);
37
+ var CHANNEL_DROPDOWN = exports.CHANNEL_DROPDOWN = (_CHANNEL_DROPDOWN = {}, _defineProperty(_CHANNEL_DROPDOWN, channelKey.opinion, [{
38
+ type: 'subcategory',
39
+ key: _categorySet.SUBCATEGORY_PATH.bookReview
40
+ }, {
41
+ type: 'subcategory',
42
+ key: _categorySet.SUBCATEGORY_PATH.letter
43
+ }, {
44
+ type: 'subcategory',
45
+ key: _categorySet.SUBCATEGORY_PATH.all
46
+ }]), _defineProperty(_CHANNEL_DROPDOWN, channelKey.podcast, [{
47
+ type: 'path',
48
+ label: '關於報導者 Podcast',
49
+ path: '/a/podcast-list'
50
+ }, {
51
+ type: 'subcategory',
52
+ key: _categorySet.SUBCATEGORY_PATH.theRealStory
53
+ }, {
54
+ type: 'subcategory',
55
+ key: _categorySet.SUBCATEGORY_PATH.onTheGround
56
+ }]), _CHANNEL_DROPDOWN);
57
+ var CHANNEL_ORDER = exports.CHANNEL_ORDER = [channelKey.latest, 'divider', channelKey.topic, channelKey.category, channelKey.opinion, channelKey.humanStory, 'divider', channelKey.photography, channelKey.podcast, channelKey.kidsReporter, channelKey.lawmaker, channelKey.infographic, 'divider'];
58
+ var DESKTOP_CHANNEL_ORDER = exports.DESKTOP_CHANNEL_ORDER = [channelKey.latest, channelKey.topic, channelKey.category];
59
+ var _default = exports["default"] = {
60
+ CHANNEL_LINK_TYPE: CHANNEL_LINK_TYPE,
61
+ CHANNEL_DROPDOWN_TYPE: CHANNEL_DROPDOWN_TYPE,
62
+ CHANNEL_PATH: CHANNEL_PATH,
63
+ CHANNEL_LABEL: CHANNEL_LABEL,
64
+ CHANNEL_TYPE: CHANNEL_TYPE,
65
+ CHANNEL_ORDER: CHANNEL_ORDER,
66
+ DESKTOP_CHANNEL_ORDER: DESKTOP_CHANNEL_ORDER,
67
+ CHANNEL_KEY: CHANNEL_KEY,
68
+ CHANNEL_DROPDOWN: CHANNEL_DROPDOWN
69
+ };
@@ -62,5 +62,7 @@ var _default = exports["default"] = {
62
62
  CHANNEL_LABEL: CHANNEL_LABEL,
63
63
  CHANNEL_TYPE: CHANNEL_TYPE,
64
64
  CHANNEL_ORDER: CHANNEL_ORDER,
65
- DESKTOP_CHANNEL_ORDER: DESKTOP_CHANNEL_ORDER
65
+ DESKTOP_CHANNEL_ORDER: DESKTOP_CHANNEL_ORDER,
66
+ CHANNEL_KEY: CHANNEL_KEY,
67
+ CHANNEL_DROPDOWN: CHANNEL_DROPDOWN
66
68
  };
@@ -15,6 +15,7 @@ var links = {
15
15
  twitter: 'https://twitter.com/tw_reporter_org',
16
16
  youtube: 'https://www.youtube.com/c/TwreporterOrg',
17
17
  kidsReporter: 'https://kids.twreporter.org/',
18
- publicationAndMerchandise: 'https://twreporter.waca.ec/'
18
+ publicationAndMerchandise: 'https://twreporter.waca.ec/',
19
+ lawmaker: 'https://lawmaker.twreporter.org/'
19
20
  };
20
21
  var _default = exports["default"] = links;
@@ -24,6 +24,7 @@ var _channels = require("../constants/channels");
24
24
  var _externalLinks = _interopRequireDefault(require("../constants/external-links"));
25
25
  var _requestOrigins = _interopRequireDefault(require("@twreporter/core/lib/constants/request-origins"));
26
26
  var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch"));
27
+ var _featureFlag = require("@twreporter/core/lib/constants/feature-flag");
27
28
  var _forEach = _interopRequireDefault(require("lodash/forEach"));
28
29
  var _reduce = _interopRequireDefault(require("lodash/reduce"));
29
30
  var _split = _interopRequireDefault(require("lodash/split"));
@@ -178,6 +179,9 @@ function getChannelLinks() {
178
179
  return res;
179
180
  }, {});
180
181
  links[_channels.CHANNEL_KEY.kidsReporter] = __composeExternalLink(__getExternalLinks().kidsReporter, '_blank');
182
+ if (_featureFlag.LAWMAKER) {
183
+ links[_channels.CHANNEL_KEY.lawmaker] = __composeExternalLink(__getExternalLinks().lawmaker, '_blank');
184
+ }
181
185
  return links;
182
186
  }
183
187
  function getTabBarLinks() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twreporter/universal-header",
3
- "version": "3.0.17",
3
+ "version": "3.1.0-rc.1",
4
4
  "description": "Universal header of TWReporter sites",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -22,8 +22,8 @@
22
22
  "dependencies": {
23
23
  "@material-symbols/svg-400": "^0.27.2",
24
24
  "@reduxjs/toolkit": "^2.2.5",
25
- "@twreporter/core": "^1.25.0",
26
- "@twreporter/react-components": "^9.8.0",
25
+ "@twreporter/core": "^1.26.0-rc.0",
26
+ "@twreporter/react-components": "^9.8.1-rc.1",
27
27
  "lodash": "^4.17.11",
28
28
  "prop-types": "^15.6.2",
29
29
  "querystring": "^0.2.0",
@@ -58,5 +58,5 @@
58
58
  "react-dom": "^18.2.0",
59
59
  "storybook": "^8.1.11"
60
60
  },
61
- "gitHead": "9f07f03e73804fdfed6ec077ce352cb4db791a84"
61
+ "gitHead": "666a7b9c16a5e8ba895e1a722598359b69909d6c"
62
62
  }