forked from tsai/budibase
11 changed files with 160 additions and 104 deletions
@ -1,31 +1,56 @@ |
|||||
export class PageInfo { |
import { writable } from "svelte/store" |
||||
constructor(fetch) { |
|
||||
this.reset() |
function defaultValue() { |
||||
this.fetch = fetch |
return { |
||||
|
nextPage: null, |
||||
|
page: undefined, |
||||
|
hasPrevPage: false, |
||||
|
hasNextPage: false, |
||||
|
pageNumber: 1, |
||||
|
pages: [], |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export function createPaginationStore() { |
||||
|
const { subscribe, set, update } = writable(defaultValue()) |
||||
|
|
||||
|
function prevPage() { |
||||
|
update(state => { |
||||
|
state.pageNumber-- |
||||
|
state.nextPage = state.pages.pop() |
||||
|
state.page = state.pages[state.pages.length - 1] |
||||
|
state.hasPrevPage = state.pageNumber > 1 |
||||
|
return state |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
function nextPage() { |
||||
|
update(state => { |
||||
|
state.pageNumber++ |
||||
|
state.page = state.nextPage |
||||
|
state.pages.push(state.page) |
||||
|
state.hasPrevPage = state.pageNumber > 1 |
||||
|
return state |
||||
|
}) |
||||
} |
} |
||||
|
|
||||
async goToNextPage() { |
function fetched(hasNextPage, nextPage) { |
||||
this.pageNumber++ |
update(state => { |
||||
this.prevPage = this.page |
state.hasNextPage = hasNextPage |
||||
this.page = this.nextPage |
state.nextPage = nextPage |
||||
this.hasPrevPage = this.pageNumber > 1 |
return state |
||||
await this.fetch(this.page) |
}) |
||||
} |
} |
||||
|
|
||||
async goToPrevPage() { |
function reset() { |
||||
this.pageNumber-- |
set(defaultValue()) |
||||
this.nextPage = this.page |
|
||||
this.page = this.prevPage |
|
||||
this.hasPrevPage = this.pageNumber > 1 |
|
||||
await this.fetch(this.page) |
|
||||
} |
} |
||||
|
|
||||
reset() { |
return { |
||||
this.prevPage = null |
subscribe, |
||||
this.nextPage = null |
prevPage, |
||||
this.page = undefined |
nextPage, |
||||
this.hasPrevPage = false |
fetched, |
||||
this.hasNextPage = false |
reset, |
||||
this.pageNumber = 1 |
|
||||
} |
} |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue