@twreporter/universal-header 2.4.0-rc.5 → 2.4.0-rc.7
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 +27 -0
- package/lib/components/action-button-item.js +169 -0
- package/lib/components/{action-button.stories.js → action-button-item.stories.js} +20 -18
- package/lib/components/action-button.js +51 -114
- package/lib/components/hamburger-menu.js +59 -59
- package/lib/components/hamburger-menu.stories.js +1 -7
- package/lib/components/header.js +111 -48
- package/lib/components/header.stories.js +17 -16
- package/lib/components/icons.js +26 -6
- package/lib/components/slogan.js +3 -1
- package/lib/components/tab-bar.js +117 -0
- package/lib/components/tab-bar.stories.js +51 -0
- package/lib/constants/action-item-types.js +79 -0
- package/lib/constants/actions.js +3 -3
- package/lib/constants/channels.js +1 -1
- package/lib/constants/prop-types.js +6 -2
- package/lib/containers/header.js +7 -3
- package/lib/utils/links.js +25 -2
- package/lib/utils/theme-old.js +90 -158
- package/lib/utils/theme.js +75 -82
- package/package.json +3 -3
package/lib/components/icons.js
CHANGED
|
@@ -5,10 +5,12 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = void 0;
|
|
8
|
+
exports["default"] = exports.MobileIcons = void 0;
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
12
14
|
var _querystring = _interopRequireDefault(require("querystring"));
|
|
13
15
|
|
|
14
16
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
@@ -87,7 +89,10 @@ var StyledDialog = /*#__PURE__*/(0, _styledComponents["default"])(_card.Dialog).
|
|
|
87
89
|
return props.showDialog ? '1' : '0';
|
|
88
90
|
});
|
|
89
91
|
|
|
90
|
-
var LogInOutIcon = function LogInOutIcon() {
|
|
92
|
+
var LogInOutIcon = function LogInOutIcon(_ref) {
|
|
93
|
+
var _ref$loginButtonType = _ref.loginButtonType,
|
|
94
|
+
loginButtonType = _ref$loginButtonType === void 0 ? 'icon' : _ref$loginButtonType;
|
|
95
|
+
|
|
91
96
|
var _useState = (0, _react.useState)(false),
|
|
92
97
|
_useState2 = _slicedToArray(_useState, 2),
|
|
93
98
|
showDialog = _useState2[0],
|
|
@@ -136,15 +141,19 @@ var LogInOutIcon = function LogInOutIcon() {
|
|
|
136
141
|
releaseBranch: releaseBranch
|
|
137
142
|
});
|
|
138
143
|
|
|
144
|
+
var LoginButton = loginButtonType === 'icon' || isAuthed ? /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
|
|
145
|
+
iconComponent: Icon,
|
|
146
|
+
theme: theme
|
|
147
|
+
}) : /*#__PURE__*/_react["default"].createElement(_button.TextButton, {
|
|
148
|
+
text: "\u767B\u5165",
|
|
149
|
+
theme: theme
|
|
150
|
+
});
|
|
139
151
|
return /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
140
152
|
key: "login"
|
|
141
153
|
}, /*#__PURE__*/_react["default"].createElement(LogContainer, {
|
|
142
154
|
onClick: onClickIcon,
|
|
143
155
|
ref: ref
|
|
144
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
145
|
-
iconComponent: Icon,
|
|
146
|
-
theme: theme
|
|
147
|
-
}), /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
|
|
156
|
+
}, LoginButton, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
|
|
148
157
|
"in": showDialog,
|
|
149
158
|
classNames: "dialog-effect",
|
|
150
159
|
timeout: {
|
|
@@ -161,6 +170,10 @@ var LogInOutIcon = function LogInOutIcon() {
|
|
|
161
170
|
}))));
|
|
162
171
|
};
|
|
163
172
|
|
|
173
|
+
LogInOutIcon.propTypes = {
|
|
174
|
+
loginButtonType: _propTypes["default"].oneOf(['icon', 'text'])
|
|
175
|
+
};
|
|
176
|
+
|
|
164
177
|
var SearchIcon = function SearchIcon() {
|
|
165
178
|
var _useState3 = (0, _react.useState)(false),
|
|
166
179
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
@@ -248,5 +261,12 @@ var Icons = function Icons() {
|
|
|
248
261
|
return /*#__PURE__*/_react["default"].createElement(IconsContainer, null, /*#__PURE__*/_react["default"].createElement(SearchIcon, null), /*#__PURE__*/_react["default"].createElement(BookmarkIcon, null), /*#__PURE__*/_react["default"].createElement(LogInOutIcon, null));
|
|
249
262
|
};
|
|
250
263
|
|
|
264
|
+
var MobileIcons = function MobileIcons() {
|
|
265
|
+
return /*#__PURE__*/_react["default"].createElement(IconsContainer, null, /*#__PURE__*/_react["default"].createElement(LogInOutIcon, {
|
|
266
|
+
loginButtonType: "text"
|
|
267
|
+
}));
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
exports.MobileIcons = MobileIcons;
|
|
251
271
|
var _default = Icons;
|
|
252
272
|
exports["default"] = _default;
|
package/lib/components/slogan.js
CHANGED
|
@@ -15,6 +15,8 @@ var _headerContext = _interopRequireDefault(require("../contexts/header-context"
|
|
|
15
15
|
|
|
16
16
|
var _slogan = _interopRequireDefault(require("../constants/slogan"));
|
|
17
17
|
|
|
18
|
+
var _fonts = _interopRequireDefault(require("../constants/fonts"));
|
|
19
|
+
|
|
18
20
|
var _theme = require("../utils/theme");
|
|
19
21
|
|
|
20
22
|
var _font = require("@twreporter/core/lib/constants/font");
|
|
@@ -32,7 +34,7 @@ var SloganContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
|
32
34
|
componentId: "sc-1eoofl8-0"
|
|
33
35
|
})(["color:", ";display:flex;align-items:center;cursor:default;font-family:", ";font-weight:", ";font-size:14px;"], function (props) {
|
|
34
36
|
return props.color;
|
|
35
|
-
},
|
|
37
|
+
}, _fonts["default"].family.serif, _font.fontWeight.normal);
|
|
36
38
|
|
|
37
39
|
var Slogan = function Slogan(_ref) {
|
|
38
40
|
var props = _extends({}, _ref);
|
|
@@ -0,0 +1,117 @@
|
|
|
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 _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
13
|
+
|
|
14
|
+
var _headerContext = _interopRequireWildcard(require("../contexts/header-context"));
|
|
15
|
+
|
|
16
|
+
var _links = require("../utils/links");
|
|
17
|
+
|
|
18
|
+
var _theme = require("../utils/theme");
|
|
19
|
+
|
|
20
|
+
var _customizedLink = _interopRequireDefault(require("@twreporter/react-components/lib/customized-link"));
|
|
21
|
+
|
|
22
|
+
var _icon = require("@twreporter/react-components/lib/icon");
|
|
23
|
+
|
|
24
|
+
var _button = require("@twreporter/react-components/lib/button");
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
|
+
|
|
28
|
+
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); }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
// context
|
|
33
|
+
// utils
|
|
34
|
+
// @twreporter
|
|
35
|
+
var TabBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
36
|
+
displayName: "tab-bar__TabBarContainer",
|
|
37
|
+
componentId: "bdt7uj-0"
|
|
38
|
+
})(["display:flex;justify-content:space-between;padding:4px 16px;border-top:1px solid ", ";background-color:", ";a{text-decoration:none;}"], function (props) {
|
|
39
|
+
return props.borderColor;
|
|
40
|
+
}, function (props) {
|
|
41
|
+
return props.bgColor;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
var ButtonContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
45
|
+
displayName: "tab-bar__ButtonContainer",
|
|
46
|
+
componentId: "bdt7uj-1"
|
|
47
|
+
})(["display:flex;justify-content:center;margin-right:8px;flex:1;&:last-child{margin-right:0;}a{text-decoration:none;}"]);
|
|
48
|
+
|
|
49
|
+
var TabBar = function TabBar() {
|
|
50
|
+
var _useContext = (0, _react.useContext)(_headerContext["default"]),
|
|
51
|
+
theme = _useContext.theme,
|
|
52
|
+
releaseBranch = _useContext.releaseBranch,
|
|
53
|
+
isLinkExternal = _useContext.isLinkExternal,
|
|
54
|
+
pathname = _useContext.pathname;
|
|
55
|
+
|
|
56
|
+
var _useContext2 = (0, _react.useContext)(_headerContext.HamburgerContext),
|
|
57
|
+
toggleHamburger = _useContext2.toggleHamburger,
|
|
58
|
+
isHamburgerMenuOpen = _useContext2.isHamburgerMenuOpen;
|
|
59
|
+
|
|
60
|
+
var _getTabBarLinks = (0, _links.getTabBarLinks)(isLinkExternal, releaseBranch),
|
|
61
|
+
home = _getTabBarLinks.home,
|
|
62
|
+
latest = _getTabBarLinks.latest,
|
|
63
|
+
bookmark = _getTabBarLinks.bookmark;
|
|
64
|
+
|
|
65
|
+
var HomeIcon = /*#__PURE__*/_react["default"].createElement(_icon.Home, {
|
|
66
|
+
releaseBranch: releaseBranch
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
var ClockIcon = /*#__PURE__*/_react["default"].createElement(_icon.Clock, {
|
|
70
|
+
releaseBranch: releaseBranch
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
var BookmarkIcon = /*#__PURE__*/_react["default"].createElement(_icon.Bookmark, {
|
|
74
|
+
releaseBranch: releaseBranch
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
var HamburgerIcon = /*#__PURE__*/_react["default"].createElement(_icon.Hamburger, {
|
|
78
|
+
releaseBranch: releaseBranch
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
var _selectTabBarTheme = (0, _theme.selectTabBarTheme)(theme),
|
|
82
|
+
bgColor = _selectTabBarTheme.bgColor,
|
|
83
|
+
borderColor = _selectTabBarTheme.borderColor;
|
|
84
|
+
|
|
85
|
+
var isHomeActive = !isHamburgerMenuOpen && pathname === '/';
|
|
86
|
+
var isLatestActive = !isHamburgerMenuOpen && pathname === '/latest';
|
|
87
|
+
var isBookmarkActive = !isHamburgerMenuOpen && pathname === '/bookmarks';
|
|
88
|
+
return /*#__PURE__*/_react["default"].createElement(TabBarContainer, {
|
|
89
|
+
bgColor: bgColor,
|
|
90
|
+
borderColor: borderColor
|
|
91
|
+
}, /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], home, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
92
|
+
text: "\u9996\u9801",
|
|
93
|
+
iconComponent: HomeIcon,
|
|
94
|
+
theme: theme,
|
|
95
|
+
active: isHomeActive
|
|
96
|
+
}))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], latest, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
97
|
+
text: "\u6700\u65B0",
|
|
98
|
+
iconComponent: ClockIcon,
|
|
99
|
+
theme: theme,
|
|
100
|
+
active: isLatestActive
|
|
101
|
+
}))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], bookmark, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
102
|
+
text: "\u6211\u7684\u66F8\u7C64",
|
|
103
|
+
iconComponent: BookmarkIcon,
|
|
104
|
+
theme: theme,
|
|
105
|
+
active: isBookmarkActive
|
|
106
|
+
}))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
|
|
107
|
+
onClick: toggleHamburger
|
|
108
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
109
|
+
text: "\u9078\u55AE",
|
|
110
|
+
iconComponent: HamburgerIcon,
|
|
111
|
+
theme: theme,
|
|
112
|
+
active: isHamburgerMenuOpen
|
|
113
|
+
})));
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var _default = TabBar;
|
|
117
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.tabBar = exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
11
|
+
|
|
12
|
+
var _tabBar = _interopRequireDefault(require("./tab-bar"));
|
|
13
|
+
|
|
14
|
+
var _headerContext = _interopRequireDefault(require("../contexts/header-context"));
|
|
15
|
+
|
|
16
|
+
var _theme = require("@twreporter/core/lib/constants/theme");
|
|
17
|
+
|
|
18
|
+
var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
|
+
|
|
22
|
+
/* eslint-disable react/prop-types */
|
|
23
|
+
var _default = {
|
|
24
|
+
title: 'Tab Bar',
|
|
25
|
+
component: _tabBar["default"],
|
|
26
|
+
argTypes: {
|
|
27
|
+
theme: _theme.THEME_STORYBOOK_ARG_TYPE,
|
|
28
|
+
releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports["default"] = _default;
|
|
32
|
+
|
|
33
|
+
var Container = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
34
|
+
displayName: "tab-barstories__Container",
|
|
35
|
+
componentId: "paqbaf-0"
|
|
36
|
+
})(["width:320px;"]);
|
|
37
|
+
|
|
38
|
+
var tabBar = function tabBar(props) {
|
|
39
|
+
var theme = props.theme,
|
|
40
|
+
releaseBranch = props.releaseBranch;
|
|
41
|
+
var context = {
|
|
42
|
+
theme: theme,
|
|
43
|
+
releaseBranch: releaseBranch,
|
|
44
|
+
isLinkExternal: true
|
|
45
|
+
};
|
|
46
|
+
return /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Provider, {
|
|
47
|
+
value: context
|
|
48
|
+
}, /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(_tabBar["default"], null)));
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.tabBar = tabBar;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BUTTON_SIZE_STORYBOOK_ARG_TYPE = exports.BUTTON_SIZE_PROP_TYPE = exports.BUTTON_SIZE_TYPE = exports.BUTTON_WIDTH_STORYBOOK_ARG_TYPE = exports.BUTTON_WIDTH_PROP_TYPE = exports.BUTTON_WIDTH_TYPE = exports.TEXT_STORYBOOK_ARG_TYPE = exports.TEXT_PROP_TYPE = exports.TEXT_TYPE = exports.DIRECTION_STORYBOOK_ARG_TYPE = exports.DIRECTION_PROP_TYPE = exports.DIRECTION_TYPE = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
|
|
12
|
+
var DIRECTION_TYPE = {
|
|
13
|
+
row: 'row',
|
|
14
|
+
column: 'column'
|
|
15
|
+
};
|
|
16
|
+
exports.DIRECTION_TYPE = DIRECTION_TYPE;
|
|
17
|
+
|
|
18
|
+
var DIRECTION_PROP_TYPE = _propTypes["default"].oneOf([DIRECTION_TYPE.row, DIRECTION_TYPE.column]);
|
|
19
|
+
|
|
20
|
+
exports.DIRECTION_PROP_TYPE = DIRECTION_PROP_TYPE;
|
|
21
|
+
var DIRECTION_STORYBOOK_ARG_TYPE = {
|
|
22
|
+
defaultValue: DIRECTION_TYPE.row,
|
|
23
|
+
options: [DIRECTION_TYPE.row, DIRECTION_TYPE.column],
|
|
24
|
+
control: {
|
|
25
|
+
type: 'radio'
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.DIRECTION_STORYBOOK_ARG_TYPE = DIRECTION_STORYBOOK_ARG_TYPE;
|
|
29
|
+
var TEXT_TYPE = {
|
|
30
|
+
brief: 'brief',
|
|
31
|
+
full: 'full'
|
|
32
|
+
};
|
|
33
|
+
exports.TEXT_TYPE = TEXT_TYPE;
|
|
34
|
+
|
|
35
|
+
var TEXT_PROP_TYPE = _propTypes["default"].oneOf([TEXT_TYPE.brief, TEXT_TYPE.full]);
|
|
36
|
+
|
|
37
|
+
exports.TEXT_PROP_TYPE = TEXT_PROP_TYPE;
|
|
38
|
+
var TEXT_STORYBOOK_ARG_TYPE = {
|
|
39
|
+
defaultValue: TEXT_TYPE.brief,
|
|
40
|
+
options: [TEXT_TYPE.brief, TEXT_TYPE.full],
|
|
41
|
+
control: {
|
|
42
|
+
type: 'radio'
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.TEXT_STORYBOOK_ARG_TYPE = TEXT_STORYBOOK_ARG_TYPE;
|
|
46
|
+
var BUTTON_WIDTH_TYPE = {
|
|
47
|
+
fit: 'fit',
|
|
48
|
+
stretch: 'stretch'
|
|
49
|
+
};
|
|
50
|
+
exports.BUTTON_WIDTH_TYPE = BUTTON_WIDTH_TYPE;
|
|
51
|
+
|
|
52
|
+
var BUTTON_WIDTH_PROP_TYPE = _propTypes["default"].oneOf([BUTTON_WIDTH_TYPE.fit, BUTTON_WIDTH_TYPE.stretch]);
|
|
53
|
+
|
|
54
|
+
exports.BUTTON_WIDTH_PROP_TYPE = BUTTON_WIDTH_PROP_TYPE;
|
|
55
|
+
var BUTTON_WIDTH_STORYBOOK_ARG_TYPE = {
|
|
56
|
+
defaultValue: BUTTON_WIDTH_TYPE.fit,
|
|
57
|
+
options: [BUTTON_WIDTH_TYPE.fit, BUTTON_WIDTH_TYPE.stretch],
|
|
58
|
+
control: {
|
|
59
|
+
type: 'radio'
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.BUTTON_WIDTH_STORYBOOK_ARG_TYPE = BUTTON_WIDTH_STORYBOOK_ARG_TYPE;
|
|
63
|
+
var BUTTON_SIZE_TYPE = {
|
|
64
|
+
S: 'S',
|
|
65
|
+
L: 'L'
|
|
66
|
+
};
|
|
67
|
+
exports.BUTTON_SIZE_TYPE = BUTTON_SIZE_TYPE;
|
|
68
|
+
|
|
69
|
+
var BUTTON_SIZE_PROP_TYPE = _propTypes["default"].oneOf([BUTTON_SIZE_TYPE.S, BUTTON_SIZE_TYPE.L]);
|
|
70
|
+
|
|
71
|
+
exports.BUTTON_SIZE_PROP_TYPE = BUTTON_SIZE_PROP_TYPE;
|
|
72
|
+
var BUTTON_SIZE_STORYBOOK_ARG_TYPE = {
|
|
73
|
+
defaultValue: BUTTON_SIZE_TYPE.S,
|
|
74
|
+
options: [BUTTON_SIZE_TYPE.S, BUTTON_SIZE_TYPE.L],
|
|
75
|
+
control: {
|
|
76
|
+
type: 'radio'
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.BUTTON_SIZE_STORYBOOK_ARG_TYPE = BUTTON_SIZE_STORYBOOK_ARG_TYPE;
|
package/lib/constants/actions.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ACTION_ORDER = exports.ACTION_BUTTON_TYPE = exports.ACTION_LABEL = exports.ACTION_KEY = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _brief, _full, _ACTION_BUTTON_TYPE;
|
|
9
9
|
|
|
10
10
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
11
|
|
|
@@ -16,8 +16,8 @@ var actionKeys = {
|
|
|
16
16
|
var ACTION_KEY = actionKeys;
|
|
17
17
|
exports.ACTION_KEY = ACTION_KEY;
|
|
18
18
|
var ACTION_LABEL = {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
brief: (_brief = {}, _defineProperty(_brief, actionKeys.support, '贊助'), _defineProperty(_brief, actionKeys.newsLetter, '訂閱'), _brief),
|
|
20
|
+
full: (_full = {}, _defineProperty(_full, actionKeys.support, '贊助我們'), _defineProperty(_full, actionKeys.newsLetter, '訂閱電子報'), _full)
|
|
21
21
|
};
|
|
22
22
|
exports.ACTION_LABEL = ACTION_LABEL;
|
|
23
23
|
var ACTION_BUTTON_TYPE = (_ACTION_BUTTON_TYPE = {}, _defineProperty(_ACTION_BUTTON_TYPE, actionKeys.support, 'primary'), _defineProperty(_ACTION_BUTTON_TYPE, actionKeys.newsLetter, 'secondary'), _ACTION_BUTTON_TYPE);
|
|
@@ -28,7 +28,7 @@ var channelKey = {
|
|
|
28
28
|
var CHANNEL_KEY = channelKey; // external links are in external-links.js file
|
|
29
29
|
|
|
30
30
|
exports.CHANNEL_KEY = CHANNEL_KEY;
|
|
31
|
-
var CHANNEL_PATH = (_CHANNEL_PATH = {}, _defineProperty(_CHANNEL_PATH, channelKey.latest, '/
|
|
31
|
+
var 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);
|
|
32
32
|
exports.CHANNEL_PATH = CHANNEL_PATH;
|
|
33
33
|
var 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, '數位敘事'), _CHANNEL_LABEL);
|
|
34
34
|
exports.CHANNEL_LABEL = CHANNEL_LABEL;
|
|
@@ -31,10 +31,14 @@ var linkPropTypes = {
|
|
|
31
31
|
isExternal: _propTypes["default"].bool.isRequired
|
|
32
32
|
};
|
|
33
33
|
var hamburgerContextPropTypes = {
|
|
34
|
-
|
|
34
|
+
toggleHamburger: _propTypes["default"].func,
|
|
35
|
+
closeHamburgerMenu: _propTypes["default"].func,
|
|
36
|
+
isHamburgerMenuOpen: _propTypes["default"]["boolean"]
|
|
35
37
|
};
|
|
36
38
|
var hamburgerContextDefaultProps = {
|
|
37
|
-
|
|
39
|
+
toggleHamburger: function toggleHamburger() {},
|
|
40
|
+
closeHamburgerMenu: function closeHamburgerMenu() {},
|
|
41
|
+
isHamburgerMenuOpen: false
|
|
38
42
|
};
|
|
39
43
|
var CONTEXT_PROP = {
|
|
40
44
|
propTypes: contextPropTypes,
|
package/lib/containers/header.js
CHANGED
|
@@ -29,7 +29,7 @@ var _map = _interopRequireDefault(require("lodash/map"));
|
|
|
29
29
|
|
|
30
30
|
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
31
31
|
|
|
32
|
-
var _excluded = ["releaseBranch", "isAuthed", "isLinkExternal", "theme"];
|
|
32
|
+
var _excluded = ["releaseBranch", "isAuthed", "isLinkExternal", "theme", "pathname"];
|
|
33
33
|
|
|
34
34
|
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); }
|
|
35
35
|
|
|
@@ -227,6 +227,7 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
227
227
|
isAuthed = _this$props.isAuthed,
|
|
228
228
|
isLinkExternal = _this$props.isLinkExternal,
|
|
229
229
|
theme = _this$props.theme,
|
|
230
|
+
pathname = _this$props.pathname,
|
|
230
231
|
passThrough = _objectWithoutProperties(_this$props, _excluded);
|
|
231
232
|
|
|
232
233
|
var _this$state = this.state,
|
|
@@ -237,6 +238,7 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
237
238
|
isAuthed: isAuthed,
|
|
238
239
|
isLinkExternal: isLinkExternal,
|
|
239
240
|
theme: theme,
|
|
241
|
+
pathname: pathname,
|
|
240
242
|
toUseNarrow: toUseNarrow,
|
|
241
243
|
hideHeader: hideHeader
|
|
242
244
|
};
|
|
@@ -257,11 +259,13 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
257
259
|
}(_react["default"].PureComponent);
|
|
258
260
|
|
|
259
261
|
_defineProperty(Container, "defaultProps", _objectSpread(_objectSpread({}, _propTypes2.CONTEXT_PROP.defaultProps), {}, {
|
|
260
|
-
pathname: ''
|
|
262
|
+
pathname: '',
|
|
263
|
+
location: {}
|
|
261
264
|
}));
|
|
262
265
|
|
|
263
266
|
_defineProperty(Container, "propTypes", _objectSpread(_objectSpread({}, _propTypes2.CONTEXT_PROP.propTypes), {}, {
|
|
264
|
-
pathname: _propTypes["default"].string
|
|
267
|
+
pathname: _propTypes["default"].string,
|
|
268
|
+
location: _propTypes["default"].object
|
|
265
269
|
}));
|
|
266
270
|
|
|
267
271
|
function mapStateToProps(state) {
|
package/lib/utils/links.js
CHANGED
|
@@ -12,7 +12,8 @@ exports.getActionLinks = getActionLinks;
|
|
|
12
12
|
exports.getFooterLinks = getFooterLinks;
|
|
13
13
|
exports.getSocialMediaLinks = getSocialMediaLinks;
|
|
14
14
|
exports.getChannelLinks = getChannelLinks;
|
|
15
|
-
exports.
|
|
15
|
+
exports.getTabBarLinks = getTabBarLinks;
|
|
16
|
+
exports.getCategoryLink = exports.checkReferrer = void 0;
|
|
16
17
|
|
|
17
18
|
var _services = require("../constants/services");
|
|
18
19
|
|
|
@@ -34,13 +35,16 @@ var _forEach = _interopRequireDefault(require("lodash/forEach"));
|
|
|
34
35
|
|
|
35
36
|
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
36
37
|
|
|
38
|
+
var _split = _interopRequireDefault(require("lodash/split"));
|
|
39
|
+
|
|
37
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
38
41
|
|
|
39
42
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
40
43
|
|
|
41
44
|
var _ = {
|
|
42
45
|
forEach: _forEach["default"],
|
|
43
|
-
reduce: _reduce["default"]
|
|
46
|
+
reduce: _reduce["default"],
|
|
47
|
+
split: _split["default"]
|
|
44
48
|
};
|
|
45
49
|
var originsForClient = _requestOrigins["default"].forClientSideRendering;
|
|
46
50
|
/**
|
|
@@ -97,6 +101,15 @@ var __composeExternalLink = function __composeExternalLink(link) {
|
|
|
97
101
|
};
|
|
98
102
|
};
|
|
99
103
|
|
|
104
|
+
var checkReferrer = function checkReferrer() {
|
|
105
|
+
var referrer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
106
|
+
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
|
|
107
|
+
var url = new URL(referrer);
|
|
108
|
+
return url.origin === mainBaseURL[releaseBranch];
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
exports.checkReferrer = checkReferrer;
|
|
112
|
+
|
|
100
113
|
var getCategoryLink = function getCategoryLink() {
|
|
101
114
|
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
|
|
102
115
|
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
|
|
@@ -181,4 +194,14 @@ function getChannelLinks() {
|
|
|
181
194
|
|
|
182
195
|
links[_channels.CHANNEL_KEY.kidsReporter] = __composeExternalLink(__getExternalLinks().kidsReporter, '_blank');
|
|
183
196
|
return links;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function getTabBarLinks() {
|
|
200
|
+
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
|
|
201
|
+
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
|
|
202
|
+
return {
|
|
203
|
+
home: __getLink(isExternal, releaseBranch, mainBaseURL, ''),
|
|
204
|
+
latest: __getLink(isExternal, releaseBranch, mainBaseURL, '/latest'),
|
|
205
|
+
bookmark: __getLink(isExternal, releaseBranch, mainBaseURL, _services.servicePathnames.bookmarks)
|
|
206
|
+
};
|
|
184
207
|
}
|