@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
@@ -12,29 +12,83 @@ require('./_iter-detect-4d0352f8.js');
12
12
  require('./web.dom.iterable-43c3e277.js');
13
13
  var React = require('react');
14
14
  var React__default = _interopDefault(React);
15
+ require('prop-types');
15
16
  var Container = _interopDefault(require('react-bootstrap/Container'));
16
- require('./slicedToArray-8063ee51.js');
17
+ var slicedToArray = require('./slicedToArray-8063ee51.js');
17
18
  require('./stringify-7c5aff47.js');
18
19
  require('./asyncToGenerator-8e707718.js');
19
20
  require('./_set-species-4458e975.js');
20
21
  var Segment = require('./beam-d22818d3.js');
21
- require('react-bootstrap/Button');
22
+ var reactSocialIcons = require('./react-social-icons-cd0d9d3b.js');
23
+ var iconBase = require('./iconBase-68959171.js');
24
+ var Button = _interopDefault(require('react-bootstrap/Button'));
22
25
  var Nav = _interopDefault(require('react-bootstrap/Nav'));
23
26
  var Navbar = _interopDefault(require('react-bootstrap/Navbar'));
24
27
  var NavDropdown = _interopDefault(require('react-bootstrap/NavDropdown'));
25
- require('react-bootstrap/Form');
26
- require('react-bootstrap/FormControl');
27
- var Search = require('./Search.js');
28
28
  var NavFooter = require('./NavFooter-76c913e3.js');
29
+ var index_esm$2 = require('./index.esm-0e5c6a9e.js');
30
+ var Form = _interopDefault(require('react-bootstrap/Form'));
31
+ var FormControl = _interopDefault(require('react-bootstrap/FormControl'));
29
32
 
