word-games-theme 3.3.6 → 3.3.7

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/_data/footer/en/data.json +95 -0
  3. data/_data/header/en/data.json +559 -36
  4. data/_data/home_sections.json +453 -0
  5. data/_data/wordgames/en/root.json +16 -13
  6. data/_includes/featurePageAuthors/featurePageAuthors.html +36 -59
  7. data/_includes/home/ad-preview.html +3 -0
  8. data/_includes/home/ad-slot.html +3 -0
  9. data/_includes/home/chips.html +6 -0
  10. data/_includes/home/crosswords.html +18 -0
  11. data/_includes/home/daily-hints.html +15 -0
  12. data/_includes/home/footer.html +212 -0
  13. data/_includes/home/game-art.html +18 -0
  14. data/_includes/home/game-cards.html +22 -0
  15. data/_includes/home/header.html +82 -0
  16. data/_includes/home/icon.html +19 -0
  17. data/_includes/home/letter-lists.html +17 -0
  18. data/_includes/home/logo.html +84 -0
  19. data/_includes/home/solvers.html +9 -0
  20. data/_includes/wordgames/advanced-filter/advanced-filter.html +15 -14
  21. data/_includes/wordgames/faqs/faqs.html +2 -4
  22. data/_includes/wordgames/headings/headings.html +1 -1
  23. data/_includes/wordgames/infographics/infographics.html +2 -136
  24. data/_includes/wordgames/search-box/search-box.html +1 -1
  25. data/_includes/wordgames-v2/advanced-filter/advanced-filter.html +421 -0
  26. data/_includes/wordgames-v2/faqs/faqs.html +35 -0
  27. data/_includes/wordgames-v2/featurehighlights/featurehighlights.html +70 -0
  28. data/_includes/wordgames-v2/head/head.html +170 -0
  29. data/_includes/wordgames-v2/headings/headings.html +14 -0
  30. data/_includes/wordgames-v2/howto/howto.html +94 -0
  31. data/_includes/wordgames-v2/infographics/infographics.html +358 -0
  32. data/_includes/wordgames-v2/search-box/dict-picker.html +26 -0
  33. data/_includes/wordgames-v2/search-box/search-box.html +87 -0
  34. data/_layouts/wordgames-home-v2.html +141 -0
  35. data/assets/css/ad-preview.css +85 -0
  36. data/assets/css/home-hub.css +1879 -0
  37. data/assets/css/wordfinder-result.css +5 -5
  38. data/assets/css/wordgames-home-v2.css +2955 -0
  39. data/assets/css/wordgames-home.css +3 -4
  40. data/assets/css/wordgames-result.css +1 -1
  41. data/assets/css/wordle-solver.css +2 -2
  42. data/assets/images/close-menu.svg +1 -14
  43. data/assets/images/hamburger-menu.svg +1 -5
  44. data/assets/images/logo-hub.svg +24 -0
  45. data/assets/images/logo.svg +13 -106
  46. data/assets/images/questionmark.svg +1 -1
  47. data/assets/images/wordswithletters-logo.svg +96 -0
  48. data/assets/js/ad-preview.js +141 -0
  49. data/assets/js/home-hub.js +275 -0
  50. data/assets/js/home-ui.js +286 -0
  51. data/assets/js/scrabbleDictonary.js +8 -202
  52. data/assets/js/wordleSolver-worker.js +2 -7
  53. data/assets/js/wordleSolver.js +2 -2
  54. metadata +35 -6
  55. data/_data/.DS_Store +0 -0
  56. data/_includes/.DS_Store +0 -0
  57. data/assets/.DS_Store +0 -0
@@ -30,10 +30,6 @@
30
30
  }
31
31
 
