buli
2023-07-11 0c4796706fc9473d069b620321a54b20a119906c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
        }
    }
}