30
33
  var NavDvm = function NavDvm(props) {
31
34
  var logo = props.logo,
32
35
  mobileLogo = props.mobileLogo,
33
36
  dataObject = props.dataObject,
34
37
  subNav = props.subNav,
35
- _props$website = props.website,
36
- website = _props$website === undefined ? {} : _props$website;
38
+ website = props.website;
39
+ // reference to mobile search component
37
40
 
41
+ var searchRef = React.useRef(null);
42
+ // Search Term
43
+
44
+ var _useState = React.useState(''),
45
+ _useState2 = slicedToArray._slicedToArray(_useState, 2),
46
+ searchKey = _useState2[0],
47
+ setSearchKey = _useState2[1];
48
+ // reference to navigation component
49
+
50
+
51
+ var navRef = React.useRef(null);
52
+ var relNavRef = React.useRef(null);
53
+
54
+ React.useEffect(function () {
55
+ // Setting the top of the search component based on the offset of navigation component.
56
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
57
+
58
+ // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ }, []);
60
+
61
+ React.useEffect(function () {
62
+ // Making the search and navbar Sticky on scroll
63
+ var navOffsetTop = document.getElementById('navbar-dvm').offsetTop;
64
+ if (window.pageYOffset > navOffsetTop) {
65
+ if (navRef.current && navRef.current.style) {
66
+ searchRef.current.style.position = 'fixed';
67
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
68
+ searchRef.current.style.zIndex = '99999';
69
+ searchRef.current.style.width = '100%';
70
+ }
71
+ }
72
+ var stickyNav = window.addEventListener('scroll', function () {
73
+ if (window.pageYOffset > navOffsetTop) {
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.zIndex = '99999';
78
+ searchRef.current.style.width = '100%';
79
+ }
80
+ } else {
81
+ if (navRef.current && navRef.current.style) {
82
+ searchRef.current.style.position = 'fixed';
83
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
84
+ searchRef.current.style.width = '100%';
85
+ }
86
+ }
87
+ });
88
+ return function () {
89
+ window.removeEventListener('scroll', stickyNav);
90
+ };
91
+ }, []);
38
92
 
39
93
  var getLink = function getLink(url, className, name, key, blank) {
40
94
  var needSegmentSupport = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -55,6 +109,139 @@ var NavDvm = function NavDvm(props) {
55
109
  );
56
110
  };
57
111
 
112
+ // Search function
113
+ var submitSearch = function submitSearch(e) {
114
+ e.preventDefault();
115
+ window.location.href = '/search?searchTerm=' + searchKey;
116
+ };
117
+
118
+ // Toggling class of an element.Can't use toggle() as IE doesn't support toggle()
119
+ var toggleClass = function toggleClass(selector, type, addOn) {
120
+ if (type === 'id') {
121
+ var searchBar = document.getElementById(selector);
122
+ if (searchBar && searchBar.classList && searchBar.classList.contains(addOn)) {
123
+ searchBar.classList.remove(addOn);
124
+ } else if (searchBar && searchBar.classList) {
125
+ searchBar.classList.add(addOn);
126
+ }
127
+ } else if (type === 'class') {
128
+ var searchBtn = document.getElementsByClassName(selector)[0];
129
+ if (searchBtn && searchBtn.classList && searchBtn.classList.contains(addOn)) {
130
+ searchBtn.classList.remove(addOn);
131
+ } else if (searchBtn && searchBtn.classList) {
132
+ searchBtn.classList.add(addOn);
133
+ }
134
+ }
135
+ };
136
+
137
+ // Search Component
138
+ var socialSearchComponent = function socialSearchComponent(type) {
139
+ if (type === 'mobile') {
140
+ return React__default.createElement(
141
+ 'div',
142
+ { id: 'search-content-mobile' },
143
+ React__default.createElement(
144
+ 'div',
145
+ { id: 'search-bar-mobile', ref: searchRef },
146
+ React__default.createElement(
147
+ Form,
148
+ { inline: true, onSubmit: function onSubmit(e) {
149
+ return submitSearch(e);
150
+ } },
151
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
152
+ return setSearchKey(e.target.value);
153
+ } }),
154
+ React__default.createElement(
155
+ Button,
156
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
157
+ return submitSearch(e);
158
+ } },
159
+ 'Search'
160
+ )
161
+ )
162
+ ),
163
+ React__default.createElement(
164
+ iconBase.IconContext.Provider,
165
+ { value: { color: 'white', className: 'search-btn-mobile', size: '50px' } },
166
+ React__default.createElement(index_esm$2.GoSearch, {
167
+ onClick: function onClick() {
168
+ var navToggle = document.getElementsByClassName('navbar-toggler')[0];
169
+ if (navToggle && navToggle.classList && !navToggle.classList.contains('collapsed')) {
170
+ var nav = document.querySelectorAll('.navbar-collapse');
171
+ for (var i = 0; i < nav.length; i++) {
172
+ if (nav[i] && nav[i].classList) nav[i].classList.remove('show');
173
+ }
174
+ if (navToggle && navToggle.classList) navToggle.classList.add('collapsed');
175
+ }
176
+
177
+ toggleClass('search-bar-mobile', 'id', 'show');
178
+ toggleClass('search-btn-mobile', 'class', 'active-search');
179
+ }
180
+ })
181
+ ),
182
+ React__default.createElement(
183
+ 'style',
184
+ { jsx: 'true' },
185
+ '\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 '
186
+ )
187
+ );
188
+ } else if (type === 'desktop') {
189
+ return React__default.createElement(
190
+ 'div',
191
+ { id: 'search-content-desktop' },
192
+ React__default.createElement(
193
+ 'div',
194
+ { id: 'search-bar-desktop' },
195
+ React__default.createElement(
196
+ Form,
197
+ { inline: true, onSubmit: function onSubmit(e) {
198
+ return submitSearch(e);
199
+ } },
200
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
201
+ return setSearchKey(e.target.value);
202
+ } }),
203
+ React__default.createElement(
204
+ Button,
205
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
206
+ return submitSearch(e);
207
+ } },
208
+ 'Search'
209
+ )
210
+ )
211
+ ),
212
+ React__default.createElement(
213
+ iconBase.IconContext.Provider,
214
+ { value: { color: 'white', className: 'search-btn-desktop', size: '50px' } },
215
+ React__default.createElement(index_esm$2.GoSearch, {
216
+ onClick: function onClick() {
217
+ toggleClass('search-bar-desktop', 'id', 'show');
218
+ toggleClass('search-btn-desktop', 'class', 'active-search');
219
+ }
220
+ })
221
+ ),
222
+ website && website.siteSettingCache && website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.length !== 0 && React__default.createElement(
223
+ 'div',
224
+ { id: 'social-tab-desktop' },
225
+ website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.map(function (row, index) {
226
+ return React__default.createElement(reactSocialIcons.reactSocialIcons_1, {
227
+ target: row.blank ? '_blank' : '_self',
228
+ rel: 'noopener noreferrer',
229
+ key: index,
230
+ index: index,
231
+ url: row.url,
232
+ style: { width: 25, height: 25, marginRight: 3 }
233
+ });
234
+ })
235
+ ),
236
+ React__default.createElement(
237
+ 'style',
238
+ { jsx: 'true' },
239
+ '\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 '
240
+ )
241
+ );
242
+ }
243
+ };
244
+
58
245
  return React__default.createElement(
59
246
  React__default.Fragment,
60
247
  null,
@@ -81,16 +268,29 @@ var NavDvm = function NavDvm(props) {
81
268
  ),
82
269
  React__default.createElement(
83
270
  Navbar,
84
- { className: 'bottom-nav', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top' },
271
+ { id: 'navbar-dvm', className: 'bottom-nav', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top', ref: navRef },
85
272
  React__default.createElement(
86
273
  Container,
87
- { className: 'mobile-nav position-relative' },
274
+ { className: 'mobile-nav position-relative', ref: relNavRef },
88
275
  mobileLogo && React__default.createElement(
89
276
  'a',
90
277
  { href: '/', className: 'mobile-logo' },
91
278
  React__default.createElement('img', { src: mobileLogo })
92
279
  ),
93
- React__default.createElement(Navbar.Toggle, { 'aria-controls': 'basic-navbar-nav' }),
280
+ React__default.createElement(Navbar.Toggle, {
281
+ 'aria-controls': 'basic-navbar-nav',
282
+ onClick: function onClick() {
283
+ var searchBar = document.getElementById('search-bar-mobile');
284
+ var searchBtn = document.getElementsByClassName('search-btn-mobile');
285
+ if (searchBar && searchBar.classList) {
286
+ searchBar.classList.remove('show');
287
+ }
288
+ if (searchBtn && searchBtn[0].classList) {
289
+ searchBtn[0].classList.remove('active-search');
290
+ }
291
+ }
292
+ }),
293
+ socialSearchComponent('mobile'),
94
294
  React__default.createElement(
95
295
  Navbar.Collapse,
96
296
  { id: 'basic-navbar-nav' },
@@ -133,8 +333,7 @@ var NavDvm = function NavDvm(props) {
133
333
  return getLink(row.url, 'nav-link', row.name, index, row.blank, row.needSegmentSupport);
134
334
  }
135
335
  })
136
- ),
137
- React__default.createElement(Search, null)
336
+ )
138
337
  ),
139
338
  subNav && React__default.createElement(
140
339
  Navbar.Collapse,
@@ -204,7 +403,8 @@ var NavDvm = function NavDvm(props) {
204
403
  { className: 'mr-auto' },
205
404
  React__default.createElement(NavFooter.NavFooter, { website: website })
206
405
  )
207
- )
406
+ ),
407
+ socialSearchComponent('desktop')
208
408
  )
