alist
alist copied to clipboard
can't get all selections when pagination changed
See demo: https://codesandbox.io/s/blissful-fog-ixhix
Note: Maybe antd's limitations.
Here is a temporary solution:
import { ListLifeCycleTypes } from '@alist/antd';
export default ($, actions) => {
console.log($, actions);
let crossPaginationSelectedRecords = new Set();
$(ListLifeCycleTypes.ON_LIST_MOUNTED).subscribe((payload) => {
// enable selection feature
actions.setRowSelection({ ids: [2] });
});
$(ListLifeCycleTypes.ON_LIST_SELECT_CHANGE).subscribe((payload) => {
console.log("ON_LIST_SELECT_CHANGE", payload);
try {
// remove current page's record
actions.getDataSource().map(t => t.id).forEach(item => {
crossPaginationSelectedRecords.delete(item);
});
// add current page's payload
payload.ids.forEach(id => crossPaginationSelectedRecords.add(id));
console.log('crossPaginationSelectedRecords => ', crossPaginationSelectedRecords)
} catch(err) {
console.log(err);
}
});
// https://github.com/alibaba/alist/issues/44
$(ListLifeCycleTypes.WILL_LIST_UPDATE).subscribe(() => {
// manually set
actions.crossPaginationSelectedRecords = crossPaginationSelectedRecords;
actions.setRowSelection({ ids: Array.from(crossPaginationSelectedRecords) });
console.log('WILL_LIST_UPDATE', actions.getRowSelection().records.map(t => t.id), crossPaginationSelectedRecords);
});
};