@comicrelief/component-library 5.6.0 → 5.6.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.
- package/dist/components/Atoms/Link/Link.js +4 -2
- package/dist/components/Organisms/Footer/Footer.js +4 -3
- package/dist/components/Organisms/Footer/Footer.md +8 -1
- package/dist/components/Organisms/Footer/Nav/Nav.js +10 -5
- package/package.json +1 -1
- package/src/components/Atoms/Link/Link.js +5 -2
- package/src/components/Organisms/Footer/Footer.js +5 -3
- package/src/components/Organisms/Footer/Footer.md +8 -1
- package/src/components/Organisms/Footer/Nav/Nav.js +3 -2
|
@@ -44,7 +44,9 @@ var Link = function Link(_ref) {
|
|
|
44
44
|
if (target === null) {
|
|
45
45
|
// Use our helper function to determine the raw domains to compare
|
|
46
46
|
var currentDomain = (0, _internalLinkHelper.getDomain)(document.location.host);
|
|
47
|
-
var linkDomain = (0, _internalLinkHelper.getDomain)(href);
|
|
47
|
+
var linkDomain = (0, _internalLinkHelper.getDomain)(href); // Additional check for applications that need more control
|
|
48
|
+
|
|
49
|
+
var isWhiteListOverridden = rest.overrideWhiteList === true;
|
|
48
50
|
/**
|
|
49
51
|
* If the link has no domain supplied (likely '/' or '#')
|
|
50
52
|
* OR has the same domain as the current page, don't open
|
|
@@ -53,7 +55,7 @@ var Link = function Link(_ref) {
|
|
|
53
55
|
|
|
54
56
|
var isExternalLink = linkDomain !== '' && currentDomain !== linkDomain;
|
|
55
57
|
var isWhiteListed = (0, _whiteListed.default)(href);
|
|
56
|
-
window = isExternalLink && !isWhiteListed ? '_blank' : '_self';
|
|
58
|
+
window = isExternalLink && (isWhiteListOverridden || !isWhiteListed) ? '_blank' : '_self';
|
|
57
59
|
} else {
|
|
58
60
|
window = target === 'blank' ? '_blank' : '_self';
|
|
59
61
|
}
|
|
@@ -42,9 +42,9 @@ var Footer = function Footer(_ref) {
|
|
|
42
42
|
sizeMd: "72px",
|
|
43
43
|
rotate: false,
|
|
44
44
|
campaign: campaign
|
|
45
|
-
}))), /*#__PURE__*/_react.default.createElement(_Nav.default, {
|
|
45
|
+
}))), /*#__PURE__*/_react.default.createElement(_Nav.default, Object.assign({
|
|
46
46
|
navItems: navItems
|
|
47
|
-
}), /*#__PURE__*/_react.default.createElement(_Footer.FooterCopyright, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
47
|
+
}, rest)), /*#__PURE__*/_react.default.createElement(_Footer.FooterCopyright, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
48
48
|
tag: "p",
|
|
49
49
|
color: "grey"
|
|
50
50
|
}, footerCopy)))));
|
|
@@ -53,7 +53,8 @@ var Footer = function Footer(_ref) {
|
|
|
53
53
|
Footer.defaultProps = {
|
|
54
54
|
navItems: {},
|
|
55
55
|
footerCopy: '',
|
|
56
|
-
campaign: 'Comic Relief'
|
|
56
|
+
campaign: 'Comic Relief',
|
|
57
|
+
overrideWhiteList: false
|
|
57
58
|
};
|
|
58
59
|
var _default = Footer;
|
|
59
60
|
exports.default = _default;
|
|
@@ -4,5 +4,12 @@
|
|
|
4
4
|
import data from './data/data';
|
|
5
5
|
import footerCopy from './data/footerCopy';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<>
|
|
8
|
+
<p>Standard footer</p>
|
|
9
|
+
<Footer navItems={data} footerCopy={footerCopy.copy} campaign="Comic Relief" />
|
|
10
|
+
|
|
11
|
+
<p>Overrides whitelist functionality for external usage</p>
|
|
12
|
+
<Footer navItems={data} footerCopy={footerCopy.copy} campaign="Comic Relief" overrideWhiteList />
|
|
13
|
+
</>
|
|
14
|
+
|
|
8
15
|
```
|
|
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/es
|
|
|
11
11
|
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
13
13
|
|
|
14
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectWithoutProperties"));
|
|
15
|
+
|
|
14
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _Text = _interopRequireDefault(require("../../../Atoms/Text/Text"));
|
|
@@ -23,12 +25,15 @@ var _internalLinkHelper = require("../../../../utils/internalLinkHelper");
|
|
|
23
25
|
|
|
24
26
|
var _Nav = require("./Nav.style");
|
|
25
27
|
|
|
28
|
+
var _excluded = ["navItems"];
|
|
29
|
+
|
|
26
30
|
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
31
|
|
|
28
32
|
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
33
|
|
|
30
34
|
var FooterNav = function FooterNav(_ref) {
|
|
31
|
-
var navItems = _ref.navItems
|
|
35
|
+
var navItems = _ref.navItems,
|
|
36
|
+
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
32
37
|
var menuGroups = navItems.menuGroups;
|
|
33
38
|
|
|
34
39
|
var _useState = (0, _react.useState)(false),
|
|
@@ -96,14 +101,14 @@ var FooterNav = function FooterNav(_ref) {
|
|
|
96
101
|
}, !isSmallBreakpoint ? /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
97
102
|
color: "white",
|
|
98
103
|
weight: "bold"
|
|
99
|
-
}, group.title) : /*#__PURE__*/_react.default.createElement(_Nav.NavLink, {
|
|
104
|
+
}, group.title) : /*#__PURE__*/_react.default.createElement(_Nav.NavLink, Object.assign({
|
|
100
105
|
href: "#",
|
|
101
106
|
inline: true,
|
|
102
107
|
"aria-expanded": !!isSubMenuOpen[group.id],
|
|
103
108
|
"aria-haspopup": "true",
|
|
104
109
|
role: "button",
|
|
105
110
|
onClick: toggleSubMenu(group.id)
|
|
106
|
-
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
111
|
+
}, rest), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
107
112
|
color: "white"
|
|
108
113
|
}, group.title)), group.links && group.links.length > 0 && /*#__PURE__*/_react.default.createElement(_Nav.SubNavMenu, {
|
|
109
114
|
role: "list",
|
|
@@ -117,11 +122,11 @@ var FooterNav = function FooterNav(_ref) {
|
|
|
117
122
|
return /*#__PURE__*/_react.default.createElement(_Nav.SubNavItem, {
|
|
118
123
|
key: thisUrl,
|
|
119
124
|
column: group.links.length % 2 === 0 && group.links.length > 2
|
|
120
|
-
}, /*#__PURE__*/_react.default.createElement(_Nav.SubNavLink, {
|
|
125
|
+
}, /*#__PURE__*/_react.default.createElement(_Nav.SubNavLink, Object.assign({
|
|
121
126
|
href: thisUrl,
|
|
122
127
|
inline: true,
|
|
123
128
|
role: "menuitem"
|
|
124
|
-
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
129
|
+
}, rest), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
125
130
|
color: "white"
|
|
126
131
|
}, child.title)));
|
|
127
132
|
})));
|
package/package.json
CHANGED
|
@@ -28,15 +28,18 @@ const Link = ({
|
|
|
28
28
|
const currentDomain = getDomain(document.location.host);
|
|
29
29
|
const linkDomain = getDomain(href);
|
|
30
30
|
|
|
31
|
+
// Additional check for applications that need more control
|
|
32
|
+
const isWhiteListOverridden = rest.overrideWhiteList === true;
|
|
33
|
+
|
|
31
34
|
/**
|
|
32
35
|
* If the link has no domain supplied (likely '/' or '#')
|
|
33
36
|
* OR has the same domain as the current page, don't open
|
|
34
37
|
* in a new tab
|
|
35
38
|
*/
|
|
36
39
|
const isExternalLink = linkDomain !== '' && (currentDomain !== linkDomain);
|
|
37
|
-
|
|
38
40
|
const isWhiteListed = whiteListed(href);
|
|
39
|
-
|
|
41
|
+
|
|
42
|
+
window = isExternalLink && (isWhiteListOverridden || !isWhiteListed) ? '_blank' : '_self';
|
|
40
43
|
} else {
|
|
41
44
|
window = target === 'blank' ? '_blank' : '_self';
|
|
42
45
|
}
|
|
@@ -31,7 +31,7 @@ const Footer = ({
|
|
|
31
31
|
<Logo sizeSm="48px" sizeMd="72px" rotate={false} campaign={campaign} />
|
|
32
32
|
</Brand>
|
|
33
33
|
</FooterBranding>
|
|
34
|
-
<FooterNav navItems={navItems} />
|
|
34
|
+
<FooterNav navItems={navItems} {...rest} />
|
|
35
35
|
<FooterCopyright>
|
|
36
36
|
<Text tag="p" color="grey">
|
|
37
37
|
{footerCopy}
|
|
@@ -46,13 +46,15 @@ const Footer = ({
|
|
|
46
46
|
Footer.propTypes = {
|
|
47
47
|
navItems: PropTypes.objectOf(PropTypes.shape),
|
|
48
48
|
footerCopy: PropTypes.string,
|
|
49
|
-
campaign: PropTypes.string
|
|
49
|
+
campaign: PropTypes.string,
|
|
50
|
+
overrideWhiteList: PropTypes.bool
|
|
50
51
|
};
|
|
51
52
|
|
|
52
53
|
Footer.defaultProps = {
|
|
53
54
|
navItems: {},
|
|
54
55
|
footerCopy: '',
|
|
55
|
-
campaign: 'Comic Relief'
|
|
56
|
+
campaign: 'Comic Relief',
|
|
57
|
+
overrideWhiteList: false
|
|
56
58
|
};
|
|
57
59
|
|
|
58
60
|
export default Footer;
|
|
@@ -4,5 +4,12 @@
|
|
|
4
4
|
import data from './data/data';
|
|
5
5
|
import footerCopy from './data/footerCopy';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<>
|
|
8
|
+
<p>Standard footer</p>
|
|
9
|
+
<Footer navItems={data} footerCopy={footerCopy.copy} campaign="Comic Relief" />
|
|
10
|
+
|
|
11
|
+
<p>Overrides whitelist functionality for external usage</p>
|
|
12
|
+
<Footer navItems={data} footerCopy={footerCopy.copy} campaign="Comic Relief" overrideWhiteList />
|
|
13
|
+
</>
|
|
14
|
+
|
|
8
15
|
```
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
SubNavLink
|
|
17
17
|
} from './Nav.style';
|
|
18
18
|
|
|
19
|
-
const FooterNav = ({ navItems }) => {
|
|
19
|
+
const FooterNav = ({ navItems, ...rest }) => {
|
|
20
20
|
const { menuGroups } = navItems;
|
|
21
21
|
const [isExpandable] = useState(false);
|
|
22
22
|
const [isSubMenuOpen, setIsSubMenuOpen] = useState({});
|
|
@@ -78,6 +78,7 @@ const FooterNav = ({ navItems }) => {
|
|
|
78
78
|
aria-haspopup="true"
|
|
79
79
|
role="button"
|
|
80
80
|
onClick={toggleSubMenu(group.id)}
|
|
81
|
+
{...rest}
|
|
81
82
|
>
|
|
82
83
|
<Text color="white">{group.title}</Text>
|
|
83
84
|
</NavLink>
|
|
@@ -103,7 +104,7 @@ const FooterNav = ({ navItems }) => {
|
|
|
103
104
|
group.links.length % 2 === 0 && group.links.length > 2
|
|
104
105
|
}
|
|
105
106
|
>
|
|
106
|
-
<SubNavLink href={thisUrl} inline role="menuitem">
|
|
107
|
+
<SubNavLink href={thisUrl} inline role="menuitem" {...rest}>
|
|
107
108
|
<Text color="white">{child.title}</Text>
|
|
108
109
|
</SubNavLink>
|
|
109
110
|
</SubNavItem>
|