gatsby-matrix-theme 51.0.10 → 52.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/package.json +1 -1
  3. package/src/components/atoms/cards/comparison-table/index.js +3 -2
  4. package/src/components/atoms/cards/comparison-table/table/index.js +10 -1
  5. package/src/components/atoms/cards/game-cards/template-five/index.js +6 -0
  6. package/src/components/atoms/cards/game-cards/template-four/index.js +6 -0
  7. package/src/components/atoms/cards/game-cards/template-one/index.js +6 -0
  8. package/src/components/atoms/cards/game-cards/template-three/index.js +6 -0
  9. package/src/components/atoms/cards/game-cards/template-two/index.js +6 -0
  10. package/src/components/atoms/cards/operator-card/template-four/index.js +16 -1
  11. package/src/components/atoms/cards/operator-card/template-one/index.js +33 -3
  12. package/src/components/atoms/cards/operator-card/template-three/index.js +22 -2
  13. package/src/components/atoms/cards/operator-card/template-two/index.js +11 -1
  14. package/src/components/atoms/cards/operators-table/index.js +3 -1
  15. package/src/components/atoms/cards/popup-card/index.js +4 -1
  16. package/src/components/atoms/coupon/index.js +2 -0
  17. package/src/components/atoms/operator-bonuses/index.js +3 -1
  18. package/src/components/atoms/recommended-operators/index.js +18 -8
  19. package/src/components/atoms/recommended-operators/recommended-operators.module.scss +178 -154
  20. package/src/components/atoms/recommended-operators/recommended-operators.stories.js +117 -0
  21. package/src/components/molecules/operator-details/index.js +6 -0
  22. package/src/components/molecules/operator-summary/index.js +1 -1
  23. package/src/components/molecules/operator-summary/template-one/index.js +3 -0
  24. package/src/components/molecules/operator-summary/template-three/index.js +4 -2
  25. package/src/components/molecules/operator-summary/template-two/index.js +3 -0
  26. package/src/components/molecules/operator-welcome-bonus/index.js +2 -2
  27. package/src/components/molecules/sportstake/lotto-module/index.js +4 -2
  28. package/src/components/molecules/sportstake/lotto-module/winning-numbers/index.js +7 -2
  29. package/src/components/molecules/toplist/row/variant-one.js +13 -1
  30. package/src/components/molecules/wagering-calculator/index.js +3 -0
  31. package/src/components/organisms/cards/index.js +5 -5
  32. package/src/components/organisms/cards/template-one/index.js +9 -2
  33. package/src/components/organisms/cards/template-two/index.js +11 -2
  34. package/src/components/organisms/cards/template-two/item/index.js +21 -15
  35. package/src/components/organisms/popup/index.js +1 -1
  36. package/src/gatsby-core-theme/components/atoms/archive/items/index.js +4 -1
  37. package/src/gatsby-core-theme/components/molecules/main/index.js +5 -10
  38. package/src/gatsby-core-theme/components/molecules/module/index.js +2 -0
  39. package/src/gatsby-core-theme/components/organisms/toplist/index.js +1 -1
  40. package/src/gatsby-core-theme/components/organisms/toplist/list/index.js +3 -1
  41. package/storybook/public/177.189e6f3b.iframe.bundle.js +1 -0
  42. package/storybook/public/943.d49c44ac.iframe.bundle.js +1 -0
  43. package/storybook/public/iframe.html +1 -1
  44. package/storybook/public/main.ec29d044.iframe.bundle.js +1 -0
  45. package/storybook/public/project.json +1 -1
  46. package/storybook/public/{runtime~main.2082cfb4.iframe.bundle.js → runtime~main.a6223cf4.iframe.bundle.js} +1 -1
  47. package/tests/factories/modules/toplist.factory.js +1 -0
  48. package/storybook/public/177.674ec62b.iframe.bundle.js +0 -1
  49. package/storybook/public/943.8e80557c.iframe.bundle.js +0 -1
  50. package/storybook/public/main.92e44e64.iframe.bundle.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ # [52.0.0](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v51.0.10...v52.0.0) (2024-09-11)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * new tracking params ([3cff282](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/3cff28271a23673d73f4cafa4bacf19c24141e04))
