gatsby-core-theme 14.0.2 → 15.0.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/CHANGELOG.md +37 -0
- package/__mocks__/file-mock.js +1 -1
- package/jest-preprocess.js +2 -2
- package/package.json +1 -1
- package/src/components/atoms/author/author.module.scss +160 -26
- package/src/components/atoms/author/author.test.js +15 -19
- package/src/components/atoms/author/index.js +85 -68
- package/src/components/atoms/author-box/index.js +9 -1
- package/src/components/atoms/collapse/collpase.stories.js +7 -7
- package/src/components/atoms/content-box/content-box.stories.js +6 -9
- package/src/components/atoms/google-tag-manager/body.js +1 -1
- package/src/components/atoms/label/label.stories.js +2 -4
- package/src/components/atoms/open-graph/open-graph.stories.js +1 -2
- package/src/components/atoms/operator-info-block/operator-info-block.test.js +1 -1
- package/src/components/atoms/search/autocomplete/game.js +1 -1
- package/src/components/atoms/timeline/timeline.stories.js +6 -12
- package/src/components/atoms/timeline/timeline.test.js +5 -10
- package/src/components/molecules/content-and-custom-module/content-and-custom-module.stories.js +5 -10
- package/src/components/molecules/content-and-custom-module/content-and-custom-module.test.js +1 -2
- package/src/components/molecules/header/index.js +1 -0
- package/src/components/molecules/link-list/index.js +2 -2
- package/src/components/molecules/link-list/link-list.test.js +10 -26
- package/src/components/molecules/operator-banner/operator-banner.stories.js +1 -2
- package/src/components/molecules/slider/slider.stories.js +1 -2
- package/src/components/molecules/star-rating/star-rating.stories.js +2 -2
- package/src/components/molecules/sticky/sticky.test.js +8 -4
- package/src/components/organisms/carousel/carousel.test.js +3 -7
- package/src/components/organisms/form/form.stories.js +1 -2
- package/src/components/organisms/navigation/index.js +4 -12
- package/src/components/organisms/navigation/navigationContext.js +2 -2
- package/src/components/organisms/toplist/toplist.stories.js +1 -2
- package/src/components/pages/tracker/tracker.stories.js +1 -1
- package/src/constants/module-value.js +1 -1
- package/src/constants/pick-keys.js +2 -2
- package/src/helpers/cookies.test.js +2 -2
- package/src/helpers/css-parser.js +0 -1
- package/src/helpers/date-time.test.js +3 -3
- package/src/helpers/search-source.js +4 -4
- package/src/helpers/validation.test.js +9 -9
- package/src/hooks/gatsby-img/index.js +0 -1
- package/storybook/babel.config.js +6 -6
- package/tests/factories/modules/modules.factory.js +30 -6
- package/tests/factories/pages/default.factory.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,40 @@
|
|
|
1
|
+
# [15.0.0](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v14.0.3...v15.0.0) (2022-11-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* added new fields in payment and software providers ([4c09173](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/4c09173104d745a36d3d3b1fd99f9cb6f2b95066))
|
|
7
|
+
* commit mistakes ([d6a6b1c](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/d6a6b1c45a37c884340b0bd1b0145ffc6dd00b2f))
|
|
8
|
+
* images-explicit-width-height ([bc279e5](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/bc279e5e483395981311ff61b99145b97e8159fb))
|
|
9
|
+
* init commit ([f715767](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/f715767484a23a8dd90c299eb71d3b1679118a4a))
|
|
10
|
+
* init commit ([6889643](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/688964337c3174693a33cc12220ae76d272fe59f))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Code Refactoring
|
|
14
|
+
|
|
15
|
+
* changes to author component ([5d03632](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/5d036328439dd240c6fa940d02021e01a6553f33))
|
|
16
|
+
* remove author from sitemap ([10c5537](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/10c55370b6fd8709b5db9a3936a079d71e92cfe7))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
* Merge branch 'TM-3044-replace-author' into 'master' ([dfda6cc](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/dfda6cceee50b1ee4902bacb2ef2e27f20247a9a))
|
|
20
|
+
* Merge branch 'tm-3096-images-explicit-width-height' into 'master' ([29a8226](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/29a822610fc3a07a077af9b355c9cdd147fe9282))
|
|
21
|
+
* Merge branch 'master' into TM-3044-replace-author ([4f51f20](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/4f51f20884df620616eba09649e1cccf274d68f6))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Tests
|
|
25
|
+
|
|
26
|
+
* correction to test scripts ([a868f6f](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/a868f6f37f7482ad63850b118cd4fcd4614e9cf9))
|
|
27
|
+
|
|
28
|
+
## [14.0.3](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v14.0.2...v14.0.3) (2022-11-04)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* aligned master branch ([63acad9](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/63acad942ba18affb6a0d95fad1c4149dfd1060e))
|
|
34
|
+
* aligned master branch ([89246fc](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/89246fc645950553c3f6a0a9888851357d222a2f))
|
|
35
|
+
* reverted logo fix ([786879f](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/commit/786879f6d3f5afd6da37b90ccc3da7136613c5f8))
|
|
36
|
+
|
|
37
|
+
|
|
1
38
|
## [14.0.2](https://git.ilcd.rocks/team-floyd/themes/gatsby-themes/compare/v14.0.1...v14.0.2) (2022-11-03)
|
|
2
39
|
|
|
3
40
|
|
package/__mocks__/file-mock.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = 'test-file-stub'
|
|
1
|
+
module.exports = 'test-file-stub';
|
package/jest-preprocess.js
CHANGED
package/package.json
CHANGED
|
@@ -1,34 +1,168 @@
|
|
|
1
|
-
.
|
|
2
|
-
font-size: 1.5rem;
|
|
3
|
-
}
|
|
4
|
-
.date {
|
|
5
|
-
font-size: 1.5rem;
|
|
6
|
-
}
|
|
7
|
-
.authorIcon {
|
|
8
|
-
margin-right: 0.5rem;
|
|
9
|
-
font-size: 1.8rem;
|
|
10
|
-
}
|
|
11
|
-
.authorIcon,
|
|
12
|
-
.dateTimeWrapper,
|
|
13
|
-
.authorInfo {
|
|
14
|
-
height: 2rem;
|
|
15
|
-
display: inline-block;
|
|
16
|
-
font-weight: 400;
|
|
17
|
-
vertical-align: bottom;
|
|
18
|
-
a {
|
|
19
|
-
color: #09f;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.authorWrapper {
|
|
1
|
+
.authorWraper {
|
|
24
2
|
display: flex;
|
|
25
|
-
flex-
|
|
3
|
+
flex-wrap: wrap;
|
|
4
|
+
align-items: center;
|
|
5
|
+
font-size: var(--author-text-fontSize);
|
|
6
|
+
color: var(--author-primary-text-color);
|
|
26
7
|
column-gap: 0.5rem;
|
|
8
|
+
max-width: var(--main-container-max);
|
|
9
|
+
margin: 0 auto;
|
|
10
|
+
padding: 0 2.4rem;
|
|
27
11
|
|
|
28
12
|
> div {
|
|
29
13
|
display: flex;
|
|
30
14
|
justify-content: flex-end;
|
|
31
|
-
|
|
32
|
-
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.infoContainer {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
white-space: nowrap;
|
|
21
|
+
order: 1;
|
|
22
|
+
|
|
23
|
+
.prefixStyle {
|
|
24
|
+
margin: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
img {
|
|
28
|
+
width: 30px;
|
|
29
|
+
height: 30px;
|
|
30
|
+
border-radius: 50%;
|
|
31
|
+
margin: 0 8px 0 6px;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
> a {
|
|
35
|
+
color: var(--author-link-text-color);
|
|
36
|
+
font-weight: var(--author-fontweight);
|
|
37
|
+
text-decoration: underline;
|
|
38
|
+
|
|
39
|
+
&:before {
|
|
40
|
+
content: '';
|
|
41
|
+
padding: 0 2px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&:after {
|
|
45
|
+
content: '';
|
|
46
|
+
padding: 0 2px;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@include max(mobile) {
|
|
51
|
+
justify-content: flex-start;
|
|
52
|
+
|
|
53
|
+
> a,
|
|
54
|
+
.prefixStyle {
|
|
55
|
+
display: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
img {
|
|
59
|
+
margin: 0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
.dateTimeWrapper {
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
white-space: nowrap;
|
|
67
|
+
order: 4;
|
|
68
|
+
flex: 1 1 auto;
|
|
69
|
+
gap: 0.5rem;
|
|
70
|
+
|
|
71
|
+
a {
|
|
72
|
+
pointer-events: none;
|
|
73
|
+
color: var(--author-primary-text-color);;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@include max(mobile){
|
|
77
|
+
order: 2;
|
|
78
|
+
flex: 0 0 auto;
|
|
79
|
+
|
|
80
|
+
.dateLink {
|
|
81
|
+
pointer-events: all;
|
|
82
|
+
text-decoration: underline;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.readingWithBorder {
|
|
88
|
+
order: 2;
|
|
89
|
+
flex: 0 0 auto;
|
|
90
|
+
gap: 0.5rem;
|
|
91
|
+
|
|
92
|
+
.readText {
|
|
93
|
+
display: none;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@include max(mobile){
|
|
97
|
+
order: 4;
|
|
98
|
+
flex: 1 1 auto;
|
|
99
|
+
|
|
100
|
+
.readingTimeText {
|
|
101
|
+
display: none;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.readText {
|
|
105
|
+
display: block;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.reviewer {
|
|
111
|
+
order: 3;
|
|
112
|
+
gap: 0.5rem;
|
|
113
|
+
|
|
114
|
+
> a {
|
|
115
|
+
color: var(--author-link-text-color);
|
|
116
|
+
font-weight: var(--author-fontweight);
|
|
117
|
+
text-decoration: underline;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@include max(mobile) {
|
|
121
|
+
justify-content: flex-start;
|
|
122
|
+
display: none;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@include max(mobile) {
|
|
127
|
+
padding: 0 1.6rem;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.authorCard {
|
|
132
|
+
display: flex;
|
|
133
|
+
width: 100%;
|
|
134
|
+
justify-content: space-between;
|
|
135
|
+
color: var( --author-card-text-color);
|
|
136
|
+
padding: 0;
|
|
137
|
+
|
|
138
|
+
.infoContainer {
|
|
139
|
+
justify-content: flex-start;
|
|
140
|
+
|
|
141
|
+
@include max(mobile) {
|
|
142
|
+
.prefixStyle {
|
|
143
|
+
display: block;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@include min(tablet){
|
|
149
|
+
display: flex;
|
|
150
|
+
justify-content: space-between;
|
|
151
|
+
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.prefixCardText {
|
|
156
|
+
padding-right: 2px;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.authorSeparator:not(.authorCard) {
|
|
160
|
+
div:not(:first-of-type):not(:last-of-type)::before {
|
|
161
|
+
content: '|';
|
|
162
|
+
padding: 0 3px;
|
|
163
|
+
|
|
164
|
+
@include max(mobile){
|
|
165
|
+
display: none;
|
|
166
|
+
}
|
|
33
167
|
}
|
|
34
168
|
}
|
|
@@ -6,26 +6,21 @@ import Author from '.';
|
|
|
6
6
|
|
|
7
7
|
describe('Author Component', () => {
|
|
8
8
|
test('render with props', () => {
|
|
9
|
-
const { container, getByText } = render(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
);
|
|
18
|
-
expect(container.querySelector('.authorInfo')).toBeTruthy();
|
|
19
|
-
const info = getByText('mohsen');
|
|
20
|
-
expect(info).toBeTruthy();
|
|
21
|
-
expect(container.querySelector('a').getAttribute('href')).toEqual('https://twitter.com/name');
|
|
22
|
-
expect(container.querySelector('i.twitter')).toBeTruthy();
|
|
9
|
+
const { container, getByText } = render(<Author name="mohsen" prefix="by" link="name" />);
|
|
10
|
+
expect(container.querySelector('.authorWraper')).toBeTruthy();
|
|
11
|
+
expect(container.querySelector('.infoContainer')).toBeTruthy();
|
|
12
|
+
const prefix = getByText('by');
|
|
13
|
+
const name = getByText('mohsen');
|
|
14
|
+
expect(prefix).toBeTruthy();
|
|
15
|
+
expect(name).toBeTruthy();
|
|
16
|
+
expect(container.querySelector('a').getAttribute('href')).toEqual('/name');
|
|
23
17
|
});
|
|
24
18
|
|
|
25
|
-
test('without link and
|
|
19
|
+
test('without link and image', () => {
|
|
26
20
|
const { container } = render(<Author name="mohsen" />);
|
|
27
|
-
expect(container.querySelector('.
|
|
21
|
+
expect(container.querySelector('.infoContainer')).toBeTruthy();
|
|
28
22
|
expect(container.querySelector('a')).toBeFalsy();
|
|
23
|
+
expect(container.querySelector('img')).toBeFalsy();
|
|
29
24
|
});
|
|
30
25
|
|
|
31
26
|
test('with date', () => {
|
|
@@ -38,10 +33,11 @@ describe('Author Component', () => {
|
|
|
38
33
|
/>
|
|
39
34
|
);
|
|
40
35
|
expect(container.querySelector('.dateTimeWrapper')).toBeTruthy();
|
|
41
|
-
const
|
|
42
|
-
|
|
36
|
+
const date = getByText('24.04.2020');
|
|
37
|
+
const prefix = getByText('with');
|
|
38
|
+
expect(date).toBeTruthy();
|
|
39
|
+
expect(prefix).toBeTruthy();
|
|
43
40
|
expect(container.querySelector('i')).toBeTruthy();
|
|
44
|
-
expect(container.querySelector('a')).toBeFalsy();
|
|
45
41
|
});
|
|
46
42
|
});
|
|
47
43
|
afterEach(() => {
|
|
@@ -1,94 +1,111 @@
|
|
|
1
1
|
/* eslint-disable arrow-body-style */
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { useContext } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
|
|
5
5
|
import { formatDate } from '~helpers/date-time';
|
|
6
|
+
import { translate, imagePrettyUrl } from '~helpers/getters';
|
|
6
7
|
import Link from '~hooks/link';
|
|
8
|
+
import LazyImage from '~hooks/lazy-image';
|
|
9
|
+
import { Context } from '~context/MainProvider';
|
|
7
10
|
import styles from './author.module.scss';
|
|
8
11
|
|
|
9
12
|
const Author = ({
|
|
10
13
|
name,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
date,
|
|
15
|
+
authorImg,
|
|
16
|
+
readingTime,
|
|
17
|
+
link,
|
|
14
18
|
prefix = '',
|
|
15
|
-
|
|
19
|
+
type = 'default',
|
|
20
|
+
icon = false,
|
|
21
|
+
splitDateFormat = '.',
|
|
16
22
|
dateFormat = 'DD.MM.YYYY',
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
isCardsAuthor = false,
|
|
24
|
+
reviewer,
|
|
25
|
+
clock = '../../../images/clock.svg',
|
|
20
26
|
}) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
href={link}
|
|
28
|
-
target="_blank"
|
|
29
|
-
rel="noreferrer"
|
|
30
|
-
aria-label={`${name} Link`}
|
|
31
|
-
className="author-gtm"
|
|
32
|
-
>
|
|
33
|
-
{icon}
|
|
34
|
-
</a>
|
|
35
|
-
</div>
|
|
36
|
-
)}
|
|
37
|
-
{!link && icon && <div className={styles.authorIcon}>{icon}</div>}
|
|
27
|
+
const { translations } = useContext(Context) || {};
|
|
28
|
+
const prefixstyle = !link || !authorImg;
|
|
29
|
+
|
|
30
|
+
const getPrefixBasedOnPage = type.includes('review')
|
|
31
|
+
? translate(translations, 'reviewed_by', 'Review by')
|
|
32
|
+
: translate(translations, 'written_by', 'Written by');
|
|
38
33
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
)
|
|
49
|
-
|
|
50
|
-
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
className={`${styles.authorWraper} ${isCardsAuthor && styles.authorCard} ${
|
|
37
|
+
styles.authorSeparator
|
|
38
|
+
}`}
|
|
39
|
+
>
|
|
40
|
+
{name && (
|
|
41
|
+
<div className={`${styles.infoContainer} ${isCardsAuthor && styles.infoCardContainer}`}>
|
|
42
|
+
<p className={`${styles.prefixStyle} ${prefixstyle && styles.prefixCardText}`}>
|
|
43
|
+
<span>{translate(translations, prefix, prefix) || getPrefixBasedOnPage}</span>
|
|
44
|
+
</p>
|
|
45
|
+
<Link to={link} title={name}>
|
|
46
|
+
{name}
|
|
47
|
+
</Link>
|
|
48
|
+
{icon}
|
|
49
|
+
{authorImg && (
|
|
50
|
+
<LazyImage
|
|
51
|
+
alt={name}
|
|
52
|
+
loading="eager"
|
|
53
|
+
width={30}
|
|
54
|
+
height={30}
|
|
55
|
+
src={imagePrettyUrl(authorImg, 30, 30)}
|
|
56
|
+
/>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
)}
|
|
60
|
+
{reviewer && !isCardsAuthor && (
|
|
61
|
+
<div className={date && styles.reviewer}>
|
|
62
|
+
<span>{`${translate(translations, 'fact_checked_by', 'Fact checked by')}`}</span>
|
|
63
|
+
{` `}
|
|
64
|
+
<Link to={reviewer.profile_page_path} title={reviewer.name}>
|
|
65
|
+
{reviewer.name}
|
|
66
|
+
</Link>
|
|
67
|
+
</div>
|
|
68
|
+
)}
|
|
69
|
+
{readingTime && !isCardsAuthor && (
|
|
70
|
+
<div className={date && styles.readingWithBorder}>
|
|
71
|
+
<img width={14} height={14} className={styles.clock} src={clock} alt="clock" />
|
|
72
|
+
<span className={styles.readingTimeText}>
|
|
73
|
+
{translate(translations, 'reading_time', 'Reading time')}
|
|
74
|
+
</span>
|
|
75
|
+
{` ${readingTime} ${translate(translations, 'minutes', 'min')}`}
|
|
76
|
+
<span className={styles.readText}>{translate(translations, 'read', 'read')}</span>
|
|
51
77
|
</div>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<span>Fact checked by</span>
|
|
63
|
-
{` `}
|
|
64
|
-
<Link to={reviewer.profile_page_path} title={reviewer.name}>
|
|
65
|
-
{reviewer.name}
|
|
66
|
-
</Link>
|
|
67
|
-
</div>
|
|
68
|
-
)}
|
|
69
|
-
{date && (
|
|
70
|
-
<div className={styles.dateTimeWrapper}>
|
|
71
|
-
<span>Published on</span>
|
|
72
|
-
{` `}
|
|
73
|
-
{formatDate(date, dateFormat, dateSeparator, 'en-GB')}
|
|
74
|
-
</div>
|
|
75
|
-
)}
|
|
76
|
-
</div>
|
|
78
|
+
)}
|
|
79
|
+
{date && (
|
|
80
|
+
<div className={styles.dateTimeWrapper}>
|
|
81
|
+
{!isCardsAuthor && <span>{translate(translations, 'published_on', 'Published on')}</span>}
|
|
82
|
+
{` `}
|
|
83
|
+
<a href="#authorbox" className={!isCardsAuthor && styles.dateLink}>
|
|
84
|
+
{formatDate(date, dateFormat, splitDateFormat, 'en-GB')}
|
|
85
|
+
</a>
|
|
86
|
+
</div>
|
|
87
|
+
)}
|
|
77
88
|
</div>
|
|
78
89
|
);
|
|
79
90
|
};
|
|
80
91
|
|
|
81
92
|
Author.propTypes = {
|
|
82
|
-
name: PropTypes.string.isRequired,
|
|
83
|
-
icon: PropTypes.oneOfType([PropTypes.element, PropTypes.any]),
|
|
84
|
-
link: PropTypes.string,
|
|
85
|
-
authorProfile: PropTypes.string,
|
|
86
93
|
prefix: PropTypes.string,
|
|
94
|
+
name: PropTypes.string.isRequired,
|
|
87
95
|
date: PropTypes.string,
|
|
88
96
|
dateFormat: PropTypes.string,
|
|
89
|
-
|
|
97
|
+
type: PropTypes.string,
|
|
98
|
+
link: PropTypes.string,
|
|
99
|
+
authorImg: PropTypes.string,
|
|
90
100
|
readingTime: PropTypes.string,
|
|
91
|
-
|
|
101
|
+
icon: PropTypes.string,
|
|
102
|
+
splitDateFormat: PropTypes.string,
|
|
103
|
+
isCardsAuthor: PropTypes.bool,
|
|
104
|
+
reviewer: PropTypes.shape({
|
|
105
|
+
profile_page_path: PropTypes.string,
|
|
106
|
+
name: PropTypes.string,
|
|
107
|
+
}),
|
|
108
|
+
clock: PropTypes.string,
|
|
92
109
|
};
|
|
93
110
|
|
|
94
111
|
export default Author;
|
|
@@ -62,6 +62,8 @@ export default function AuthorBox({
|
|
|
62
62
|
<LazyImage
|
|
63
63
|
src="../../../images/verify.svg"
|
|
64
64
|
alt={translate(translations, 'verified', 'Verified')}
|
|
65
|
+
width={20}
|
|
66
|
+
height={20}
|
|
65
67
|
/>
|
|
66
68
|
</p>
|
|
67
69
|
{author.author_title && <p className={styles.title}>{author.author_title}</p>}
|
|
@@ -145,7 +147,13 @@ export default function AuthorBox({
|
|
|
145
147
|
{author.expertise.map((item, index) => (
|
|
146
148
|
// eslint-disable-next-line react/no-array-index-key
|
|
147
149
|
<li key={index} className={styles.expertiseItem}>
|
|
148
|
-
<img
|
|
150
|
+
<img
|
|
151
|
+
className={styles.check}
|
|
152
|
+
src={check}
|
|
153
|
+
alt="check"
|
|
154
|
+
width="10px"
|
|
155
|
+
height="8px"
|
|
156
|
+
/>
|
|
149
157
|
{item}
|
|
150
158
|
</li>
|
|
151
159
|
))}
|
|
@@ -67,8 +67,7 @@ export default {
|
|
|
67
67
|
parameters: {
|
|
68
68
|
docs: {
|
|
69
69
|
description: {
|
|
70
|
-
component:
|
|
71
|
-
'Generates a collapsible box, with content & icon.',
|
|
70
|
+
component: 'Generates a collapsible box, with content & icon.',
|
|
72
71
|
},
|
|
73
72
|
page: () => (
|
|
74
73
|
<>
|
|
@@ -86,9 +85,10 @@ const Template = (args) => <Collapse {...args} />;
|
|
|
86
85
|
|
|
87
86
|
export const Default = Template.bind({});
|
|
88
87
|
Default.args = {
|
|
89
|
-
buttonText
|
|
90
|
-
contentText
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
buttonText: 'show',
|
|
89
|
+
contentText:
|
|
90
|
+
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy",
|
|
91
|
+
onlyMobile: false,
|
|
92
|
+
onlyDesktop: false,
|
|
93
|
+
initOpen: false,
|
|
94
94
|
};
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
PRIMARY_STORY,
|
|
7
7
|
ArgsTable,
|
|
8
8
|
} from '@storybook/addon-docs/blocks';
|
|
9
|
-
import content_1 from
|
|
10
|
-
import content_2 from
|
|
11
|
-
import content_3 from
|
|
9
|
+
import content_1 from '../../../../static/images/content-1.png';
|
|
10
|
+
import content_2 from '../../../../static/images/content-2.png';
|
|
11
|
+
import content_3 from '../../../../static/images/content-3.png';
|
|
12
12
|
|
|
13
13
|
import ContentBox from '.';
|
|
14
14
|
|
|
@@ -52,20 +52,17 @@ Default.args = {
|
|
|
52
52
|
{
|
|
53
53
|
title: 'Fully licensed casinos',
|
|
54
54
|
image: content_1,
|
|
55
|
-
text:
|
|
56
|
-
'We only list and review fully licensed and legally operating casinos so you can be sure where you end up playing will be safe and secure.',
|
|
55
|
+
text: 'We only list and review fully licensed and legally operating casinos so you can be sure where you end up playing will be safe and secure.',
|
|
57
56
|
},
|
|
58
57
|
{
|
|
59
58
|
title: 'Get the most for your money',
|
|
60
59
|
image: content_2,
|
|
61
|
-
text:
|
|
62
|
-
'We list all the features the Casinos have to offer so you can make an educated decision about where to place your money for maximum gains!',
|
|
60
|
+
text: 'We list all the features the Casinos have to offer so you can make an educated decision about where to place your money for maximum gains!',
|
|
63
61
|
},
|
|
64
62
|
{
|
|
65
63
|
title: 'Authenticly written articles',
|
|
66
64
|
image: content_3,
|
|
67
|
-
text:
|
|
68
|
-
'All our Authors are professional writers with industry know-how, so you can depend on what we say is the truth!',
|
|
65
|
+
text: 'All our Authors are professional writers with industry know-how, so you can depend on what we say is the truth!',
|
|
69
66
|
},
|
|
70
67
|
],
|
|
71
68
|
};
|
|
@@ -9,7 +9,7 @@ const GoogleTagManagerBody = ({ gtm_id }) => (
|
|
|
9
9
|
src={`https://www.googletagmanager.com/ns.html?id=${gtm_id}`}
|
|
10
10
|
height="0"
|
|
11
11
|
width="0"
|
|
12
|
-
style={{display:
|
|
12
|
+
style={{ display: 'none', visibility: 'hidden' }}
|
|
13
13
|
aria-hidden="true"
|
|
14
14
|
></iframe>
|
|
15
15
|
</noscript>
|
|
@@ -33,13 +33,11 @@ export default {
|
|
|
33
33
|
defaultValue: { summary: 'yellow' },
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
|
-
|
|
37
36
|
},
|
|
38
37
|
parameters: {
|
|
39
38
|
docs: {
|
|
40
39
|
description: {
|
|
41
|
-
component:
|
|
42
|
-
'A component that accepts title & background color and generates a label div.',
|
|
40
|
+
component: 'A component that accepts title & background color and generates a label div.',
|
|
43
41
|
},
|
|
44
42
|
page: () => (
|
|
45
43
|
<>
|
|
@@ -58,5 +56,5 @@ const Template = (args) => <Label {...args} />;
|
|
|
58
56
|
export const Default = Template.bind({});
|
|
59
57
|
Default.args = {
|
|
60
58
|
title: 'Top Casino',
|
|
61
|
-
bgColor: 'yellow'
|
|
59
|
+
bgColor: 'yellow',
|
|
62
60
|
};
|
|
@@ -27,8 +27,7 @@ export default {
|
|
|
27
27
|
parameters: {
|
|
28
28
|
docs: {
|
|
29
29
|
description: {
|
|
30
|
-
component:
|
|
31
|
-
'A component that accepts an array of objects and returns a timeline.',
|
|
30
|
+
component: 'A component that accepts an array of objects and returns a timeline.',
|
|
32
31
|
},
|
|
33
32
|
page: () => (
|
|
34
33
|
<>
|
|
@@ -50,36 +49,31 @@ Default.args = {
|
|
|
50
49
|
{
|
|
51
50
|
date: '2013',
|
|
52
51
|
title: 'Launched',
|
|
53
|
-
text:
|
|
54
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
52
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
55
53
|
isActive: false,
|
|
56
54
|
},
|
|
57
55
|
{
|
|
58
56
|
date: '2015',
|
|
59
57
|
title: 'Rebrand + New Website',
|
|
60
|
-
text:
|
|
61
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
58
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
62
59
|
isActive: false,
|
|
63
60
|
},
|
|
64
61
|
{
|
|
65
62
|
date: '2017',
|
|
66
63
|
title: '150+ Employees',
|
|
67
|
-
text:
|
|
68
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
64
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
69
65
|
isActive: false,
|
|
70
66
|
},
|
|
71
67
|
{
|
|
72
68
|
date: '2019',
|
|
73
69
|
title: 'We acquired XXX',
|
|
74
|
-
text:
|
|
75
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
70
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
76
71
|
isActive: false,
|
|
77
72
|
},
|
|
78
73
|
{
|
|
79
74
|
date: 'Today',
|
|
80
75
|
title: 'Over 500 Casino Reviews',
|
|
81
|
-
text:
|
|
82
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
76
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
83
77
|
isActive: true,
|
|
84
78
|
},
|
|
85
79
|
],
|
|
@@ -8,36 +8,31 @@ const timelineArray = [
|
|
|
8
8
|
{
|
|
9
9
|
date: '2013',
|
|
10
10
|
title: 'Launched',
|
|
11
|
-
text:
|
|
12
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
11
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
13
12
|
isActive: false,
|
|
14
13
|
},
|
|
15
14
|
{
|
|
16
15
|
date: '2015',
|
|
17
16
|
title: 'Rebrand + New Website',
|
|
18
|
-
text:
|
|
19
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
17
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
20
18
|
isActive: false,
|
|
21
19
|
},
|
|
22
20
|
{
|
|
23
21
|
date: '2017',
|
|
24
22
|
title: '150+ Employees',
|
|
25
|
-
text:
|
|
26
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
23
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
27
24
|
isActive: false,
|
|
28
25
|
},
|
|
29
26
|
{
|
|
30
27
|
date: '2019',
|
|
31
28
|
title: 'We acquired XXX',
|
|
32
|
-
text:
|
|
33
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
29
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
34
30
|
isActive: false,
|
|
35
31
|
},
|
|
36
32
|
{
|
|
37
33
|
date: 'Today',
|
|
38
34
|
title: 'Over 500 Casino Reviews',
|
|
39
|
-
text:
|
|
40
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
35
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
41
36
|
isActive: true,
|
|
42
37
|
},
|
|
43
38
|
];
|
package/src/components/molecules/content-and-custom-module/content-and-custom-module.stories.js
CHANGED
|
@@ -88,36 +88,31 @@ Default.args = {
|
|
|
88
88
|
{
|
|
89
89
|
date: '2013',
|
|
90
90
|
title: 'Launched',
|
|
91
|
-
text:
|
|
92
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
91
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
93
92
|
isActive: false,
|
|
94
93
|
},
|
|
95
94
|
{
|
|
96
95
|
date: '2015',
|
|
97
96
|
title: 'Rebrand + New Website',
|
|
98
|
-
text:
|
|
99
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
97
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
100
98
|
isActive: false,
|
|
101
99
|
},
|
|
102
100
|
{
|
|
103
101
|
date: '2017',
|
|
104
102
|
title: '150+ Employees',
|
|
105
|
-
text:
|
|
106
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
103
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
107
104
|
isActive: false,
|
|
108
105
|
},
|
|
109
106
|
{
|
|
110
107
|
date: '2019',
|
|
111
108
|
title: 'We acquired XXX',
|
|
112
|
-
text:
|
|
113
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
109
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
114
110
|
isActive: false,
|
|
115
111
|
},
|
|
116
112
|
{
|
|
117
113
|
date: 'Today',
|
|
118
114
|
title: 'Over 500 Casino Reviews',
|
|
119
|
-
text:
|
|
120
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
115
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
121
116
|
isActive: true,
|
|
122
117
|
},
|
|
123
118
|
],
|
package/src/components/molecules/content-and-custom-module/content-and-custom-module.test.js
CHANGED
|
@@ -9,8 +9,7 @@ const timelineArray = [
|
|
|
9
9
|
{
|
|
10
10
|
date: '2013',
|
|
11
11
|
title: 'Launched',
|
|
12
|
-
text:
|
|
13
|
-
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
12
|
+
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. At urna in sapien posuere leo imperdiet pulvinar dictum.',
|
|
14
13
|
isActive: false,
|
|
15
14
|
},
|
|
16
15
|
];
|
|
@@ -44,6 +44,7 @@ function Header({ section, content = null, backgroundImage = true, showAuthor =
|
|
|
44
44
|
const Author =
|
|
45
45
|
section.page.path !== '/' &&
|
|
46
46
|
section.page.path !== 'contact-us' &&
|
|
47
|
+
section.page.path !== 'sitemap' &&
|
|
47
48
|
section.page.author &&
|
|
48
49
|
showAuthor
|
|
49
50
|
? loadable(() => import('~atoms/author'))
|
|
@@ -30,8 +30,8 @@ const LinkList = ({
|
|
|
30
30
|
<LazyImage
|
|
31
31
|
src={imagePrettyUrl(item.image)}
|
|
32
32
|
alt={getAltText(item?.image_object, item.title)}
|
|
33
|
-
width={width}
|
|
34
|
-
height={height}
|
|
33
|
+
width={width || item?.image_object?.width}
|
|
34
|
+
height={height || item?.image_object?.height}
|
|
35
35
|
loading={disableLazyLoad ? 'eager' : 'lazy'}
|
|
36
36
|
/>
|
|
37
37
|
);
|
|
@@ -5,34 +5,25 @@ import '@testing-library/jest-dom/extend-expect';
|
|
|
5
5
|
import { getNavigationModule } from '~tests/factories/sections/navigation.factory';
|
|
6
6
|
import LinkList from '.';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
8
|
describe('Link List Component', () => {
|
|
11
9
|
test('render multiple lists', () => {
|
|
12
|
-
const links = getNavigationModule(2,true);
|
|
10
|
+
const links = getNavigationModule(2, true);
|
|
13
11
|
|
|
14
|
-
const { getByText } = render(
|
|
15
|
-
<LinkList
|
|
16
|
-
lists={links}
|
|
17
|
-
/>
|
|
18
|
-
);
|
|
12
|
+
const { getByText } = render(<LinkList lists={links} />);
|
|
19
13
|
expect(getByText('title nav_1_1')).toBeTruthy();
|
|
20
|
-
expect(getByText('submenu nav_1_1').closest('a').getAttribute('href')).toEqual(
|
|
14
|
+
expect(getByText('submenu nav_1_1').closest('a').getAttribute('href')).toEqual(
|
|
15
|
+
'/submenu_nav_1_1'
|
|
16
|
+
);
|
|
21
17
|
expect(getByText('title nav_1_1').closest('ul').children.length).toBe(2);
|
|
22
18
|
expect(getByText('title nav_1_2')).toBeTruthy();
|
|
23
|
-
expect(getByText('submenu nav_1_2').closest('a').getAttribute('href')).toEqual(
|
|
19
|
+
expect(getByText('submenu nav_1_2').closest('a').getAttribute('href')).toEqual(
|
|
20
|
+
'/submenu_nav_1_2'
|
|
21
|
+
);
|
|
24
22
|
expect(getByText('title nav_1_2').closest('ul').children.length).toBe(2);
|
|
25
23
|
});
|
|
26
24
|
const links = getNavigationModule(4);
|
|
27
25
|
test('render single list', () => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const { getByText } = render(
|
|
31
|
-
<LinkList
|
|
32
|
-
lists={links}
|
|
33
|
-
singleList
|
|
34
|
-
/>
|
|
35
|
-
);
|
|
26
|
+
const { getByText } = render(<LinkList lists={links} singleList />);
|
|
36
27
|
|
|
37
28
|
expect(getByText('title nav_1_1')).toBeTruthy();
|
|
38
29
|
expect(getByText('title nav_1_1').closest('a').getAttribute('href')).toEqual('/menu_nav_1_1');
|
|
@@ -45,14 +36,7 @@ describe('Link List Component', () => {
|
|
|
45
36
|
});
|
|
46
37
|
|
|
47
38
|
test('render image list', () => {
|
|
48
|
-
|
|
49
|
-
const { getByTitle } = render(
|
|
50
|
-
<LinkList
|
|
51
|
-
lists={links}
|
|
52
|
-
singleList
|
|
53
|
-
imageOnly
|
|
54
|
-
/>
|
|
55
|
-
);
|
|
39
|
+
const { getByTitle } = render(<LinkList lists={links} singleList imageOnly />);
|
|
56
40
|
|
|
57
41
|
expect(getByTitle('title nav_1_1')).toBeTruthy();
|
|
58
42
|
expect(getByTitle('title nav_1_2')).toBeTruthy();
|
|
@@ -63,8 +63,7 @@ export default {
|
|
|
63
63
|
name: 'sticky',
|
|
64
64
|
type: { name: 'boolean', required: false },
|
|
65
65
|
defaultValue: false,
|
|
66
|
-
description:
|
|
67
|
-
'If true it will be wrapped with a Sticky component.',
|
|
66
|
+
description: 'If true it will be wrapped with a Sticky component.',
|
|
68
67
|
table: {
|
|
69
68
|
type: { summary: 'boolean' },
|
|
70
69
|
defaultValue: { summary: false },
|
|
@@ -119,8 +119,7 @@ export default {
|
|
|
119
119
|
const list = [
|
|
120
120
|
{
|
|
121
121
|
title: 'slide one',
|
|
122
|
-
text:
|
|
123
|
-
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,",
|
|
122
|
+
text: "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,",
|
|
124
123
|
image: Slide1,
|
|
125
124
|
},
|
|
126
125
|
{
|
|
@@ -36,7 +36,7 @@ export default {
|
|
|
36
36
|
type: { summary: 'number | array of numbers' },
|
|
37
37
|
defaultValue: { summary: '' },
|
|
38
38
|
},
|
|
39
|
-
control: { type: 'range', min: 0, max: 10, step: .5 },
|
|
39
|
+
control: { type: 'range', min: 0, max: 10, step: 0.5 },
|
|
40
40
|
},
|
|
41
41
|
halfStars: {
|
|
42
42
|
name: 'halfStars',
|
|
@@ -106,5 +106,5 @@ export const Default = Template.bind({});
|
|
|
106
106
|
Default.args = {
|
|
107
107
|
numOfStars: 10,
|
|
108
108
|
rating: 6.5,
|
|
109
|
-
halfStars: true
|
|
109
|
+
halfStars: true,
|
|
110
110
|
};
|
|
@@ -8,7 +8,7 @@ describe('summary component', () => {
|
|
|
8
8
|
test('test content', () => {
|
|
9
9
|
const { container, getByText } = render(<Sticky>Test content</Sticky>);
|
|
10
10
|
expect(container).toBeTruthy();
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
expect(container.querySelector('.notScrolled')).toBeTruthy();
|
|
13
13
|
expect(getByText('Test content')).toBeTruthy();
|
|
14
14
|
// expect(container.querySelector('.sticky')).toBeVisible();
|
|
@@ -16,15 +16,19 @@ describe('summary component', () => {
|
|
|
16
16
|
|
|
17
17
|
test('test content', () => {
|
|
18
18
|
const { container, getByText } = render(<Sticky showOnScroll={false}>Test content</Sticky>);
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
expect(container).toBeTruthy();
|
|
21
21
|
expect(container.querySelector('.notScrolled')).toBeFalsy();
|
|
22
22
|
expect(getByText('Test content')).toBeTruthy();
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
test('test content', () => {
|
|
26
|
-
const { container, getByText } = render(
|
|
27
|
-
|
|
26
|
+
const { container, getByText } = render(
|
|
27
|
+
<Sticky showOnScroll={false} position="top">
|
|
28
|
+
Test content
|
|
29
|
+
</Sticky>
|
|
30
|
+
);
|
|
31
|
+
|
|
28
32
|
expect(container).toBeTruthy();
|
|
29
33
|
expect(container.querySelector('.top')).toBeTruthy();
|
|
30
34
|
expect(container.querySelector('.notScrolled')).toBeFalsy();
|
|
@@ -14,15 +14,11 @@ describe('Carousel Component', () => {
|
|
|
14
14
|
test('render slides', () => {
|
|
15
15
|
const { container, getAllByText } = render(<Carousel module={carouselItems} />);
|
|
16
16
|
expect(getAllByText('title 1')).toBeTruthy();
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
expect(container.querySelectorAll('.sliderItem span.title')).toHaveLength(2);
|
|
19
19
|
expect(container.querySelectorAll('.sliderItem a.primary')).toHaveLength(1);
|
|
20
|
-
expect(container.querySelectorAll('.sliderItem a.secondary')).toHaveLength(
|
|
21
|
-
|
|
22
|
-
);
|
|
23
|
-
expect(container.querySelectorAll('.sliderItem span.label')).toHaveLength(
|
|
24
|
-
2
|
|
25
|
-
);
|
|
20
|
+
expect(container.querySelectorAll('.sliderItem a.secondary')).toHaveLength(1);
|
|
21
|
+
expect(container.querySelectorAll('.sliderItem span.label')).toHaveLength(2);
|
|
26
22
|
});
|
|
27
23
|
});
|
|
28
24
|
afterEach(() => {
|
|
@@ -7,7 +7,6 @@ import Menu from '~molecules/menu';
|
|
|
7
7
|
import { toggleScroll } from '~helpers/scroll';
|
|
8
8
|
import ConditionalWrapper from '~atoms/conditional-wrapper';
|
|
9
9
|
import Sticky from '~molecules/sticky';
|
|
10
|
-
import Image from '../../../hooks/gatsby-img';
|
|
11
10
|
|
|
12
11
|
import NavigationProvider from './navigationContext';
|
|
13
12
|
|
|
@@ -15,7 +14,7 @@ import styles from './navigation.module.scss';
|
|
|
15
14
|
|
|
16
15
|
const Navigation = ({
|
|
17
16
|
section,
|
|
18
|
-
logo = 'logo.
|
|
17
|
+
logo = '../../../../../images/logo.svg',
|
|
19
18
|
logoWidth = 200,
|
|
20
19
|
logoHeight = 31,
|
|
21
20
|
searchIcon = null,
|
|
@@ -43,18 +42,11 @@ const Navigation = ({
|
|
|
43
42
|
|
|
44
43
|
const Search = hasSearch ? loadable(() => import('~organisms/search')) : null;
|
|
45
44
|
const logoImg = (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// width={logoWidth}
|
|
50
|
-
// height={logoHeight}
|
|
51
|
-
// />
|
|
52
|
-
<Image
|
|
53
|
-
objectFit="contain"
|
|
54
|
-
filename={logo}
|
|
45
|
+
<img
|
|
46
|
+
alt={`${process.env.GATSBY_SITE_NAME} logo`}
|
|
47
|
+
src={logo}
|
|
55
48
|
width={logoWidth}
|
|
56
49
|
height={logoHeight}
|
|
57
|
-
alt={`${process.env.GATSBY_SITE_NAME} logo`}
|
|
58
50
|
/>
|
|
59
51
|
);
|
|
60
52
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import React, { useState, createContext } from
|
|
1
|
+
import React, { useState, createContext } from 'react';
|
|
2
2
|
|
|
3
3
|
export const NavigationContext = createContext(false);
|
|
4
4
|
|
|
5
|
-
const NavigationProvider = props => {
|
|
5
|
+
const NavigationProvider = (props) => {
|
|
6
6
|
const [showMenu, setShowMenu] = useState(false);
|
|
7
7
|
const [showSearch, setShowSearch] = useState(false);
|
|
8
8
|
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import Tracker from '.';
|
|
11
11
|
// When we separate repo's we need to move these files to gatsby-theme
|
|
12
12
|
import bgVideoSrc from '../../../../../storybook-images/splash-page.webm';
|
|
13
|
-
import bgImageSrc from '../../../../../storybook-images/splash-page.svg';
|
|
13
|
+
import bgImageSrc from '../../../../../storybook-images/splash-page.svg';
|
|
14
14
|
|
|
15
15
|
export default {
|
|
16
16
|
title: 'Gatsby-Theme/Pages/Tracker',
|
|
@@ -68,8 +68,8 @@ export const pickRelationKeys = {
|
|
|
68
68
|
'thumbnail_filename',
|
|
69
69
|
'thumbnail_filename_object',
|
|
70
70
|
],
|
|
71
|
-
software_provider: ['logo_object', 'logo', 'games_count', 'name'],
|
|
72
|
-
payment_method: ['logo_object', 'logo', 'name', 'rating'],
|
|
71
|
+
software_provider: ['logo_object', 'logo', 'games_count', 'name', 'standardised_logo_url_object'],
|
|
72
|
+
payment_method: ['logo_object', 'logo', 'name', 'rating', 'standardised_logo_url_object'],
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
export const pickHTMLSitemapPageKeys = ['title', 'path', 'template_id'];
|
|
@@ -2,12 +2,12 @@ import * as Cookies from './cookies';
|
|
|
2
2
|
|
|
3
3
|
describe('Cookies Helper', () => {
|
|
4
4
|
test('setCookie()', () => {
|
|
5
|
-
Cookies.setCookie('name','foo',1,'/')
|
|
5
|
+
Cookies.setCookie('name', 'foo', 1, '/');
|
|
6
6
|
expect(document.cookie).toEqual('name=foo');
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
test('getCookie()', () => {
|
|
10
|
-
Cookies.setCookie('bar','foo',1,'/')
|
|
10
|
+
Cookies.setCookie('bar', 'foo', 1, '/');
|
|
11
11
|
expect(Cookies.getCookie('bar')).toEqual('foo');
|
|
12
12
|
});
|
|
13
13
|
});
|
|
@@ -3,8 +3,8 @@ import { formatDate } from './date-time';
|
|
|
3
3
|
describe('Date-Time Helper', () => {
|
|
4
4
|
test('formatDate()', () => {
|
|
5
5
|
expect(formatDate(null, 'YYYY')).toBeNull();
|
|
6
|
-
expect(formatDate('2020-04-23 11:45:10', 'DD.MM.YY','.','en-US')).toEqual('4.23.2020');
|
|
7
|
-
expect(formatDate('2020-04-23 11:45:10', 'MMM YYYY','/','en-US')).toEqual('April 2020');
|
|
8
|
-
expect(formatDate('2020-04-23 11:45:10', 'DD/MM/YYYY', '@@','en-US')).toEqual('04@@23@@2020');
|
|
6
|
+
expect(formatDate('2020-04-23 11:45:10', 'DD.MM.YY', '.', 'en-US')).toEqual('4.23.2020');
|
|
7
|
+
expect(formatDate('2020-04-23 11:45:10', 'MMM YYYY', '/', 'en-US')).toEqual('April 2020');
|
|
8
|
+
expect(formatDate('2020-04-23 11:45:10', 'DD/MM/YYYY', '@@', 'en-US')).toEqual('04@@23@@2020');
|
|
9
9
|
});
|
|
10
10
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { returnDataSet } from '~helpers/search';
|
|
2
2
|
|
|
3
3
|
export default async function loadSource(uniqueField, indexFields) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
4
|
+
return import('../data/search/data.json').then((data) => {
|
|
5
|
+
return returnDataSet(uniqueField, indexFields, data);
|
|
6
|
+
});
|
|
7
|
+
}
|
|
@@ -9,18 +9,18 @@ describe('Validation Helper', () => {
|
|
|
9
9
|
|
|
10
10
|
test('validateString()', () => {
|
|
11
11
|
expect(Validation.validateString(2)).toEqual('not_string');
|
|
12
|
-
expect(Validation.validateString(true, false,false)).toBe(false);
|
|
13
|
-
expect(Validation.validateString('', true,true)).toEqual('empty');
|
|
14
|
-
expect(Validation.validateString([], true,false)).toBe(false);
|
|
15
|
-
expect(Validation.validateString('some string', true,true)).toBe(true);
|
|
12
|
+
expect(Validation.validateString(true, false, false)).toBe(false);
|
|
13
|
+
expect(Validation.validateString('', true, true)).toEqual('empty');
|
|
14
|
+
expect(Validation.validateString([], true, false)).toBe(false);
|
|
15
|
+
expect(Validation.validateString('some string', true, true)).toBe(true);
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
test('validateEmail()', () => {
|
|
19
19
|
expect(Validation.validateEmail(2)).toEqual('not_string');
|
|
20
|
-
expect(Validation.validateEmail(true, false,false)).toBe(false);
|
|
21
|
-
expect(Validation.validateEmail('', true,true)).toEqual('empty');
|
|
22
|
-
expect(Validation.validateEmail({}, true,false)).toBe(false);
|
|
23
|
-
expect(Validation.validateEmail('mm@gig', true,true)).toEqual('not_email');
|
|
24
|
-
expect(Validation.validateEmail('mohsen@gmail.com', true,true)).toBe(true);
|
|
20
|
+
expect(Validation.validateEmail(true, false, false)).toBe(false);
|
|
21
|
+
expect(Validation.validateEmail('', true, true)).toEqual('empty');
|
|
22
|
+
expect(Validation.validateEmail({}, true, false)).toBe(false);
|
|
23
|
+
expect(Validation.validateEmail('mm@gig', true, true)).toEqual('not_email');
|
|
24
|
+
expect(Validation.validateEmail('mohsen@gmail.com', true, true)).toBe(true);
|
|
25
25
|
});
|
|
26
26
|
});
|
|
@@ -139,32 +139,56 @@ const prefilledModules = [
|
|
|
139
139
|
expected: false,
|
|
140
140
|
},
|
|
141
141
|
{
|
|
142
|
-
module: {
|
|
142
|
+
module: {
|
|
143
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
144
|
+
name: 'cards_v2',
|
|
145
|
+
sort_by: 'random',
|
|
146
|
+
},
|
|
143
147
|
siteName: 'playcasino.co.za',
|
|
144
148
|
expected: false,
|
|
145
149
|
},
|
|
146
150
|
{
|
|
147
|
-
module: {
|
|
151
|
+
module: {
|
|
152
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
153
|
+
name: 'module',
|
|
154
|
+
sort_by: 'asc',
|
|
155
|
+
},
|
|
148
156
|
siteName: 'playcasino.co.za',
|
|
149
157
|
expected: true,
|
|
150
158
|
},
|
|
151
159
|
{
|
|
152
|
-
module: {
|
|
160
|
+
module: {
|
|
161
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
162
|
+
name: 'module',
|
|
163
|
+
sort_by: 'random',
|
|
164
|
+
},
|
|
153
165
|
siteName: 'playcasino.co.za',
|
|
154
166
|
expected: true,
|
|
155
167
|
},
|
|
156
168
|
{
|
|
157
|
-
module: {
|
|
169
|
+
module: {
|
|
170
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
171
|
+
name: 'cards',
|
|
172
|
+
sort_by: 'asc',
|
|
173
|
+
},
|
|
158
174
|
siteName: 'playcasino.co.za',
|
|
159
175
|
expected: true,
|
|
160
176
|
},
|
|
161
177
|
{
|
|
162
|
-
module: {
|
|
178
|
+
module: {
|
|
179
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
180
|
+
name: 'cards',
|
|
181
|
+
sort_by: 'random',
|
|
182
|
+
},
|
|
163
183
|
siteName: 'playcasino.co.za',
|
|
164
184
|
expected: false,
|
|
165
185
|
},
|
|
166
186
|
{
|
|
167
|
-
module: {
|
|
187
|
+
module: {
|
|
188
|
+
value_type: ModuleValue.VALUE_TYPE_PREFILLED_MODULE_MARKET,
|
|
189
|
+
name: 'cards_v2',
|
|
190
|
+
sort_by: 'random',
|
|
191
|
+
},
|
|
168
192
|
siteName: 'playcasino.co.za',
|
|
169
193
|
expected: false,
|
|
170
194
|
},
|
|
@@ -34,7 +34,7 @@ export default function getPageData() {
|
|
|
34
34
|
logo_url: 'rizk-logopng7ed316ac19-original.png',
|
|
35
35
|
url: 'https://rizk.com',
|
|
36
36
|
status: 'active',
|
|
37
|
-
short_name:
|
|
37
|
+
short_name: 'rizk',
|
|
38
38
|
type: 'casino',
|
|
39
39
|
iframe: 'https://www.youtube.com/embed/DU1Pio4n_N0',
|
|
40
40
|
bonus: {
|