in src/Pagination/model.tsx [129:187]
export function buildComponentData(
page: PageType,
hrefBuilder: (n: number) => string,
onClick: (e: React.MouseEvent) => void
) {
const props = {}
let content = ''
let key = ''
switch (page.type) {
case 'PREV': {
key = 'page-prev'
content = 'Previous'
if (page.disabled) {
Object.assign(props, {as: 'span', 'aria-disabled': 'true'})
} else {
Object.assign(props, {
rel: 'prev',
href: hrefBuilder(page.num),
'aria-label': 'Previous Page',
onClick
})
}
break
}
case 'NEXT': {
key = 'page-next'
content = 'Next'
if (page.disabled) {
Object.assign(props, {as: 'span', 'aria-disabled': 'true'})
} else {
Object.assign(props, {
rel: 'next',
href: hrefBuilder(page.num),
'aria-label': 'Next Page',
onClick
})
}
break
}
case 'NUM': {
key = `page-${page.num}`
content = String(page.num)
if (page.selected) {
Object.assign(props, {as: 'em', 'aria-current': 'page'})
} else {
Object.assign(props, {href: hrefBuilder(page.num), 'aria-label': `Page ${page.num}`, onClick})
}
break
}
case 'BREAK': {
key = `page-${page.num}-break`
content = '…'
Object.assign(props, {as: 'span', 'aria-disabled': true})
}
}
return {props, key, content}
}