UNPKG

6.31 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.Header = Header;
11
12var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
14var _react = _interopRequireWildcard(require("react"));
15
16var _propTypes = _interopRequireDefault(require("prop-types"));
17
18var _reactScroll = require("react-scroll");
19
20var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
21
22var _hooks = require("./hooks");
23
24var _Burger = require("./Burger");
25
26var _Menu = require("./Menu");
27
28var _Header = require("./Header.styles");
29
30/**
31 * A Footer is a small section at the bottom of each page within a document.
32 * It is often used to display company data or copyright information.
33 *
34 * Some websites may also include basic navigation links, such as "About Us," "Contact," and "Help."
35 * Corporate website footers often include additional links to "Terms of Use," "Privacy Guidelines," and "Advertising" pages as well.
36 */
37function Header(_ref) {
38 var background = _ref.background,
39 src = _ref.src,
40 color = _ref.color,
41 link1 = _ref.link1,
42 link2 = _ref.link2,
43 link3 = _ref.link3,
44 link4 = _ref.link4,
45 link5 = _ref.link5,
46 link6 = _ref.link6;
47
48 var _useState = (0, _react.useState)(false),
49 _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50 open = _useState2[0],
51 setOpen = _useState2[1];
52
53 var node = (0, _react.useRef)();
54 var menuId = 'main-menu';
55
56 var scrollToTop = function scrollToTop() {
57 _reactScroll.animateScroll.scrollToTop();
58 };
59
60 var _useWindowSize = (0, _hooks.useWindowSize)(),
61 width = _useWindowSize.width;
62
63 (0, _hooks.useOnClickOutside)(node, function () {
64 return setOpen(false);
65 });
66 return /*#__PURE__*/_react["default"].createElement(_reactFocusLock["default"], {
67 disabled: !open
68 }, /*#__PURE__*/_react["default"].createElement(_Header.Wrapper, {
69 classprefix: "header",
70 name: "header",
71 ref: node,
72 background: background
73 }, /*#__PURE__*/_react["default"].createElement(_Header.LogoContainer, null, /*#__PURE__*/_react["default"].createElement(_Header.Logo, {
74 src: src,
75 onClick: scrollToTop
76 })), width <= 900 ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Burger.Burger, {
77 open: open,
78 setOpen: setOpen,
79 "aria-controls": menuId
80 }), /*#__PURE__*/_react["default"].createElement(_Menu.Menu, {
81 open: open,
82 setOpen: setOpen,
83 id: menuId,
84 link1: link1,
85 link2: link2,
86 link3: link3,
87 link4: link4,
88 link5: link5,
89 link6: link6
90 })) : /*#__PURE__*/_react["default"].createElement(_Header.MenuContainer, null, /*#__PURE__*/_react["default"].createElement(_Header.NavList, null, link1 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
91 color: color
92 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
93 activeClass: "active",
94 to: link1.toLowerCase(),
95 spy: true,
96 smooth: true,
97 offset: -120,
98 duration: 500,
99 color: color
100 }, link1)), link2 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
101 color: color
102 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
103 activeClass: "active",
104 to: link2.toLowerCase(),
105 spy: true,
106 smooth: true,
107 offset: -50,
108 duration: 500,
109 color: color
110 }, link2)), link3 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
111 color: color
112 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
113 activeClass: "active",
114 to: link3.toLowerCase(),
115 spy: true,
116 smooth: true,
117 offset: -50,
118 duration: 500,
119 color: color
120 }, link3)), link4 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
121 color: color
122 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
123 activeClass: "active",
124 to: link4.toLowerCase(),
125 spy: true,
126 smooth: true,
127 offset: -50,
128 duration: 500,
129 color: color
130 }, link4)), link5 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
131 color: color
132 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
133 activeClass: "active",
134 to: link5.toLowerCase(),
135 spy: true,
136 smooth: true,
137 offset: -50,
138 duration: 500,
139 color: color
140 }, link5)), link6 && /*#__PURE__*/_react["default"].createElement(_Header.ListItem, {
141 color: color
142 }, /*#__PURE__*/_react["default"].createElement(_Header.NavItem, {
143 activeClass: "active",
144 to: link6.toLowerCase(),
145 spy: true,
146 smooth: true,
147 offset: -50,
148 duration: 500,
149 color: color
150 }, link6))))));
151}
152
153Header.propTypes = {
154 /**
155 The URL of the Logo's image.
156 */
157 src: _propTypes["default"].string,
158 background: _propTypes["default"].string,
159 color: _propTypes["default"].string,
160
161 /**
162 The Header's Links.
163 */
164 link1: _propTypes["default"].string,
165 link2: _propTypes["default"].string,
166 link3: _propTypes["default"].string,
167 link4: _propTypes["default"].string,
168 link5: _propTypes["default"].string,
169 link6: _propTypes["default"].string
170};
171Header.defaultProps = {
172 src: 'https://res.cloudinary.com/waasabi/image/upload/v1581425311/storybook/waasabi-logo_hrshpa.png',
173 background: '#4A933D',
174 // default transparent
175 color: 'white',
176 // default white
177 link1: 'Link1',
178 link2: 'Link2',
179 link3: 'Link3',
180 link4: '',
181 link5: '',
182 link6: ''
183};
184Header.propsDef = {
185 src: {
186 type: 'text',
187 "default": 'https://res.cloudinary.com/waasabi/image/upload/v1581425311/storybook/waasabi-logo_hrshpa.png'
188 },
189 background: {
190 type: 'color',
191 "default": '#4A933D'
192 },
193 // default transparent
194 color: {
195 type: 'color',
196 "default": 'white'
197 },
198 // default white
199 link1: {
200 type: 'text',
201 "default": 'Link1'
202 },
203 link2: {
204 type: 'text',
205 "default": 'Link2'
206 },
207 link3: {
208 type: 'text',
209 "default": 'Link3'
210 },
211 link4: {
212 type: 'text',
213 "default": ''
214 },
215 link5: {
216 type: 'text',
217 "default": ''
218 },
219 link6: {
220 type: 'text',
221 "default": ''
222 }
223};
\No newline at end of file