diff --git a/CHANGELOG.md b/CHANGELOG.md index e6b774c..0ddce3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ - Removed support for depecrated `extraAriaContext` (please use `ariaLabelBuilder` instead) +## >= 8.2.0 + +- Add an ARIA label for pagination break link with default props of `Jump forward` and `Jump backward` when index is before and after the break, respectively +- Add an optional prop to PaginationBoxView `breakAriaLabels` allowing the above labels to be user defined. + ## >= 8.1.5 - Fix the type of `renderOnZeroPageCount` in the type declaration file (https://github.com/AdeleD/react-paginate/pull/454). diff --git a/__tests__/PaginationBoxView-test.js b/__tests__/PaginationBoxView-test.js index db36f61..16003a7 100755 --- a/__tests__/PaginationBoxView-test.js +++ b/__tests__/PaginationBoxView-test.js @@ -752,6 +752,90 @@ describe('Test pagination behaviour', () => { ); consoleWarnMock.mockRestore(); }); + + it('should provide default forward aria-label for the break if breakAriaLabels is not provided and index is before the break', async () => { + render( + + ); + const pagination = await screen.findByRole('navigation'); + expect(pagination).toBeDefined(); + + // Aria label should be 'Jump forward' if selected page is before the break + const breakLinkAria = ReactDOM.findDOMNode(pagination) + .querySelector('.break a') + .getAttribute('aria-label'); + expect(breakLinkAria).toBe('Jump forward'); + }); + + it('should provide default backward aria-label for the break if breakAriaLabels is not provided and index is after the break', async () => { + render( + + ); + const pagination = await screen.findByRole('navigation'); + expect(pagination).toBeDefined(); + + // Aria label should be 'Jump backward' if selected page is after the break + const breakLinkAria = ReactDOM.findDOMNode(pagination) + .querySelector('.break a') + .getAttribute('aria-label'); + expect(breakLinkAria).toBe('Jump backward'); + }); + + it('should provide given forward aria-label for the break if breakAriaLabels is provided and index is before the break', async () => { + render( + + ); + const pagination = await screen.findByRole('navigation'); + expect(pagination).toBeDefined(); + + // Aria label should be 'Skip forward' if selected page is before the break + const breakLinkAria = ReactDOM.findDOMNode(pagination) + .querySelector('.break a') + .getAttribute('aria-label'); + expect(breakLinkAria).toBe('Skip forward'); + }); + + it('should provide given backward aria-label for the break if breakAriaLabels is provided and index is after the break', async () => { + render( + + ); + const pagination = await screen.findByRole('navigation'); + expect(pagination).toBeDefined(); + + // Aria label should be 'Skip backward' if selected page is after the break + const breakLinkAria = ReactDOM.findDOMNode(pagination) + .querySelector('.break a') + .getAttribute('aria-label'); + expect(breakLinkAria).toBe('Skip backward'); + }); }); describe('Test default props', () => { diff --git a/dist/react-paginate.js b/dist/react-paginate.js index 95b5d54..d96db5e 100644 --- a/dist/react-paginate.js +++ b/dist/react-paginate.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactPaginate=t(require("react")):e.ReactPaginate=t(e.React)}(this,(e=>(()=>{var t={703:(e,t,a)=>{"use strict";var r=a(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,t,a,n,i,o){if(o!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:n};return a.PropTypes=a,a}},697:(e,t,a)=>{e.exports=a(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},98:t=>{"use strict";t.exports=e}},a={};function r(e){var n=a[e];if(void 0!==n)return n.exports;var i=a[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{default:()=>k});var e=r(98),t=r.n(e),a=r(697),i=r.n(a);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"";return null!=e?e:t}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t-1:void 0,{isPrevious:!0})})),C(m(a),"handleNextPage",(function(e){var t=a.state.selected,r=a.props.pageCount;a.handleClick(e,null,t3&&void 0!==arguments[3]?arguments[3]:{},i=n.isPrevious,o=void 0!==i&&i,s=n.isNext,l=void 0!==s&&s,c=n.isBreak,p=void 0!==c&&c,u=n.isActive,g=void 0!==u&&u;e.preventDefault?e.preventDefault():e.returnValue=!1;var d=a.state.selected,f=a.props.onClick,v=r;if(f){var b=f({index:t,selected:d,nextSelectedPage:r,event:e,isPrevious:o,isNext:l,isBreak:p,isActive:g});if(!1===b)return;Number.isInteger(b)&&(v=b)}void 0!==v&&a.handlePageChange(v)})),C(m(a),"handleBreakClick",(function(e,t){var r=a.state.selected;a.handleClick(t,e,ri-n/2?d=n-(f=i-p):pi-o||v>=p-d&&v<=p+(0===p&&n>1?f-1:f)?m.push({type:"page",index:v,display:h(v)}):s&&m.length>0&&m[m.length-1].display!==b&&(n>0||o>0)&&(b=t().createElement(u,{key:v,breakLabel:s,breakClassName:l,breakLinkClassName:c,breakHandler:a.handleBreakClick.bind(null,v),getEventListener:a.getEventListener}),m.push({type:"break",index:v,display:b}))}m.forEach((function(t,a){var r=t;"break"===t.type&&m[a-1]&&"page"===m[a-1].type&&m[a+1]&&"page"===m[a+1].type&&m[a+1].index-m[a-1].index<=2&&(r={type:"page",index:t.index,display:h(t.index)}),e.push(r.display)}))}return e})),void 0!==e.initialPage&&void 0!==e.forcePage&&console.warn("(react-paginate): Both initialPage (".concat(e.initialPage,") and forcePage (").concat(e.forcePage,") props are provided, which is discouraged.")+" Use exclusively forcePage prop for a controlled component.\nSee https://reactjs.org/docs/forms.html#controlled-components"),r=e.initialPage?e.initialPage:e.forcePage?e.forcePage:0,a.state={selected:r},a}return a=s,(r=[{key:"componentDidMount",value:function(){var e=this.props,t=e.initialPage,a=e.disableInitialCallback,r=e.extraAriaContext,n=e.pageCount,i=e.forcePage;void 0===t||a||this.callCallback(t),r&&console.warn("DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead."),Number.isInteger(n)||console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(n,"). Did you forget a Math.ceil()?")),void 0!==t&&t>n-1&&console.warn("(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (".concat(t," > ").concat(n-1,").")),void 0!==i&&i>n-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(i," > ").concat(n-1,")."))}},{key:"componentDidUpdate",value:function(e){void 0!==this.props.forcePage&&this.props.forcePage!==e.forcePage&&(this.props.forcePage>this.props.pageCount-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(this.props.forcePage," > ").concat(this.props.pageCount-1,").")),this.setState({selected:this.props.forcePage})),Number.isInteger(e.pageCount)&&!Number.isInteger(this.props.pageCount)&&console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(this.props.pageCount,"). Did you forget a Math.ceil()?"))}},{key:"getForwardJump",value:function(){var e=this.state.selected,t=this.props,a=t.pageCount,r=e+t.pageRangeDisplayed;return r>=a?a-1:r}},{key:"getBackwardJump",value:function(){var e=this.state.selected-this.props.pageRangeDisplayed;return e<0?0:e}},{key:"getElementHref",value:function(e){var t=this.props,a=t.hrefBuilder,r=t.pageCount,n=t.hrefAllControls;if(a)return n||e>=0&&e=0&&e(()=>{var a={703:(e,a,t)=>{"use strict";var r=t(414);function n(){}function i(){}i.resetWarningCache=n,e.exports=function(){function e(e,a,t,n,i,s){if(s!==r){var o=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw o.name="Invariant Violation",o}}function a(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:a,element:e,elementType:e,instanceOf:a,node:e,objectOf:a,oneOf:a,oneOfType:a,shape:a,exact:a,checkPropTypes:i,resetWarningCache:n};return t.PropTypes=t,t}},697:(e,a,t)=>{e.exports=t(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},98:a=>{"use strict";a.exports=e}},t={};function r(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return a[e](i,i.exports,r),i.exports}r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a}),a},r.d=(e,a)=>{for(var t in a)r.o(a,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{"use strict";r.r(n),r.d(n,{default:()=>k});var e=r(98),a=r.n(e),t=r(697),i=r.n(t);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var a=1;a1&&void 0!==arguments[1]?arguments[1]:"";return null!=e?e:a}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(){return f=Object.assign?Object.assign.bind():function(e){for(var a=1;a0?a-1:void 0,{isPrevious:!0})})),C(m(t),"handleNextPage",(function(e){var a=t.state.selected,r=t.props.pageCount;t.handleClick(e,null,a3&&void 0!==arguments[3]?arguments[3]:{},i=n.isPrevious,s=void 0!==i&&i,o=n.isNext,l=void 0!==o&&o,c=n.isBreak,p=void 0!==c&&c,u=n.isActive,g=void 0!==u&&u;e.preventDefault?e.preventDefault():e.returnValue=!1;var d=t.state.selected,f=t.props.onClick,b=r;if(f){var v=f({index:a,selected:d,nextSelectedPage:r,event:e,isPrevious:s,isNext:l,isBreak:p,isActive:g});if(!1===v)return;Number.isInteger(v)&&(b=v)}void 0!==b&&t.handlePageChange(b)})),C(m(t),"handleBreakClick",(function(e,a){var r=t.state.selected;t.handleClick(a,e,ri-n/2?f=n-(b=i-g):gi-s)y.push({type:"page",index:v,display:m(v)});else if(v>=g-f&&v<=g+(0===g&&n>1?b-1:b))y.push({type:"page",index:v,display:m(v)});else if(o&&y.length>0&&y[y.length-1].display!==h&&(n>0||s>0)){var P=vn-1&&console.warn("(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (".concat(a," > ").concat(n-1,").")),void 0!==i&&i>n-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(i," > ").concat(n-1,")."))}},{key:"componentDidUpdate",value:function(e){void 0!==this.props.forcePage&&this.props.forcePage!==e.forcePage&&(this.props.forcePage>this.props.pageCount-1&&console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(this.props.forcePage," > ").concat(this.props.pageCount-1,").")),this.setState({selected:this.props.forcePage})),Number.isInteger(e.pageCount)&&!Number.isInteger(this.props.pageCount)&&console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(this.props.pageCount,"). Did you forget a Math.ceil()?"))}},{key:"getForwardJump",value:function(){var e=this.state.selected,a=this.props,t=a.pageCount,r=e+a.pageRangeDisplayed;return r>=t?t-1:r}},{key:"getBackwardJump",value:function(){var e=this.state.selected-this.props.pageRangeDisplayed;return e<0?0:e}},{key:"getElementHref",value:function(e){var a=this.props,t=a.hrefBuilder,r=a.pageCount,n=a.hrefAllControls;if(t)return n||e>=0&&e=0&&e {\nreturn ","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__98__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst PageView = (props) => {\n let { pageClassName, pageLinkClassName } = props;\n const {\n page,\n selected,\n activeClassName,\n activeLinkClassName,\n getEventListener,\n pageSelectedHandler,\n href,\n extraAriaContext,\n pageLabelBuilder,\n rel,\n } = props;\n\n let ariaLabel =\n props.ariaLabel ||\n 'Page ' + page + (extraAriaContext ? ' ' + extraAriaContext : '');\n let ariaCurrent = null;\n\n if (selected) {\n ariaCurrent = 'page';\n\n ariaLabel = props.ariaLabel || 'Page ' + page + ' is your current page';\n\n if (typeof pageClassName !== 'undefined') {\n pageClassName = pageClassName + ' ' + activeClassName;\n } else {\n pageClassName = activeClassName;\n }\n\n if (typeof pageLinkClassName !== 'undefined') {\n if (typeof activeLinkClassName !== 'undefined') {\n pageLinkClassName = pageLinkClassName + ' ' + activeLinkClassName;\n }\n } else {\n pageLinkClassName = activeLinkClassName;\n }\n }\n\n return (\n
  • \n \n {pageLabelBuilder(page)}\n \n
  • \n );\n};\n\nPageView.propTypes = {\n pageSelectedHandler: PropTypes.func.isRequired,\n selected: PropTypes.bool.isRequired,\n pageClassName: PropTypes.string,\n pageLinkClassName: PropTypes.string,\n activeClassName: PropTypes.string,\n activeLinkClassName: PropTypes.string,\n extraAriaContext: PropTypes.string,\n href: PropTypes.string,\n ariaLabel: PropTypes.string,\n page: PropTypes.number.isRequired,\n getEventListener: PropTypes.func.isRequired,\n pageLabelBuilder: PropTypes.func.isRequired,\n rel: PropTypes.string,\n};\n\nexport default PageView;\n","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst BreakView = (props) => {\n const {\n breakLabel,\n breakClassName,\n breakLinkClassName,\n breakHandler,\n getEventListener,\n } = props;\n const className = breakClassName || 'break';\n\n return (\n
  • \n \n {breakLabel}\n \n
  • \n );\n};\n\nBreakView.propTypes = {\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n breakClassName: PropTypes.string,\n breakLinkClassName: PropTypes.string,\n breakHandler: PropTypes.func.isRequired,\n getEventListener: PropTypes.func.isRequired,\n};\n\nexport default BreakView;\n","export function classNameIfDefined(className, orClassName = '') {\n return className !== undefined && className !== null\n ? className\n : orClassName;\n}\n","'use strict';\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport PageView from './PageView';\nimport BreakView from './BreakView';\nimport { classNameIfDefined } from './utils';\n\nexport default class PaginationBoxView extends Component {\n static propTypes = {\n pageCount: PropTypes.number.isRequired,\n pageRangeDisplayed: PropTypes.number,\n marginPagesDisplayed: PropTypes.number,\n previousLabel: PropTypes.node,\n previousAriaLabel: PropTypes.string,\n prevPageRel: PropTypes.string,\n prevRel: PropTypes.string,\n nextLabel: PropTypes.node,\n nextAriaLabel: PropTypes.string,\n nextPageRel: PropTypes.string,\n nextRel: PropTypes.string,\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n hrefBuilder: PropTypes.func,\n hrefAllControls: PropTypes.bool,\n onPageChange: PropTypes.func,\n onPageActive: PropTypes.func,\n onClick: PropTypes.func,\n initialPage: PropTypes.number,\n forcePage: PropTypes.number,\n disableInitialCallback: PropTypes.bool,\n containerClassName: PropTypes.string,\n className: PropTypes.string,\n pageClassName: PropTypes.string,\n pageLinkClassName: PropTypes.string,\n pageLabelBuilder: PropTypes.func,\n activeClassName: PropTypes.string,\n activeLinkClassName: PropTypes.string,\n previousClassName: PropTypes.string,\n nextClassName: PropTypes.string,\n previousLinkClassName: PropTypes.string,\n nextLinkClassName: PropTypes.string,\n disabledClassName: PropTypes.string,\n disabledLinkClassName: PropTypes.string,\n breakClassName: PropTypes.string,\n breakLinkClassName: PropTypes.string,\n extraAriaContext: PropTypes.string,\n ariaLabelBuilder: PropTypes.func,\n eventListener: PropTypes.string,\n renderOnZeroPageCount: PropTypes.func,\n selectedPageRel: PropTypes.string,\n };\n\n static defaultProps = {\n pageRangeDisplayed: 2,\n marginPagesDisplayed: 3,\n activeClassName: 'selected',\n previousLabel: 'Previous',\n previousClassName: 'previous',\n previousAriaLabel: 'Previous page',\n prevPageRel: 'prev',\n prevRel: 'prev',\n nextLabel: 'Next',\n nextClassName: 'next',\n nextAriaLabel: 'Next page',\n nextPageRel: 'next',\n nextRel: 'next',\n breakLabel: '...',\n disabledClassName: 'disabled',\n disableInitialCallback: false,\n pageLabelBuilder: (page) => page,\n eventListener: 'onClick',\n renderOnZeroPageCount: undefined,\n selectedPageRel: 'canonical',\n hrefAllControls: false,\n };\n\n constructor(props) {\n super(props);\n\n if (props.initialPage !== undefined && props.forcePage !== undefined) {\n console.warn(\n `(react-paginate): Both initialPage (${props.initialPage}) and forcePage (${props.forcePage}) props are provided, which is discouraged.` +\n ' Use exclusively forcePage prop for a controlled component.\\nSee https://reactjs.org/docs/forms.html#controlled-components'\n );\n }\n\n let initialSelected;\n if (props.initialPage) {\n initialSelected = props.initialPage;\n } else if (props.forcePage) {\n initialSelected = props.forcePage;\n } else {\n initialSelected = 0;\n }\n\n this.state = {\n selected: initialSelected,\n };\n }\n\n componentDidMount() {\n const {\n initialPage,\n disableInitialCallback,\n extraAriaContext,\n pageCount,\n forcePage,\n } = this.props;\n // Call the callback with the initialPage item:\n if (typeof initialPage !== 'undefined' && !disableInitialCallback) {\n this.callCallback(initialPage);\n }\n\n if (extraAriaContext) {\n console.warn(\n 'DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead.'\n );\n }\n\n if (!Number.isInteger(pageCount)) {\n console.warn(\n `(react-paginate): The pageCount prop value provided is not an integer (${pageCount}). Did you forget a Math.ceil()?`\n );\n }\n\n if (initialPage !== undefined && initialPage > pageCount - 1) {\n console.warn(\n `(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (${initialPage} > ${\n pageCount - 1\n }).`\n );\n }\n\n if (forcePage !== undefined && forcePage > pageCount - 1) {\n console.warn(\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${forcePage} > ${\n pageCount - 1\n }).`\n );\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.forcePage !== undefined &&\n this.props.forcePage !== prevProps.forcePage\n ) {\n if (this.props.forcePage > this.props.pageCount - 1) {\n console.warn(\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${\n this.props.forcePage\n } > ${this.props.pageCount - 1}).`\n );\n }\n\n this.setState({ selected: this.props.forcePage });\n }\n\n if (\n Number.isInteger(prevProps.pageCount) &&\n !Number.isInteger(this.props.pageCount)\n ) {\n console.warn(\n `(react-paginate): The pageCount prop value provided is not an integer (${this.props.pageCount}). Did you forget a Math.ceil()?`\n );\n }\n }\n\n handlePreviousPage = (event) => {\n const { selected } = this.state;\n\n this.handleClick(event, null, selected > 0 ? selected - 1 : undefined, {\n isPrevious: true,\n });\n };\n\n handleNextPage = (event) => {\n const { selected } = this.state;\n const { pageCount } = this.props;\n\n this.handleClick(\n event,\n null,\n selected < pageCount - 1 ? selected + 1 : undefined,\n { isNext: true }\n );\n };\n\n handlePageSelected = (selected, event) => {\n if (this.state.selected === selected) {\n this.callActiveCallback(selected);\n this.handleClick(event, null, undefined, { isActive: true });\n return;\n }\n\n this.handleClick(event, null, selected);\n };\n\n handlePageChange = (selected) => {\n if (this.state.selected === selected) {\n return;\n }\n this.setState({ selected });\n\n // Call the callback with the new selected item:\n this.callCallback(selected);\n };\n\n getEventListener = (handlerFunction) => {\n const { eventListener } = this.props;\n return {\n [eventListener]: handlerFunction,\n };\n };\n\n getForwardJump() {\n const { selected } = this.state;\n const { pageCount, pageRangeDisplayed } = this.props;\n\n const forwardJump = selected + pageRangeDisplayed;\n return forwardJump >= pageCount ? pageCount - 1 : forwardJump;\n }\n\n getBackwardJump() {\n const { selected } = this.state;\n const { pageRangeDisplayed } = this.props;\n\n const backwardJump = selected - pageRangeDisplayed;\n return backwardJump < 0 ? 0 : backwardJump;\n }\n\n handleClick = (\n event,\n index,\n nextSelectedPage,\n {\n isPrevious = false,\n isNext = false,\n isBreak = false,\n isActive = false,\n } = {}\n ) => {\n event.preventDefault ? event.preventDefault() : (event.returnValue = false);\n const { selected } = this.state;\n const { onClick } = this.props;\n\n let newPage = nextSelectedPage;\n\n if (onClick) {\n const onClickReturn = onClick({\n index,\n selected,\n nextSelectedPage,\n event,\n isPrevious,\n isNext,\n isBreak,\n isActive,\n });\n if (onClickReturn === false) {\n // We abord standard behavior and let parent handle\n // all behavior.\n return;\n }\n if (Number.isInteger(onClickReturn)) {\n // We assume parent want to go to the returned page.\n newPage = onClickReturn;\n }\n }\n\n if (newPage !== undefined) {\n this.handlePageChange(newPage);\n }\n };\n\n handleBreakClick = (index, event) => {\n const { selected } = this.state;\n\n this.handleClick(\n event,\n index,\n selected < index ? this.getForwardJump() : this.getBackwardJump(),\n { isBreak: true }\n );\n };\n\n getElementHref(pageIndex) {\n const { hrefBuilder, pageCount, hrefAllControls } = this.props;\n if (!hrefBuilder) return;\n if (hrefAllControls || (pageIndex >= 0 && pageIndex < pageCount)) {\n return hrefBuilder(pageIndex + 1, pageCount, this.state.selected);\n }\n }\n\n ariaLabelBuilder(pageIndex) {\n const selected = pageIndex === this.state.selected;\n if (\n this.props.ariaLabelBuilder &&\n pageIndex >= 0 &&\n pageIndex < this.props.pageCount\n ) {\n let label = this.props.ariaLabelBuilder(pageIndex + 1, selected);\n // DEPRECATED: The extraAriaContext prop was used to add additional context\n // to the aria-label. Users should now use the ariaLabelBuilder instead.\n if (this.props.extraAriaContext && !selected) {\n label = label + ' ' + this.props.extraAriaContext;\n }\n return label;\n }\n }\n\n callCallback = (selectedItem) => {\n if (\n this.props.onPageChange !== undefined &&\n typeof this.props.onPageChange === 'function'\n ) {\n this.props.onPageChange({ selected: selectedItem });\n }\n };\n\n callActiveCallback = (selectedItem) => {\n if (\n this.props.onPageActive !== undefined &&\n typeof this.props.onPageActive === 'function'\n ) {\n this.props.onPageActive({ selected: selectedItem });\n }\n };\n\n getElementPageRel = (index) => {\n const { selected } = this.state;\n const { nextPageRel, prevPageRel, selectedPageRel } = this.props;\n\n if (selected - 1 === index) {\n return prevPageRel;\n } else if (selected === index) {\n return selectedPageRel;\n } else if (selected + 1 === index) {\n return nextPageRel;\n }\n return undefined;\n };\n\n getPageElement(index) {\n const { selected } = this.state;\n const {\n pageClassName,\n pageLinkClassName,\n activeClassName,\n activeLinkClassName,\n extraAriaContext,\n pageLabelBuilder,\n } = this.props;\n\n return (\n \n );\n }\n\n pagination = () => {\n const items = [];\n const {\n pageRangeDisplayed,\n pageCount,\n marginPagesDisplayed,\n breakLabel,\n breakClassName,\n breakLinkClassName,\n } = this.props;\n\n const { selected } = this.state;\n\n if (pageCount <= pageRangeDisplayed) {\n for (let index = 0; index < pageCount; index++) {\n items.push(this.getPageElement(index));\n }\n } else {\n let leftSide = pageRangeDisplayed / 2;\n let rightSide = pageRangeDisplayed - leftSide;\n\n // If the selected page index is on the default right side of the pagination,\n // we consider that the new right side is made up of it (= only one break element).\n // If the selected page index is on the default left side of the pagination,\n // we consider that the new left side is made up of it (= only one break element).\n if (selected > pageCount - pageRangeDisplayed / 2) {\n rightSide = pageCount - selected;\n leftSide = pageRangeDisplayed - rightSide;\n } else if (selected < pageRangeDisplayed / 2) {\n leftSide = selected;\n rightSide = pageRangeDisplayed - leftSide;\n }\n\n let createPageView = (index) => this.getPageElement(index);\n let index;\n let breakView;\n\n // First pass: process the pages or breaks to display (or not).\n const pagesBreaking = [];\n for (index = 0; index < pageCount; index++) {\n const page = index + 1;\n\n // If the page index is lower than the margin defined,\n // the page has to be displayed on the left side of\n // the pagination.\n if (page <= marginPagesDisplayed) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If the page index is greater than the page count\n // minus the margin defined, the page has to be\n // displayed on the right side of the pagination.\n if (page > pageCount - marginPagesDisplayed) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If it is the first element of the array the rightSide need to be adjusted,\n // otherwise an extra element will be rendered\n const adjustedRightSide =\n selected === 0 && pageRangeDisplayed > 1 ? rightSide - 1 : rightSide;\n\n // If the page index is near the selected page index\n // and inside the defined range (pageRangeDisplayed)\n // we have to display it (it will create the center\n // part of the pagination).\n if (\n index >= selected - leftSide &&\n index <= selected + adjustedRightSide\n ) {\n pagesBreaking.push({\n type: 'page',\n index,\n display: createPageView(index),\n });\n continue;\n }\n\n // If the page index doesn't meet any of the conditions above,\n // we check if the last item of the current \"items\" array\n // is a break element. If not, we add a break element, else,\n // we do nothing (because we don't want to display the page).\n if (\n breakLabel &&\n pagesBreaking.length > 0 &&\n pagesBreaking[pagesBreaking.length - 1].display !== breakView &&\n // We do not show break if only one active page is displayed.\n (pageRangeDisplayed > 0 || marginPagesDisplayed > 0)\n ) {\n breakView = (\n \n );\n pagesBreaking.push({ type: 'break', index, display: breakView });\n }\n }\n // Second pass: we remove breaks containing one page to the actual page.\n pagesBreaking.forEach((pageElement, i) => {\n let actualPageElement = pageElement;\n // 1 2 3 4 5 6 7 ... 9 10\n // |\n // 1 2 ... 4 5 6 7 8 9 10\n // |\n // The break should be replaced by the page.\n if (\n pageElement.type === 'break' &&\n pagesBreaking[i - 1] &&\n pagesBreaking[i - 1].type === 'page' &&\n pagesBreaking[i + 1] &&\n pagesBreaking[i + 1].type === 'page' &&\n pagesBreaking[i + 1].index - pagesBreaking[i - 1].index <= 2\n ) {\n actualPageElement = {\n type: 'page',\n index: pageElement.index,\n display: createPageView(pageElement.index),\n };\n }\n // We add the displayed elements in the same pass, to avoid another iteration.\n items.push(actualPageElement.display);\n });\n }\n\n return items;\n };\n\n render() {\n const { renderOnZeroPageCount } = this.props;\n if (this.props.pageCount === 0 && renderOnZeroPageCount !== undefined) {\n return renderOnZeroPageCount\n ? renderOnZeroPageCount(this.props)\n : renderOnZeroPageCount;\n }\n const {\n disabledClassName,\n disabledLinkClassName,\n pageCount,\n className,\n containerClassName,\n previousLabel,\n previousClassName,\n previousLinkClassName,\n previousAriaLabel,\n prevRel,\n nextLabel,\n nextClassName,\n nextLinkClassName,\n nextAriaLabel,\n nextRel,\n } = this.props;\n\n const { selected } = this.state;\n\n const isPreviousDisabled = selected === 0;\n const isNextDisabled = selected === pageCount - 1;\n\n const previousClasses = `${classNameIfDefined(previousClassName)}${\n isPreviousDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\n }`;\n const nextClasses = `${classNameIfDefined(nextClassName)}${\n isNextDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\n }`;\n\n const previousLinkClasses = `${classNameIfDefined(previousLinkClassName)}${\n isPreviousDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\n }`;\n const nextLinkClasses = `${classNameIfDefined(nextLinkClassName)}${\n isNextDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\n }`;\n\n const previousAriaDisabled = isPreviousDisabled ? 'true' : 'false';\n const nextAriaDisabled = isNextDisabled ? 'true' : 'false';\n\n return (\n \n
  • \n \n {previousLabel}\n \n
  • \n\n {this.pagination()}\n\n
  • \n \n {nextLabel}\n \n
  • \n \n );\n }\n}\n","import PaginationBoxView from './PaginationBoxView';\n\nexport default PaginationBoxView;\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__98__","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","PageView","pageClassName","pageLinkClassName","page","selected","activeClassName","activeLinkClassName","getEventListener","pageSelectedHandler","href","extraAriaContext","pageLabelBuilder","rel","ariaLabel","ariaCurrent","className","role","tabIndex","onKeyPress","propTypes","BreakView","breakLabel","breakClassName","breakLinkClassName","breakHandler","classNameIfDefined","orClassName","PaginationBoxView","initialSelected","event","state","handleClick","isPrevious","pageCount","isNext","callActiveCallback","isActive","setState","callCallback","handlerFunction","eventListener","index","nextSelectedPage","isBreak","preventDefault","returnValue","onClick","newPage","onClickReturn","Number","isInteger","handlePageChange","getForwardJump","getBackwardJump","selectedItem","onPageChange","onPageActive","nextPageRel","prevPageRel","selectedPageRel","items","pageRangeDisplayed","marginPagesDisplayed","push","getPageElement","leftSide","rightSide","breakView","createPageView","pagesBreaking","type","display","length","handleBreakClick","bind","forEach","pageElement","i","actualPageElement","initialPage","forcePage","console","warn","disableInitialCallback","prevProps","forwardJump","backwardJump","pageIndex","hrefBuilder","hrefAllControls","ariaLabelBuilder","label","handlePageSelected","getElementPageRel","getElementHref","renderOnZeroPageCount","disabledClassName","disabledLinkClassName","containerClassName","previousLabel","previousClassName","previousLinkClassName","previousAriaLabel","prevRel","nextLabel","nextClassName","nextLinkClassName","nextAriaLabel","nextRel","isPreviousDisabled","isNextDisabled","previousClasses","nextClasses","previousLinkClasses","nextLinkClasses","previousAriaDisabled","nextAriaDisabled","handlePreviousPage","pagination","handleNextPage","Component"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"react-paginate.js","mappings":"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","sources":["webpack://ReactPaginate/webpack/universalModuleDefinition","webpack://ReactPaginate/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactPaginate/./node_modules/prop-types/index.js","webpack://ReactPaginate/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactPaginate/external umd {\"root\":\"React\",\"amd\":\"react\",\"commonjs\":\"react\",\"commonjs2\":\"react\"}","webpack://ReactPaginate/webpack/bootstrap","webpack://ReactPaginate/webpack/runtime/compat get default export","webpack://ReactPaginate/webpack/runtime/define property getters","webpack://ReactPaginate/webpack/runtime/hasOwnProperty shorthand","webpack://ReactPaginate/webpack/runtime/make namespace object","webpack://ReactPaginate/./react_components/PageView.js","webpack://ReactPaginate/./react_components/BreakView.js","webpack://ReactPaginate/./react_components/utils.js","webpack://ReactPaginate/./react_components/PaginationBoxView.js","webpack://ReactPaginate/./react_components/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactPaginate\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReactPaginate\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE__98__) => {\nreturn ","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__98__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst PageView = (props) => {\r\n let { pageClassName, pageLinkClassName } = props;\r\n const {\r\n page,\r\n selected,\r\n activeClassName,\r\n activeLinkClassName,\r\n getEventListener,\r\n pageSelectedHandler,\r\n href,\r\n extraAriaContext,\r\n pageLabelBuilder,\r\n rel,\r\n } = props;\r\n\r\n let ariaLabel =\r\n props.ariaLabel ||\r\n 'Page ' + page + (extraAriaContext ? ' ' + extraAriaContext : '');\r\n let ariaCurrent = null;\r\n\r\n if (selected) {\r\n ariaCurrent = 'page';\r\n\r\n ariaLabel = props.ariaLabel || 'Page ' + page + ' is your current page';\r\n\r\n if (typeof pageClassName !== 'undefined') {\r\n pageClassName = pageClassName + ' ' + activeClassName;\r\n } else {\r\n pageClassName = activeClassName;\r\n }\r\n\r\n if (typeof pageLinkClassName !== 'undefined') {\r\n if (typeof activeLinkClassName !== 'undefined') {\r\n pageLinkClassName = pageLinkClassName + ' ' + activeLinkClassName;\r\n }\r\n } else {\r\n pageLinkClassName = activeLinkClassName;\r\n }\r\n }\r\n\r\n return (\r\n
  • \r\n \r\n {pageLabelBuilder(page)}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nPageView.propTypes = {\r\n pageSelectedHandler: PropTypes.func.isRequired,\r\n selected: PropTypes.bool.isRequired,\r\n pageClassName: PropTypes.string,\r\n pageLinkClassName: PropTypes.string,\r\n activeClassName: PropTypes.string,\r\n activeLinkClassName: PropTypes.string,\r\n extraAriaContext: PropTypes.string,\r\n href: PropTypes.string,\r\n ariaLabel: PropTypes.string,\r\n page: PropTypes.number.isRequired,\r\n getEventListener: PropTypes.func.isRequired,\r\n pageLabelBuilder: PropTypes.func.isRequired,\r\n rel: PropTypes.string,\r\n};\r\n\r\nexport default PageView;\r\n","'use strict';\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst BreakView = (props) => {\r\n const {\r\n breakLabel,\r\n breakAriaLabel,\r\n breakClassName,\r\n breakLinkClassName,\r\n breakHandler,\r\n getEventListener,\r\n } = props;\r\n const className = breakClassName || 'break';\r\n\r\n return (\r\n
  • \r\n \r\n {breakLabel}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nBreakView.propTypes = {\r\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n breakAriaLabel: PropTypes.string,\r\n breakClassName: PropTypes.string,\r\n breakLinkClassName: PropTypes.string,\r\n breakHandler: PropTypes.func.isRequired,\r\n getEventListener: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default BreakView;\r\n","export function classNameIfDefined(className, orClassName = '') {\r\n return className !== undefined && className !== null\r\n ? className\r\n : orClassName;\r\n}\r\n","'use strict';\r\n\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport PageView from './PageView';\r\nimport BreakView from './BreakView';\r\nimport { classNameIfDefined } from './utils';\r\n\r\nexport default class PaginationBoxView extends Component {\r\n static propTypes = {\r\n pageCount: PropTypes.number.isRequired,\r\n pageRangeDisplayed: PropTypes.number,\r\n marginPagesDisplayed: PropTypes.number,\r\n previousLabel: PropTypes.node,\r\n previousAriaLabel: PropTypes.string,\r\n prevPageRel: PropTypes.string,\r\n prevRel: PropTypes.string,\r\n nextLabel: PropTypes.node,\r\n nextAriaLabel: PropTypes.string,\r\n nextPageRel: PropTypes.string,\r\n nextRel: PropTypes.string,\r\n breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n breakAriaLabels: PropTypes.shape({\r\n forward: PropTypes.string,\r\n backward: PropTypes.string,\r\n }),\r\n hrefBuilder: PropTypes.func,\r\n hrefAllControls: PropTypes.bool,\r\n onPageChange: PropTypes.func,\r\n onPageActive: PropTypes.func,\r\n onClick: PropTypes.func,\r\n initialPage: PropTypes.number,\r\n forcePage: PropTypes.number,\r\n disableInitialCallback: PropTypes.bool,\r\n containerClassName: PropTypes.string,\r\n className: PropTypes.string,\r\n pageClassName: PropTypes.string,\r\n pageLinkClassName: PropTypes.string,\r\n pageLabelBuilder: PropTypes.func,\r\n activeClassName: PropTypes.string,\r\n activeLinkClassName: PropTypes.string,\r\n previousClassName: PropTypes.string,\r\n nextClassName: PropTypes.string,\r\n previousLinkClassName: PropTypes.string,\r\n nextLinkClassName: PropTypes.string,\r\n disabledClassName: PropTypes.string,\r\n disabledLinkClassName: PropTypes.string,\r\n breakClassName: PropTypes.string,\r\n breakLinkClassName: PropTypes.string,\r\n extraAriaContext: PropTypes.string,\r\n ariaLabelBuilder: PropTypes.func,\r\n eventListener: PropTypes.string,\r\n renderOnZeroPageCount: PropTypes.func,\r\n selectedPageRel: PropTypes.string,\r\n };\r\n\r\n static defaultProps = {\r\n pageRangeDisplayed: 2,\r\n marginPagesDisplayed: 3,\r\n activeClassName: 'selected',\r\n previousLabel: 'Previous',\r\n previousClassName: 'previous',\r\n previousAriaLabel: 'Previous page',\r\n prevPageRel: 'prev',\r\n prevRel: 'prev',\r\n nextLabel: 'Next',\r\n nextClassName: 'next',\r\n nextAriaLabel: 'Next page',\r\n nextPageRel: 'next',\r\n nextRel: 'next',\r\n breakLabel: '...',\r\n breakAriaLabels: { forward: 'Jump forward', backward: 'Jump backward' },\r\n disabledClassName: 'disabled',\r\n disableInitialCallback: false,\r\n pageLabelBuilder: (page) => page,\r\n eventListener: 'onClick',\r\n renderOnZeroPageCount: undefined,\r\n selectedPageRel: 'canonical',\r\n hrefAllControls: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n if (props.initialPage !== undefined && props.forcePage !== undefined) {\r\n console.warn(\r\n `(react-paginate): Both initialPage (${props.initialPage}) and forcePage (${props.forcePage}) props are provided, which is discouraged.` +\r\n ' Use exclusively forcePage prop for a controlled component.\\nSee https://reactjs.org/docs/forms.html#controlled-components'\r\n );\r\n }\r\n\r\n let initialSelected;\r\n if (props.initialPage) {\r\n initialSelected = props.initialPage;\r\n } else if (props.forcePage) {\r\n initialSelected = props.forcePage;\r\n } else {\r\n initialSelected = 0;\r\n }\r\n\r\n this.state = {\r\n selected: initialSelected,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n initialPage,\r\n disableInitialCallback,\r\n extraAriaContext,\r\n pageCount,\r\n forcePage,\r\n } = this.props;\r\n // Call the callback with the initialPage item:\r\n if (typeof initialPage !== 'undefined' && !disableInitialCallback) {\r\n this.callCallback(initialPage);\r\n }\r\n\r\n if (extraAriaContext) {\r\n console.warn(\r\n 'DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead.'\r\n );\r\n }\r\n\r\n if (!Number.isInteger(pageCount)) {\r\n console.warn(\r\n `(react-paginate): The pageCount prop value provided is not an integer (${pageCount}). Did you forget a Math.ceil()?`\r\n );\r\n }\r\n\r\n if (initialPage !== undefined && initialPage > pageCount - 1) {\r\n console.warn(\r\n `(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (${initialPage} > ${\r\n pageCount - 1\r\n }).`\r\n );\r\n }\r\n\r\n if (forcePage !== undefined && forcePage > pageCount - 1) {\r\n console.warn(\r\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${forcePage} > ${\r\n pageCount - 1\r\n }).`\r\n );\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (\r\n this.props.forcePage !== undefined &&\r\n this.props.forcePage !== prevProps.forcePage\r\n ) {\r\n if (this.props.forcePage > this.props.pageCount - 1) {\r\n console.warn(\r\n `(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (${\r\n this.props.forcePage\r\n } > ${this.props.pageCount - 1}).`\r\n );\r\n }\r\n\r\n this.setState({ selected: this.props.forcePage });\r\n }\r\n\r\n if (\r\n Number.isInteger(prevProps.pageCount) &&\r\n !Number.isInteger(this.props.pageCount)\r\n ) {\r\n console.warn(\r\n `(react-paginate): The pageCount prop value provided is not an integer (${this.props.pageCount}). Did you forget a Math.ceil()?`\r\n );\r\n }\r\n }\r\n\r\n handlePreviousPage = (event) => {\r\n const { selected } = this.state;\r\n\r\n this.handleClick(event, null, selected > 0 ? selected - 1 : undefined, {\r\n isPrevious: true,\r\n });\r\n };\r\n\r\n handleNextPage = (event) => {\r\n const { selected } = this.state;\r\n const { pageCount } = this.props;\r\n\r\n this.handleClick(\r\n event,\r\n null,\r\n selected < pageCount - 1 ? selected + 1 : undefined,\r\n { isNext: true }\r\n );\r\n };\r\n\r\n handlePageSelected = (selected, event) => {\r\n if (this.state.selected === selected) {\r\n this.callActiveCallback(selected);\r\n this.handleClick(event, null, undefined, { isActive: true });\r\n return;\r\n }\r\n\r\n this.handleClick(event, null, selected);\r\n };\r\n\r\n handlePageChange = (selected) => {\r\n if (this.state.selected === selected) {\r\n return;\r\n }\r\n this.setState({ selected });\r\n\r\n // Call the callback with the new selected item:\r\n this.callCallback(selected);\r\n };\r\n\r\n getEventListener = (handlerFunction) => {\r\n const { eventListener } = this.props;\r\n return {\r\n [eventListener]: handlerFunction,\r\n };\r\n };\r\n\r\n getForwardJump() {\r\n const { selected } = this.state;\r\n const { pageCount, pageRangeDisplayed } = this.props;\r\n\r\n const forwardJump = selected + pageRangeDisplayed;\r\n return forwardJump >= pageCount ? pageCount - 1 : forwardJump;\r\n }\r\n\r\n getBackwardJump() {\r\n const { selected } = this.state;\r\n const { pageRangeDisplayed } = this.props;\r\n\r\n const backwardJump = selected - pageRangeDisplayed;\r\n return backwardJump < 0 ? 0 : backwardJump;\r\n }\r\n\r\n handleClick = (\r\n event,\r\n index,\r\n nextSelectedPage,\r\n {\r\n isPrevious = false,\r\n isNext = false,\r\n isBreak = false,\r\n isActive = false,\r\n } = {}\r\n ) => {\r\n event.preventDefault ? event.preventDefault() : (event.returnValue = false);\r\n const { selected } = this.state;\r\n const { onClick } = this.props;\r\n\r\n let newPage = nextSelectedPage;\r\n\r\n if (onClick) {\r\n const onClickReturn = onClick({\r\n index,\r\n selected,\r\n nextSelectedPage,\r\n event,\r\n isPrevious,\r\n isNext,\r\n isBreak,\r\n isActive,\r\n });\r\n if (onClickReturn === false) {\r\n // We abord standard behavior and let parent handle\r\n // all behavior.\r\n return;\r\n }\r\n if (Number.isInteger(onClickReturn)) {\r\n // We assume parent want to go to the returned page.\r\n newPage = onClickReturn;\r\n }\r\n }\r\n\r\n if (newPage !== undefined) {\r\n this.handlePageChange(newPage);\r\n }\r\n };\r\n\r\n handleBreakClick = (index, event) => {\r\n const { selected } = this.state;\r\n\r\n this.handleClick(\r\n event,\r\n index,\r\n selected < index ? this.getForwardJump() : this.getBackwardJump(),\r\n { isBreak: true }\r\n );\r\n };\r\n\r\n getElementHref(pageIndex) {\r\n const { hrefBuilder, pageCount, hrefAllControls } = this.props;\r\n if (!hrefBuilder) return;\r\n if (hrefAllControls || (pageIndex >= 0 && pageIndex < pageCount)) {\r\n return hrefBuilder(pageIndex + 1, pageCount, this.state.selected);\r\n }\r\n }\r\n\r\n ariaLabelBuilder(pageIndex) {\r\n const selected = pageIndex === this.state.selected;\r\n if (\r\n this.props.ariaLabelBuilder &&\r\n pageIndex >= 0 &&\r\n pageIndex < this.props.pageCount\r\n ) {\r\n let label = this.props.ariaLabelBuilder(pageIndex + 1, selected);\r\n // DEPRECATED: The extraAriaContext prop was used to add additional context\r\n // to the aria-label. Users should now use the ariaLabelBuilder instead.\r\n if (this.props.extraAriaContext && !selected) {\r\n label = label + ' ' + this.props.extraAriaContext;\r\n }\r\n return label;\r\n }\r\n }\r\n\r\n callCallback = (selectedItem) => {\r\n if (\r\n this.props.onPageChange !== undefined &&\r\n typeof this.props.onPageChange === 'function'\r\n ) {\r\n this.props.onPageChange({ selected: selectedItem });\r\n }\r\n };\r\n\r\n callActiveCallback = (selectedItem) => {\r\n if (\r\n this.props.onPageActive !== undefined &&\r\n typeof this.props.onPageActive === 'function'\r\n ) {\r\n this.props.onPageActive({ selected: selectedItem });\r\n }\r\n };\r\n\r\n getElementPageRel = (index) => {\r\n const { selected } = this.state;\r\n const { nextPageRel, prevPageRel, selectedPageRel } = this.props;\r\n\r\n if (selected - 1 === index) {\r\n return prevPageRel;\r\n } else if (selected === index) {\r\n return selectedPageRel;\r\n } else if (selected + 1 === index) {\r\n return nextPageRel;\r\n }\r\n return undefined;\r\n };\r\n\r\n getPageElement(index) {\r\n const { selected } = this.state;\r\n const {\r\n pageClassName,\r\n pageLinkClassName,\r\n activeClassName,\r\n activeLinkClassName,\r\n extraAriaContext,\r\n pageLabelBuilder,\r\n } = this.props;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n pagination = () => {\r\n const items = [];\r\n const {\r\n pageRangeDisplayed,\r\n pageCount,\r\n marginPagesDisplayed,\r\n breakLabel,\r\n breakClassName,\r\n breakLinkClassName,\r\n breakAriaLabels,\r\n } = this.props;\r\n\r\n const { selected } = this.state;\r\n\r\n if (pageCount <= pageRangeDisplayed) {\r\n for (let index = 0; index < pageCount; index++) {\r\n items.push(this.getPageElement(index));\r\n }\r\n } else {\r\n let leftSide = pageRangeDisplayed / 2;\r\n let rightSide = pageRangeDisplayed - leftSide;\r\n\r\n // If the selected page index is on the default right side of the pagination,\r\n // we consider that the new right side is made up of it (= only one break element).\r\n // If the selected page index is on the default left side of the pagination,\r\n // we consider that the new left side is made up of it (= only one break element).\r\n if (selected > pageCount - pageRangeDisplayed / 2) {\r\n rightSide = pageCount - selected;\r\n leftSide = pageRangeDisplayed - rightSide;\r\n } else if (selected < pageRangeDisplayed / 2) {\r\n leftSide = selected;\r\n rightSide = pageRangeDisplayed - leftSide;\r\n }\r\n\r\n let createPageView = (index) => this.getPageElement(index);\r\n let index;\r\n let breakView;\r\n\r\n // First pass: process the pages or breaks to display (or not).\r\n const pagesBreaking = [];\r\n for (index = 0; index < pageCount; index++) {\r\n const page = index + 1;\r\n\r\n // If the page index is lower than the margin defined,\r\n // the page has to be displayed on the left side of\r\n // the pagination.\r\n if (page <= marginPagesDisplayed) {\r\n pagesBreaking.push({\r\n type: 'page',\r\n index,\r\n display: createPageView(index),\r\n });\r\n continue;\r\n }\r\n\r\n // If the page index is greater than the page count\r\n // minus the margin defined, the page has to be\r\n // displayed on the right side of the pagination.\r\n if (page > pageCount - marginPagesDisplayed) {\r\n pagesBreaking.push({\r\n type: 'page',\r\n index,\r\n display: createPageView(index),\r\n });\r\n continue;\r\n }\r\n\r\n // If it is the first element of the array the rightSide need to be adjusted,\r\n // otherwise an extra element will be rendered\r\n const adjustedRightSide =\r\n selected === 0 && pageRangeDisplayed > 1 ? rightSide - 1 : rightSide;\r\n\r\n // If the page index is near the selected page index\r\n // and inside the defined range (pageRangeDisplayed)\r\n // we have to display it (it will create the center\r\n // part of the pagination).\r\n if (\r\n index >= selected - leftSide &&\r\n index <= selected + adjustedRightSide\r\n ) {\r\n pagesBreaking.push({\r\n type: 'page',\r\n index,\r\n display: createPageView(index),\r\n });\r\n continue;\r\n }\r\n\r\n // If the page index doesn't meet any of the conditions above,\r\n // we check if the last item of the current \"items\" array\r\n // is a break element. If not, we add a break element, else,\r\n // we do nothing (because we don't want to display the page).\r\n if (\r\n breakLabel &&\r\n pagesBreaking.length > 0 &&\r\n pagesBreaking[pagesBreaking.length - 1].display !== breakView &&\r\n // We do not show break if only one active page is displayed.\r\n (pageRangeDisplayed > 0 || marginPagesDisplayed > 0)\r\n ) {\r\n const useBreakAriaLabel =\r\n index < selected\r\n ? breakAriaLabels.backward\r\n : breakAriaLabels.forward;\r\n breakView = (\r\n \r\n );\r\n pagesBreaking.push({ type: 'break', index, display: breakView });\r\n }\r\n }\r\n // Second pass: we remove breaks containing one page to the actual page.\r\n pagesBreaking.forEach((pageElement, i) => {\r\n let actualPageElement = pageElement;\r\n // 1 2 3 4 5 6 7 ... 9 10\r\n // |\r\n // 1 2 ... 4 5 6 7 8 9 10\r\n // |\r\n // The break should be replaced by the page.\r\n if (\r\n pageElement.type === 'break' &&\r\n pagesBreaking[i - 1] &&\r\n pagesBreaking[i - 1].type === 'page' &&\r\n pagesBreaking[i + 1] &&\r\n pagesBreaking[i + 1].type === 'page' &&\r\n pagesBreaking[i + 1].index - pagesBreaking[i - 1].index <= 2\r\n ) {\r\n actualPageElement = {\r\n type: 'page',\r\n index: pageElement.index,\r\n display: createPageView(pageElement.index),\r\n };\r\n }\r\n // We add the displayed elements in the same pass, to avoid another iteration.\r\n items.push(actualPageElement.display);\r\n });\r\n }\r\n\r\n return items;\r\n };\r\n\r\n render() {\r\n const { renderOnZeroPageCount } = this.props;\r\n if (this.props.pageCount === 0 && renderOnZeroPageCount !== undefined) {\r\n return renderOnZeroPageCount\r\n ? renderOnZeroPageCount(this.props)\r\n : renderOnZeroPageCount;\r\n }\r\n const {\r\n disabledClassName,\r\n disabledLinkClassName,\r\n pageCount,\r\n className,\r\n containerClassName,\r\n previousLabel,\r\n previousClassName,\r\n previousLinkClassName,\r\n previousAriaLabel,\r\n prevRel,\r\n nextLabel,\r\n nextClassName,\r\n nextLinkClassName,\r\n nextAriaLabel,\r\n nextRel,\r\n } = this.props;\r\n\r\n const { selected } = this.state;\r\n\r\n const isPreviousDisabled = selected === 0;\r\n const isNextDisabled = selected === pageCount - 1;\r\n\r\n const previousClasses = `${classNameIfDefined(previousClassName)}${\r\n isPreviousDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\r\n }`;\r\n const nextClasses = `${classNameIfDefined(nextClassName)}${\r\n isNextDisabled ? ` ${classNameIfDefined(disabledClassName)}` : ''\r\n }`;\r\n\r\n const previousLinkClasses = `${classNameIfDefined(previousLinkClassName)}${\r\n isPreviousDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\r\n }`;\r\n const nextLinkClasses = `${classNameIfDefined(nextLinkClassName)}${\r\n isNextDisabled ? ` ${classNameIfDefined(disabledLinkClassName)}` : ''\r\n }`;\r\n\r\n const previousAriaDisabled = isPreviousDisabled ? 'true' : 'false';\r\n const nextAriaDisabled = isNextDisabled ? 'true' : 'false';\r\n\r\n return (\r\n \r\n
  • \r\n \r\n {previousLabel}\r\n \r\n
  • \r\n\r\n {this.pagination()}\r\n\r\n
  • \r\n \r\n {nextLabel}\r\n \r\n
  • \r\n \r\n );\r\n }\r\n}\r\n","import PaginationBoxView from './PaginationBoxView';\r\n\r\nexport default PaginationBoxView;\r\n"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__98__","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","PageView","pageClassName","pageLinkClassName","page","selected","activeClassName","activeLinkClassName","getEventListener","pageSelectedHandler","href","extraAriaContext","pageLabelBuilder","rel","ariaLabel","ariaCurrent","className","role","tabIndex","onKeyPress","propTypes","BreakView","breakLabel","breakAriaLabel","breakClassName","breakLinkClassName","breakHandler","classNameIfDefined","orClassName","PaginationBoxView","initialSelected","event","state","handleClick","isPrevious","pageCount","isNext","callActiveCallback","isActive","setState","callCallback","handlerFunction","eventListener","index","nextSelectedPage","isBreak","preventDefault","returnValue","onClick","newPage","onClickReturn","Number","isInteger","handlePageChange","getForwardJump","getBackwardJump","selectedItem","onPageChange","onPageActive","nextPageRel","prevPageRel","selectedPageRel","items","pageRangeDisplayed","marginPagesDisplayed","breakAriaLabels","push","getPageElement","leftSide","rightSide","breakView","createPageView","pagesBreaking","type","display","length","useBreakAriaLabel","backward","forward","handleBreakClick","bind","forEach","pageElement","i","actualPageElement","initialPage","forcePage","console","warn","disableInitialCallback","prevProps","forwardJump","backwardJump","pageIndex","hrefBuilder","hrefAllControls","ariaLabelBuilder","label","handlePageSelected","getElementPageRel","getElementHref","renderOnZeroPageCount","disabledClassName","disabledLinkClassName","containerClassName","previousLabel","previousClassName","previousLinkClassName","previousAriaLabel","prevRel","nextLabel","nextClassName","nextLinkClassName","nextAriaLabel","nextRel","isPreviousDisabled","isNextDisabled","previousClasses","nextClasses","previousLinkClasses","nextLinkClasses","previousAriaDisabled","nextAriaDisabled","handlePreviousPage","pagination","handleNextPage","Component"],"sourceRoot":""} \ No newline at end of file diff --git a/index.d.ts b/index.d.ts index d775929..71becef 100644 --- a/index.d.ts +++ b/index.d.ts @@ -214,6 +214,17 @@ export interface ReactPaginateProps { */ ariaLabelBuilder?(pageIndex: number, selectedPage: number): void; + /** + * By default the pagination link will have an 'aria-label' attribute of 'Jump forward' + * when the break is after the current index, and an 'aria-label' attribute of 'Jump + * backward' when the break is before the current index. This optional prop can be used + * to provide alternative 'aria-label' attributes. + */ + breakAriaLabels?: { + forward: string; + backward: string; + }; + /** * The event to listen onto before changing the selected page. Default is: `onClick`. */ diff --git a/react_components/BreakView.js b/react_components/BreakView.js index 583749a..a65dcbb 100755 --- a/react_components/BreakView.js +++ b/react_components/BreakView.js @@ -6,6 +6,7 @@ import PropTypes from 'prop-types'; const BreakView = (props) => { const { breakLabel, + breakAriaLabel, breakClassName, breakLinkClassName, breakHandler, @@ -19,6 +20,7 @@ const BreakView = (props) => { className={breakLinkClassName} role="button" tabIndex="0" + aria-label={breakAriaLabel} onKeyPress={breakHandler} {...getEventListener(breakHandler)} > @@ -30,6 +32,7 @@ const BreakView = (props) => { BreakView.propTypes = { breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), + breakAriaLabel: PropTypes.string, breakClassName: PropTypes.string, breakLinkClassName: PropTypes.string, breakHandler: PropTypes.func.isRequired, diff --git a/react_components/PaginationBoxView.js b/react_components/PaginationBoxView.js index 2a31158..6130a1d 100755 --- a/react_components/PaginationBoxView.js +++ b/react_components/PaginationBoxView.js @@ -20,6 +20,10 @@ export default class PaginationBoxView extends Component { nextPageRel: PropTypes.string, nextRel: PropTypes.string, breakLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), + breakAriaLabels: PropTypes.shape({ + forward: PropTypes.string, + backward: PropTypes.string, + }), hrefBuilder: PropTypes.func, hrefAllControls: PropTypes.bool, onPageChange: PropTypes.func, @@ -65,6 +69,7 @@ export default class PaginationBoxView extends Component { nextPageRel: 'next', nextRel: 'next', breakLabel: '...', + breakAriaLabels: { forward: 'Jump forward', backward: 'Jump backward' }, disabledClassName: 'disabled', disableInitialCallback: false, pageLabelBuilder: (page) => page, @@ -381,6 +386,7 @@ export default class PaginationBoxView extends Component { breakLabel, breakClassName, breakLinkClassName, + breakAriaLabels, } = this.props; const { selected } = this.state; @@ -470,9 +476,14 @@ export default class PaginationBoxView extends Component { // We do not show break if only one active page is displayed. (pageRangeDisplayed > 0 || marginPagesDisplayed > 0) ) { + const useBreakAriaLabel = + index < selected + ? breakAriaLabels.backward + : breakAriaLabels.forward; breakView = (