@mjhls/mjh-framework 1.0.536 → 1.0.539

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.
Files changed (42) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/AD728x90.js +1 -1
  3. package/dist/cjs/AccordionPanel.js +2 -2
  4. package/dist/cjs/HamMagazine.js +207 -28
  5. package/dist/cjs/HorizontalHero.js +3 -3
  6. package/dist/cjs/MasterDeck.js +4 -4
  7. package/dist/cjs/NavDvm.js +214 -14
  8. package/dist/cjs/NavMagazine.js +200 -13
  9. package/dist/cjs/NavNative.js +190 -13
  10. package/dist/cjs/NavNormal.js +229 -10
  11. package/dist/cjs/OncliveHero.js +2 -2
  12. package/dist/cjs/PdfDownload.js +2 -2
  13. package/dist/cjs/TemplateNormal.js +7 -7
  14. package/dist/cjs/Ustream.js +5 -5
  15. package/dist/cjs/VideoSeriesListing.js +2 -2
  16. package/dist/cjs/{iconBase-637d3f1e.js → iconBase-68959171.js} +1 -0
  17. package/dist/cjs/index.esm-0e5c6a9e.js +11 -0
  18. package/dist/cjs/{index.esm-c0d8b44b.js → index.esm-66ffa47a.js} +1 -1
  19. package/dist/cjs/{index.esm-25423c2f.js → index.esm-89fabc47.js} +1 -1
  20. package/dist/cjs/{index.esm-fcdbd2c6.js → index.esm-fbd1f7e9.js} +1 -1
  21. package/dist/cjs/index.js +9 -8
  22. package/dist/esm/AD728x90.js +1 -1
  23. package/dist/esm/AccordionPanel.js +2 -2
  24. package/dist/esm/HamMagazine.js +207 -28
  25. package/dist/esm/HorizontalHero.js +2 -2
  26. package/dist/esm/MasterDeck.js +4 -4
  27. package/dist/esm/NavDvm.js +215 -15
  28. package/dist/esm/NavMagazine.js +200 -13
  29. package/dist/esm/NavNative.js +190 -13
  30. package/dist/esm/NavNormal.js +230 -11
  31. package/dist/esm/OncliveHero.js +2 -2
  32. package/dist/esm/PdfDownload.js +2 -2
  33. package/dist/esm/TemplateNormal.js +7 -7
  34. package/dist/esm/Ustream.js +3 -3
  35. package/dist/esm/VideoSeriesListing.js +2 -2
  36. package/dist/esm/{iconBase-6ee2f2fb.js → iconBase-602d52fe.js} +1 -1
  37. package/dist/esm/index.esm-16536e81.js +9 -0
  38. package/dist/esm/{index.esm-b97cf389.js → index.esm-4b1d94b7.js} +1 -1
  39. package/dist/esm/{index.esm-a7ad65ba.js → index.esm-9a4c8813.js} +1 -1
  40. package/dist/esm/{index.esm-9d6faf80.js → index.esm-b08f4b04.js} +1 -1
  41. package/dist/esm/index.js +8 -7
  42. package/package.json +1 -1
@@ -4,30 +4,84 @@ import './core.get-iterator-method-f5c0d66a.js';
4
4
  import './_library-528f1934.js';
5
5
  import './_iter-detect-6e099a34.js';
6
6
  import './web.dom.iterable-46c95e52.js';
7
- import React__default from 'react';
7
+ import React__default, { useRef, useState, useEffect } from 'react';
8
+ import 'prop-types';
8
9
  import Container from 'react-bootstrap/Container';
9
- import './slicedToArray-f1e40361.js';
10
+ import { _ as _slicedToArray } from './slicedToArray-f1e40361.js';
10
11
  import './stringify-e30bc114.js';
11
12
  import './asyncToGenerator-0379e924.js';
12
13
  import './_set-species-6f64f1c1.js';
13
14
  import { S as Segment } from './beam-a25bd8fd.js';
14
- import 'react-bootstrap/Button';
15
+ import { r as reactSocialIcons_1 } from './react-social-icons-a7d5c5c7.js';
16
+ import { I as IconContext } from './iconBase-602d52fe.js';
17
+ import Button from 'react-bootstrap/Button';
15
18
  import Nav from 'react-bootstrap/Nav';
16
19
  import Navbar from 'react-bootstrap/Navbar';
17
20
  import NavDropdown from 'react-bootstrap/NavDropdown';
18
- import 'react-bootstrap/Form';
19
- import 'react-bootstrap/FormControl';
20
- import Search from './Search.js';
21
21
  import { N as NavFooter } from './NavFooter-e27bd93b.js';
22
+ import { G as GoSearch } from './index.esm-16536e81.js';
23
+ import Form from 'react-bootstrap/Form';
24
+ import FormControl from 'react-bootstrap/FormControl';
22
25
 
