redux-paginator-immutable 17.0.28 → 17.0.31

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.
@@ -1,23 +1,4 @@
1
- import React from "react";
2
- declare type Settings = {
3
- key: string;
4
- rowsPerLoad: number;
5
- manipulateItems: (items: any) => any;
6
- resetView: (data: any) => any;
7
- changeView: (data: any) => any;
8
- requestPage: (page: string, token: string) => any;
9
- };
10
- declare type LoadPaginatorPropTypes = {
11
- token: string;
12
- children: React.ReactElement<any>;
13
- settings: Settings;
14
- paginator: any;
15
- changeView: (info: {
16
- token: string;
17
- view: number;
18
- }) => any;
19
- resetView: (token: string) => any;
20
- loadData: (page: number) => any;
21
- };
1
+ /// <reference types="react" />
2
+ import { LoadPaginatorPropTypes } from "./LoadPaginatorTypes";
22
3
  declare const LoadPaginator: (props: LoadPaginatorPropTypes) => JSX.Element;
23
4
  export default LoadPaginator;
@@ -34,23 +34,53 @@ const selectors_1 = __importDefault(require("./selectors"));
34
34
  const LoadingButton_1 = __importDefault(require("./LoadingButton"));
35
35
  const words_1 = __importDefault(require("./words"));
36
36
  const LoadPaginator = (props) => {
37
- const { token, settings } = props, { list, entities } = (0, react_redux_1.useSelector)((state) => (selectors_1.default.getPaginators(state, settings.key))), paginator = (0, react_1.useMemo)(() => {
38
- const currentPage = selectors_1.default.getCurrentView(list, token), isFetching = selectors_1.default.isPageFetching(list, token, currentPage), isFetched = selectors_1.default.isPageFetched(list, token, currentPage), isNextFetching = selectors_1.default.isPageFetching(list, token, currentPage + 1), isNextFetched = selectors_1.default.isPageFetched(list, token, currentPage + 1),
39
- // eslint-disable-next-line max-len
40
- resultsUpTo = selectors_1.default.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad), items = settings.manipulateItems(resultsUpTo), total = selectors_1.default.getCurrentTotalResultsCount(list, token),
41
- // currentPage was previously given to the following function
42
- hasProblems = selectors_1.default.hasPageProblems(list, token), shouldLoadNext = !isNextFetched && !isNextFetching;
43
- return Immutable.Map({
44
- currentPage,
45
- hasProblems,
46
- isFetched,
47
- isFetching,
48
- items,
49
- shouldLoadNext,
50
- total,
51
- });
52
- }, [list, entities]), dispatch = (0, react_redux_1.useDispatch)(), resetView = (data) => dispatch(settings.resetView(data)), changeView = (data) => dispatch(settings.changeView(data)), loadData = (page) => dispatch(settings.requestPage(page, token)), items = paginator.get("items"), hasProblems = paginator.get("hasProblems"), currentPage = paginator.get("currentPage"), isFetching = paginator.get("isFetching"), showLoading = paginator.get("total") !== items.size, isFetched = paginator.get("isFetched"), shouldFetch = !isFetched && !isFetching, handleLoadMoreClick = () => {
53
- const shouldLoadNext = paginator.get("shouldLoadNext");
37
+ const { token, settings } = props, { list, entities } = (0, react_redux_1.useSelector)((state) => (selectors_1.default.getPaginators(state, settings.key))),
38
+ // paginator = useMemo(() => {
39
+ // const
40
+ // currentPage = selectors.getCurrentView(list, token),
41
+ // isFetching = selectors.isPageFetching(list, token, currentPage),
42
+ // isFetched = selectors.isPageFetched(list, token, currentPage),
43
+ // isNextFetching = selectors.isPageFetching(list, token, currentPage + 1),
44
+ // isNextFetched = selectors.isPageFetched(list, token, currentPage + 1),
45
+ // eslint-disable-next-line max-len
46
+ // resultsUpTo = selectors.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad),
47
+ // items = settings.manipulateItems(resultsUpTo),
48
+ // total = selectors.getCurrentTotalResultsCount(list, token),
49
+ // // currentPage was previously given to the following function
50
+ // hasProblems = selectors.hasPageProblems(list, token),
51
+ // shouldLoadNext = !isNextFetched && !isNextFetching;
52
+ // return Immutable.Map({
53
+ // currentPage,
54
+ // hasProblems,
55
+ // isFetched,
56
+ // isFetching,
57
+ // items,
58
+ // shouldLoadNext,
59
+ // total,
60
+ // });
61
+ // }, [list, entities, token]),
62
+ currentPage = selectors_1.default.getCurrentView(list, token), isFetching = selectors_1.default.isPageFetching(list, token, currentPage), isFetched = selectors_1.default.isPageFetched(list, token, currentPage), isNextFetching = selectors_1.default.isPageFetching(list, token, currentPage + 1), isNextFetched = selectors_1.default.isPageFetched(list, token, currentPage + 1),
63
+ // eslint-disable-next-line max-len
64
+ resultsUpTo = selectors_1.default.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad), items = settings.manipulateItems(resultsUpTo), total = selectors_1.default.getCurrentTotalResultsCount(list, token),
65
+ // currentPage was previously given to the following function
66
+ hasProblems = selectors_1.default.hasPageProblems(list, token), shouldLoadNext = !isNextFetched && !isNextFetching, paginator = Immutable.Map({
67
+ currentPage,
68
+ hasProblems,
69
+ isFetched,
70
+ isFetching,
71
+ items,
72
+ shouldLoadNext,
73
+ total,
74
+ }), dispatch = (0, react_redux_1.useDispatch)(), resetView = (currentToken) => dispatch(settings.resetView(currentToken)), changeView = (data) => dispatch(settings.changeView(data)), loadData = (page) => dispatch(settings.requestPage(String(page), token)),
75
+ // items = paginator.get("items"),
76
+ // hasProblems = paginator.get("hasProblems"),
77
+ // currentPage = paginator.get("currentPage"),
78
+ // isFetching = paginator.get("isFetching"),
79
+ showLoading = paginator.get("total") !== items.size,
80
+ // isFetched = paginator.get("isFetched"),
81
+ shouldFetch = !isFetched && !isFetching, handleLoadMoreClick = () => {
82
+ // const
83
+ // shouldLoadNext = paginator.get("shouldLoadNext");
54
84
  if (hasProblems) {
55
85
  loadData(currentPage);
56
86
  }
@@ -64,11 +94,13 @@ const LoadPaginator = (props) => {
64
94
  }
65
95
  }
