feat(tags): this adds support for post, link, book, show and movie tags with a tag list view and per tag pages

This commit is contained in:
Cory Dransfeldt 2025-04-16 18:59:47 -07:00
parent 3d866262ca
commit 6fdc0b56b9
No known key found for this signature in database
35 changed files with 500 additions and 70 deletions

View file

@ -8,7 +8,7 @@ class SelectPagination extends HTMLElement {
}
get baseIndex() {
return this.getAttribute('data-base-index') || 0
return parseInt(this.getAttribute('data-base-index') || '0', 10)
}
connectedCallback() {
@ -17,10 +17,11 @@ class SelectPagination extends HTMLElement {
this.attachShadow({ mode: 'open' }).appendChild(document.createElement('slot'))
const uriSegments = window.location.pathname.split('/').filter(Boolean)
let pageNumber = this.extractPageNumber(uriSegments) || 0
let pageNumber = this.extractPageNumber(uriSegments)
if (pageNumber === null) pageNumber = this.baseIndex
this.control = this.querySelector('select')
this.control.value = pageNumber
this.control.value = pageNumber.toString()
this.control.addEventListener('change', (event) => {
pageNumber = parseInt(event.target.value)
const updatedUrlSegments = this.updateUrlSegments(uriSegments, pageNumber)
@ -34,13 +35,16 @@ class SelectPagination extends HTMLElement {
}
updateUrlSegments(segments, pageNumber) {
if (!isNaN(segments[segments.length - 1])) {
const lastIsPage = !isNaN(segments[segments.length - 1])
if (lastIsPage) {
segments[segments.length - 1] = pageNumber.toString()
} else {
segments.push(pageNumber.toString())
}
if (pageNumber === parseInt(this.baseIndex)) segments.pop()
if (pageNumber === this.baseIndex) segments.pop()
return segments
}
}