import { LightningElement, wire } from 'lwc';
|
import getAccountsPaginated from '@salesforce/apex/PaginatedListControllerLwc.getAccountsPaginated';
|
import ACCOUNT_NAME_FIELD from '@salesforce/schema/Account.Name';
|
import ACCOUNT_TYPE_FIELD from '@salesforce/schema/Account.Type';
|
import ACCOUNT_PHONE_FIELD from '@salesforce/schema/Account.Phone';
|
import ACCOUNT_EMPLOYEES_FIELD from '@salesforce/schema/Account.NumberOfEmployees';
|
|
const COLUMNS = [
|
{
|
label: 'Account Name',
|
fieldName: ACCOUNT_NAME_FIELD.fieldApiName,
|
type: 'text'
|
},
|
{ label: 'Type', fieldName: ACCOUNT_TYPE_FIELD.fieldApiName, type: 'text' },
|
{
|
label: 'Phone',
|
fieldName: ACCOUNT_PHONE_FIELD.fieldApiName,
|
type: 'phone'
|
},
|
{
|
label: 'Employees',
|
fieldName: ACCOUNT_EMPLOYEES_FIELD.fieldApiName,
|
type: 'number'
|
}
|
];
|
const PAGE_SIZE = 5;
|
|
export default class ListInfiniteScrolling extends LightningElement {
|
columns = COLUMNS;
|
error;
|
records = [];
|
_currentPageToken = 0;
|
_nextPageToken = PAGE_SIZE;
|
|
@wire(getAccountsPaginated, {
|
pageSize: PAGE_SIZE,
|
pageToken: '$_currentPageToken'
|
})
|
wiredAccounts({ data, error }) {
|
if (data) {
|
this.records = this.records.concat(data.records);
|
this._nextPageToken = data.nextPageToken;
|
} else if (error) {
|
this.records = null;
|
this.error = error;
|
}
|
}
|
|
loadMoreData() {
|
if (this._nextPageToken) {
|
this._currentPageToken = this._nextPageToken;
|
}
|
}
|
}
|