fix(entries-pagination): keep loading pages until entries are available (#4021)
This commit is contained in:
parent
46f513d342
commit
9119011c8f
@ -58,7 +58,7 @@
|
|||||||
"react-split-pane": "^0.1.85",
|
"react-split-pane": "^0.1.85",
|
||||||
"react-topbar-progress-indicator": "^2.0.0",
|
"react-topbar-progress-indicator": "^2.0.0",
|
||||||
"react-virtualized-auto-sizer": "^1.0.2",
|
"react-virtualized-auto-sizer": "^1.0.2",
|
||||||
"react-waypoint": "^8.1.0",
|
"react-waypoint": "^9.0.3",
|
||||||
"react-window": "^1.8.5",
|
"react-window": "^1.8.5",
|
||||||
"redux": "^4.0.5",
|
"redux": "^4.0.5",
|
||||||
"redux-notifications": "^4.0.1",
|
"redux-notifications": "^4.0.1",
|
||||||
|
@ -36,7 +36,8 @@ const Entries = ({
|
|||||||
return <Loader active>{loadingMessages}</Loader>;
|
return <Loader active>{loadingMessages}</Loader>;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entries && entries.size > 0) {
|
const hasEntries = (entries && entries.size > 0) || cursor?.actions?.has('append_next');
|
||||||
|
if (hasEntries) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<EntryListing
|
<EntryListing
|
||||||
@ -45,8 +46,9 @@ const Entries = ({
|
|||||||
viewStyle={viewStyle}
|
viewStyle={viewStyle}
|
||||||
cursor={cursor}
|
cursor={cursor}
|
||||||
handleCursorActions={handleCursorActions}
|
handleCursorActions={handleCursorActions}
|
||||||
|
page={page}
|
||||||
/>
|
/>
|
||||||
{isFetching && page !== undefined ? (
|
{isFetching && page !== undefined && entries.size > 0 ? (
|
||||||
<PaginationMessage>{t('collection.entries.loadingEntries')}</PaginationMessage>
|
<PaginationMessage>{t('collection.entries.loadingEntries')}</PaginationMessage>
|
||||||
) : null}
|
) : null}
|
||||||
</>
|
</>
|
||||||
|
@ -2,9 +2,8 @@ import PropTypes from 'prop-types';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
import Waypoint from 'react-waypoint';
|
import { Waypoint } from 'react-waypoint';
|
||||||
import { Map } from 'immutable';
|
import { Map } from 'immutable';
|
||||||
import { Cursor } from 'netlify-cms-lib-util';
|
|
||||||
import { selectFields, selectInferedField } from 'Reducers/collections';
|
import { selectFields, selectInferedField } from 'Reducers/collections';
|
||||||
import EntryCard from './EntryCard';
|
import EntryCard from './EntryCard';
|
||||||
|
|
||||||
@ -24,10 +23,12 @@ export default class EntryListing extends React.Component {
|
|||||||
viewStyle: PropTypes.string,
|
viewStyle: PropTypes.string,
|
||||||
cursor: PropTypes.any.isRequired,
|
cursor: PropTypes.any.isRequired,
|
||||||
handleCursorActions: PropTypes.func.isRequired,
|
handleCursorActions: PropTypes.func.isRequired,
|
||||||
|
page: PropTypes.number,
|
||||||
};
|
};
|
||||||
|
|
||||||
hasMore = () => {
|
hasMore = () => {
|
||||||
return Cursor.create(this.props.cursor).actions.has('append_next');
|
const hasMore = this.props.cursor?.actions?.has('append_next');
|
||||||
|
return hasMore;
|
||||||
};
|
};
|
||||||
|
|
||||||
handleLoadMore = () => {
|
handleLoadMore = () => {
|
||||||
@ -68,7 +69,7 @@ export default class EntryListing extends React.Component {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { collections } = this.props;
|
const { collections, page } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@ -76,7 +77,7 @@ export default class EntryListing extends React.Component {
|
|||||||
{Map.isMap(collections)
|
{Map.isMap(collections)
|
||||||
? this.renderCardsForSingleCollection()
|
? this.renderCardsForSingleCollection()
|
||||||
: this.renderCardsForMultipleCollections()}
|
: this.renderCardsForMultipleCollections()}
|
||||||
{this.hasMore() && <Waypoint onEnter={this.handleLoadMore} />}
|
{this.hasMore() && <Waypoint key={page} onEnter={this.handleLoadMore} />}
|
||||||
</CardsGrid>
|
</CardsGrid>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -14350,10 +14350,10 @@ react-virtualized-auto-sizer@^1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz#a61dd4f756458bbf63bd895a92379f9b70f803bd"
|
resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.2.tgz#a61dd4f756458bbf63bd895a92379f9b70f803bd"
|
||||||
integrity sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg==
|
integrity sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg==
|
||||||
|
|
||||||
react-waypoint@^8.1.0:
|
react-waypoint@^9.0.3:
|
||||||
version "8.1.0"
|
version "9.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-8.1.0.tgz#91d926a2fd1be4cbd0351cb8c3d494fac0ef1699"
|
resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-9.0.3.tgz#176aa4686b33eb40d0d48d361c468f0367167958"
|
||||||
integrity sha512-HoOItWTHObgz7bstmz9p3wuTVDRdsyNspnkAOFz9eE4z8LRj1bbNP9Nzye2k9zsFiujlz8lmp13UFmuXPWXPYw==
|
integrity sha512-NRmyjW8CUBNNl4WpvBqLDgBs18rFUsixeHVHrRrFlWTdOlWP7eiDjptqlR/cJAPLD6RwP5XFCm3bi9OiofN3nA==
|
||||||
dependencies:
|
dependencies:
|
||||||
consolidated-events "^1.1.0 || ^2.0.0"
|
consolidated-events "^1.1.0 || ^2.0.0"
|
||||||
prop-types "^15.0.0"
|
prop-types "^15.0.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user