{"version":3,"file":"/Users/anthonygubler/development/dojo-org/widgets/src/grid/PaginatedFooter.tsx","sourceRoot":"","sources":["PaginatedFooter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { WidgetBase } from '@dojo/framework/core/WidgetBase';\nimport I18nMixin from '@dojo/framework/core/mixins/I18n';\nimport { ThemedMixin, theme } from '@dojo/framework/core/mixins/Themed';\nimport { v } from '@dojo/framework/core/vdom';\n\nimport bundle from './nls/Grid';\nimport * as fixedCss from './styles/paginated-footer.m.css';\nimport * as css from '../theme/default/grid-paginated-footer.m.css';\n\nexport interface PaginatedFooterProperties {\n\ttotal?: number;\n\tpage: number;\n\tpageSize: number;\n\tonPageChange: (page: number) => void;\n}\n\n@theme(css)\nexport default class PaginatedFooter extends I18nMixin(ThemedMixin(WidgetBase))<\n\tPaginatedFooterProperties\n> {\n\tprivate _renderPageControl(page: number) {\n\t\tconst { onPageChange, page: currentPage } = this.properties;\n\t\tconst { format } = this.localizeBundle(bundle);\n\t\tconst active = page === currentPage;\n\n\t\treturn v(\n\t\t\t'button',\n\t\t\t{\n\t\t\t\tkey: active ? 'current' : `${page}`,\n\t\t\t\tdisabled: active,\n\t\t\t\tonclick: () => {\n\t\t\t\t\tonPageChange(page);\n\t\t\t\t},\n\t\t\t\t'aria-current': active ? 'page' : undefined,\n\t\t\t\t'aria-label': active\n\t\t\t\t\t? format('currentPage', { page })\n\t\t\t\t\t: format('goToPage', { page }),\n\t\t\t\tclasses: [this.theme(css.pageNumber), active && this.theme(css.active)]\n\t\t\t},\n\t\t\t[`${page}`]\n\t\t);\n\t}\n\n\tprivate _renderPaginationControls(totalPages: number) {\n\t\tconst { page } = this.properties;\n\t\tif (page < 4) {\n\t\t\treturn [\n\t\t\t\tthis._renderPageControl(1),\n\t\t\t\ttotalPages > 1 && this._renderPageControl(2),\n\t\t\t\ttotalPages > 2 && this._renderPageControl(3),\n\t\t\t\ttotalPages > 3 && this._renderPageControl(4),\n\t\t\t\ttotalPages > 4 && this._renderPageControl(5),\n\t\t\t\ttotalPages > 5 &&\n\t\t\t\t\tv(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'more',\n\t\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\t\tclasses: [this.theme(css.more), fixedCss.moreFixed]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t['...']\n\t\t\t\t\t),\n\t\t\t\ttotalPages > 5 && this._renderPageControl(totalPages)\n\t\t\t];\n\t\t} else if (page > totalPages - 3) {\n\t\t\treturn [\n\t\t\t\tthis._renderPageControl(1),\n\t\t\t\tv(\n\t\t\t\t\t'span',\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: 'less',\n\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\tclasses: [this.theme(css.more), fixedCss.moreFixed]\n\t\t\t\t\t},\n\t\t\t\t\t['...']\n\t\t\t\t),\n\t\t\t\tthis._renderPageControl(totalPages - 4),\n\t\t\t\tthis._renderPageControl(totalPages - 3),\n\t\t\t\tthis._renderPageControl(totalPages - 2),\n\t\t\t\tthis._renderPageControl(totalPages - 1),\n\t\t\t\tthis._renderPageControl(totalPages)\n\t\t\t];\n\t\t} else {\n\t\t\treturn [\n\t\t\t\tthis._renderPageControl(1),\n\t\t\t\tv(\n\t\t\t\t\t'span',\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: 'less',\n\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\tclasses: [this.theme(css.more), fixedCss.moreFixed]\n\t\t\t\t\t},\n\t\t\t\t\t['...']\n\t\t\t\t),\n\t\t\t\tthis._renderPageControl(page - 1),\n\t\t\t\tthis._renderPageControl(page),\n\t\t\t\tthis._renderPageControl(page + 1),\n\t\t\t\tv(\n\t\t\t\t\t'span',\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: 'more',\n\t\t\t\t\t\t'aria-hidden': 'true',\n\t\t\t\t\t\tclasses: [this.theme(css.more), fixedCss.moreFixed]\n\t\t\t\t\t},\n\t\t\t\t\t['...']\n\t\t\t\t),\n\t\t\t\tthis._renderPageControl(totalPages)\n\t\t\t];\n\t\t}\n\t}\n\n\tprotected render() {\n\t\tconst { onPageChange, page, total, pageSize } = this.properties;\n\t\tconst { format, messages } = this.localizeBundle(bundle);\n\t\tif (total === undefined) {\n\t\t\treturn v('div', { classes: [this.theme(css.root), fixedCss.rootFixed] });\n\t\t}\n\t\tconst totalPages = Math.ceil(total / pageSize);\n\t\tconst from = page === 1 ? '1' : `${(page - 1) * pageSize + 1}`;\n\t\tconst to = page === 1 ? pageSize : page * pageSize;\n\n\t\tconst controls = total ? this._renderPaginationControls(totalPages) : [];\n\t\treturn v('div', { classes: [this.theme(css.root), fixedCss.rootFixed] }, [\n\t\t\tv(\n\t\t\t\t'div',\n\t\t\t\t{\n\t\t\t\t\tclasses: [\n\t\t\t\t\t\tfixedCss.containerFixed,\n\t\t\t\t\t\tthis.theme(css.details),\n\t\t\t\t\t\tfixedCss.detailsFixed\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\ttotal\n\t\t\t\t\t\t? format('resultRange', {\n\t\t\t\t\t\t\t\tfrom,\n\t\t\t\t\t\t\t\tto: total < to ? total : to,\n\t\t\t\t\t\t\t\ttotal\n\t\t\t\t\t\t  })\n\t\t\t\t\t\t: messages.noResults\n\t\t\t\t]\n\t\t\t),\n\t\t\tv(\n\t\t\t\t'nav',\n\t\t\t\t{\n\t\t\t\t\trole: 'navigation',\n\t\t\t\t\t'aria-label': messages.pagination,\n\t\t\t\t\tclasses: [this.theme(css.pagination)]\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\tv(\n\t\t\t\t\t\t'ul',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tclasses: [\n\t\t\t\t\t\t\t\tfixedCss.containerFixed,\n\t\t\t\t\t\t\t\tthis.theme(css.paginationList),\n\t\t\t\t\t\t\t\tfixedCss.paginationListFixed\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tv('li', { classes: [fixedCss.itemFixed, this.theme(css.item)] }, [\n\t\t\t\t\t\t\t\ttotalPages > 1 &&\n\t\t\t\t\t\t\t\t\tv(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tkey: 'previous',\n\t\t\t\t\t\t\t\t\t\t\tdisabled: page === 1,\n\t\t\t\t\t\t\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPageChange(page - 1);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': format('goToPage', { page: page - 1 }),\n\t\t\t\t\t\t\t\t\t\t\tclasses: [\n\t\t\t\t\t\t\t\t\t\t\t\tthis.theme(css.pageNav),\n\t\t\t\t\t\t\t\t\t\t\t\tfixedCss.pageNavFixed\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t['<']\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t...controls,\n\t\t\t\t\t\t\t\ttotalPages > 1 &&\n\t\t\t\t\t\t\t\t\tv(\n\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tkey: 'next',\n\t\t\t\t\t\t\t\t\t\t\tdisabled: page === totalPages,\n\t\t\t\t\t\t\t\t\t\t\tonclick: () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonPageChange(page + 1);\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': format('goToPage', { page: page + 1 }),\n\t\t\t\t\t\t\t\t\t\t\tclasses: [\n\t\t\t\t\t\t\t\t\t\t\t\tthis.theme(css.pageNav),\n\t\t\t\t\t\t\t\t\t\t\t\tfixedCss.pageNavFixed\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t['>']\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t]\n\t\t\t\t\t)\n\t\t\t\t]\n\t\t\t)\n\t\t]);\n\t}\n}\n"]}