32
32
  @media (max-width: 768px) {
33
- .infographics-title {
34
- width: auto !important;
35
- }
36
-
37
33
  .modal-arrow-btn {
38
34
  top: 30%;
39
35
  width: 40px;
@@ -123,100 +119,12 @@
123
119
  .close1:hover {
124
120
  color: #ccc;
125
121
  }
126
-
127
- #left {
128
- left: 3%;
129
- z-index: 99;
130
- }
131
-
132
- #right {
133
- right: 3%;
134
- z-index: 99;
135
- }
136
-
137
- .inforgraphics_section .wrapper i {
138
- top: 50%;
139
- height: 44px;
140
- width: 44px;
141
- color: #343f4f;
142
- cursor: pointer;
143
- font-size: 2.15rem;
144
- position: absolute;
145
- text-align: center;
146
- line-height: 44px;
147
- background: #eee;
148
- border-radius: 50%;
149
- transform: translateY(-50%);
150
- transition: transform 0.1s linear;
151
- }
152
- </style>
153
-
154
- <style>
155
- /* Common styles for carousel arrow buttons */
156
- .carousel-control {
157
- position: absolute;
158
- top: 50%;
159
- transform: translateY(-50%);
160
- width: 38px;
161
- height: 38px;
162
- border: none;
163
- border-radius: 50%;
164
- background: rgba(0, 0, 0, 0.4);
165
- backdrop-filter: blur(4px);
166
- cursor: pointer;
167
- z-index: 10;
168
- }
169
-
170
- /* Left button */
171
- .carousel-control.left {
172
- left: 10px;
173
- }
174
-
175
- /* Right button */
176
- .carousel-control.right {
177
- right: 10px;
178
- }
179
-
180
- /* Arrow icon inside button (pseudo-element) */
181
- .carousel-control.left::before {
182
- content: "\276E";
183
- color: white;
184
- font-size: 18px;
185
- position: absolute;
186
- top: 50%;
187
- left: 50%;
188
- transform: translate(-50%, -50%);
189
- }
190
-
191
- .carousel-control.right::before {
192
- content: "\276F";
193
- color: white;
194
- font-size: 18px;
195
- position: absolute;
196
- top: 50%;
197
- left: 50%;
198
- transform: translate(-50%, -50%);
199
- }
200
-
201
- /* Touch feel improve */
202
- .carousel-control:active {
203
- background: rgba(0, 0, 0, 0.6);
204
- }
205
-
206
- /* Hide on desktop */
207
- @media (min-width: 769px) {
208
-
209
- #leftBtn,
210
- #rightBtn {
211
- display: none !important;
212
- }
213
- }
214
122
  </style>
215
123
  <div class="container" id="infographicsContainer">
216
124
  <h3 class="mb-5 infographics-title" style="width:445px"><b>Other useful information</b></h3>
217
125
  <div class="inforgraphics_section">
218
126
  <div class="wrapper">
219
- <button id="leftBtn" class="carousel-control left" aria-label="Previous slide"></button>
127
+ <i id="left" class="fas fa-angle-left"></i>
220
128
  <div class="carousel">
221
129
  <div class="carousel-inner">
222
130
  {%- if dataToShow.infographics -%} {% for item in dataToShow.infographics %}
@@ -228,7 +136,7 @@
228
136
  {% endfor %} {%- endif -%}
229
137
  </div>
230
138
  </div>
231
- <button id="rightBtn" class="carousel-control right" aria-label="Next slide"></button>
139
+ <i id="right" class="fas fa-angle-right"></i>
232
140
  </div>
233
141
  </div>
234
142
  <div id="imageModal1" class="modal1" onclick="closeModal1()">
@@ -244,48 +152,6 @@
244
152
  </div>
245
153
 
246
154
  <script>