23
26
  var NavDvm = function NavDvm(props) {
24
27
  var logo = props.logo,
25
28
  mobileLogo = props.mobileLogo,
26
29
  dataObject = props.dataObject,
27
30
  subNav = props.subNav,
28
- _props$website = props.website,
29
- website = _props$website === undefined ? {} : _props$website;
31
+ website = props.website;
32
+ // reference to mobile search component
30
33
 
34
+ var searchRef = useRef(null);
35
+ // Search Term
36
+
37
+ var _useState = useState(''),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ searchKey = _useState2[0],
40
+ setSearchKey = _useState2[1];
41
+ // reference to navigation component
42
+
43
+
44
+ var navRef = useRef(null);
45
+ var relNavRef = useRef(null);
46
+
47
+ useEffect(function () {
48
+ // Setting the top of the search component based on the offset of navigation component.
49
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
50
+
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ }, []);
53
+
54
+ useEffect(function () {
55
+ // Making the search and navbar Sticky on scroll
56
+ var navOffsetTop = document.getElementById('navbar-dvm').offsetTop;
57
+ if (window.pageYOffset > navOffsetTop) {
58
+ if (navRef.current && navRef.current.style) {
59
+ searchRef.current.style.position = 'fixed';
60
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
61
+ searchRef.current.style.zIndex = '99999';
62
+ searchRef.current.style.width = '100%';
63
+ }
64
+ }
65
+ var stickyNav = window.addEventListener('scroll', function () {
66
+ if (window.pageYOffset > navOffsetTop) {
67
+ if (navRef.current && navRef.current.style) {
68
+ searchRef.current.style.position = 'fixed';
69
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
70
+ searchRef.current.style.zIndex = '99999';
71
+ searchRef.current.style.width = '100%';
72
+ }
73
+ } else {
74
+ if (navRef.current && navRef.current.style) {
75
+ searchRef.current.style.position = 'fixed';
76
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
77
+ searchRef.current.style.width = '100%';
78
+ }
79
+ }
80
+ });
81
+ return function () {
82
+ window.removeEventListener('scroll', stickyNav);
83
+ };
84
+ }, []);
31
85
 
32
86
  var getLink = function getLink(url, className, name, key, blank) {
33
87
  var needSegmentSupport = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -48,6 +102,139 @@ var NavDvm = function NavDvm(props) {
48
102
  );
49
103
  };
50
104
 
105
+ // Search function
106
+ var submitSearch = function submitSearch(e) {
107
+ e.preventDefault();
108
+ window.location.href = '/search?searchTerm=' + searchKey;
109
+ };
110
+
111
+ // Toggling class of an element.Can't use toggle() as IE doesn't support toggle()
112
+ var toggleClass = function toggleClass(selector, type, addOn) {
113
+ if (type === 'id') {
114
+ var searchBar = document.getElementById(selector);
115
+ if (searchBar && searchBar.classList && searchBar.classList.contains(addOn)) {
116
+ searchBar.classList.remove(addOn);
117
+ } else if (searchBar && searchBar.classList) {
118
+ searchBar.classList.add(addOn);
119
+ }
120
+ } else if (type === 'class') {
121
+ var searchBtn = document.getElementsByClassName(selector)[0];
122
+ if (searchBtn && searchBtn.classList && searchBtn.classList.contains(addOn)) {
123
+ searchBtn.classList.remove(addOn);
124
+ } else if (searchBtn && searchBtn.classList) {
125
+ searchBtn.classList.add(addOn);
126
+ }
127
+ }
128
+ };
129
+
130
+ // Search Component
131
+ var socialSearchComponent = function socialSearchComponent(type) {
132
+ if (type === 'mobile') {
133
+ return React__default.createElement(
134
+ 'div',
135
+ { id: 'search-content-mobile' },
136
+ React__default.createElement(
137
+ 'div',
138
+ { id: 'search-bar-mobile', ref: searchRef },
139
+ React__default.createElement(
140
+ Form,
141
+ { inline: true, onSubmit: function onSubmit(e) {
142
+ return submitSearch(e);
143
+ } },
144
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
145
+ return setSearchKey(e.target.value);
146
+ } }),
147
+ React__default.createElement(
148
+ Button,
149
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
150
+ return submitSearch(e);
151
+ } },
152
+ 'Search'
153
+ )
154
+ )
155
+ ),
156
+ React__default.createElement(
157
+ IconContext.Provider,
158
+ { value: { color: 'white', className: 'search-btn-mobile', size: '50px' } },
159
+ React__default.createElement(GoSearch, {
160
+ onClick: function onClick() {
161
+ var navToggle = document.getElementsByClassName('navbar-toggler')[0];
162
+ if (navToggle && navToggle.classList && !navToggle.classList.contains('collapsed')) {
163
+ var nav = document.querySelectorAll('.navbar-collapse');
164
+ for (var i = 0; i < nav.length; i++) {
165
+ if (nav[i] && nav[i].classList) nav[i].classList.remove('show');
166
+ }
167
+ if (navToggle && navToggle.classList) navToggle.classList.add('collapsed');
168
+ }
169
+
170
+ toggleClass('search-bar-mobile', 'id', 'show');
171
+ toggleClass('search-btn-mobile', 'class', 'active-search');
172
+ }
173
+ })
174
+ ),
175
+ React__default.createElement(
176
+ 'style',
177
+ { jsx: 'true' },
178
+ '\n #search-content-mobile {\n display: flex;\n }\n @media screen and (min-width: 1200px) {\n #search-content-mobile {\n display: none;\n }\n }\n #search-content-mobile .search-btn-mobile {\n padding: 5px;\n position: absolute;\n right: 4%;\n height: 45px;\n width: 45px;\n margin-top: 4px;\n cursor: pointer;\n top: -20%;\n }\n #search-content-mobile #search-bar-mobile {\n position: fixed;\n display: none;\n background-color: #60bdcd;\n left: 0px;\n width: 100%;\n border-radius: 5px;\n padding: 10px;\n }\n #search-content-mobile #search-bar-mobile .form-inline {\n margin-top: 0px;\n width: 100% !important;\n }\n #search-content-mobile #search-bar-mobile .form-inline .form-control {\n width: 78%;\n border-radius: 5px;\n height: 45px;\n }\n #search-content-mobile #search-bar-mobile .form-inline .btn {\n width: 20%;\n border-radius: 5px;\n background-color: #040c5a;\n height: 45px;\n margin-left: 5px;\n }\n .show {\n display: block !important;\n }\n .active-search {\n border-radius: 5px;\n background-color: #60bdcd;\n border: 1px solid var(--secondary);\n }\n '
179
+ )
180
+ );
181
+ } else if (type === 'desktop') {
182
+ return React__default.createElement(
183
+ 'div',
184
+ { id: 'search-content-desktop' },
185
+ React__default.createElement(
186
+ 'div',
187
+ { id: 'search-bar-desktop' },
188
+ React__default.createElement(
189
+ Form,
190
+ { inline: true, onSubmit: function onSubmit(e) {
191
+ return submitSearch(e);
192
+ } },
193
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
194
+ return setSearchKey(e.target.value);
195
+ } }),
196
+ React__default.createElement(
197
+ Button,
198
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
199
+ return submitSearch(e);
200
+ } },
201
+ 'Search'
202
+ )
203
+ )
204
+ ),
205
+ React__default.createElement(
206
+ IconContext.Provider,
207
+ { value: { color: 'white', className: 'search-btn-desktop', size: '50px' } },
208
+ React__default.createElement(GoSearch, {
209
+ onClick: function onClick() {
210
+ toggleClass('search-bar-desktop', 'id', 'show');
211
+ toggleClass('search-btn-desktop', 'class', 'active-search');
212
+ }
213
+ })
214
+ ),
215
+ website && website.siteSettingCache && website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.length !== 0 && React__default.createElement(
216
+ 'div',
217
+ { id: 'social-tab-desktop' },
218
+ website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.map(function (row, index) {
219
+ return React__default.createElement(reactSocialIcons_1, {
220
+ target: row.blank ? '_blank' : '_self',
221
+ rel: 'noopener noreferrer',
222
+ key: index,
223
+ index: index,
224
+ url: row.url,
225
+ style: { width: 25, height: 25, marginRight: 3 }
226
+ });
227
+ })
228
+ ),
229
+ React__default.createElement(
230
+ 'style',
231
+ { jsx: 'true' },
232
+ '\n #social-tab-desktops {\n position: relative;\n display: flex;\n left: 0px;\n }\n @media screen and (max-width: 1199px) {\n #search-content-desktop {\n display: none !important;\n }\n }\n #search-content-desktop {\n display: flex;\n padding-top: 1px;\n height: 35px;\n position: absolute;\n right: 5%;\n }\n #search-content-desktop .search-btn-desktop {\n padding: 5px;\n height: 30px;\n width: 30px;\n margin: -1px 5px 0px 0px;\n cursor: pointer;\n }\n\n #search-content-desktop #search-bar-desktop {\n display: none;\n background-color: #60bdcd;\n position: relative;\n width: 400px;\n border-radius: 5px;\n height: 48px;\n top: 45px;\n }\n #search-content-desktop #search-bar-desktop .form-inline {\n padding: 5px;\n }\n #search-content-desktop #search-bar-desktop .form-inline .form-control {\n width: 78%;\n border-radius: 5px;\n }\n #search-content-desktop #search-bar-desktop .form-inline .btn {\n width: 20%;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n padding: 1px;\n }\n .show {\n display: block !important;\n }\n .active-search {\n border-radius: 5px;\n background-color: #60bdcd;\n border: 1px solid var(--secondary);\n }\n '
233
+ )
234
+ );
235
+ }
236
+ };
237
+
51
238
  return React__default.createElement(
52
239
  React__default.Fragment,
53
240
  null,
@@ -74,16 +261,29 @@ var NavDvm = function NavDvm(props) {
74
261
  ),
75
262
  React__default.createElement(
76
263
  Navbar,
77
- { className: 'bottom-nav', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top' },
264
+ { id: 'navbar-dvm', className: 'bottom-nav', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top', ref: navRef },
78
265
  React__default.createElement(
79
266
  Container,
80
- { className: 'mobile-nav position-relative' },
267
+ { className: 'mobile-nav position-relative', ref: relNavRef },
81
268
  mobileLogo && React__default.createElement(
82
269
  'a',
83
270
  { href: '/', className: 'mobile-logo' },
84
271
  React__default.createElement('img', { src: mobileLogo })
85
272
  ),
86
- React__default.createElement(Navbar.Toggle, { 'aria-controls': 'basic-navbar-nav' }),
273
+ React__default.createElement(Navbar.Toggle, {
274
+ 'aria-controls': 'basic-navbar-nav',
275
+ onClick: function onClick() {
276
+ var searchBar = document.getElementById('search-bar-mobile');
277
+ var searchBtn = document.getElementsByClassName('search-btn-mobile');
278
+ if (searchBar && searchBar.classList) {
279
+ searchBar.classList.remove('show');
280
+ }
281
+ if (searchBtn && searchBtn[0].classList) {
282
+ searchBtn[0].classList.remove('active-search');
283
+ }
284
+ }
285
+ }),
286
+ socialSearchComponent('mobile'),
87
287
  React__default.createElement(
88
288
  Navbar.Collapse,
89
289
  { id: 'basic-navbar-nav' },
@@ -126,8 +326,7 @@ var NavDvm = function NavDvm(props) {
126
326
  return getLink(row.url, 'nav-link', row.name, index, row.blank, row.needSegmentSupport);
127
327
  }
128
328
  })
129
- ),
130
- React__default.createElement(Search, null)
329
+ )
131
330
  ),
132
331
  subNav && React__default.createElement(
133
332
  Navbar.Collapse,
@@ -197,7 +396,8 @@ var NavDvm = function NavDvm(props) {
197
396
  { className: 'mr-auto' },
198
397
  React__default.createElement(NavFooter, { website: website })
199
398
  )
200
- )
399
+ ),
400
+ socialSearchComponent('desktop')
201
401
  )