209
409
  ),
210
410
  React__default.createElement(
@@ -219,7 +419,7 @@ var NavDvm = function NavDvm(props) {
219
419
  React__default.createElement(
220
420
  'style',
221
421
  { jsx: 'true' },
222
- '\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 '
422
+ '\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 '
223
423
  )
224
424
  );
225
425
  };
@@ -20,19 +20,19 @@ require('./stringify-7c5aff47.js');
20
20
  require('./asyncToGenerator-8e707718.js');
21
21
  require('./_set-species-4458e975.js');
22
22
  var Segment = require('./beam-d22818d3.js');
23
- require('./react-social-icons-cd0d9d3b.js');
24
- require('./iconBase-637d3f1e.js');
25
- var index_esm = require('./index.esm-fcdbd2c6.js');
26
- require('react-bootstrap/Button');
23
+ var reactSocialIcons = require('./react-social-icons-cd0d9d3b.js');
24
+ var iconBase = require('./iconBase-68959171.js');
25
+ var index_esm = require('./index.esm-fbd1f7e9.js');
26
+ var Button = _interopDefault(require('react-bootstrap/Button'));
27
27
  var Nav = _interopDefault(require('react-bootstrap/Nav'));
28
28
  var Navbar = _interopDefault(require('react-bootstrap/Navbar'));
29
29
  var NavDropdown = _interopDefault(require('react-bootstrap/NavDropdown'));