7
+ * operator welcome bonus ([ceb0435](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/ceb04358b1de51131be3ed00de06a2adf99ab89b))
8
+ * remove console and small fix ([1eee1cd](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/1eee1cd2d8bda53eadcc45675133c43898a5e61a))
9
+ * remove lazy for not found page ([549bb98](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/549bb987f298b0599015712d4792e702fab1e620))
10
+ * small atrributes add ([1298077](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/1298077ba619140ed50c205db799bcf1c4a83fd7))
11
+
12
+
13
+ ### Code Refactoring
14
+
15
+ * changes to coupon ([33b4f98](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/33b4f989a1e160b9aaf6c8a1a4a6d3fa14404b77))
16
+ * coupon ([53d615e](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/53d615e0273b3ea23839cdd1e3dfc5289298b2f2))
17
+ * remove console.log ([1ca0796](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/1ca0796d7232f1fdaccfade510d19d5b8f21f368))
18
+
19
+
20
+ * Merge branch 'tm-4739-coupon-code' into 'master' ([3750ca5](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/3750ca52ac3d8a26343cd92528bc71f2a20e9fcb))
21
+ * Merge branch 'master' into tm-4739-coupon-code ([741b685](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/741b68564fcdc5d3a28ebf111f506eec5fc1906e))
22
+ * Merge branch 'tm-4730-new-tracking-api' into 'master' ([5e31bbc](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/5e31bbc9846139be62151f2bd4463c486a7d2cc8))
23
+ * Merge branch 'tm-4738-update-404' into 'master' ([f890c9a](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/commit/f890c9afcb0da07f0e841abaedcc52a874f8d7e6))
24
+
1
25
  ## [51.0.10](https://git.ilcd.rocks/team-floyd/themes/matrix-theme/compare/v51.0.9...v51.0.10) (2024-09-10)
2
26
 
3
27
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gatsby-matrix-theme",
3
- "version": "51.0.10",
3
+ "version": "52.0.0",
4
4
  "main": "index.js",
5
5
  "description": "Matrix Theme NPM Package",
6
6
  "author": "",
@@ -6,14 +6,14 @@ import ScrollX from 'gatsby-core-theme/src/hooks/scroll-x';
6
6
  import styles from './comparison-table.module.scss';
7
7
  import Table from './table';
8
8
 