202
402
  ),
203
403
  React__default.createElement(
@@ -212,7 +412,7 @@ var NavDvm = function NavDvm(props) {
212
412
  React__default.createElement(
213
413
  'style',
214
414
  { jsx: 'true' },
215
- '\n .mobile-logo {\n display: none;\n position: absolute;\n left: 50%;\n top: 0;\n height: 40px;\n transform: translateX(-50%);\n }\n .mobile-logo img {\n height: 100%;\n }\n @media screen and (max-width: 1192px) {\n .mobile-logo {\n display: block;\n }\n .top-nav {\n display: none;\n }\n .navbar-expand-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 20px;\n border-bottom: 0.5px solid white;\n margin-bottom: 15px;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n margin: 5px 0px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n }\n @media screen and (max-width: 991px) {\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n }\n @media screen and (min-width: 1200px) {\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n }\n '
415
+ '\n .mobile-logo {\n display: none;\n position: absolute;\n left: 50%;\n top: 0;\n height: 40px;\n transform: translateX(-50%);\n }\n .mobile-logo img {\n height: 100%;\n }\n @media screen and (max-width: 1199px) {\n .mobile-logo {\n display: block;\n }\n .top-nav {\n display: none;\n }\n .navbar-expand-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 20px;\n border-bottom: 0.5px solid white;\n margin-bottom: 15px;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n margin: 5px 0px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n /* To break text into next line */\n white-space: inherit !important;\n margin-bottom: 5px;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n }\n @media screen and (max-width: 991px) {\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n }\n @media screen and (min-width: 1200px) {\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n }\n '
216
416
  )
217
417
  );
218
418
  };