66
96
  };
97
+ // eslint-disable-next-line no-console
98
+ console.log("paginator", paginator ? paginator.toJS() : null);
99
+ (0, react_1.useEffect)(() => (() => resetView(token)), []);
67
100
  (0, react_1.useEffect)(() => {
68
101
  if (shouldFetch) {
69
102
  loadData(currentPage);
70
103
  }
71
- return () => resetView(token);
72
104
  }, [shouldFetch, paginator]);
73
105
  if (items.size === 0 && isFetching) {
74
106
  return react_1.default.createElement(Messages_1.LoadingMessage, { message: words_1.default.LoadingData });
@@ -80,10 +112,10 @@ const LoadPaginator = (props) => {
80
112
  react_1.default.cloneElement(props.children, {
81
113
  token: props.token,
82
114
  settings: props.settings,
83
- paginator: props.paginator,
84
- changeView: props.changeView,
85
- resetView: props.resetView,
86
- loadData: props.loadData,
115
+ paginator,
116
+ changeView,
117
+ resetView,
118
+ loadData,
87
119
  }),
88
120
  showLoading ? (react_1.default.createElement(LoadingButton_1.default, { hasProblems: hasProblems, isFetching: isFetching, onLoadMoreClick: handleLoadMoreClick })) : null));
89
121
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LoadPaginator.js","sourceRoot":"","sources":["../src/LoadPaginator.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoadPaginator.js","sourceRoot":"","sources":["../src/LoadPaginator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /// <reference types="react" />
2
+ declare type Settings = {
3
+ key: string;
4
+ rowsPerLoad: number;
5
+ manipulateItems: (items: any) => any;
6
+ resetView: (data: any) => any;
7
+ changeView: (data: any) => any;
8
+ requestPage: (page: string, token: string) => any;
9
+ };
10
+ export declare type LoadPaginatorPropTypes = {
11
+ token: string;
12
+ settings: Settings;
13
+ children: JSX.Element;
14
+ };
15
+ export declare type ChangeView = (info: {
16
+ token: string;
17
+ view: number;
18
+ }) => any;
19
+ export declare type ResetView = (token: string) => any;
20
+ export declare type LoadData = (page: number) => any;
21
+ export declare type List = {
22
+ token: string;
23
+ settings: Settings;
24
+ paginator: any;
25
+ changeView: ChangeView;
26
+ resetView: ResetView;
27
+ loadData: LoadData;
28
+ };
29
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=LoadPaginatorTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadPaginatorTypes.js","sourceRoot":"","sources":["../src/LoadPaginatorTypes.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "redux-paginator-immutable",
3
- "version": "17.0.28",
3
+ "version": "17.0.31",
4
4
  "types": "./lib/index.d.ts",