247
- const carousel = document.querySelector(".carousel-inner");
248
- const leftBtn = document.getElementById("leftBtn");
249
- const rightBtn = document.getElementById("rightBtn");
250
-
251
- // Update arrow visibility
252
- function updateArrows() {
253
- const maxScroll = carousel.scrollWidth - carousel.clientWidth;
254
-
255
- if (carousel.scrollLeft <= 0) {
256
- leftBtn.style.display = "none"; // hide left
257
- } else {
258
- leftBtn.style.display = "block"; // show left
259
- }
260
-
261
- if (carousel.scrollLeft >= maxScroll - 2) {
262
- rightBtn.style.display = "none"; // hide right
263
- } else {
264
- rightBtn.style.display = "block"; // show right
265
- }
266
- }
267
-
268
- // Move slides
269
- leftBtn.addEventListener("click", (e) => {
270
- e.stopPropagation();
271
- let slideWidth = document.querySelector(".slide").offsetWidth;
272
- carousel.scrollLeft -= slideWidth;
273
- setTimeout(updateArrows, 200);
274
- });
275
-
276
- rightBtn.addEventListener("click", (e) => {
277
- e.stopPropagation();
278
- let slideWidth = document.querySelector(".slide").offsetWidth;
279
- carousel.scrollLeft += slideWidth;
280
- setTimeout(updateArrows, 200);
281
- });
282
-
283
- // Update on scroll too
284
- carousel.addEventListener("scroll", updateArrows);
285
-
286
- // Initial update on load
287
- updateArrows();
288
-
289
155
  document.addEventListener("DOMContentLoaded", () => {
290
156
  let modal_array_of_images = [];
291
157
  let current_modal_img = 0;
@@ -107,4 +107,4 @@
107
107
  <div class="container" id="containerWd">
108
108
  {% include wordgames/words-data/words-data.html %}
109
109
  </div>
110
- {%- endif -%}
110
+ {%- endif -%}
@@ -0,0 +1,421 @@
1
+ <style>
2
+ .filter_val {
3
+ width: 150px;
4
+ padding: 10px;
5
+ border: 1px solid #ccc;
6
+ border-radius: 4px;
7
+ }
8
+
9
+ .filter-tooltip {
10
+ cursor: pointer;
11
+ margin-left: 5px;
12
+ }
13
+
14
+ .dropdown-content {
15
+ display: none;
16
+ /* position: absolute; */
17
+ background-color: #fff;
18
+ min-width: 150px;
19
+ box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
20
+ z-index: 1;
21
+ max-height: 300px;
22
+ height: auto;
23
+ overflow-y: hidden;
24
+ overflow-x: auto;
25
+ border-radius: 8px;
26
+ }
27
+
28
+ .dropdown-content a {
29
+ color: black;
30
+ padding: 12px;
31
+ text-decoration: underline;
32
+ display: block;
33
+ font-size: 16px;
34
+ font-weight: 900;
35
+ }
36
+
37
+ .dropdown-content a:hover {
38
+ background-color: #f1f1f1;
39
+ }
40
+
41
+ .show {
42
+ display: block;
43
+ }
44
+
45
+ .tooltip-container {
46
+ position: relative;
47
+ display: inline-block;
48
+ }
49
+
50
+ .startsWith {
51
+ position: relative;
52
+ display: inline-block;
53
+ }
54
+
55
+ .arrow-down {
56
+ display: none;
57
+ width: 0;
58
+ height: 0;
59
+ border-left: 10px solid transparent;
60
+ /* Increased size */
61
+ border-right: 10px solid transparent;
62
+ /* Increased size */
63
+ border-top: 10px solid #000;
64
+ /* Increased size and color */
65
+ position: absolute;
66
+ bottom: -8px;
67
+ /* Adjust vertical positioning */
68
+ left: calc(50% - 10px);
69
+ /* Center the larger arrow */
70
+ }
71
+
72
+ @media (max-width: 768px) {
73
+
74
+ .dropdown-content,
75
+ .arrow-down {
76
+ display: none !important;
77
+ }
78
+ }
79
+ </style>
80
+
81
+ <div class="advancedFilterOptions">
82
+ <button type="button" value="Advanced Filter" class="filtersOptions" aria-expanded="true" aria-controls="wg-filters" onclick="advancedFilterToggle()">
83
+ <svg class="wg-filter-ico" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"><path d="M4 7h10M18 7h2M4 17h2M10 17h10"/><circle cx="16" cy="7" r="2"/><circle cx="8" cy="17" r="2"/></svg>
84
+ <span>Advanced filters</span>
85
+ <svg class="wg-filter-chev" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
86
+ </button>
87
+ <button type="button" class="wg-reset" hidden>
88
+ <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 12a9 9 0 1 0 3-6.7L3 8"/><path d="M3 3v5h5"/></svg>
89
+ Clear all
90
+ </button>
91
+ </div>
92
+
93
+ <div class="fillterWrapper my-5 filterShow" id="wg-filters">
94
+ <div class="startsWith">
95
+ <input onclick="showDropdown('startsWithDropdown', this)"
96
+ onkeyup="filterDropdown('startsWithDropdown', this.value)" class="filter_val textBoxes" autocomplete="off"
97
+ type="text" id="startsWith" placeholder="Starts with" value="" name="prefix">
98
+ <div class="filter-tooltip" data-tip="Find words that start with these letters(AB-&gt; Able)"
99
+ id="Find words that start with these letters(AB-&gt; Able)">
100
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
101
+ </div>
102
+ <span class="wg-filter-label" aria-hidden="true">Starts with</span>
103
+ <div class="arrow-down"></div>
104
+ </div>
105
+ <div class="endsWith">
106
+ <input onclick="showDropdown('endsWithDropdown', this)" onkeyup="filterDropdown('endsWithDropdown', this.value)"
107
+ class="filter_val textBoxes" autocomplete="off" type="text" id="endsWith" placeholder="Ends with"
108
+ name="suffix">
109
+ <div class="filter-tooltip" data-toggle="tooltip" data-placement="top"
110
+ data-tip="Filter for words that ends with these letters" id="Filter for words that ends with these letters">
111
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
112
+ </div>
113
+ <span class="wg-filter-label" aria-hidden="true">Ends with</span>
114
+ <div class="arrow-down"></div>
115
+ </div>
116
+ <div class="mustInclude">
117
+ <input onclick="showDropdown('mustIncludeDropdown', this)"
118
+ onkeyup="filterDropdown('mustIncludeDropdown', this.value)" class="filter_val textBoxes" autocomplete="off"
119
+ type="text" id="mustInclude" placeholder="Contains" name="contains">
120
+ <div class="filter-tooltip" data-tip="Words that contain letters in this order(ab)"
121
+ id="Words that contain letters in this order(ab)">
122
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
123
+ </div>
124
+ <span class="wg-filter-label" aria-hidden="true">Contains</span>
125
+ <div class="arrow-down"></div>
126
+ </div>
127
+ <div class="wordLength same">
128
+ <input onclick="showDropdown('wordLengthDropdown',this)"
129
+ onkeyup="filterDropdown('wordLengthDropdown', this.value)" autocomplete="off" type="number"
130
+ class="filter_val textBoxes" id="wordLength" placeholder="Length" name="length" value="{{page.letter}}">
131
+
132
+ <div class="filter-tooltip" data-toggle="tooltip" data-placement="top"
133
+ data-tip="Filter for words with this length" id="Filter for words with this length">
134
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
135
+ </div>
136
+
137
+ <span class="wg-filter-label" aria-hidden="true">Length</span>
138
+ <div class="arrow-down"></div>
139
+ </div>
140
+ <div class="inculdeWith">
141
+ <input onclick="showDropdown('inculdeWithDropdown',this)"
142
+ onkeyup="filterDropdown('inculdeWithDropdown', this.value)" class="filter_val textBoxes" autocomplete="off"
143
+ type="text" id="inculdeWith" placeholder="Include" value="" name="include">
144
+ <div class="filter-tooltip" data-toggle="tooltip" data-placement="top"
145
+ data-tip="Only words that contain the letters you enter here"
146
+ id="Only words that contain the letters you enter here">
147
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
148
+ </div>
149
+ <span class="wg-filter-label" aria-hidden="true">Include</span>
150
+ <div class="arrow-down"></div>
151
+
152
+ </div>
153
+ <div class="exculdeWith">
154
+ <input onclick="showDropdown('exculdeWithDropdown',this)"
155
+ onkeyup="filterDropdown('exculdeWithDropdown', this.value)" class="filter_val textBoxes" autocomplete="off"
156
+ type="text" id="exculdeWith" placeholder="Exclude" value="" name="exclude">
157
+ <div class="filter-tooltip" data-toggle="tooltip" data-placement="top"
158
+ data-tip="Only words that not contain the letters you enter here"
159
+ id="Only words that not contain the letters you enter here">
160
+ <img loading="lazy" decoding="async" width="30" height="30" src="/assets/images/questionmark.svg" alt="Question Mark" />
161
+ </div>
162
+ <span class="wg-filter-label" aria-hidden="true">Exclude</span>
163
+ <div class="arrow-down"></div>
164
+
165
+ </div>
166
+
167
+
168
+ <div id="startsWithDropdown" class="dropdown-content">
169
+ <a href="#A" data-value="A">A</a>
170
+ <a href="#B" data-value="B">B</a>
171
+ <a href="#C" data-value="C">C</a>
172
+ <a href="#D" data-value="D">D</a>
173
+ <a href="#E" data-value="E">E</a>
174
+ <a href="#F" data-value="F">F</a>
175
+ <a href="#G" data-value="G">G</a>
176
+ <a href="#H" data-value="H">H</a>
177
+ <a href="#I" data-value="I">I</a>
178
+ <a href="#J" data-value="J">J</a>
179
+ <a href="#K" data-value="K">K</a>
180
+ <a href="#L" data-value="L">L</a>
181
+ <a href="#M" data-value="M">M</a>
182
+ <a href="#N" data-value="N">N</a>
183
+ <a href="#O" data-value="O">O</a>
184
+ <a href="#P" data-value="P">P</a>
185
+ <a href="#Q" data-value="Q">Q</a>
186
+ <a href="#R" data-value="R">R</a>
187
+ <a href="#S" data-value="S">S</a>
188
+ <a href="#T" data-value="T">T</a>
189
+ <a href="#U" data-value="U">U</a>
190
+ <a href="#V" data-value="V">V</a>
191
+ <a href="#W" data-value="W">W</a>
192
+ <a href="#X" data-value="X">X</a>
193
+ <a href="#Y" data-value="Y">Y</a>
194
+ <a href="#Z" data-value="Z">Z</a>
195
+ </div>
196
+ <div id="endsWithDropdown" class="dropdown-content">
197
+ <a href="#A" data-value="A">A</a>
198
+ <a href="#B" data-value="B">B</a>
199
+ <a href="#C" data-value="C">C</a>
200
+ <a href="#D" data-value="D">D</a>
201
+ <a href="#E" data-value="E">E</a>
202
+ <a href="#F" data-value="F">F</a>
203
+ <a href="#G" data-value="G">G</a>
204
+ <a href="#H" data-value="H">H</a>
205
+ <a href="#I" data-value="I">I</a>
206
+ <a href="#J" data-value="J">J</a>
207
+ <a href="#K" data-value="K">K</a>
208
+ <a href="#L" data-value="L">L</a>
209
+ <a href="#M" data-value="M">M</a>
210
+ <a href="#N" data-value="N">N</a>
211
+ <a href="#O" data-value="O">O</a>
212
+ <a href="#P" data-value="P">P</a>
213
+ <a href="#Q" data-value="Q">Q</a>
214
+ <a href="#R" data-value="R">R</a>
215
+ <a href="#S" data-value="S">S</a>
216
+ <a href="#T" data-value="T">T</a>
217
+ <a href="#U" data-value="U">U</a>
218
+ <a href="#V" data-value="V">V</a>
219
+ <a href="#W" data-value="W">W</a>
220
+ <a href="#X" data-value="X">X</a>
221
+ <a href="#Y" data-value="Y">Y</a>
222
+ <a href="#Z" data-value="Z">Z</a>
223
+ </div>
224
+ <div id="mustIncludeDropdown" class="dropdown-content">
225
+ <a href="#A" data-value="A">A</a>
226
+ <a href="#B" data-value="B">B</a>
227
+ <a href="#C" data-value="C">C</a>
228
+ <a href="#D" data-value="D">D</a>
229
+ <a href="#E" data-value="E">E</a>
230
+ <a href="#F" data-value="F">F</a>
231
+ <a href="#G" data-value="G">G</a>
232
+ <a href="#H" data-value="H">H</a>
233
+ <a href="#I" data-value="I">I</a>
234
+ <a href="#J" data-value="J">J</a>
235
+ <a href="#K" data-value="K">K</a>
236
+ <a href="#L" data-value="L">L</a>
237
+ <a href="#M" data-value="M">M</a>
238
+ <a href="#N" data-value="N">N</a>
239
+ <a href="#O" data-value="O">O</a>
240
+ <a href="#P" data-value="P">P</a>
241
+ <a href="#Q" data-value="Q">Q</a>
242
+ <a href="#R" data-value="R">R</a>
243
+ <a href="#S" data-value="S">S</a>
244
+ <a href="#T" data-value="T">T</a>
245
+ <a href="#U" data-value="U">U</a>
246
+ <a href="#V" data-value="V">V</a>
247
+ <a href="#W" data-value="W">W</a>
248
+ <a href="#X" data-value="X">X</a>
249
+ <a href="#Y" data-value="Y">Y</a>
250
+ <a href="#Z" data-value="Z">Z</a>
251
+ </div>
252
+ <div id="inculdeWithDropdown" class="dropdown-content">
253
+ <a href="#A" data-value="A">A</a>
254
+ <a href="#B" data-value="B">B</a>
255
+ <a href="#C" data-value="C">C</a>
256
+ <a href="#D" data-value="D">D</a>
257
+ <a href="#E" data-value="E">E</a>
258
+ <a href="#F" data-value="F">F</a>
259
+ <a href="#G" data-value="G">G</a>
260
+ <a href="#H" data-value="H">H</a>
261
+ <a href="#I" data-value="I">I</a>
262
+ <a href="#J" data-value="J">J</a>
263
+ <a href="#K" data-value="K">K</a>
264
+ <a href="#L" data-value="L">L</a>
265
+ <a href="#M" data-value="M">M</a>
266
+ <a href="#N" data-value="N">N</a>
267
+ <a href="#O" data-value="O">O</a>
268
+ <a href="#P" data-value="P">P</a>
269
+ <a href="#Q" data-value="Q">Q</a>
270
+ <a href="#R" data-value="R">R</a>
271
+ <a href="#S" data-value="S">S</a>
272
+ <a href="#T" data-value="T">T</a>
273
+ <a href="#U" data-value="U">U</a>
274
+ <a href="#V" data-value="V">V</a>
275
+ <a href="#W" data-value="W">W</a>
276
+ <a href="#X" data-value="X">X</a>
277
+ <a href="#Y" data-value="Y">Y</a>
278
+ <a href="#Z" data-value="Z">Z</a>
279
+ </div>
280
+ <div id="exculdeWithDropdown" class="dropdown-content">
281
+ <a href="#A" data-value="A">A</a>
282
+ <a href="#B" data-value="B">B</a>
283
+ <a href="#C" data-value="C">C</a>
284
+ <a href="#D" data-value="D">D</a>
285
+ <a href="#E" data-value="E">E</a>
286
+ <a href="#F" data-value="F">F</a>
287
+ <a href="#G" data-value="G">G</a>
288
+ <a href="#H" data-value="H">H</a>
289
+ <a href="#I" data-value="I">I</a>
290
+ <a href="#J" data-value="J">J</a>
291
+ <a href="#K" data-value="K">K</a>
292
+ <a href="#L" data-value="L">L</a>
293
+ <a href="#M" data-value="M">M</a>
294
+ <a href="#N" data-value="N">N</a>
295
+ <a href="#O" data-value="O">O</a>
296
+ <a href="#P" data-value="P">P</a>
297
+ <a href="#Q" data-value="Q">Q</a>
298
+ <a href="#R" data-value="R">R</a>
299
+ <a href="#S" data-value="S">S</a>
300
+ <a href="#T" data-value="T">T</a>
301
+ <a href="#U" data-value="U">U</a>
302
+ <a href="#V" data-value="V">V</a>
303
+ <a href="#W" data-value="W">W</a>
304
+ <a href="#X" data-value="X">X</a>
305
+ <a href="#Y" data-value="Y">Y</a>
306
+ <a href="#Z" data-value="Z">Z</a>
307
+ </div>
308
+ <div id="wordLengthDropdown" class="dropdown-content">
309
+ <a href="#2" data-value="2">2</a>
310
+ <a href="#3" data-value="3">3</a>
311
+ <a href="#4" data-value="4">4</a>
312
+ <a href="#5" data-value="5">5</a>
313
+ <a href="#6" data-value="6">6</a>
314
+ <a href="#7" data-value="7">7</a>
315
+ <a href="#8" data-value="8">8</a>
316
+ <a href="#9" data-value="9">9</a>
317
+ <a href="#10" data-value="10">10</a>
318
+ <a href="#11" data-value="11">11</a>
319
+ <a href="#12" data-value="12">12</a>
320
+ <a href="#13" data-value="13">13</a>
321
+ <a href="#14" data-value="14">14</a>
322
+ <a href="#15" data-value="15">15</a>
323
+ </div>
324
+ </div>
325
+
326
+ <script>
327
+ /* A search URL hides the filters anyway (wordfinder-home.js adds this same class); do it before first paint so the card never jumps */
328
+ if (/[?&]search=/.test(location.search)) {
329
+ document.getElementById("wg-filters").classList.add("hide")
330
+ /* reserve the results area until the word list arrives, so the content below doesn't jump */
331
+ document.documentElement.classList.add("wg-searching")
332
+ setTimeout(() => document.documentElement.classList.remove("wg-searching"), 4000)
333
+ }
334
+ </script>
335
+ <script>
336
+ let filterShow = document.querySelector(".filterShow")
337
+ const isMobile = () => window.matchMedia("(max-width: 767.98px)").matches
338
+ const filtersVisible = () => !filterShow.classList.contains("hide") &&
339
+ (isMobile() ? filterShow.classList.contains("d-flex") : !filterShow.classList.contains("wg-filters-closed"))
340
+ function syncFiltersAria() {
341
+ const btn = document.querySelector(".filtersOptions")
342
+ if (btn) btn.setAttribute("aria-expanded", String(filtersVisible()))
343
+ }
344
+ function advancedFilterToggle() {
345
+ if (filterShow.classList.contains("hide")) {
346
+ /* the word finder hides the filters after a search; this button brings them back */
347
+ filterShow.classList.remove("hide", "wg-filters-closed")
348
+ filterShow.classList.add("d-flex")
349
+ } else {
350
+ filterShow.classList.toggle("d-flex")
351
+ if (!isMobile()) filterShow.classList.toggle("wg-filters-closed")
352
+ }
353
+ syncFiltersAria()
354
+ }
355
+ new MutationObserver(syncFiltersAria).observe(filterShow, { attributes: true, attributeFilter: ["class"] })
356
+ syncFiltersAria()
357
+
358
+ function showDropdown(id, input) {
359
+ document.querySelectorAll('.dropdown-content').forEach(function (dropdown) {
360
+ dropdown.style.display = 'none';
361
+ });
362
+ document.querySelectorAll('.arrow-down').forEach(function (arrow) {
363
+ arrow.style.display = 'none';
364
+ });
365
+ let dropdown = document.getElementById(id);
366
+
367
+ let arrow = input.parentElement.querySelector('.arrow-down');
368
+
369
+ if (arrow) {
370
+ arrow.style.display = "block"
371
+ }
372
+ if (dropdown) {
373
+ dropdown.style.display = 'flex';
374
+ }
375
+ }
376
+
377
+ function filterDropdown(dropdownId, filterValue) {
378
+ const dropdown = document.getElementById(dropdownId);
379
+ dropdown.style.display = "none"
380
+ document.querySelectorAll('.arrow-down').forEach(function (arrow) {
381
+ arrow.style.display = 'none';
382
+ });
383
+ }
384
+
385
+ function handleItemClick(event) {
386
+ event.preventDefault();
387
+ const selectedValue = event.target.getAttribute('data-value');
388
+ console.log(selectedValue.toLowerCase());
389
+ const dropdownId = event.target.closest('.dropdown-content').id;
390
+ const inputId = dropdownId.replace('Dropdown', '');
391
+ document.getElementById(inputId).value = selectedValue
392
+ document.getElementById(dropdownId).classList.remove('show');
393
+ document.getElementById(dropdownId).style.display = "none"
394
+ let arrow = document.getElementById(inputId).parentElement.querySelector('.arrow-down');
395
+ arrow.style.display = "none"
396
+ logSubmit(event);
397
+ }
398
+ document.querySelectorAll('.dropdown-content a').forEach(item => {
399
+ item.addEventListener('click', handleItemClick);
400
+ });
401
+
402
+ window.onclick = function(event) {
403
+ if (!event.target.matches('.filter_val')) {
404
+ const dropdowns = document.getElementsByClassName("dropdown-content");
405
+ for (let i = 0; i < dropdowns.length; i++) {
406
+ dropdowns[i].style.display = "none";
407
+ }
408
+ const arrowDown = document.getElementsByClassName("arrow-down");
409
+ for (let i = 0; i < arrowDown.length; i++) {
410
+ arrowDown[i].style.display = "none";
411
+ }
412
+ }
413
+ }
414
+
415
+
416
+
417
+
418
+
419
+ </script>
420
+
421
+ </script>
@@ -0,0 +1,35 @@
1
+ {% assign file = page.fileName %}
2
+ {% assign lang = page.lang %}
3
+ {% assign dataToShow = site.data.[page.folderName][lang][file] %}
4
+ <div class="container my-5" id="faqsContainer">
5
+ <h2 class="feature-highlight-title mb-0">FAQ</h2>
6
+ {%- if site.ezoicAds -%}
7
+ <div class="container">
8
+ <div class="row my-xl-0">
9
+ <main class="faqs">
10
+ {% for entry in dataToShow.faqList %}
11
+ <details>
12
+ <summary>
13
+ {{entry.Question}}
14
+ </summary>
15
+ <div class="faq__content">
16
+ <p class="faq-answer mb-0">{{entry.Answer}}</p>
17
+ </div>
18
+ </details>
19
+ {% endfor %}
20
+ </main>
21
+ </div>
22
+ </div>
23
+ {%- else -%}
24
+ <div class="faqs mt-5">
25
+ {% for entry in dataToShow.faqList %}
26
+ <details class="faq-item">
27
+ <summary class="faq-question">{{entry.Question}}</summary>
28
+ <div class="faq-answer">{% assign final_answer = entry.Answer | replace: "$variable", page.value %}{% if final_answer contains "<a" %} {{ final_answer }} {% else %} {{ final_answer | auto_link }} {% endif %}</div>
29
+ </details>
30
+ {% endfor %}
31
+ </div>
32
+ {%- endif -%}
33
+ </div>
34
+
35
+