@@ -13,19 +13,19 @@ import './stringify-e30bc114.js';
13
13
  import './asyncToGenerator-0379e924.js';
14
14
  import './_set-species-6f64f1c1.js';
15
15
  import { S as Segment } from './beam-a25bd8fd.js';
16
- import './react-social-icons-a7d5c5c7.js';
17
- import './iconBase-6ee2f2fb.js';
18
- import { b as IoMdLogIn, c as IoIosHome } from './index.esm-b97cf389.js';
19
- import 'react-bootstrap/Button';
16
+ import { r as reactSocialIcons_1 } from './react-social-icons-a7d5c5c7.js';
17
+ import { I as IconContext } from './iconBase-602d52fe.js';
18
+ import { b as IoMdLogIn, c as IoIosHome } from './index.esm-4b1d94b7.js';
19
+ import Button from 'react-bootstrap/Button';
20
20
  import Nav from 'react-bootstrap/Nav';
21
21
  import Navbar from 'react-bootstrap/Navbar';
22
22
  import NavDropdown from 'react-bootstrap/NavDropdown';
23
- import { M as MdEmail } from './index.esm-9d6faf80.js';
24
- import 'react-bootstrap/Form';
25
- import 'react-bootstrap/FormControl';
26
- import Search from './Search.js';
23
+ import { M as MdEmail } from './index.esm-b08f4b04.js';
27
24
  import { N as NavFooter } from './NavFooter-e27bd93b.js';
28
25
  import { S as SocialNavFooter } from './SocialNavFooter-4fb16720.js';
26
+ import { G as GoSearch } from './index.esm-16536e81.js';
27
+ import Form from 'react-bootstrap/Form';
28
+ import FormControl from 'react-bootstrap/FormControl';
29
29
 