5
5
  "description": "redux-paginator-immutable helps you deal with paginated API by composing your existing reducers",
6
6
  "main": "./lib/index.js",
@@ -1,5 +1,5 @@
1
1
 
2
- import React, { useEffect, useMemo } from "react";
2
+ import React, { useEffect } from "react";
3
3
  import * as Immutable from "immutable";
4
4
  import { useDispatch, useSelector } from "react-redux";
5
5
  import { LargeErrorMessage, LoadingMessage } from "x25/Messages";
@@ -7,38 +7,7 @@ import selectors from "./selectors";
7
7
  import LoadingButton from "./LoadingButton";
8
8
  import words from "./words";
9
9
 
10
- type Settings = {
11
- key: string;
12
- rowsPerLoad: number;
13
- manipulateItems: (items: any) => any;
14
- resetView: (data: any) => any;
15
- changeView: (data: any) => any;
16
- requestPage: (page: string, token: string) => any;
17
- };
18
- type LoadPaginatorPropTypes = {
19
- token: string;
20
- children: React.ReactElement<any>;
21
- settings: Settings;
22
- paginator: any;
23
- changeView: (info: {
24
- token: string;
25
- view: number;
26
- }) => any;
27
- resetView: (token: string) => any;
28
- loadData: (page: number) => any;
29
- };
30
-
31
- type List = {
32
- token: string;
33
- settings: Settings;
34
- paginator: any;
35
- changeView: (info: {
36
- token: string;
37
- view: number;
38
- }) => void;
39
- resetView: (token: string) => void;
40
- loadData: (page: number) => void;
41
- }
10
+ import { ChangeView, List, LoadData, LoadPaginatorPropTypes, ResetView } from "./LoadPaginatorTypes";
42
11
 
43
12
  const
44
13
  LoadPaginator = (props : LoadPaginatorPropTypes) => {
@@ -49,48 +18,72 @@ const
49
18
  selectors.getPaginators(state, settings.key)
50
19
  )),
51
20
 
52
- paginator = useMemo(() => {
53
- const
54
- currentPage = selectors.getCurrentView(list, token),
55
- isFetching = selectors.isPageFetching(list, token, currentPage),
56
- isFetched = selectors.isPageFetched(list, token, currentPage),
57
- isNextFetching = selectors.isPageFetching(list, token, currentPage + 1),
58
- isNextFetched = selectors.isPageFetched(list, token, currentPage + 1),
59
- // eslint-disable-next-line max-len
60
- resultsUpTo = selectors.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad),
61
- items = settings.manipulateItems(resultsUpTo),
62
- total = selectors.getCurrentTotalResultsCount(list, token),
63
- // currentPage was previously given to the following function
64
- hasProblems = selectors.hasPageProblems(list, token),
65
- shouldLoadNext = !isNextFetched && !isNextFetching;
66
-
67
- return Immutable.Map({
68
- currentPage,
69
- hasProblems,
70
- isFetched,
71
- isFetching,
72
- items,
73
- shouldLoadNext,
74
- total,
75
- });
76
- }, [list, entities]),
21
+ // paginator = useMemo(() => {
22
+ // const
23
+ // currentPage = selectors.getCurrentView(list, token),
24
+ // isFetching = selectors.isPageFetching(list, token, currentPage),
25
+ // isFetched = selectors.isPageFetched(list, token, currentPage),
26
+ // isNextFetching = selectors.isPageFetching(list, token, currentPage + 1),
27
+ // isNextFetched = selectors.isPageFetched(list, token, currentPage + 1),
28
+ // eslint-disable-next-line max-len
29
+ // resultsUpTo = selectors.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad),
30
+ // items = settings.manipulateItems(resultsUpTo),
31
+ // total = selectors.getCurrentTotalResultsCount(list, token),
32
+ // // currentPage was previously given to the following function
33
+ // hasProblems = selectors.hasPageProblems(list, token),
34
+ // shouldLoadNext = !isNextFetched && !isNextFetching;
35
+
36
+ // return Immutable.Map({
37
+ // currentPage,
38
+ // hasProblems,
39
+ // isFetched,
40
+ // isFetching,
41
+ // items,
42
+ // shouldLoadNext,
43
+ // total,
44
+ // });
45
+ // }, [list, entities, token]),
46
+
47
+
48
+ currentPage = selectors.getCurrentView(list, token),
49
+ isFetching = selectors.isPageFetching(list, token, currentPage),
50
+ isFetched = selectors.isPageFetched(list, token, currentPage),
51
+ isNextFetching = selectors.isPageFetching(list, token, currentPage + 1),
52
+ isNextFetched = selectors.isPageFetched(list, token, currentPage + 1),
53
+ // eslint-disable-next-line max-len
54
+ resultsUpTo = selectors.getResultsUpToPage(list, token, entities, currentPage, settings.rowsPerLoad),
55
+ items = settings.manipulateItems(resultsUpTo),
56
+ total = selectors.getCurrentTotalResultsCount(list, token),
57
+ // currentPage was previously given to the following function
58
+ hasProblems = selectors.hasPageProblems(list, token),
59
+ shouldLoadNext = !isNextFetched && !isNextFetching,
60
+
61
+ paginator = Immutable.Map({
62
+ currentPage,
63
+ hasProblems,
64
+ isFetched,
65
+ isFetching,
66
+ items,
67
+ shouldLoadNext,
68
+ total,
69
+ }),
77
70
 
