Prevent flashing when filter is updated

This commit is contained in:
Infinite
2020-02-07 23:09:18 +01:00
parent 4e5c65f90d
commit a5036ebe5f

View File

@@ -322,37 +322,42 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
}) })
: undefined; : undefined;
const template = ( let template;
<div> if(result.loading || !forageInitialised.current) {
<ListFilter template = <LoadingIndicator />;
onChangePageSize={onChangePageSize} } else if(result.error) {
onChangeQuery={onChangeQuery} template = <h1>{result.error.message}</h1>;
onChangeSortDirection={onChangeSortDirection} } else {
onChangeSortBy={onChangeSortBy} template = (
onChangeDisplayMode={onChangeDisplayMode} <div>
onAddCriterion={onAddCriterion} <ListFilter
onRemoveCriterion={onRemoveCriterion} onChangePageSize={onChangePageSize}
onSelectAll={onSelectAll} onChangeQuery={onChangeQuery}
onSelectNone={onSelectNone} onChangeSortDirection={onChangeSortDirection}
zoomIndex={options.zoomable ? zoomIndex : undefined} onChangeSortBy={onChangeSortBy}
onChangeZoom={options.zoomable ? onChangeZoom : undefined} onChangeDisplayMode={onChangeDisplayMode}
otherOperations={otherOperations} onAddCriterion={onAddCriterion}
filter={filter} onRemoveCriterion={onRemoveCriterion}
/> onSelectAll={onSelectAll}
{options.renderSelectedOptions && selectedIds.size > 0 onSelectNone={onSelectNone}
? options.renderSelectedOptions(result, selectedIds) zoomIndex={options.zoomable ? zoomIndex : undefined}
: undefined} onChangeZoom={options.zoomable ? onChangeZoom : undefined}
{result.loading && <LoadingIndicator />} otherOperations={otherOperations}
{result.error && <h1>{result.error.message}</h1>} filter={filter}
{options.renderContent(result, filter, selectedIds, zoomIndex)} />
<Pagination {options.renderSelectedOptions && selectedIds.size > 0
itemsPerPage={filter.itemsPerPage} ? options.renderSelectedOptions(result, selectedIds)
currentPage={filter.currentPage} : undefined}
totalItems={totalCount} {options.renderContent(result, filter, selectedIds, zoomIndex)}
onChangePage={onChangePage} <Pagination
/> itemsPerPage={filter.itemsPerPage}
</div> currentPage={filter.currentPage}
); totalItems={totalCount}
onChangePage={onChangePage}
/>
</div>
);
}
return { filter, template, onSelectChange }; return { filter, template, onSelectChange };
}; };