30
30
  var NavMagazine = function NavMagazine(props) {
31
31
  /*
@@ -54,6 +54,8 @@ var NavMagazine = function NavMagazine(props) {
54
54
 
55
55
  var navRef = useRef(null);
56
56
  var topNavRef = useRef(null);
57
+ // reference to mobile search component
58
+ var searchRef = useRef(null);
57
59
 
58
60
  var _useState = useState(false),
59
61
  _useState2 = _slicedToArray(_useState, 2),
@@ -66,6 +68,10 @@ var NavMagazine = function NavMagazine(props) {
66
68
  setScreenWidth = _useState4[1];
67
69
 
68
70
  useEffect(function () {
71
+ // handling the top mast component
72
+ var topNavHeight = document.querySelector('.top-nav-secondary') && document.querySelector('.top-nav-secondary').offsetHeight;
73
+ // Setting the top of the search component based on the offset of navigation component.
74
+ searchRef.current.style.top = (topNavHeight ? topNavHeight + navRef.current.offsetHeight : navRef.current.offsetHeight) + 1 + 'px';
69
75
  document.addEventListener('scroll', trackScrolling);
70
76
  return function () {
71
77
  document.removeEventListener('scroll', trackScrolling);
@@ -87,6 +93,11 @@ var NavMagazine = function NavMagazine(props) {
87
93
  navRef.current.style.top = 0;
88
94
  navRef.current.style.width = '100%';
89
95
  navRef.current.style.zIndex = '99999';
96
+ // Making the search Sticky on scroll
97
+ searchRef.current.style.position = 'fixed';
98
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
99
+ searchRef.current.style.zIndex = '99999';
100
+ searchRef.current.style.width = '100%';
90
101
  }
91
102
  }
92
103
  var stickyNav = window.addEventListener('scroll', function () {
@@ -97,13 +108,23 @@ var NavMagazine = function NavMagazine(props) {
97
108
  navRef.current.style.top = 0;
98
109
  navRef.current.style.width = '100%';
99
110
  navRef.current.style.zIndex = '99999';
111
+ // Making the search Sticky on scroll
112
+ searchRef.current.style.position = 'fixed';
113
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
114
+ searchRef.current.style.zIndex = '99999';
115
+ searchRef.current.style.width = '100%';
100
116
  }
101
117
  } else {
118
+ var topNavHeight = document.querySelector('.top-nav-secondary') && document.querySelector('.top-nav-secondary').offsetHeight;
102
119
  if (navRef.current && navRef.current.style) {
103
120
  topNavRef.current.style.paddingBottom = '0';
104
121
  navRef.current.style.position = 'relative';
105
122
  navRef.current.style.top = '';
106
123
  if (adSection) adSection.style.marginTop = '';
124
+ // Making the search Sticky on scroll
125
+ searchRef.current.style.position = 'fixed';
126
+ searchRef.current.style.top = (topNavHeight ? topNavHeight + navRef.current.offsetHeight : navRef.current.offsetHeight) + 1 + 'px';
127
+ searchRef.current.style.width = '100%';
107
128
  }
108
129
  }
109
130
  });
@@ -133,6 +154,13 @@ var NavMagazine = function NavMagazine(props) {
133
154
  _useState8 = _slicedToArray(_useState7, 2),
134
155
  userChecked = _useState8[0],
135
156
  setUserChecked = _useState8[1];
157
+ // Search Term
158
+
159
+
160
+ var _useState9 = useState(''),
161
+ _useState10 = _slicedToArray(_useState9, 2),
162
+ searchKey = _useState10[0],
163
+ setSearchKey = _useState10[1];
136
164
 
137
165
  useEffect(function () {
138
166
  setUserLoggedIn(props.user ? true : false);
@@ -141,6 +169,139 @@ var NavMagazine = function NavMagazine(props) {
141
169
  }
142
170
  }, [props.user, userChecked]);
143
171
 
172
+ // Search function
173
+ var submitSearch = function submitSearch(e) {
174
+ e.preventDefault();
175
+ window.location.href = '/search?searchTerm=' + searchKey;
176
+ };
177
+
178
+ // Toggling class of an element.Can't use toggle() as IE doesn't support toggle()
179
+ var toggleClass = function toggleClass(selector, type, addOn) {
180
+ if (type === 'id') {
181
+ var searchBar = document.getElementById(selector);
182
+ if (searchBar && searchBar.classList && searchBar.classList.contains(addOn)) {
183
+ searchBar.classList.remove(addOn);
184
+ } else if (searchBar && searchBar.classList) {
185
+ searchBar.classList.add(addOn);
186
+ }
187
+ } else if (type === 'class') {
188
+ var searchBtn = document.getElementsByClassName(selector)[0];
189
+ if (searchBtn && searchBtn.classList && searchBtn.classList.contains(addOn)) {
190
+ searchBtn.classList.remove(addOn);
191
+ } else if (searchBtn && searchBtn.classList) {
192
+ searchBtn.classList.add(addOn);
193
+ }
194
+ }
195
+ };
196
+
197
+ // Search Component
198
+ var socialSearchComponent = function socialSearchComponent(type) {
199
+ if (type === 'mobile') {
200
+ return React__default.createElement(
201
+ 'div',
202
+ { id: 'search-content-mobile' },
203
+ React__default.createElement(
204
+ 'div',
205
+ { id: 'search-bar-mobile', ref: searchRef },
206
+ React__default.createElement(
207
+ Form,
208
+ { inline: true, onSubmit: function onSubmit(e) {
209
+ return submitSearch(e);
210
+ } },
211
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
212
+ return setSearchKey(e.target.value);
213
+ } }),
214
+ React__default.createElement(
215
+ Button,
216
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
217
+ return submitSearch(e);
218
+ } },
219
+ 'Search'
220
+ )
221
+ )
222
+ ),
223
+ React__default.createElement(
224
+ IconContext.Provider,
225
+ { value: { color: 'white', className: 'search-btn-mobile', size: '50px' } },
226
+ React__default.createElement(GoSearch, {
227
+ onClick: function onClick() {
228
+ var navToggle = document.getElementsByClassName('navbar-toggler')[0];
229
+ if (navToggle && navToggle.classList && !navToggle.classList.contains('collapsed')) {
230
+ var nav = document.querySelectorAll('.navbar-collapse');
231
+ for (var i = 0; i < nav.length; i++) {
232
+ if (nav[i] && nav[i].classList) nav[i].classList.remove('show');
233
+ }
234
+ if (navToggle && navToggle.classList) navToggle.classList.add('collapsed');
235
+ }
236
+
237
+ toggleClass('search-bar-mobile', 'id', 'show');
238
+ toggleClass('search-btn-mobile', 'class', 'active-search');
239
+ }
240
+ })
241
+ ),
242
+ React__default.createElement(
243
+ 'style',
244
+ { jsx: 'true' },
245
+ '\n #search-content-mobile {\n display: flex;\n }\n @media screen and (min-width: 1200px) {\n #search-content-mobile {\n display: none;\n }\n }\n #search-content-mobile .search-btn-mobile {\n padding: 5px;\n position: absolute;\n right: 4%;\n height: 45px;\n width: 45px;\n margin-top: 4px;\n cursor: pointer;\n top: 10%;\n }\n #search-content-mobile #search-bar-mobile {\n position: fixed;\n display: none;\n background-color: #60bdcd;\n left: 0px;\n width: 100%;\n border-radius: 5px;\n padding: 10px;\n }\n #search-content-mobile #search-bar-mobile .form-inline {\n margin-top: 0px;\n width: 100% !important;\n }\n #search-content-mobile #search-bar-mobile .form-inline .form-control {\n width: 78%;\n border-radius: 5px;\n height: 45px;\n }\n #search-content-mobile #search-bar-mobile .form-inline .btn {\n width: 20%;\n border-radius: 5px;\n background-color: #040c5a;\n height: 45px;\n margin-left: 5px;\n }\n .show {\n display: block !important;\n }\n .active-search {\n border-radius: 5px;\n background-color: #60bdcd;\n border: 1px solid var(--secondary);\n }\n '
246
+ )
247
+ );
248
+ } else if (type === 'desktop') {
249
+ return React__default.createElement(
250
+ 'div',
251
+ { id: 'search-content-desktop' },
252
+ React__default.createElement(
253
+ 'div',
254
+ { id: 'search-bar-desktop' },
255
+ React__default.createElement(
256
+ Form,
257
+ { inline: true, onSubmit: function onSubmit(e) {
258
+ return submitSearch(e);
259
+ } },
260
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
261
+ return setSearchKey(e.target.value);
262
+ } }),
263
+ React__default.createElement(
264
+ Button,
265
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
266
+ return submitSearch(e);
267
+ } },
268
+ 'Search'
269
+ )
270
+ )
271
+ ),
272
+ React__default.createElement(
273
+ IconContext.Provider,
274
+ { value: { color: 'white', className: 'search-btn-desktop', size: '50px' } },
275
+ React__default.createElement(GoSearch, {
276
+ onClick: function onClick() {
277
+ toggleClass('search-bar-desktop', 'id', 'show');
278
+ toggleClass('search-btn-desktop', 'class', 'active-search');
279
+ }
280
+ })
281
+ ),
282
+ website && website.siteSettingCache && website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.length !== 0 && React__default.createElement(
283
+ 'div',
284
+ { id: 'social-tab-desktop' },
285
+ website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.map(function (row, index) {
286
+ return React__default.createElement(reactSocialIcons_1, {
287
+ target: row.blank ? '_blank' : '_self',
288
+ rel: 'noopener noreferrer',
289
+ key: index,
290
+ index: index,
291
+ url: row.url,
292
+ style: { width: 25, height: 25, marginRight: 3 }
293
+ });
294
+ })
295
+ ),
296
+ React__default.createElement(
297
+ 'style',
298
+ { jsx: 'true' },
299
+ '\n #social-tab-desktops {\n position: relative;\n display: flex;\n left: 0px;\n }\n @media screen and (max-width: 1199px) {\n #search-content-desktop {\n display: none !important;\n }\n }\n #search-content-desktop {\n display: flex;\n padding-top: 1px;\n height: 35px;\n position: absolute;\n right: 5%;\n }\n #search-content-desktop .search-btn-desktop {\n padding: 5px;\n height: 30px;\n width: 30px;\n margin: -1px 5px 0px 0px;\n cursor: pointer;\n }\n\n #search-content-desktop #search-bar-desktop {\n display: none;\n background-color: #60bdcd;\n position: relative;\n width: 400px;\n border-radius: 5px;\n height: 48px;\n top: 50px;\n }\n #search-content-desktop #search-bar-desktop .form-inline {\n padding: 5px;\n }\n #search-content-desktop #search-bar-desktop .form-inline .form-control {\n width: 78%;\n border-radius: 5px;\n }\n #search-content-desktop #search-bar-desktop .form-inline .btn {\n width: 20%;\n border-radius: 5px;\n padding: 7px;\n margin-left: 5px;\n padding: 1px;\n }\n .show {\n display: block !important;\n }\n .active-search {\n border-radius: 5px;\n background-color: #60bdcd;\n border: 1px solid var(--secondary);\n }\n '
300
+ )
301
+ );
302
+ }
303
+ };
304
+
144
305
  return React__default.createElement(
145
306
  React__default.Fragment,
146
307
  null,
@@ -240,13 +401,39 @@ var NavMagazine = function NavMagazine(props) {
240
401
  { id: 'navbar-ham', className: main_40 ? 'bottom-nav ios-nav' : 'bottom-nav ', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top', ref: navRef },
241
402
  React__default.createElement(
242
403
  Container,
243
- { className: 'mobile-nav android-nav' },
404
+ { className: 'mobile-nav android-nav', style: { display: 'flex' } },
244
405
  React__default.createElement(
245
406
  'div',
246
407
  { className: 'nav-toggle' },
247
- React__default.createElement(Navbar.Toggle, { 'aria-controls': 'basic-navbar-nav' }),
248
- React__default.createElement(Search, { device: 'mobile' })
408
+ React__default.createElement(Navbar.Toggle, {
409
+ 'aria-controls': 'basic-navbar-nav',
410
+ onClick: function onClick() {
411
+ var searchBar = document.getElementById('search-bar-mobile');
412
+ var searchBtn = document.getElementsByClassName('search-btn-mobile');
413
+ if (searchBar && searchBar.classList) {
414
+ searchBar.classList.remove('show');
415
+ }
416
+ if (searchBtn && searchBtn[0].classList) {
417
+ searchBtn[0].classList.remove('active-search');
418
+ }
419
+ }
420
+ })
421
+ ),
422
+ React__default.createElement(
423
+ 'div',
424
+ { className: 'site-logo-wrapper', style: { display: 'none' } },
425
+ React__default.createElement(
426
+ 'a',
427
+ { href: '/' },
428
+ React__default.createElement('img', { src: logo })
429
+ ),
430
+ React__default.createElement(
431
+ 'style',
432
+ { jsx: 'true' },
433
+ '\n @media screen and (max-width: 1199px) {\n .site-logo-wrapper {\n display: block !important;\n margin: auto;\n margin-top: 10px;\n }\n .site-logo-wrapper img {\n object-fit: contain;\n max-height: 45px;\n }\n .nav-mobile-logo {\n display: none !important;\n }\n }\n @media screen and (max-width: 420px) {\n .site-logo-wrapper img {\n max-width: 200px;\n }\n }\n '
434
+ )
249
435
  ),
436
+ socialSearchComponent('mobile'),
250
437
  subNav && React__default.createElement(
251
438
  Navbar.Collapse,
252
439
  { id: 'basic-navbar-sub' },
@@ -395,7 +582,7 @@ var NavMagazine = function NavMagazine(props) {
395
582
  }
396
583
  })
397
584
  ),
398
- React__default.createElement(Search, { device: 'mobile' })
585
+ socialSearchComponent('desktop')
399
586
  ),
400
587
  website && React__default.createElement(
401
588
  Navbar.Collapse,
@@ -420,7 +607,7 @@ var NavMagazine = function NavMagazine(props) {
420
607
  React__default.createElement(
421
608
  'style',
422
609
  { jsx: 'true' },
423
- '\n .sticky-home {\n position: relative;\n top: -3px;\n left: -6px;\n cursor: pointer;\n }\n .nav-item svg {\n margin-bottom: 2px;\n }\n #nav-login,\n #nav-logout,\n #nav-register {\n padding: 0.5rem;\n cursor: pointer;\n }\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: none;\n }\n #nav-mobile-logout,\n #nav-mobile-login {\n position: absolute;\n right: 1rem;\n }\n #nav-mobile-register {\n position: absolute;\n left: 1rem;\n }\n\n @media screen and (max-width: 1192px) {\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: block;\n }\n .navbar-top {\n flex-direction: row;\n justify-content: space-around !important;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n width: 100%;\n }\n }\n\n @media screen and (max-width: 1192px) {\n .mobile-nav .nav-toggle {\n width: 100%;\n }\n\n .android-nav {\n max-height: 80vh;\n }\n\n .ios-nav {\n max-height: none;\n }\n\n .navbar.bg-primary {\n overflow: auto;\n }\n\n .mobile-nav .nav-toggle .navbar-toggler {\n float: left;\n height: 45px;\n }\n .mobile-nav .nav-toggle .form-inline {\n float: right;\n margin: 4px 0px 0px 0px;\n }\n .mobile-nav .form-inline .mobile-search {\n width: auto;\n }\n .sticky-home {\n display: none;\n }\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n .navbar-expand-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 10px;\n border-bottom: 0.5px solid white;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n display: none;\n }\n .navbar .mobile-nav .navbar-collapse {\n margin-top: 15px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n margin-top: 0px;\n padding-top: 10px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n .navbar .mobile-nav .dropdown-menu.show {\n max-height: 100px;\n }\n }\n @media screen and (min-width: 992px) {\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n .mobile-nav .nav-toggle .form-inline {\n display: none;\n }\n }\n\n @media screen and (max-width: 376px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n width: 60%;\n }\n .mobile-nav .nav-toggle .form-inline {\n width: 70%;\n }\n }\n @media screen and (max-width: 328px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n margin-right: 5px;\n }\n }\n @media screen and (max-width: 767px) {\n .logo {\n max-width: 100%;\n padding-left: 10px;\n padding-right: 10px;\n }\n }\n '
610
+ '\n .sticky-home {\n position: relative;\n top: -3px;\n left: -6px;\n cursor: pointer;\n }\n .nav-item svg {\n margin-bottom: 2px;\n }\n #nav-login,\n #nav-logout,\n #nav-register {\n padding: 0.5rem;\n cursor: pointer;\n }\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: none;\n }\n #nav-mobile-logout,\n #nav-mobile-login {\n position: absolute;\n right: 1rem;\n }\n #nav-mobile-register {\n position: absolute;\n left: 1rem;\n }\n\n @media screen and (max-width: 1192px) {\n #nav-mobile-login,\n #nav-mobile-logout,\n #nav-mobile-register {\n display: block;\n }\n .navbar-top {\n flex-direction: row;\n justify-content: space-around !important;\n align-items: center;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n width: 100%;\n }\n }\n\n @media screen and (max-width: 1192px) {\n .android-nav {\n max-height: 80vh;\n }\n\n .ios-nav {\n max-height: none;\n }\n\n .navbar.bg-primary {\n overflow: auto;\n }\n\n .mobile-nav .nav-toggle .navbar-toggler {\n float: left;\n height: 45px;\n }\n .mobile-nav .nav-toggle .form-inline {\n float: right;\n margin: 4px 0px 0px 0px;\n }\n .mobile-nav .form-inline .mobile-search {\n width: auto;\n }\n .sticky-home {\n display: none;\n }\n .dropdown-menu {\n max-height: 315px;\n overflow: auto;\n }\n ::-webkit-scrollbar {\n width: 10px;\n }\n ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(214, 214, 214, 0.8);\n box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5);\n }\n .navbar-expand-lg .show#basic-navbar-sub {\n display: block;\n }\n .navbar .mobile-nav .navbar-collapse.show {\n padding-bottom: 10px;\n border-bottom: 0.5px solid white;\n }\n .navbar .mobile-nav .navbar-collapse .form-inline {\n display: none;\n }\n .navbar .mobile-nav .navbar-collapse {\n margin-top: 15px;\n }\n .navbar .mobile-nav .navbar-collapse:last-child {\n border-bottom: none;\n margin-bottom: 0px;\n padding-bottom: 0px;\n margin-top: 0px;\n padding-top: 10px;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer ul {\n list-style-type: none;\n padding: inherit;\n margin-bottom: 0rem;\n }\n .navbar .mobile-nav .navbar-collapse .nav-footer .nav-link {\n text-transform: capitalize !important;\n font-weight: 300;\n }\n .navbar .mobile-nav .dropdown-item:focus {\n background-color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: white;\n /* To break text into next line */\n white-space: inherit !important;\n margin-bottom: 5px;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: inherit;\n border: none;\n }\n .navbar .mobile-nav .dropdown-menu.show {\n max-height: 100px;\n }\n }\n @media screen and (min-width: 992px) {\n #basic-navbar-sub {\n display: none !important;\n }\n .navbar .mobile-nav .dropdown-menu .dropdown-item {\n color: #696969;\n }\n .navbar .mobile-nav .dropdown-menu {\n background: white;\n border: 1 px solid #708090;\n }\n .mobile-nav .nav-toggle .form-inline {\n display: none;\n }\n }\n\n @media screen and (max-width: 376px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n width: 60%;\n }\n .mobile-nav .nav-toggle .form-inline {\n width: 70%;\n }\n }\n @media screen and (max-width: 328px) {\n .mobile-nav .nav-toggle .form-inline .mobile-search {\n margin-right: 5px;\n }\n }\n @media screen and (max-width: 767px) {\n .logo {\n max-width: 100%;\n padding-left: 10px;\n padding-right: 10px;\n }\n }\n '
424
611
  )
425
612
  );
426
613
  };