9
- export default function ComparisonTable({ module, page }) {
9
+ export default function ComparisonTable({ module, page, modulePosition }) {
10
10
  const ele = useRef('');
11
11
 
12
12
  return (
13
13
  <div className={styles?.comparisonTable || ''}>
14
14
  <ScrollX refTag={ele} scroll>
15
15
  <div ref={ele} className={styles?.contentTable || ''}>
16
- <Table type={page?.relation_type} items={module?.items} tempate={page?.template} />
16
+ <Table type={page?.relation_type} items={module?.items} tempate={page?.template} modulePosition={modulePosition} />
17
17
  </div>
18
18
  </ScrollX>
19
19
  </div>
@@ -29,4 +29,5 @@ ComparisonTable.propTypes = {
29
29
  type: PropTypes.string,
30
30
  template: PropTypes.string,
31
31
  }),
32
+ modulePosition: PropTypes.number,
32
33
  };
@@ -73,6 +73,7 @@ export default function ComparisonTable({
73
73
  licenseWidth = '72',
74
74
  licenseHeight = '32',
75
75
  showRoundedRating = false,
76
+ modulePosition,
76
77
  }) {
77
78
  const cell = (heading, item, key, index) => {
78
79
  const rowData = tabelInfo.find((m) => m.key === heading);
@@ -125,6 +126,8 @@ export default function ComparisonTable({
125
126
  // new key
126
127
  gtmClass="comparison-table-gtm btn-cta"
127
128
  pageTemplate={tempate}
129
+ modulePosition={modulePosition}
130
+ itemPosition={index + 1}
128
131
  />
129
132
  )}
130
133
  </div>
@@ -154,7 +157,13 @@ export default function ComparisonTable({
154
157
  return (
155
158
  // eslint-disable-next-line jsx-a11y/control-has-associated-label
156
159
  <td key={key} className={styles.bonus}>
157
- <Bonus module="comparison_table" tracker="main" item={item?.relation} />
160
+ <Bonus
161
+ module="comparison_table"
162
+ tracker="main"
163
+ item={item?.relation}
164
+ itemPosition={index + 1}
165
+ modulePosition={modulePosition}
166
+ />
158
167
  </td>
159
168
  );
160
169
  case 'top_features':
@@ -28,6 +28,8 @@ const TemplateFive = ({
28
28
  storybookImage,
29
29
  storybookLogo,
30
30
  showRoundedRating = false,
31
+ modulePosition,
32
+ itemPosition,
31
33
  }) => {
32
34
  const { relation, path, banner } = item;
33
35
  const { name } = relation || {};
@@ -124,6 +126,8 @@ const TemplateFive = ({
124
126
  }}
125
127
  gtmClass="operator-card-gtm btn-cta"
126
128
  pageTemplate={page?.template}
129
+ modulePosition={modulePosition}
130
+ itemPosition={itemPosition}
127
131
  />
128
132
  ) : null}
129
133
  </>
@@ -184,6 +188,8 @@ TemplateFive.propTypes = {
184
188
  storybookImage: PropTypes.string,
185
189
  storybookLogo: PropTypes.string,
186
190
  showRoundedRating: PropTypes.bool,
191
+ modulePosition: PropTypes.number,
192
+ itemPosition: PropTypes.number,
187
193
  };
188
194
 
189
195
  export default TemplateFive;
@@ -27,6 +27,8 @@ const TemplateFour = ({
27
27
  useThumbnail = true,
28
28
  storybookImage,
29
29
  showRoundedRating = false,
30
+ modulePosition,
31
+ itemPosition
30
32
  }) => {
31
33
  const { relation, path, banner } = item;
32
34
  const { name } = relation || {};
@@ -109,6 +111,8 @@ const TemplateFour = ({
109
111
  }}
110
112
  gtmClass="operator-card-gtm btn-cta"
111
113
  pageTemplate={page?.template}
114
+ modulePosition={modulePosition}
115
+ itemPosition={itemPosition}
112
116
  />
113
117
  ) : null}
114
118
  </>
@@ -163,6 +167,8 @@ TemplateFour.propTypes = {
163
167
  affilateLink: PropTypes.bool,
164
168
  storybookImage: PropTypes.string,
165
169
  showRoundedRating: PropTypes.bool,
170
+ modulePosition: PropTypes.number,
171
+ itemPosition: PropTypes.number,
166
172
  };
167
173
 
168
174
  export default TemplateFour;
@@ -25,6 +25,8 @@ const TemplateOne = ({
25
25
  useThumbnail = true,
26
26
  storybookImage,
27
27
  showRoundedRating = false,
28
+ modulePosition,
29
+ itemPosition
28
30
  }) => {
29
31
  const { relation, path, banner } = item;
30
32
  const { name } = relation || {};
@@ -109,6 +111,8 @@ const TemplateOne = ({
109
111
  }}
110
112
  gtmClass="operator-card-gtm btn-cta"
111
113
  pageTemplate={page?.template}
114
+ modulePosition={modulePosition}
115
+ itemPosition={itemPosition}
112
116
  />
113
117
  ) : null}
114
118
  </>
@@ -165,6 +169,8 @@ TemplateOne.propTypes = {
165
169
  affilateLink: PropTypes.bool,
166
170
  storybookImage: PropTypes.string,
167
171
  showRoundedRating: PropTypes.bool,
172
+ modulePosition: PropTypes.number,
173
+ itemPosition: PropTypes.number,
168
174
  };
169
175
 
170
176
  export default TemplateOne;
@@ -27,6 +27,8 @@ const TemplateThree = ({
27
27
  useThumbnail = true,
28
28
  storybookImage,
29
29
  showRoundedRating = false,
30
+ modulePosition,
31
+ itemPosition
30
32
  }) => {
31
33
  const { relation, path, banner } = item;
32
34
  const { name } = relation || {};
@@ -111,6 +113,8 @@ const TemplateThree = ({
111
113
  }}
112
114
  gtmClass="operator-card-gtm btn-cta"
113
115
  pageTemplate={page?.template}
116
+ modulePosition={modulePosition}
117
+ itemPosition={itemPosition}
114
118
  />
115
119
  ) : null}
116
120
  </>
@@ -169,6 +173,8 @@ TemplateThree.propTypes = {
169
173
  affilateLink: PropTypes.bool,
170
174
  storybookImage: PropTypes.string,
171
175
  showRoundedRating: PropTypes.bool,
176
+ modulePosition: PropTypes.number,
177
+ itemPosition: PropTypes.number,
172
178
  };
173
179
 
174
180
  export default TemplateThree;
@@ -27,6 +27,8 @@ const TemplateTwo = ({
27
27
  useThumbnail = true,
28
28
  storybookImage,
29
29
  showRoundedRating = false,
30
+ modulePosition,
31
+ itemPosition
30
32
  }) => {
31
33
  const { relation, path, banner } = item;
32
34
  const { name } = relation || {};
@@ -113,6 +115,8 @@ const TemplateTwo = ({
113
115
  }}
114
116
  gtmClass="operator-card-gtm btn-cta"
115
117
  pageTemplate={page?.template}
118
+ modulePosition={modulePosition}
119
+ itemPosition={itemPosition}
116
120
  />
117
121
  ) : null}