30
- var index_esm$1 = require('./index.esm-c0d8b44b.js');
31
- require('react-bootstrap/Form');
32
- require('react-bootstrap/FormControl');
33
- var Search = require('./Search.js');
30
+ var index_esm$1 = require('./index.esm-66ffa47a.js');
34
31
  var NavFooter = require('./NavFooter-76c913e3.js');
35
32
  var SocialNavFooter = require('./SocialNavFooter-9a07520f.js');
33
+ var index_esm$2 = require('./index.esm-0e5c6a9e.js');
34
+ var Form = _interopDefault(require('react-bootstrap/Form'));
35
+ var FormControl = _interopDefault(require('react-bootstrap/FormControl'));
36
36
 
37
37
  var NavMagazine = function NavMagazine(props) {
38
38
  /*
@@ -61,6 +61,8 @@ var NavMagazine = function NavMagazine(props) {
61
61
 
62
62
  var navRef = React.useRef(null);
63
63
  var topNavRef = React.useRef(null);
64
+ // reference to mobile search component
65
+ var searchRef = React.useRef(null);
64
66
 
65
67
  var _useState = React.useState(false),
66
68
  _useState2 = slicedToArray._slicedToArray(_useState, 2),
@@ -73,6 +75,10 @@ var NavMagazine = function NavMagazine(props) {
73
75
  setScreenWidth = _useState4[1];
74
76
 
75
77
  React.useEffect(function () {
78
+ // handling the top mast component
79
+ var topNavHeight = document.querySelector('.top-nav-secondary') && document.querySelector('.top-nav-secondary').offsetHeight;
80
+ // Setting the top of the search component based on the offset of navigation component.
81
+ searchRef.current.style.top = (topNavHeight ? topNavHeight + navRef.current.offsetHeight : navRef.current.offsetHeight) + 1 + 'px';
76
82
  document.addEventListener('scroll', trackScrolling);
77
83
  return function () {
78
84
  document.removeEventListener('scroll', trackScrolling);
@@ -94,6 +100,11 @@ var NavMagazine = function NavMagazine(props) {
94
100
  navRef.current.style.top = 0;
95
101
  navRef.current.style.width = '100%';
96
102
  navRef.current.style.zIndex = '99999';
103
+ // Making the search Sticky on scroll
104
+ searchRef.current.style.position = 'fixed';
105
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
106
+ searchRef.current.style.zIndex = '99999';
107
+ searchRef.current.style.width = '100%';
97
108
  }
98
109
  }
99
110
  var stickyNav = window.addEventListener('scroll', function () {
@@ -104,13 +115,23 @@ var NavMagazine = function NavMagazine(props) {
104
115
  navRef.current.style.top = 0;
105
116
  navRef.current.style.width = '100%';
106
117
  navRef.current.style.zIndex = '99999';
118
+ // Making the search Sticky on scroll
119
+ searchRef.current.style.position = 'fixed';
120
+ searchRef.current.style.top = navRef.current.offsetHeight + 1 + 'px';
121
+ searchRef.current.style.zIndex = '99999';
122
+ searchRef.current.style.width = '100%';
107
123
  }
108
124
  } else {
125
+ var topNavHeight = document.querySelector('.top-nav-secondary') && document.querySelector('.top-nav-secondary').offsetHeight;
109
126
  if (navRef.current && navRef.current.style) {
110
127
  topNavRef.current.style.paddingBottom = '0';
111
128
  navRef.current.style.position = 'relative';
112
129
  navRef.current.style.top = '';
113
130
  if (adSection) adSection.style.marginTop = '';
131
+ // Making the search Sticky on scroll
132
+ searchRef.current.style.position = 'fixed';
133
+ searchRef.current.style.top = (topNavHeight ? topNavHeight + navRef.current.offsetHeight : navRef.current.offsetHeight) + 1 + 'px';
134
+ searchRef.current.style.width = '100%';
114
135
  }
115
136
  }
116
137
  });
@@ -140,6 +161,13 @@ var NavMagazine = function NavMagazine(props) {
140
161
  _useState8 = slicedToArray._slicedToArray(_useState7, 2),
141
162
  userChecked = _useState8[0],
142
163
  setUserChecked = _useState8[1];
164
+ // Search Term
165
+
166
+
167
+ var _useState9 = React.useState(''),
168
+ _useState10 = slicedToArray._slicedToArray(_useState9, 2),
169
+ searchKey = _useState10[0],
170
+ setSearchKey = _useState10[1];
143
171
 
144
172
  React.useEffect(function () {
145
173
  setUserLoggedIn(props.user ? true : false);
@@ -148,6 +176,139 @@ var NavMagazine = function NavMagazine(props) {
148
176
  }
149
177
  }, [props.user, userChecked]);
150
178
 
179
+ // Search function
180
+ var submitSearch = function submitSearch(e) {
181
+ e.preventDefault();
182
+ window.location.href = '/search?searchTerm=' + searchKey;
183
+ };
184
+
185
+ // Toggling class of an element.Can't use toggle() as IE doesn't support toggle()
186
+ var toggleClass = function toggleClass(selector, type, addOn) {
187
+ if (type === 'id') {
188
+ var searchBar = document.getElementById(selector);
189
+ if (searchBar && searchBar.classList && searchBar.classList.contains(addOn)) {
190
+ searchBar.classList.remove(addOn);
191
+ } else if (searchBar && searchBar.classList) {
192
+ searchBar.classList.add(addOn);
193
+ }
194
+ } else if (type === 'class') {
195
+ var searchBtn = document.getElementsByClassName(selector)[0];
196
+ if (searchBtn && searchBtn.classList && searchBtn.classList.contains(addOn)) {
197
+ searchBtn.classList.remove(addOn);
198
+ } else if (searchBtn && searchBtn.classList) {
199
+ searchBtn.classList.add(addOn);
200
+ }
201
+ }
202
+ };
203
+
204
+ // Search Component
205
+ var socialSearchComponent = function socialSearchComponent(type) {
206
+ if (type === 'mobile') {
207
+ return React__default.createElement(
208
+ 'div',
209
+ { id: 'search-content-mobile' },
210
+ React__default.createElement(
211
+ 'div',
212
+ { id: 'search-bar-mobile', ref: searchRef },
213
+ React__default.createElement(
214
+ Form,
215
+ { inline: true, onSubmit: function onSubmit(e) {
216
+ return submitSearch(e);
217
+ } },
218
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
219
+ return setSearchKey(e.target.value);
220
+ } }),
221
+ React__default.createElement(
222
+ Button,
223
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
224
+ return submitSearch(e);
225
+ } },
226
+ 'Search'
227
+ )
228
+ )
229
+ ),
230
+ React__default.createElement(
231
+ iconBase.IconContext.Provider,
232
+ { value: { color: 'white', className: 'search-btn-mobile', size: '50px' } },
233
+ React__default.createElement(index_esm$2.GoSearch, {
234
+ onClick: function onClick() {
235
+ var navToggle = document.getElementsByClassName('navbar-toggler')[0];
236
+ if (navToggle && navToggle.classList && !navToggle.classList.contains('collapsed')) {
237
+ var nav = document.querySelectorAll('.navbar-collapse');
238
+ for (var i = 0; i < nav.length; i++) {
239
+ if (nav[i] && nav[i].classList) nav[i].classList.remove('show');
240
+ }
241
+ if (navToggle && navToggle.classList) navToggle.classList.add('collapsed');
242
+ }
243
+
244
+ toggleClass('search-bar-mobile', 'id', 'show');
245
+ toggleClass('search-btn-mobile', 'class', 'active-search');
246
+ }
247
+ })
248
+ ),
249
+ React__default.createElement(
250
+ 'style',
251
+ { jsx: 'true' },
252
+ '\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 '
253
+ )
254
+ );
255
+ } else if (type === 'desktop') {
256
+ return React__default.createElement(
257
+ 'div',
258
+ { id: 'search-content-desktop' },
259
+ React__default.createElement(
260
+ 'div',
261
+ { id: 'search-bar-desktop' },
262
+ React__default.createElement(
263
+ Form,
264
+ { inline: true, onSubmit: function onSubmit(e) {
265
+ return submitSearch(e);
266
+ } },
267
+ React__default.createElement(FormControl, { placeholder: 'Search', type: 'text', value: searchKey, onChange: function onChange(e) {
268
+ return setSearchKey(e.target.value);
269
+ } }),
270
+ React__default.createElement(
271
+ Button,
272
+ { variant: 'primary', style: { backgroundColor: 'var(--primary)' }, onClick: function onClick(e) {
273
+ return submitSearch(e);
274
+ } },
275
+ 'Search'
276
+ )
277
+ )
278
+ ),
279
+ React__default.createElement(
280
+ iconBase.IconContext.Provider,
281
+ { value: { color: 'white', className: 'search-btn-desktop', size: '50px' } },
282
+ React__default.createElement(index_esm$2.GoSearch, {
283
+ onClick: function onClick() {
284
+ toggleClass('search-bar-desktop', 'id', 'show');
285
+ toggleClass('search-btn-desktop', 'class', 'active-search');
286
+ }
287
+ })
288
+ ),
289
+ website && website.siteSettingCache && website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.length !== 0 && React__default.createElement(
290
+ 'div',
291
+ { id: 'social-tab-desktop' },
292
+ website.siteSettingCache.socialLinks && website.siteSettingCache.socialLinks.map(function (row, index) {
293
+ return React__default.createElement(reactSocialIcons.reactSocialIcons_1, {
294
+ target: row.blank ? '_blank' : '_self',
295
+ rel: 'noopener noreferrer',
296
+ key: index,
297
+ index: index,
298
+ url: row.url,
299
+ style: { width: 25, height: 25, marginRight: 3 }
300
+ });
301
+ })
302
+ ),
303
+ React__default.createElement(
304
+ 'style',
305
+ { jsx: 'true' },
306
+ '\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 '
307
+ )
308
+ );
309
+ }
310
+ };
311
+
151
312
  return React__default.createElement(
152
313
  React__default.Fragment,
153
314
  null,
@@ -247,13 +408,39 @@ var NavMagazine = function NavMagazine(props) {
247
408
  { id: 'navbar-ham', className: main.main_40 ? 'bottom-nav ios-nav' : 'bottom-nav ', variant: 'dark', expand: 'xl', bg: 'primary', sticky: 'top', ref: navRef },
248
409
  React__default.createElement(
249
410
  Container,
250
- { className: 'mobile-nav android-nav' },
411
+ { className: 'mobile-nav android-nav', style: { display: 'flex' } },
251
412
  React__default.createElement(
252
413
  'div',
253
414
  { className: 'nav-toggle' },
254
- React__default.createElement(Navbar.Toggle, { 'aria-controls': 'basic-navbar-nav' }),
255
- React__default.createElement(Search, { device: 'mobile' })
415
+ React__default.createElement(Navbar.Toggle, {
416
+ 'aria-controls': 'basic-navbar-nav',
417
+ onClick: function onClick() {
418
+ var searchBar = document.getElementById('search-bar-mobile');
419
+ var searchBtn = document.getElementsByClassName('search-btn-mobile');
420
+ if (searchBar && searchBar.classList) {
421
+ searchBar.classList.remove('show');
422
+ }
423
+ if (searchBtn && searchBtn[0].classList) {
424
+ searchBtn[0].classList.remove('active-search');
425
+ }
426
+ }
427
+ })
428
+ ),
429
+ React__default.createElement(
430
+ 'div',
431
+ { className: 'site-logo-wrapper', style: { display: 'none' } },
432
+ React__default.createElement(
433
+ 'a',
434
+ { href: '/' },
435
+ React__default.createElement('img', { src: logo })
436
+ ),
437
+ React__default.createElement(
438
+ 'style',
439
+ { jsx: 'true' },
440
+ '\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 '
441
+ )
256
442
  ),
443
+ socialSearchComponent('mobile'),
257
444
  subNav && React__default.createElement(
258
445
  Navbar.Collapse,
259
446
  { id: 'basic-navbar-sub' },
@@ -402,7 +589,7 @@ var NavMagazine = function NavMagazine(props) {
402
589
  }
403
590
  })
404
591
  ),
405
- React__default.createElement(Search, { device: 'mobile' })
592
+ socialSearchComponent('desktop')
406
593
  ),
407
594
  website && React__default.createElement(
408
595
  Navbar.Collapse,
@@ -427,7 +614,7 @@ var NavMagazine = function NavMagazine(props) {
427
614
  React__default.createElement(
428
615
  'style',
429
616
  { jsx: 'true' },
430
- '\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 '
617
+ '\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 '
431
618
  )
432
619
  );
433
620
  };