|
1 | 1 | import Component from "@glimmer/component"; |
2 | 2 | import { tracked } from "@glimmer/tracking"; |
3 | | -import { concat } from "@ember/helper"; |
| 3 | +import { concat, fn } from "@ember/helper"; |
| 4 | +import { on } from "@ember/modifier"; |
4 | 5 | import { action } from "@ember/object"; |
5 | 6 | import didInsert from "@ember/render-modifiers/modifiers/did-insert"; |
6 | 7 | import { service } from "@ember/service"; |
@@ -226,16 +227,30 @@ export default class FeaturedHomepageTopics extends Component { |
226 | 227 | let pageProgressArray = []; |
227 | 228 | for (let i = 0; i < this.numberOfPages; ++i) { |
228 | 229 | if (i === this.currentPageIndex) { |
229 | | - pageProgressArray.push("--current-page"); |
| 230 | + pageProgressArray.push({ pageIndex: i, markerClass: "--current-page" }); |
230 | 231 | } else if (i < this.currentPageIndex) { |
231 | | - pageProgressArray.push("--previous-page"); |
| 232 | + pageProgressArray.push({ |
| 233 | + pageIndex: i, |
| 234 | + markerClass: "--previous-page", |
| 235 | + }); |
232 | 236 | } else { |
233 | | - pageProgressArray.push(""); |
| 237 | + pageProgressArray.push({ pageIndex: i, markerClass: "" }); |
234 | 238 | } |
235 | 239 | } |
236 | 240 | return pageProgressArray; |
237 | 241 | } |
238 | 242 |
|
| 243 | + @action |
| 244 | + setPageIndex(pageIndex, event) { |
| 245 | + this.currentPageIndex = pageIndex; |
| 246 | + event?.preventDefault(); |
| 247 | + this.getBannerTopics(); |
| 248 | + } |
| 249 | + |
| 250 | + pageNumberTitle(pageIndex) { |
| 251 | + return i18n(themePrefix("page_number"), { pageNumber: pageIndex + 1 }); |
| 252 | + } |
| 253 | + |
239 | 254 | <template> |
240 | 255 | {{#if (and this.showFor this.showHere)}} |
241 | 256 | <div |
@@ -327,8 +342,21 @@ export default class FeaturedHomepageTopics extends Component { |
327 | 342 |
|
328 | 343 | {{#if this.paginationEnabled}} |
329 | 344 | <div class="page-progress-container"> |
330 | | - {{#each this.pageProgressArray as |pageProgressClass|}} |
331 | | - <div class="page-progress-marker {{pageProgressClass}}" /> |
| 345 | + {{#each this.pageProgressArray as |pageProgressItem|}} |
| 346 | + <a |
| 347 | + href |
| 348 | + class="page-progress-marker-link" |
| 349 | + title={{this.pageNumberTitle pageProgressItem.pageIndex}} |
| 350 | + {{on |
| 351 | + "click" |
| 352 | + (fn this.setPageIndex pageProgressItem.pageIndex) |
| 353 | + }} |
| 354 | + > |
| 355 | + <div |
| 356 | + class="page-progress-marker |
| 357 | + {{pageProgressItem.markerClass}}" |
| 358 | + /> |
| 359 | + </a> |
332 | 360 | {{/each}} |
333 | 361 | </div> |
334 | 362 | {{/if}} |
|
0 commit comments