gatsby-matrix-theme 2.0.5 → 2.2.0
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/.storybook/main.js +1 -0
- package/CHANGELOG.md +102 -0
- package/jest.config.js +1 -0
- package/package.json +2 -2
- package/src/components/atoms/cards/article-card/index.js +9 -6
- package/src/components/atoms/cards/author-card/index.js +6 -1
- package/src/components/atoms/cards/base-card/index.js +1 -1
- package/src/components/atoms/cards/game-card/index.js +9 -6
- package/src/components/atoms/cards/operator-card/index.js +14 -8
- package/src/components/atoms/cards/payment-method-card/index.js +11 -9
- package/src/components/atoms/cards/popup-card/index.js +5 -5
- package/src/components/atoms/cards/popup-card/popup-card.module.scss +6 -7
- package/src/components/atoms/cards/popup-card/popup-card.stories.js +0 -10
- package/src/components/atoms/cards/software-provider-card/index.js +10 -9
- package/src/components/atoms/link-menu/index.js +1 -1
- package/src/components/atoms/modal/modal.module.scss +44 -41
- package/src/components/atoms/newsletter/success/index.js +18 -13
- package/src/components/atoms/operator-bonuses/index.js +10 -7
- package/src/components/atoms/search/autocomplete/article.js +1 -1
- package/src/components/atoms/search/autocomplete/game.js +1 -1
- package/src/components/atoms/search/autocomplete/operator.js +1 -1
- package/src/components/atoms/search/autocomplete/payment_methods.js +1 -1
- package/src/components/atoms/search/autocomplete/software_provider.js +1 -1
- package/src/components/atoms/table/banking/index.js +24 -20
- package/src/components/atoms/table/column/index.js +2 -5
- package/src/components/atoms/table/staticColumn/index.js +28 -33
- package/src/components/molecules/faq/faq.module.scss +14 -10
- package/src/components/molecules/faq/index.js +1 -1
- package/src/components/molecules/game-iframe/index.js +6 -1
- package/src/components/molecules/game-score-gauge/game-score-gauge.stories.js +7 -12
- package/src/components/molecules/game-score-gauge/index.js +4 -2
- package/src/components/molecules/info-grid/index.js +1 -0
- package/src/components/molecules/newsletter/index.js +1 -0
- package/src/components/molecules/newsletter/newsletter.stories.js +106 -112
- package/src/components/molecules/newsletter-optin/index.js +7 -7
- package/src/components/molecules/newsletter-optin/newsletter-optin.stories.js +79 -80
- package/src/components/molecules/operator-summary/index.js +8 -2
- package/src/components/molecules/small-welcome-bonus/index.js +19 -6
- package/src/components/molecules/small-welcome-bonus/small-welcome-bonus.stories.js +49 -53
- package/src/components/molecules/toplist/row/variant-one.js +26 -10
- package/src/components/organisms/footer-navigation/index.js +9 -1
- package/src/components/organisms/popup/index.js +9 -6
- package/src/components/organisms/popup/popup.stories.js +0 -10
- package/src/components/organisms/toplist/comparison-table/index.js +11 -13
- package/src/components/organisms/toplist/index.js +2 -4
- package/src/components/organisms/toplist/list/index.js +11 -7
- package/src/components/organisms/toplist/list/list.module.scss +7 -0
- package/src/gatsby-core-theme/components/atoms/bonus/bonus.module.scss +15 -0
- package/src/gatsby-core-theme/components/atoms/bonus/index.js +4 -3
- package/src/gatsby-core-theme/components/atoms/module-title/index.js +7 -9
- package/src/gatsby-core-theme/components/atoms/not-found/index.js +24 -0
- package/src/gatsby-core-theme/components/atoms/not-found/not-found.module.scss +17 -0
- package/src/gatsby-core-theme/components/atoms/spotlights/index.js +25 -8
- package/src/gatsby-core-theme/components/molecules/content/content.module.scss +73 -16
- package/src/gatsby-core-theme/components/molecules/content/index.js +2 -0
- package/src/gatsby-core-theme/components/molecules/footer/index.js +5 -1
- package/src/gatsby-core-theme/components/molecules/main/index.js +6 -1
- package/src/gatsby-core-theme/components/molecules/module/index.js +1 -3
- package/src/gatsby-core-theme/components/molecules/search/index.js +28 -4
- package/src/gatsby-core-theme/components/organisms/anchor/anchor.module.scss +5 -1
- package/src/gatsby-core-theme/components/organisms/anchor/index.js +11 -2
- package/src/gatsby-core-theme/components/organisms/carousel/index.js +17 -6
- package/src/gatsby-core-theme/components/organisms/navigation/index.js +2 -2
- package/src/gatsby-core-theme/components/organisms/search/index.js +2 -1
- package/src/gatsby-core-theme/components/pages/body/index.js +14 -9
- package/src/gatsby-core-theme/components/pages/search/index.js +79 -74
- package/src/hooks/tabs/index.js +6 -4
- package/src/hooks/tabs/tab/tab-list.js +4 -1
- package/src/hooks/tabs/tab/tab.js +37 -28
- package/storybook/public/{0.50c23d5b.iframe.bundle.js → 0.a5c4cf9f.iframe.bundle.js} +1 -1
- package/storybook/public/{1.eef04bc1.iframe.bundle.js → 1.b2b72c50.iframe.bundle.js} +1 -1
- package/storybook/public/{10.454cae2f.iframe.bundle.js → 10.502b5ac2.iframe.bundle.js} +1 -1
- package/storybook/public/{11.6ec11208.iframe.bundle.js → 11.30535586.iframe.bundle.js} +1 -1
- package/storybook/public/{5.5635a723.iframe.bundle.js → 5.66b5b921.iframe.bundle.js} +3 -3
- package/storybook/public/{5.5635a723.iframe.bundle.js.LICENSE.txt → 5.66b5b921.iframe.bundle.js.LICENSE.txt} +0 -0
- package/storybook/public/5.66b5b921.iframe.bundle.js.map +1 -0
- package/storybook/public/{6.a0f625e4.iframe.bundle.js → 6.89431426.iframe.bundle.js} +1 -1
- package/storybook/public/{7.4b9a5033.iframe.bundle.js → 7.a53e817b.iframe.bundle.js} +1 -1
- package/storybook/public/8.e043e6dc.iframe.bundle.js +3 -0
- package/storybook/public/{8.4148b63e.iframe.bundle.js.LICENSE.txt → 8.e043e6dc.iframe.bundle.js.LICENSE.txt} +0 -0
- package/storybook/public/8.e043e6dc.iframe.bundle.js.map +1 -0
- package/storybook/public/{9.08fee7fe.iframe.bundle.js → 9.eba0e7c0.iframe.bundle.js} +1 -1
- package/storybook/public/iframe.html +1 -1
- package/storybook/public/main.c07025f4.iframe.bundle.js +1 -0
- package/storybook/public/{runtime~main.d64660ee.iframe.bundle.js → runtime~main.c4f3a4d6.iframe.bundle.js} +1 -1
- package/storybook/public/vendors~main.8050786b.iframe.bundle.js +7 -0
- package/storybook/public/{vendors~main.aac219e4.iframe.bundle.js.LICENSE.txt → vendors~main.8050786b.iframe.bundle.js.LICENSE.txt} +0 -0
- package/storybook/public/vendors~main.8050786b.iframe.bundle.js.map +1 -0
- package/src/components/atoms/newsletter/success/success.module.scss +0 -28
- package/src/gatsby-core-theme/pages/404/index.js +0 -66
- package/storybook/public/5.5635a723.iframe.bundle.js.map +0 -1
- package/storybook/public/8.4148b63e.iframe.bundle.js +0 -3
- package/storybook/public/8.4148b63e.iframe.bundle.js.map +0 -1
- package/storybook/public/main.e82d53bf.iframe.bundle.js +0 -1
- package/storybook/public/vendors~main.aac219e4.iframe.bundle.js +0 -7
- package/storybook/public/vendors~main.aac219e4.iframe.bundle.js.map +0 -1
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
.content {
|
|
2
2
|
width: 100%;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
thead, tbody{
|
|
6
|
-
display: table;
|
|
7
|
-
width: 100%;
|
|
8
|
-
table-layout: fixed;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
3
|
+
div {
|
|
4
|
+
display: flow-root;
|
|
11
5
|
}
|
|
12
|
-
p{
|
|
13
|
-
margin-bottom:
|
|
6
|
+
p:not(:last-of-type) {
|
|
7
|
+
margin-bottom: 2.4rem;
|
|
14
8
|
}
|
|
15
9
|
table {
|
|
16
10
|
width: 100% !important;
|
|
@@ -20,7 +14,14 @@
|
|
|
20
14
|
font-weight: 400;
|
|
21
15
|
table-layout: auto;
|
|
22
16
|
@include link-color(var(--color-6));
|
|
23
|
-
|
|
17
|
+
@include min(tablet) {
|
|
18
|
+
thead,
|
|
19
|
+
tbody {
|
|
20
|
+
display: table;
|
|
21
|
+
width: 100%;
|
|
22
|
+
table-layout: fixed;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
24
25
|
thead {
|
|
25
26
|
tr {
|
|
26
27
|
th {
|
|
@@ -54,6 +55,11 @@
|
|
|
54
55
|
padding: 1rem;
|
|
55
56
|
vertical-align: top;
|
|
56
57
|
padding-left: 1.4rem;
|
|
58
|
+
a {
|
|
59
|
+
img {
|
|
60
|
+
width: 15rem;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
|
|
@@ -102,17 +108,65 @@
|
|
|
102
108
|
}
|
|
103
109
|
}
|
|
104
110
|
|
|
111
|
+
.stackTable {
|
|
112
|
+
@include max(mobile) {
|
|
113
|
+
table {
|
|
114
|
+
border-collapse: inherit;
|
|
115
|
+
box-shadow: 0 2px 16px #17182f14;
|
|
116
|
+
|
|
117
|
+
thead {
|
|
118
|
+
display: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
tbody {
|
|
122
|
+
tr {
|
|
123
|
+
&:first-child {
|
|
124
|
+
td {
|
|
125
|
+
color: var(--table-head-text);
|
|
126
|
+
background: var(--table-head-background);
|
|
127
|
+
|
|
128
|
+
border-radius: 0;
|
|
129
|
+
|
|
130
|
+
&:first-child {
|
|
131
|
+
border-top-left-radius: var(--table-border-radius);
|
|
132
|
+
border-top-right-radius: var(--table-border-radius);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
td {
|
|
138
|
+
display: block;
|
|
139
|
+
text-align: left;
|
|
140
|
+
border-bottom: 1px solid #bfd3e5;
|
|
141
|
+
width: 100% !important;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
&:last-child {
|
|
145
|
+
td {
|
|
146
|
+
border-radius: 0;
|
|
147
|
+
&:last-child {
|
|
148
|
+
border-bottom-right-radius: var(--table-border-radius);
|
|
149
|
+
border-bottom-left-radius: var(--table-border-radius);
|
|
150
|
+
border-bottom: none;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
105
160
|
.tableResponsive,
|
|
106
161
|
.tableResponsive > div {
|
|
107
162
|
box-sizing: content-box;
|
|
108
163
|
width: 100%;
|
|
109
|
-
table{
|
|
164
|
+
table {
|
|
110
165
|
display: block;
|
|
111
166
|
width: 100%;
|
|
112
167
|
@include overflow(overflow-x, auto, touch);
|
|
113
|
-
@include scrollbar(0.8rem, 0.8rem, var(--color-33));
|
|
114
|
-
|
|
115
168
|
}
|
|
169
|
+
@include scrollbar(0.8rem, 0.8rem, var(--color-33));
|
|
116
170
|
|
|
117
171
|
* {
|
|
118
172
|
box-sizing: content-box;
|
|
@@ -121,7 +175,10 @@
|
|
|
121
175
|
td,
|
|
122
176
|
th {
|
|
123
177
|
@include max(tablet) {
|
|
124
|
-
min-width:
|
|
178
|
+
min-width: 15rem;
|
|
179
|
+
}
|
|
180
|
+
img {
|
|
181
|
+
max-width: none;
|
|
125
182
|
}
|
|
126
183
|
}
|
|
127
184
|
}
|
|
@@ -131,7 +188,7 @@
|
|
|
131
188
|
color: var(--color-6);
|
|
132
189
|
font-size: 1.6rem;
|
|
133
190
|
list-style-position: inside;
|
|
134
|
-
padding: 1.6rem;
|
|
191
|
+
padding: 0 1.6rem 1.6rem;
|
|
135
192
|
|
|
136
193
|
li {
|
|
137
194
|
margin: 0.35rem 0;
|
|
@@ -50,6 +50,8 @@ const Content = ({ module }) => {
|
|
|
50
50
|
return `${styles.tableResponsive} ${styles.firstTable}`;
|
|
51
51
|
case 'table_2':
|
|
52
52
|
return `${styles.tableResponsive} ${styles.secondTable}`;
|
|
53
|
+
case 'stack_table':
|
|
54
|
+
return styles.stackTable;
|
|
53
55
|
case 'default_table':
|
|
54
56
|
return `${styles.tableResponsive}`;
|
|
55
57
|
case 'content_frame_style':
|
|
@@ -25,7 +25,10 @@ const Footer = ({
|
|
|
25
25
|
<div className={styles.topPart}>
|
|
26
26
|
<div className={styles.links}>
|
|
27
27
|
{footerMenu && showLinks && (
|
|
28
|
-
<LinkList
|
|
28
|
+
<LinkList
|
|
29
|
+
lists={getExtraField(section?.extra_fields, footerMenu)}
|
|
30
|
+
gtmClass="mobile-menu-gtm"
|
|
31
|
+
/>
|
|
29
32
|
)}
|
|
30
33
|
</div>
|
|
31
34
|
|
|
@@ -54,6 +57,7 @@ const Footer = ({
|
|
|
54
57
|
imageOnly
|
|
55
58
|
singleList
|
|
56
59
|
lists={getExtraField(section?.extra_fields, footerLogos)}
|
|
60
|
+
gtmClass="mobile-menu-gtm logo-cta"
|
|
57
61
|
/>
|
|
58
62
|
)}
|
|
59
63
|
</div>
|
|
@@ -19,8 +19,13 @@ const Main = ({ section = {}, page = {}, pageContext = {}, showNewsletter = fals
|
|
|
19
19
|
typeof window !== 'undefined' && Boolean(getURLParam('subscribed'))
|
|
20
20
|
? loadable(() => import(`../../../../components/atoms/newsletter/success`))
|
|
21
21
|
: null;
|
|
22
|
+
const NotFound = page.path.includes('404')
|
|
23
|
+
? loadable(() => import(`gatsby-core-theme/src/components/atoms/not-found`))
|
|
24
|
+
: null;
|
|
25
|
+
|
|
22
26
|
return (
|
|
23
27
|
<main className={styles.modulePage}>
|
|
28
|
+
{NotFound && <NotFound imagePath="404" />}
|
|
24
29
|
{section.modules &&
|
|
25
30
|
section.modules.map((module) => (
|
|
26
31
|
<Module key={keygen()} module={module} page={page} pageContext={pageContext} />
|
|
@@ -28,7 +33,7 @@ const Main = ({ section = {}, page = {}, pageContext = {}, showNewsletter = fals
|
|
|
28
33
|
{SearchPage && <SearchPage page={page} />}
|
|
29
34
|
{showNewsletter && <Newsletter page={page} />}
|
|
30
35
|
{NewsletterSuccess && showNewsletter && <NewsletterSuccess />}
|
|
31
|
-
{page.author && <AuthorBox author={page.author}
|
|
36
|
+
{page.author && <AuthorBox author={page.author} />}
|
|
32
37
|
</main>
|
|
33
38
|
);
|
|
34
39
|
};
|
|
@@ -109,9 +109,7 @@ const Modules = ({ module, page, pageContext }) => {
|
|
|
109
109
|
module.name
|
|
110
110
|
} ${styles.module} ${module?.style && styles[module.style]} module`}
|
|
111
111
|
>
|
|
112
|
-
{module.name !== 'top_list' &&
|
|
113
|
-
<ModuleTitle module={module} translations={page?.translations} />
|
|
114
|
-
)}
|
|
112
|
+
{module.name !== 'top_list' && <ModuleTitle module={module} />}
|
|
115
113
|
<ModuleComponent module={module} page={page} pageContext={pageContext} {...extraProps} />
|
|
116
114
|
</div>
|
|
117
115
|
)
|
|
@@ -6,6 +6,10 @@ import { FaSearch } from 'react-icons/fa';
|
|
|
6
6
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
7
7
|
import Tabs from 'gatsby-matrix-theme/src/hooks/tabs';
|
|
8
8
|
import styles from 'gatsby-core-theme/src/components/molecules/search/search.module.scss';
|
|
9
|
+
import Link from 'gatsby-core-theme/src/hooks/link';
|
|
10
|
+
import { translate } from 'gatsby-core-theme/src/helpers/getters';
|
|
11
|
+
import { Context } from 'gatsby-core-theme/src/context/TranslationsProvider';
|
|
12
|
+
|
|
9
13
|
import LazyImage from '~hooks/lazy-image';
|
|
10
14
|
import ConditionalWrapper from '~atoms/conditional-wrapper';
|
|
11
15
|
import { getURLParam } from '~helpers/getters';
|
|
@@ -46,11 +50,14 @@ const Search = ({
|
|
|
46
50
|
const [sortQuery, setSortQuery] = useState({});
|
|
47
51
|
const [searchQuery, setSearchQuery] = useState(searchQueryInit);
|
|
48
52
|
const [searchBoxQuery, setSearchBoxQuery] = useState('');
|
|
53
|
+
const noResultsText = noResults.replace('[keyword]', searchQuery);
|
|
49
54
|
|
|
50
55
|
const loadingRef = useRef(React.createRef());
|
|
51
56
|
const searchInputRef = useRef(React.createRef());
|
|
52
57
|
const formBoxInputRef = useRef(React.createRef());
|
|
53
58
|
|
|
59
|
+
const { translations } = useContext(Context) || {};
|
|
60
|
+
|
|
54
61
|
// Store search results, in case of page search with tabs it's a multidimensal array grouped by types
|
|
55
62
|
const searchResultsRef = useRef([]);
|
|
56
63
|
// Store the search function object
|
|
@@ -245,7 +252,7 @@ const Search = ({
|
|
|
245
252
|
// Use a default or given close button
|
|
246
253
|
if (formSearchOptionsCopy !== null && formSearchOptionsCopy.searchButtonComponent === undefined) {
|
|
247
254
|
formSearchOptionsCopy.searchButtonComponent = (
|
|
248
|
-
<button aria-label="Search" type="submit">
|
|
255
|
+
<button aria-label="Search" type="submit" className="search-gtm btn-cta">
|
|
249
256
|
{searchIcon === null ? <FaSearch /> : <img alt="search" src={searchIcon} />}
|
|
250
257
|
</button>
|
|
251
258
|
);
|
|
@@ -269,6 +276,16 @@ const Search = ({
|
|
|
269
276
|
{formSearchOptionsCopy.autoComplete && searchResultsRef.current.length > 0 && (
|
|
270
277
|
<div className={styles.autocomplete}>
|
|
271
278
|
{searchResultsRef.current.map((item) => getChildType(item, item.type))}
|
|
279
|
+
{formSearchOptionsCopy.showViewResultsText && (
|
|
280
|
+
<div className={styles.viewAllResults}>
|
|
281
|
+
<Link
|
|
282
|
+
to={`/${searchURLPageName}?${searchUrlParam}=${searchQuery}`}
|
|
283
|
+
className="search-gtm"
|
|
284
|
+
>
|
|
285
|
+
<h1>{translate(translations, 'view_all', 'View All Results')}</h1>
|
|
286
|
+
</Link>
|
|
287
|
+
</div>
|
|
288
|
+
)}
|
|
272
289
|
</div>
|
|
273
290
|
)}
|
|
274
291
|
</form>
|
|
@@ -292,14 +309,14 @@ const Search = ({
|
|
|
292
309
|
maxLength="60"
|
|
293
310
|
/>
|
|
294
311
|
<div className={styles.searchButton}>
|
|
295
|
-
<button aria-label="Search" type="submit">
|
|
312
|
+
<button aria-label="Search" type="submit" className="search-gtm btn-cta">
|
|
296
313
|
{searchIcon === null ? <FaSearch /> : <img alt="search" src={searchIcon} />}
|
|
297
314
|
</button>
|
|
298
315
|
</div>
|
|
299
316
|
</form>
|
|
300
317
|
{searchResultsRef.current.length === 0 && formSearchOptionsCopy === null ? (
|
|
301
318
|
<div>
|
|
302
|
-
<span className={styles.noResults}>{
|
|
319
|
+
<span className={styles.noResults}>{noResultsText}</span>
|
|
303
320
|
</div>
|
|
304
321
|
) : null}
|
|
305
322
|
{searchResultsRef.current.length !== 0 && (
|
|
@@ -310,6 +327,7 @@ const Search = ({
|
|
|
310
327
|
{...pageSearchOptionsCopy.tabsOptions}
|
|
311
328
|
activeTabClass="searchActive"
|
|
312
329
|
headerClass="searchHeader"
|
|
330
|
+
gtmClass="search-tabs-menu-gtm"
|
|
313
331
|
>
|
|
314
332
|
{items}
|
|
315
333
|
</Tabs>
|
|
@@ -332,6 +350,7 @@ const Search = ({
|
|
|
332
350
|
items,
|
|
333
351
|
model_type: type,
|
|
334
352
|
title: titleObj ? titleObj.title : '',
|
|
353
|
+
pagination_type: 'load_more',
|
|
335
354
|
...pageSearchOptionsCopy.archiveOptions.includeOptions,
|
|
336
355
|
};
|
|
337
356
|
}
|
|
@@ -353,7 +372,12 @@ const Search = ({
|
|
|
353
372
|
module_title_tag: 'h2',
|
|
354
373
|
}}
|
|
355
374
|
/>
|
|
356
|
-
<Archive
|
|
375
|
+
<Archive
|
|
376
|
+
module={items}
|
|
377
|
+
loadMore={loadMore}
|
|
378
|
+
page={page}
|
|
379
|
+
gtmClass="archive-gtm"
|
|
380
|
+
/>
|
|
357
381
|
</>
|
|
358
382
|
)}
|
|
359
383
|
</div>
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
.link {
|
|
3
3
|
word-break: inherit;
|
|
4
4
|
white-space: nowrap;
|
|
5
|
-
|
|
6
5
|
background-color: var(--color-7);
|
|
7
6
|
padding: 1rem 2.5rem;
|
|
8
7
|
border-radius: 0.6rem;
|
|
9
8
|
color: #000;
|
|
10
9
|
font-weight: 400;
|
|
10
|
+
@include flex-align(center, center);
|
|
11
|
+
|
|
12
|
+
svg {
|
|
13
|
+
margin-left: 1rem;
|
|
14
|
+
}
|
|
11
15
|
|
|
12
16
|
&:hover {
|
|
13
17
|
background-color: var(--secondary-color);
|
|
@@ -5,7 +5,13 @@ import keygen from '~helpers/keygen';
|
|
|
5
5
|
import { anchorLink } from '~helpers/strings';
|
|
6
6
|
import styles from './anchor.module.scss';
|
|
7
7
|
|
|
8
|
-
function Anchor({
|
|
8
|
+
function Anchor({
|
|
9
|
+
module: { items },
|
|
10
|
+
headerOffset = 80,
|
|
11
|
+
sliderGap = 0,
|
|
12
|
+
isFixed = false,
|
|
13
|
+
icon = null,
|
|
14
|
+
}) {
|
|
9
15
|
const [isFixedMenu, setIsFixedMenu] = useState(false);
|
|
10
16
|
if (isFixed && typeof window !== 'undefined') {
|
|
11
17
|
window.addEventListener('scroll', () => {
|
|
@@ -47,15 +53,17 @@ function Anchor({ module: { items }, headerOffset = 80, sliderGap = 0, isFixed =
|
|
|
47
53
|
usePagination={false}
|
|
48
54
|
settings={{ numberOfSlides: 0, sliderGap }}
|
|
49
55
|
className={styles.sliderWrapper}
|
|
56
|
+
gtmClass="anchor-carousel-gtm"
|
|
50
57
|
>
|
|
51
58
|
{items?.map((anchor) => (
|
|
52
59
|
<a
|
|
53
|
-
className={styles.link}
|
|
60
|
+
className={`${styles.link} anchor-carousel-gtm anchor-menu-gtm`}
|
|
54
61
|
key={keygen()}
|
|
55
62
|
onClick={handleClick}
|
|
56
63
|
href={`#${anchor.label && anchorLink(anchor?.label?.toLowerCase().trim())}`}
|
|
57
64
|
>
|
|
58
65
|
{anchor.label}
|
|
66
|
+
{icon}
|
|
59
67
|
</a>
|
|
60
68
|
))}
|
|
61
69
|
</Slider>
|
|
@@ -76,6 +84,7 @@ Anchor.propTypes = {
|
|
|
76
84
|
sliderGap: PropTypes.number,
|
|
77
85
|
styles: PropTypes.shape({}),
|
|
78
86
|
isFixed: PropTypes.bool,
|
|
87
|
+
icon: PropTypes.element,
|
|
79
88
|
};
|
|
80
89
|
|
|
81
90
|
export default Anchor;
|
|
@@ -9,7 +9,7 @@ import Slide from '../../../../components/molecules/carousel/screenshot-slide';
|
|
|
9
9
|
|
|
10
10
|
import styles from './carousel.module.scss';
|
|
11
11
|
|
|
12
|
-
const Carousel = ({ module = {}, settings = {} }) => {
|
|
12
|
+
const Carousel = ({ module = {}, settings = {}, gtmClass = '' }) => {
|
|
13
13
|
const [width] = useWindowSize();
|
|
14
14
|
// render one item per slide
|
|
15
15
|
const renderOne = (items) => {
|
|
@@ -17,7 +17,7 @@ const Carousel = ({ module = {}, settings = {} }) => {
|
|
|
17
17
|
for (let i = 0; i < items.length; i += 1) {
|
|
18
18
|
arr.push(
|
|
19
19
|
<div key={keygen()} className={styles.carouselItem}>
|
|
20
|
-
<Slide item={items[i]} />
|
|
20
|
+
<Slide item={items[i]} gtmClass={gtmClass} />
|
|
21
21
|
</div>
|
|
22
22
|
);
|
|
23
23
|
}
|
|
@@ -30,11 +30,11 @@ const Carousel = ({ module = {}, settings = {} }) => {
|
|
|
30
30
|
arr.push(
|
|
31
31
|
<div className={styles.slide} key={keygen()}>
|
|
32
32
|
<div key={keygen()} className={styles.carouselItem}>
|
|
33
|
-
<Slide item={items[i]} />
|
|
33
|
+
<Slide item={items[i]} gtmClass={gtmClass} />
|
|
34
34
|
</div>
|
|
35
35
|
{items[i + 1] && (
|
|
36
36
|
<div key={keygen()} className={styles.carouselItem}>
|
|
37
|
-
<Slide item={items[i + 1]} />
|
|
37
|
+
<Slide item={items[i + 1]} gtmClass={gtmClass} />
|
|
38
38
|
</div>
|
|
39
39
|
)}
|
|
40
40
|
</div>
|
|
@@ -46,12 +46,22 @@ const Carousel = ({ module = {}, settings = {} }) => {
|
|
|
46
46
|
return (
|
|
47
47
|
<div className={styles.carouselContainer}>
|
|
48
48
|
{width >= 991 && (
|
|
49
|
-
<Slider
|
|
49
|
+
<Slider
|
|
50
|
+
{...settings}
|
|
51
|
+
className={styles.screenshotCarousel}
|
|
52
|
+
useArrows={false}
|
|
53
|
+
gtmClass={gtmClass}
|
|
54
|
+
>
|
|
50
55
|
{renderTwo(module.items)}
|
|
51
56
|
</Slider>
|
|
52
57
|
)}
|
|
53
58
|
{width < 991 && width > 0 && (
|
|
54
|
-
<Slider
|
|
59
|
+
<Slider
|
|
60
|
+
{...settings}
|
|
61
|
+
className={styles.screenshotCarousel}
|
|
62
|
+
useArrows={false}
|
|
63
|
+
gtmClass={gtmClass}
|
|
64
|
+
>
|
|
55
65
|
{renderOne(module.items)}
|
|
56
66
|
</Slider>
|
|
57
67
|
)}
|
|
@@ -72,6 +82,7 @@ Carousel.propTypes = {
|
|
|
72
82
|
}),
|
|
73
83
|
settings: PropTypes.shape(PropTypes.object),
|
|
74
84
|
styles: PropTypes.object,
|
|
85
|
+
gtmClass: PropTypes.string,
|
|
75
86
|
};
|
|
76
87
|
|
|
77
88
|
export default Carousel;
|
|
@@ -60,12 +60,12 @@ const Navigation = ({
|
|
|
60
60
|
>
|
|
61
61
|
<nav className={styles.nav} style={{ justifyContent: logoPosition }} ref={navRef}>
|
|
62
62
|
<NavigationProvider>
|
|
63
|
-
<Link className={styles.logo} to="/" onClick={onClickHandler}>
|
|
63
|
+
<Link className={`${styles.logo} main-menu-gtm logo-cta`} to="/" onClick={onClickHandler}>
|
|
64
64
|
<img alt={getSiteName()} src={logo} width={logoWidth} height={logoHeight} />
|
|
65
65
|
</Link>
|
|
66
66
|
{showMenu && (
|
|
67
67
|
<>
|
|
68
|
-
<Menu section={section} menu={menu} options={options} />
|
|
68
|
+
<Menu section={section} menu={menu} options={options} gtmClass="main-menu-gtm" />
|
|
69
69
|
{hasSearch && <SearchForm className={styles.search} searchIcon={searchIcon} />}
|
|
70
70
|
</>
|
|
71
71
|
)}
|
|
@@ -68,7 +68,7 @@ const SearchForm = ({ className, searchIcon, iconWidth = 24, iconHeight = 24 })
|
|
|
68
68
|
type="button"
|
|
69
69
|
aria-label="Search"
|
|
70
70
|
onClick={handleOnSearchIconClick}
|
|
71
|
-
className={`${styles.searchButton} ${showSearch && styles.active}`}
|
|
71
|
+
className={`${styles.searchButton} ${showSearch && styles.active} search-gtm btn-cta`}
|
|
72
72
|
>
|
|
73
73
|
{searchIcon === null ? (
|
|
74
74
|
<FaSearch />
|
|
@@ -92,6 +92,7 @@ const SearchForm = ({ className, searchIcon, iconWidth = 24, iconHeight = 24 })
|
|
|
92
92
|
autoComplete: true,
|
|
93
93
|
sort: true,
|
|
94
94
|
limit: 3,
|
|
95
|
+
showViewResultsText: false,
|
|
95
96
|
}}
|
|
96
97
|
>
|
|
97
98
|
{(item) => (
|
|
@@ -24,6 +24,8 @@ function Body({ pageContext }) {
|
|
|
24
24
|
const footerNavigationData = pageContext?.marketSections?.footer_navigation || null;
|
|
25
25
|
const isHomePage = pageContext?.page && pageContext?.page.path === '/';
|
|
26
26
|
const pageType = pageContext.page.type;
|
|
27
|
+
const is404 = pageContext.page.path.includes('404');
|
|
28
|
+
|
|
27
29
|
const Popup = pageContext?.marketSections?.popup
|
|
28
30
|
? loadable(() => import(`../../../../components/organisms/popup`))
|
|
29
31
|
: null;
|
|
@@ -42,12 +44,13 @@ function Body({ pageContext }) {
|
|
|
42
44
|
const status = pageContext.page.relation?.status;
|
|
43
45
|
|
|
44
46
|
const hideBanner = status === 'inactive' || status === 'coming_soon';
|
|
45
|
-
const { template
|
|
47
|
+
const { template } = pageContext.page;
|
|
46
48
|
|
|
47
49
|
const popupData = pageContext?.marketSections?.popup?.modules?.find((m) => m.name === 'top_list');
|
|
48
|
-
const FooterNavigation =
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
const FooterNavigation =
|
|
51
|
+
footerNavigationData && pageType !== 'operator'
|
|
52
|
+
? loadable(() => import(`../../../../components/organisms/footer-navigation`))
|
|
53
|
+
: null;
|
|
51
54
|
|
|
52
55
|
return (
|
|
53
56
|
<>
|
|
@@ -55,7 +58,6 @@ function Body({ pageContext }) {
|
|
|
55
58
|
<Navigation
|
|
56
59
|
template={template}
|
|
57
60
|
section={navigation}
|
|
58
|
-
translations={translations}
|
|
59
61
|
searchIcon="../../../../../../images/search.svg"
|
|
60
62
|
menu="main_menu"
|
|
61
63
|
options={{
|
|
@@ -76,7 +78,7 @@ function Body({ pageContext }) {
|
|
|
76
78
|
<ContactUs page={pageContext} />
|
|
77
79
|
) : (
|
|
78
80
|
<>
|
|
79
|
-
{!isSearch && <Header section={pageContext} />}
|
|
81
|
+
{!isSearch && !is404 && <Header section={pageContext} />}
|
|
80
82
|
{main && <Main section={main} page={pageContext.page} />}
|
|
81
83
|
{pageType === 'operator' && !hideBanner && (
|
|
82
84
|
<OperatorBanner
|
|
@@ -114,10 +116,14 @@ function Body({ pageContext }) {
|
|
|
114
116
|
<p>
|
|
115
117
|
We use cookies in order to optimise our site and improve your experience with us. By using
|
|
116
118
|
the site you consent to our
|
|
117
|
-
<a href="/cookies">
|
|
119
|
+
<a href="/cookies" className="cookie-consent-gtm">
|
|
120
|
+
{' '}
|
|
121
|
+
Cookie Policy
|
|
122
|
+
</a>
|
|
123
|
+
.
|
|
118
124
|
</p>
|
|
119
125
|
</CookieConsent>
|
|
120
|
-
{Popup && popupData && <Popup module={popupData}
|
|
126
|
+
{Popup && popupData && <Popup module={popupData} />}
|
|
121
127
|
</>
|
|
122
128
|
);
|
|
123
129
|
}
|
|
@@ -130,7 +136,6 @@ Body.propTypes = {
|
|
|
130
136
|
type: PropTypes.string,
|
|
131
137
|
path: PropTypes.string,
|
|
132
138
|
template: PropTypes.string,
|
|
133
|
-
translations: PropTypes.shape({}),
|
|
134
139
|
relation: PropTypes.shape({
|
|
135
140
|
status: PropTypes.string,
|
|
136
141
|
logo_url: PropTypes.string,
|