118
122
  </>
@@ -171,6 +175,8 @@ TemplateTwo.propTypes = {
171
175
  affilateLink: PropTypes.bool,
172
176
  storybookImage: PropTypes.string,
173
177
  showRoundedRating: PropTypes.bool,
178
+ modulePosition: PropTypes.number,
179
+ itemPosition: PropTypes.number,
174
180
  };
175
181
 
176
182
  export default TemplateTwo;
@@ -24,6 +24,8 @@ const TemplateFour = ({
24
24
  width = '88',
25
25
  height = '88',
26
26
  BonusTemplate = BonusTemplateDefault,
27
+ modulePosition,
28
+ itemPosition,
27
29
  }) => {
28
30
  const { ribbons } = item?.relation;
29
31
  const { relation, path } = item;
@@ -53,6 +55,8 @@ const TemplateFour = ({
53
55
  showRatingLabel={showRatingLabel}
54
56
  showRatingDecimal={showRatingDecimal}
55
57
  module="cards"
58
+ modulePosition={modulePosition}
59
+ itemPosition={itemPosition}
56
60
  />
57
61
  <div className={styles?.cardContent || ''}>
58
62
  <Rating item={relation} type="operatorCards" />
@@ -63,10 +67,19 @@ const TemplateFour = ({
63
67
  item={relation}
64
68
  ctaBtn
65
69
  tracker="main"
70
+ modulePosition={modulePosition}
71
+ itemPosition={itemPosition}
66
72
  />
67
73
  ) : (
68
74
  !isInactive && (
69
- <BonusTemplate welcomeBonus={false} item={relation} ctaBtn tracker="main" />
75
+ <BonusTemplate
76
+ welcomeBonus={false}
77
+ item={relation}
78
+ ctaBtn
79
+ tracker="main"
80
+ modulePosition={modulePosition}
81
+ itemPosition={itemPosition}
82
+ />
70
83
  )
71
84
  )}
72
85
  <div className={styles?.feedback || ''}>
@@ -130,6 +143,8 @@ TemplateFour.propTypes = {
130
143
  BonusTemplate: PropTypes.string,
131
144
  width: PropTypes.string,
132
145
  height: PropTypes.string,
146
+ modulePosition: PropTypes.number,
147
+ itemPosition: PropTypes.number,
133
148
  };
134
149
 
135
150
  export default TemplateFour;
@@ -37,6 +37,8 @@ const TemplateOne = ({
37
37
  paymentLogoWidth = '54',
38
38
  paymentLogoHeight = '36',
39
39
  BonusTemplate = Bonus,
40
+ modulePosition,
41
+ itemPosition,
40
42
  }) => {
41
43
  const ribbons = item?.relation?.ribbons || [];
42
44
  const { relation, path } = item;
@@ -67,6 +69,8 @@ const TemplateOne = ({
67
69
  showRatingLabel={showRatingLabel}
68
70
  showRatingDecimal={showRatingDecimal}
69
71
  module="cards"
72
+ modulePosition={modulePosition}
73
+ itemPosition={itemPosition}
70
74
  />
71
75
 
72
76
  <div className={styles?.cardContent || ''}>
@@ -81,13 +85,35 @@ const TemplateOne = ({
81
85
  <SellingPoints sellingPoints={sellingPoints} limit={3} icon={sellingPointsIcon} />
82
86
  )}
83
87
  {showBonusForAll ? (
84
- <BonusTemplate module="cards" item={relation} tracker="main" />
88
+ <BonusTemplate
89
+ module="cards"
90
+ item={relation}
91
+ tracker="main"
92
+ modulePosition={modulePosition}
93
+ itemPosition={itemPosition}
94
+ />
85
95
  ) : (
86
- !isInactive && <BonusTemplate item={relation} tracker="main" />
96
+ !isInactive && (
97
+ <BonusTemplate
98
+ module="cards"
99
+ item={relation}
100
+ tracker="main"
101
+ modulePosition={modulePosition}
102
+ itemPosition={itemPosition}
103
+ />
104
+ )
87
105
  )}
88
106
  </div>
89
107
  <div className={styles?.cardFooter || ''}>
90
- {hasVariableComponent && <VariableComponent item={item} page={page} featured={false} />}
108
+ {hasVariableComponent && (
109
+ <VariableComponent
110
+ item={item}
111
+ page={page}
112
+ featured={false}
113
+ modulePosition={modulePosition}
114
+ itemPosition={itemPosition}
115
+ />
116
+ )}
91
117
  {relation?.status !== 'not_recommended' && showOperatorCta && (
92
118
  <OperatorCta
93
119
  tracker="main"
@@ -110,6 +136,8 @@ const TemplateOne = ({
110
136
  gtmClass="operator-card-gtm btn-cta"
111
137
  pageTemplate={page?.template}
112
138
  icon={<FaArrowRight title="Right-pointing Arrow Icon" />}
139
+ modulePosition={modulePosition}
140
+ itemPosition={itemPosition}
113
141
  />
114
142
  )}
115
143
  {showPaymentMethods && !!paymentMethods?.length && (
@@ -198,6 +226,8 @@ TemplateOne.propTypes = {
198
226
  operatorLogoHeight: PropTypes.string,
199
227
  paymentLogoWidth: PropTypes.string,
200
228
  paymentLogoHeight: PropTypes.string,
229
+ modulePosition: PropTypes.number,
230
+ itemPosition: PropTypes.number,
201
231
  };
202
232
 
203
233
  export default TemplateOne;
@@ -28,6 +28,8 @@ const TemplateThree = ({
28
28
  operatorLogoWidth = '88',
29
29
  operatorLogoHeight = '88',
30
30
  BonusTemplate = BonusTemplateDefault,
31
+ modulePosition,
32
+ itemPosition,
31
33
  }) => {
32
34
  const { ribbons } = item?.relation;
33
35
  const { relation, path } = item;
@@ -57,13 +59,29 @@ const TemplateThree = ({
57
59
  showRatingLabel={showRatingLabel}
58
60
  showRatingDecimal={showRatingDecimal}
59
61
  module="cards"
62
+ modulePosition={modulePosition}
63
+ itemPosition={itemPosition}
60
64
  />
61
65
  <div className={styles?.cardContent || ''}>
62
66
  <div className={styles?.cardContentContainer || ''}>
63
67
  {showBonusForAll ? (
64
- <BonusTemplate module="cards" item={relation} tracker="main" />
68
+ <BonusTemplate
69
+ module="cards"
70
+ item={relation}
71
+ tracker="main"
72
+ modulePosition={modulePosition}
73
+ itemPosition={itemPosition}
74
+ />
65
75
  ) : (
66
- !isInactive && <BonusTemplate module="cards" item={relation} tracker="main" />
76
+ !isInactive && (
77
+ <BonusTemplate
78
+ module="cards"
79
+ item={relation}
80
+ tracker="main"
81
+ modulePosition={modulePosition}
82
+ itemPosition={itemPosition}
83
+ />
84
+ )
67
85
  )}
68
86
  <div className={styles?.cardFooter || ''}>
69
87
  {relation?.status !== 'not_recommended' && showOperatorCta && (
@@ -153,6 +171,8 @@ TemplateThree.propTypes = {
153
171
  showOperatorCta: PropTypes.bool,
154
172
  operatorLogoWidth: PropTypes.string,
155
173
  operatorLogoHeight: PropTypes.string,
174
+ modulePosition: PropTypes.number,
175
+ itemPosition: PropTypes.number,
156
176
  };
157
177
 
158
178
  export default TemplateThree;
@@ -31,6 +31,8 @@ const TemplateTwo = ({
31
31
  width = '54',
32
32
  height = '36',
33
33
  BonusTemplate = BonusTemplateDefault,
34
+ modulePosition,
35
+ itemPosition,
34
36
  }) => {
35
37
  const ribbons = item?.relation?.ribbons || [];
36
38
  const { relation, path } = item;
@@ -62,6 +64,8 @@ const TemplateTwo = ({
62
64
  showRatingLabel={showRatingLabel}
63
65
  showRatingDecimal={showRatingDecimal}
64
66
  module="cards"
67
+ modulePosition={modulePosition}
68
+ itemPosition={itemPosition}
65
69
  />
66
70
 
67
71
  <div className={styles?.cardContent || ''}>
@@ -72,6 +76,8 @@ const TemplateTwo = ({
72
76
  ctaBtn
73
77
  item={relation}
74
78
  tracker="main"
79
+ modulePosition={modulePosition}
80
+ itemPosition={itemPosition}
75
81
  />
76
82
  ) : (
77
83
  !isInactive && (
@@ -81,6 +87,8 @@ const TemplateTwo = ({
81
87
  ctaBtn
82
88
  item={relation}
83
89
  tracker="main"
90
+ modulePosition={modulePosition}
91
+ itemPosition={itemPosition}
84
92
  />
85
93
  )
86
94
  )}
@@ -126,7 +134,7 @@ const TemplateTwo = ({
126
134
  <Tnc operator={item?.relation} isFixed />
127
135
 
128
136
  {hasVariableComponent && (
129
- <VariableComponent item={item} page={page} featured={false} template="templateTwo" />
137
+ <VariableComponent item={item} page={page} featured={false} template="templateTwo" />
130
138
  )}
131
139
  </div>
132
140
  );
@@ -177,6 +185,8 @@ TemplateTwo.propTypes = {
177
185
  height: PropTypes.string,
178
186
  operatorLogoWidth: PropTypes.string,
179
187
  operatorLogoHeight: PropTypes.string,
188
+ modulePosition: PropTypes.number,
189
+ itemPosition: PropTypes.number,
180
190
  };
181
191
 
182
192
  export default TemplateTwo;
@@ -9,7 +9,7 @@ import PrettyLink from '~atoms/pretty-link';
9
9
 
10
10
  import styles from './table.module.scss';
11
11
 
12
- const CasinosTable = ({ module, page }) => {
12
+ const CasinosTable = ({ module, page, modulePosition }) => {
13
13
  const { items } = module || {};
14
14
 
15
15
  const oneLiner = ({ one_liner }) => {
@@ -62,6 +62,7 @@ const CasinosTable = ({ module, page }) => {
62
62
  tracker="main"
63
63
  clickedElement="operator_table_cta"
64
64
  className="table-operator-card-gtm btn-cta"
65
+ modulePosition={modulePosition}
65
66
  >
66
67
  {`${useTranslate('visit_table', 'Visit')} ${item?.relation?.name}`}
67
68
  </PrettyLink>
@@ -83,4 +84,5 @@ CasinosTable.propTypes = {
83
84
  page: PropTypes.shape({
84
85
  template: PropTypes.string,
85
86
  }),
87
+ modulePosition: PropTypes.number,
86
88
  };
@@ -23,6 +23,7 @@ const PopupCard = ({
23
23
  tncFixed = true,
24
24
  width = '98',
25
25
  height = '98',
26
+ itemPosition
26
27
  }) => {
27
28
  const operatorName = item.name;
28
29
  const oneLiner = item?.one_liners?.main?.one_liner;
@@ -42,7 +43,7 @@ const PopupCard = ({
42
43
  )}
43
44
  {showName && <p className={styles?.name || ''}>{operatorName}</p>}
44
45
  </div>
45
- <Bonus module="popup" item={item} tracker={tracker} />
46
+ <Bonus module="popup" item={item} tracker={tracker} itemPosition={itemPosition} />
46
47
  <div className={styles?.buttonContainer || ''}>
47
48
  <OperatorCta
48
49
  tracker={tracker}
@@ -59,6 +60,7 @@ const PopupCard = ({
59
60
  }}
60
61
  gtmClass="popup-operator-cta-gtm"
61
62
  pageTemplate={template}
63
+ itemPosition={itemPosition}
62
64
  />
63
65
  {showReviewLink && (
64
66
  <ReviewLink
@@ -112,6 +114,7 @@ PopupCard.propTypes = {
112
114
  showRoundedRating: PropTypes.bool,
113
115
  width: PropTypes.string,
114
116
  height: PropTypes.string,
117
+ itemPosition: PropTypes.number,
115
118
  };
116
119
 
117
120
  export default PopupCard;
@@ -16,6 +16,8 @@ const Coupon = ({
16
16
  checkIcon = <CheckCircleIcon />,
17
17
  showIcon = true,
18
18
  }) => {
19
+ if (!code) return;
20
+
19
21
  const [copySuccess, setCopySuccess] = useState('');
20
22
 
21
23
  const copyToClipBoard = async (copyMe) => {
@@ -10,7 +10,7 @@ import styles from './operator-bonuses.module.scss';
10
10
 
11
11
  import { getBonus } from '~helpers/getters';
12
12
 
13
- const OperatorBonuses = ({ operator }) => {
13
+ const OperatorBonuses = ({ operator , modulePosition}) => {
14
14
  const onliner = getBonus('main', operator);
15
15
  const status = operator?.status;
16
16
  const isPlaceholder = status === 'coming_soon';
@@ -71,6 +71,8 @@ const OperatorBonuses = ({ operator }) => {
71
71
  }}
72
72
  operator={operator}
73
73
  tracker="main"
74
+ module="welcome_bonus"
75
+ modulePosition={modulePosition}
74
76
  />
75
77
  )}
76
78
  </div>
@@ -20,23 +20,26 @@ const RecommendedOperators = ({
20
20
  tncFixed = false,
21
21
  operatorLogoWidth,
22
22
  operatorLogoHeight,
23
+ modulePosition
23
24
  }) => (
24
25
  <div className={styles.reccommendedCasinos}>
25
26
  <h3>{title}</h3>
26
- {operators.slice(0, 3).map((operator) => {
27
+ {operators.slice(0, 3).map((operator, index) => {
27
28
  const couponCode = getExtraField(operator.extra_fields, 'coupon_code');
28
29
 
29
30
  return (
30
- <div>
31
+ <div className={styles.row || ''}>
31
32
  <OperatorDetails
32
33
  showRating={showRating}
33
34
  item={operator}
34
35
  showAuthor={showAuthor}
35
36
  showReviewLink={false}
36
- costumeStyle={styles.operatorDetails}
37
+ costumeStyle={styles.operatorDetails || ''}
37
38
  module="wagering_calculator"
38
39
  imageWidth={operatorLogoWidth}
39
40
  imageHeight={operatorLogoHeight}
41
+ modulePosition={modulePosition}
42
+ itemPosition={index + 1}
40
43
  />
41
44
  <div className={styles.operatorBonus}>
42
45
  <PrettyLink
@@ -45,29 +48,35 @@ const RecommendedOperators = ({
45
48
  module="wagering_calculator"
46
49
  tracker="main"
47
50
  clickedElement="oneliner"
51
+ modulePosition={modulePosition}
52
+ itemPosition={index + 1}
48
53
  >
49
54
  <Bonus item={operator} tracker="main" />
50
55
  </PrettyLink>
51
56
 
52
57
  <TermsConditions operator={operator} isFixed={tncFixed} />
53
58
  </div>
54
- {showCouponCode && (
59
+ {(showCouponCode && couponCode) && (
55
60
  <div className={styles.couponCtaContainer}>
56
- {showCouponCode && <Coupon code={couponCode} />}
61
+ <Coupon code={couponCode} />
57
62
  <OperatorCta
58
63
  operator={operator}
59
64
  tracker="main"
60
65
  buttonType={buttonType}
61
66
  module="wagering_calculator"
67
+ modulePosition={modulePosition}
68
+ itemPosition={index + 1}
62
69
  />
63
70
  </div>
64
71
  )}
65
- {!showCouponCode && (
72
+ {(!showCouponCode || !couponCode) && (
66
73
  <OperatorCta
67
74
  operator={operator}
68
75
  tracker="main"
69
76
  buttonType={buttonType}
70
77
  module="wagering_calculator"
78
+ modulePosition={modulePosition}
79
+ itemPosition={index + 1}
71
80
  />
72
81
  )}
73
82
  </div>
@@ -90,6 +99,7 @@ RecommendedOperators.propTypes = {
90
99
  name: PropTypes.string,
91
100
  }),
92
101
  ]),
93
- operatorLogoWidth: PropTypes.string,
94
- operatorLogoHeight: PropTypes.string,
102
+ operatorLogoWidth: PropTypes.number,
103
+ operatorLogoHeight: PropTypes.number,
104
+ modulePosition: PropTypes.number,
95
105
  };