78
71
  dispatch = useDispatch(),
79
- resetView = (data : any) => dispatch(settings.resetView(data)),
80
- changeView = (data : any) => dispatch(settings.changeView(data)),
81
- loadData = (page : any) => dispatch(settings.requestPage(page, token)),
82
-
83
- items = paginator.get("items"),
84
- hasProblems = paginator.get("hasProblems"),
85
- currentPage = paginator.get("currentPage"),
86
- isFetching = paginator.get("isFetching"),
72
+ resetView : ResetView = (currentToken) => dispatch(settings.resetView(currentToken)),
73
+ changeView : ChangeView = (data) => dispatch(settings.changeView(data)),
74
+ loadData : LoadData = (page) => dispatch(settings.requestPage(String(page), token)),
75
+
76
+ // items = paginator.get("items"),
77
+ // hasProblems = paginator.get("hasProblems"),
78
+ // currentPage = paginator.get("currentPage"),
79
+ // isFetching = paginator.get("isFetching"),
87
80
  showLoading = paginator.get("total") !== items.size,
88
81
 
89
- isFetched = paginator.get("isFetched"),
82
+ // isFetched = paginator.get("isFetched"),
90
83
  shouldFetch = !isFetched && !isFetching,
91
84
  handleLoadMoreClick = () => {
92
- const
93
- shouldLoadNext = paginator.get("shouldLoadNext");
85
+ // const
86
+ // shouldLoadNext = paginator.get("shouldLoadNext");
94
87
 
95
88
  if (hasProblems) {
96
89
  loadData(currentPage);
@@ -106,12 +99,18 @@ const
106
99
  }
107
100
  };
108
101
 
102
+ // eslint-disable-next-line no-console
103
+ console.log("paginator", paginator ? paginator.toJS() : null);
104
+
105
+
106
+ useEffect(() => (
107
+ () => resetView(token)
108
+ ), []);
109
+
109
110
  useEffect(() => {
110
111
  if (shouldFetch) {
111
112
  loadData(currentPage);
112
113
  }
113
-
114
- return () => resetView(token);
115
114
  }, [shouldFetch, paginator]);
116
115
 
117
116
  if (items.size === 0 && isFetching) {
@@ -131,12 +130,12 @@ const
131
130
  <>
132
131
  {
133
132
  React.cloneElement(props.children as React.ReactElement<List>, {
134
- token : props.token,
135
- settings : props.settings,
136
- paginator : props.paginator,
137
- changeView : props.changeView,
138
- resetView : props.resetView,
139
- loadData : props.loadData,
133
+ token : props.token,
134
+ settings : props.settings,
135
+ paginator,
136
+ changeView,
137
+ resetView,
138
+ loadData,
140
139
  })
141
140
  }
142
141
  {
@@ -0,0 +1,31 @@
1
+ type Settings = {
2
+ key: string;
3
+ rowsPerLoad: number;
4
+ manipulateItems: (items: any) => any;
5
+ resetView: (data: any) => any;
6
+ changeView: (data: any) => any;
7
+ requestPage: (page: string, token: string) => any;
8
+ };
9
+ export type LoadPaginatorPropTypes = {
10
+ token: string;
11
+ settings: Settings;
12
+ children: JSX.Element;
13
+ };
14
+
15
+ export type ChangeView = (info: {
16
+ token: string;
17
+ view: number;
18
+ }) => any;
19
+
20
+ export type ResetView = (token: string) => any;
21
+
22
+ export type LoadData = (page: number) => any;
23
+
24
+ export type List = {
25
+ token: string;
26
+ settings: Settings;
27
+ paginator: any;
28
+ changeView: ChangeView;
29
+ resetView: ResetView;
30
+ loadData: LoadData;
31
+ }