react-router-pagination 3.2.244 → 3.2.246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import globals from 'globals'
|
|
2
|
+
import standard from '@sequencemedia/eslint-config-standard/configs/recommended/merge'
|
|
3
|
+
import typescript from '@sequencemedia/eslint-config-typescript/configs/recommended/merge'
|
|
4
|
+
import babelParser from '@babel/eslint-parser'
|
|
5
|
+
import typescriptParser from '@typescript-eslint/parser'
|
|
6
|
+
import reactPlugin from 'eslint-plugin-react'
|
|
7
|
+
import storybookPlugin from 'eslint-plugin-storybook'
|
|
8
|
+
|
|
9
|
+
const reactParserOptions = {
|
|
10
|
+
ecmaFeatures: {
|
|
11
|
+
jsx: true
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const reactPlugins = {
|
|
16
|
+
react: reactPlugin
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const storybookPlugins = {
|
|
20
|
+
storybook: storybookPlugin
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const reactRules = {
|
|
24
|
+
'no-unused-vars': [
|
|
25
|
+
'error',
|
|
26
|
+
{
|
|
27
|
+
varsIgnorePattern: 'React'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
quotes: [
|
|
31
|
+
'error',
|
|
32
|
+
'single'
|
|
33
|
+
],
|
|
34
|
+
'jsx-quotes': [
|
|
35
|
+
'error',
|
|
36
|
+
'prefer-single'
|
|
37
|
+
],
|
|
38
|
+
'react/jsx-indent': [
|
|
39
|
+
'error',
|
|
40
|
+
2,
|
|
41
|
+
{
|
|
42
|
+
checkAttributes: true,
|
|
43
|
+
indentLogicalExpressions: true
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const reactSettings = {
|
|
49
|
+
react: {
|
|
50
|
+
version: 'detect'
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default [
|
|
55
|
+
{
|
|
56
|
+
ignores: [
|
|
57
|
+
'.coverage'
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
/**
|
|
61
|
+
* React config for all `jsx` and `tsx` files
|
|
62
|
+
*/
|
|
63
|
+
{
|
|
64
|
+
...reactPlugin.configs.flat.recommended,
|
|
65
|
+
settings: {
|
|
66
|
+
...reactPlugin.configs.flat.recommended.settings,
|
|
67
|
+
...reactSettings
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
/**
|
|
71
|
+
* Storybook config
|
|
72
|
+
*/
|
|
73
|
+
...storybookPlugin.configs['flat/recommended'],
|
|
74
|
+
/**
|
|
75
|
+
* Standard config
|
|
76
|
+
*/
|
|
77
|
+
standard({
|
|
78
|
+
files: [
|
|
79
|
+
'**/*.{mjs,cjs,mts,cts}'
|
|
80
|
+
],
|
|
81
|
+
ignores: [
|
|
82
|
+
'src',
|
|
83
|
+
'stories'
|
|
84
|
+
],
|
|
85
|
+
languageOptions: {
|
|
86
|
+
globals: {
|
|
87
|
+
...globals.node
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
standard({
|
|
92
|
+
files: [
|
|
93
|
+
'src/**/*.{mjs,cjs,mts,cts}',
|
|
94
|
+
'stories/**/*.{mjs,cjs,mts,cts}'
|
|
95
|
+
],
|
|
96
|
+
languageOptions: {
|
|
97
|
+
globals: {
|
|
98
|
+
...globals.browser
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}),
|
|
102
|
+
/**
|
|
103
|
+
* Standard config for all `jsx` and `tsx` files
|
|
104
|
+
*/
|
|
105
|
+
standard({
|
|
106
|
+
files: [
|
|
107
|
+
'src/**/*.{mts,tsx}',
|
|
108
|
+
'stories/**/*.{mjs,jsx}'
|
|
109
|
+
],
|
|
110
|
+
ignores: [
|
|
111
|
+
'src/__tests__/**/*.{mts,tsx}',
|
|
112
|
+
'stories/**/__tests__/**/*.{mjs,jsx}'
|
|
113
|
+
],
|
|
114
|
+
languageOptions: {
|
|
115
|
+
parser: babelParser,
|
|
116
|
+
parserOptions: {
|
|
117
|
+
...reactParserOptions,
|
|
118
|
+
project: null
|
|
119
|
+
},
|
|
120
|
+
globals: {
|
|
121
|
+
...globals.browser
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
plugins: {
|
|
125
|
+
...reactPlugins,
|
|
126
|
+
...storybookPlugins
|
|
127
|
+
},
|
|
128
|
+
rules: {
|
|
129
|
+
...reactRules
|
|
130
|
+
},
|
|
131
|
+
settings: {
|
|
132
|
+
...reactSettings,
|
|
133
|
+
'import/resolver': {
|
|
134
|
+
'babel-module': {}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}),
|
|
138
|
+
standard({
|
|
139
|
+
files: [
|
|
140
|
+
'src/**/__tests__/**/*.{mts,tsx}',
|
|
141
|
+
'stories/**/__tests__/**/*.{mjs,jsx}'
|
|
142
|
+
],
|
|
143
|
+
languageOptions: {
|
|
144
|
+
parser: babelParser,
|
|
145
|
+
parserOptions: {
|
|
146
|
+
...reactParserOptions,
|
|
147
|
+
project: null
|
|
148
|
+
},
|
|
149
|
+
globals: {
|
|
150
|
+
...globals.browser,
|
|
151
|
+
...globals.jest
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
plugins: {
|
|
155
|
+
...reactPlugins,
|
|
156
|
+
...storybookPlugins
|
|
157
|
+
},
|
|
158
|
+
rules: {
|
|
159
|
+
...reactRules
|
|
160
|
+
},
|
|
161
|
+
settings: {
|
|
162
|
+
...reactSettings,
|
|
163
|
+
'import/resolver': {
|
|
164
|
+
'babel-module': {}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}),
|
|
168
|
+
/**
|
|
169
|
+
* TypeScript config
|
|
170
|
+
*/
|
|
171
|
+
typescript({
|
|
172
|
+
files: [
|
|
173
|
+
'**/*.{mts,cts}'
|
|
174
|
+
],
|
|
175
|
+
ignores: [
|
|
176
|
+
'src',
|
|
177
|
+
'stories'
|
|
178
|
+
],
|
|
179
|
+
languageOptions: {
|
|
180
|
+
globals: {
|
|
181
|
+
...globals.node,
|
|
182
|
+
CogsTypes: 'readonly'
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}),
|
|
186
|
+
typescript({
|
|
187
|
+
files: [
|
|
188
|
+
'src/**/*.{mts,cts}'
|
|
189
|
+
],
|
|
190
|
+
languageOptions: {
|
|
191
|
+
globals: {
|
|
192
|
+
...globals.browser
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}),
|
|
196
|
+
/**
|
|
197
|
+
* TypeScript config for only `tsx` files
|
|
198
|
+
*/
|
|
199
|
+
typescript({
|
|
200
|
+
files: [
|
|
201
|
+
'src/**/*.{mts,tsx}'
|
|
202
|
+
],
|
|
203
|
+
ignores: [
|
|
204
|
+
'src/**/__tests__/**/*.{mts,tsx}'
|
|
205
|
+
],
|
|
206
|
+
languageOptions: {
|
|
207
|
+
parser: typescriptParser,
|
|
208
|
+
parserOptions: {
|
|
209
|
+
...reactParserOptions,
|
|
210
|
+
projectService: true,
|
|
211
|
+
project: 'tsconfig.json'
|
|
212
|
+
},
|
|
213
|
+
globals: {
|
|
214
|
+
...globals.browser
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
plugins: {
|
|
218
|
+
...reactPlugins
|
|
219
|
+
},
|
|
220
|
+
rules: {
|
|
221
|
+
...reactRules,
|
|
222
|
+
'@typescript-eslint/no-magic-numbers': 'off',
|
|
223
|
+
'@typescript-eslint/prefer-destructuring': 'off',
|
|
224
|
+
'@typescript-eslint/class-methods-use-this': 'off',
|
|
225
|
+
'@typescript-eslint/no-empty-function': 'off'
|
|
226
|
+
},
|
|
227
|
+
settings: {
|
|
228
|
+
...reactSettings
|
|
229
|
+
}
|
|
230
|
+
}),
|
|
231
|
+
typescript({
|
|
232
|
+
files: [
|
|
233
|
+
'src/**/__tests__/**/*.{mts,tsx}'
|
|
234
|
+
],
|
|
235
|
+
languageOptions: {
|
|
236
|
+
parser: typescriptParser,
|
|
237
|
+
parserOptions: {
|
|
238
|
+
...reactParserOptions,
|
|
239
|
+
projectService: true,
|
|
240
|
+
project: 'tsconfig.json'
|
|
241
|
+
},
|
|
242
|
+
globals: {
|
|
243
|
+
...globals.browser,
|
|
244
|
+
...globals.jest
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
plugins: {
|
|
248
|
+
...reactPlugins
|
|
249
|
+
},
|
|
250
|
+
rules: {
|
|
251
|
+
...reactRules,
|
|
252
|
+
'@typescript-eslint/no-magic-numbers': 'off',
|
|
253
|
+
'@typescript-eslint/prefer-destructuring': 'off',
|
|
254
|
+
'@typescript-eslint/class-methods-use-this': 'off',
|
|
255
|
+
'@typescript-eslint/no-empty-function': 'off'
|
|
256
|
+
},
|
|
257
|
+
settings: {
|
|
258
|
+
...reactSettings
|
|
259
|
+
}
|
|
260
|
+
})
|
|
261
|
+
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-router-pagination",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.246",
|
|
4
4
|
"description": "A React Router Pagination component",
|
|
5
5
|
"main": "./src/index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build-storybook": "storybook build",
|
|
23
|
-
"lint": "eslint
|
|
23
|
+
"lint": "eslint",
|
|
24
24
|
"lint:fix": "npm run lint -- --fix",
|
|
25
25
|
"prepare": "husky",
|
|
26
26
|
"storybook": "storybook dev -p 6006",
|
|
@@ -39,6 +39,8 @@
|
|
|
39
39
|
"@babel/preset-typescript": "^7.26.0",
|
|
40
40
|
"@babel/register": "^7.25.9",
|
|
41
41
|
"@chromatic-com/storybook": "^3.2.3",
|
|
42
|
+
"@sequencemedia/eslint-config-standard": "^0.2.12",
|
|
43
|
+
"@sequencemedia/eslint-config-typescript": "^0.1.17",
|
|
42
44
|
"@storybook/addon-essentials": "^8.4.7",
|
|
43
45
|
"@storybook/addon-links": "^8.4.7",
|
|
44
46
|
"@storybook/addon-webpack5-compiler-babel": "^3.0.5",
|
|
@@ -48,27 +50,27 @@
|
|
|
48
50
|
"@storybook/theming": "^8.4.7",
|
|
49
51
|
"@types/debug": "^4.1.12",
|
|
50
52
|
"@types/jest": "^29.5.14",
|
|
51
|
-
"@types/react": "
|
|
53
|
+
"@types/react": "^19.0.5",
|
|
52
54
|
"@types/react-router": "^5.1.20",
|
|
53
|
-
"@types/react-
|
|
54
|
-
"@
|
|
55
|
-
"@typescript-eslint/
|
|
56
|
-
"
|
|
55
|
+
"@types/react-test-renderer": "^19.0.0",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^8.19.1",
|
|
57
|
+
"@typescript-eslint/parser": "^8.19.1",
|
|
58
|
+
"babel-plugin-module-resolver": "^5.0.2",
|
|
57
59
|
"core-js": "^3.40.0",
|
|
58
60
|
"cross-env": "^7.0.3",
|
|
59
|
-
"eslint": "
|
|
60
|
-
"eslint-
|
|
61
|
-
"eslint-config-standard": "^17.1.0",
|
|
61
|
+
"eslint": "^9.18.0",
|
|
62
|
+
"eslint-import-resolver-babel-module": "^5.3.2",
|
|
62
63
|
"eslint-plugin-react": "^7.37.3",
|
|
63
64
|
"eslint-plugin-storybook": "^0.11.2",
|
|
65
|
+
"globals": "^15.14.0",
|
|
64
66
|
"husky": "^9.1.7",
|
|
65
67
|
"jest": "^29.7.0",
|
|
66
68
|
"prop-types": "^15.8.1",
|
|
67
|
-
"react": "
|
|
68
|
-
"react-dom": "
|
|
69
|
-
"react-router": "
|
|
69
|
+
"react": "^19.0.0",
|
|
70
|
+
"react-dom": "^19.0.0",
|
|
71
|
+
"react-router": "^7.1.1",
|
|
70
72
|
"react-router-dom": "6.28.0",
|
|
71
|
-
"react-test-renderer": "
|
|
73
|
+
"react-test-renderer": "^19.0.0",
|
|
72
74
|
"storybook": "^8.4.7"
|
|
73
75
|
},
|
|
74
76
|
"imports": {
|
|
@@ -24,7 +24,7 @@ export class Centered extends AbstractPagination<CenteredProps, CenteredState> {
|
|
|
24
24
|
static defaultProps = {
|
|
25
25
|
...AbstractPagination.defaultProps,
|
|
26
26
|
spread: 3,
|
|
27
|
-
onChange () {}
|
|
27
|
+
onChange ():void {}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
state = {
|
|
@@ -81,7 +81,7 @@ export class Centered extends AbstractPagination<CenteredProps, CenteredState> {
|
|
|
81
81
|
return super.shouldComponentUpdate(props) || (props.spread !== this.props.spread)
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
handlePageNumberSelect = (pageNumber: number):
|
|
84
|
+
handlePageNumberSelect = (pageNumber: number): void => {
|
|
85
85
|
const { onClick } = this.props
|
|
86
86
|
|
|
87
87
|
try {
|
|
@@ -6,13 +6,10 @@ import type ReactRouterPaginationTypes from 'react-router-pagination'
|
|
|
6
6
|
import React, { Component } from 'react'
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
Link,
|
|
9
10
|
generatePath
|
|
10
11
|
} from 'react-router'
|
|
11
12
|
|
|
12
|
-
import {
|
|
13
|
-
Link
|
|
14
|
-
} from 'react-router-dom'
|
|
15
|
-
|
|
16
13
|
import {
|
|
17
14
|
toInteger,
|
|
18
15
|
calculateTotalPages,
|
|
@@ -39,7 +36,7 @@ type AbstractPaginationProps = ReactRouterPaginationTypes.AbstractPaginationProp
|
|
|
39
36
|
|
|
40
37
|
type AbstractPaginationState = ReactRouterPaginationTypes.AbstractPaginationState
|
|
41
38
|
|
|
42
|
-
export default abstract class AbstractPagination<P, S> extends Component<P & AbstractPaginationProps, S & AbstractPaginationState> {
|
|
39
|
+
export default abstract class AbstractPagination<P, S> extends Component<P & AbstractPaginationProps, S & AbstractPaginationState> { // eslint-disable-line @typescript-eslint/no-unnecessary-type-parameters -- Base
|
|
43
40
|
static defaultProps = {
|
|
44
41
|
onClick () {},
|
|
45
42
|
pageNumber: 0,
|
|
@@ -63,11 +60,11 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
63
60
|
return 0
|
|
64
61
|
}
|
|
65
62
|
|
|
66
|
-
zeroIndex (pageNumber: string | number, totalPages: string | number): number {
|
|
63
|
+
zeroIndex (pageNumber: string | number, totalPages: string | number): number { // eslint-disable-line no-unused-vars -- Base
|
|
67
64
|
return 0
|
|
68
65
|
}
|
|
69
66
|
|
|
70
|
-
lastIndex (pageNumber: string | number, totalPages: string | number): number {
|
|
67
|
+
lastIndex (pageNumber: string | number, totalPages: string | number): number { // eslint-disable-line no-unused-vars -- Base
|
|
71
68
|
return 0
|
|
72
69
|
}
|
|
73
70
|
|
|
@@ -98,7 +95,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
98
95
|
const n = this.zeroIndex(pageNumber, totalPages)
|
|
99
96
|
return (
|
|
100
97
|
<li key={getListItemKey('reverse')} className='reverse-page'>
|
|
101
|
-
<Link to={getLinkTo(match, n)} onClick={() => this.handlePageNumberSelect(n)}>
|
|
98
|
+
<Link to={getLinkTo(match, n)} onClick={() => { this.handlePageNumberSelect(n) }}>
|
|
102
99
|
<span className='reverse'>
|
|
103
100
|
{'\u2039'}
|
|
104
101
|
</span>
|
|
@@ -114,7 +111,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
114
111
|
const n = this.lastIndex(pageNumber, totalPages) + 1
|
|
115
112
|
return (
|
|
116
113
|
<li key={getListItemKey('forward')} className='forward-page'>
|
|
117
|
-
<Link to={getLinkTo(match, n)} onClick={() => this.handlePageNumberSelect(n)}>
|
|
114
|
+
<Link to={getLinkTo(match, n)} onClick={() => { this.handlePageNumberSelect(n) }}>
|
|
118
115
|
<span className='forward'>
|
|
119
116
|
{'\u203A'}
|
|
120
117
|
</span>
|
|
@@ -130,7 +127,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
130
127
|
const n = 1
|
|
131
128
|
return (
|
|
132
129
|
<li key={getListItemKey(n)} className='zero-page'>
|
|
133
|
-
<Link to={getLinkTo(match, n)} onClick={() => this.handlePageNumberSelect(n)}>
|
|
130
|
+
<Link to={getLinkTo(match, n)} onClick={() => { this.handlePageNumberSelect(n) }}>
|
|
134
131
|
<span className='page-number'>
|
|
135
132
|
{n}
|
|
136
133
|
</span>
|
|
@@ -146,7 +143,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
146
143
|
const n = toInteger(totalPages)
|
|
147
144
|
return (
|
|
148
145
|
<li key={getListItemKey(n)} className='last-page'>
|
|
149
|
-
<Link to={getLinkTo(match, n)} onClick={() => this.handlePageNumberSelect(n)}>
|
|
146
|
+
<Link to={getLinkTo(match, n)} onClick={() => { this.handlePageNumberSelect(n) }}>
|
|
150
147
|
<span className='page-number'>
|
|
151
148
|
{n}
|
|
152
149
|
</span>
|
|
@@ -165,7 +162,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
165
162
|
const n = (i + 1)
|
|
166
163
|
a.push((
|
|
167
164
|
<li key={getListItemKey(n)} className={getListItemClassName(pageNumber, n)}>
|
|
168
|
-
<Link to={getLinkTo(match, n)} onClick={() => this.handlePageNumberSelect(n)}>
|
|
165
|
+
<Link to={getLinkTo(match, n)} onClick={() => { this.handlePageNumberSelect(n) }}>
|
|
169
166
|
<span className='page-number'>
|
|
170
167
|
{n}
|
|
171
168
|
</span>
|
|
@@ -191,7 +188,7 @@ export default abstract class AbstractPagination<P, S> extends Component<P & Abs
|
|
|
191
188
|
)
|
|
192
189
|
}
|
|
193
190
|
|
|
194
|
-
handlePageNumberSelect = (pageNumber: number):
|
|
191
|
+
handlePageNumberSelect = (pageNumber: number): void => {
|
|
195
192
|
this.props.onClick(pageNumber)
|
|
196
193
|
}
|
|
197
194
|
|
|
@@ -64,7 +64,7 @@ export class Standard extends AbstractPagination<StandardProps, StandardState> {
|
|
|
64
64
|
return super.shouldComponentUpdate(props) || (props.spread !== this.props.spread)
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
handlePageNumberSelect = (pageNumber: number):
|
|
67
|
+
handlePageNumberSelect = (pageNumber: number): void => {
|
|
68
68
|
const { onClick } = this.props
|
|
69
69
|
|
|
70
70
|
try {
|