diff --git a/next-ui/src/components.d.ts b/next-ui/src/components.d.ts index 24194d34..39ff74c2 100644 --- a/next-ui/src/components.d.ts +++ b/next-ui/src/components.d.ts @@ -94,6 +94,8 @@ declare module 'vue' { PageHashMatchTable: typeof import('./components/pageHash/MatchTable.vue')['default'] PageHashUnknownTable: typeof import('./components/pageHash/UnknownTable.vue')['default'] PageSizeSelector: typeof import('./components/PageSizeSelector.vue')['default'] + PagingSelector: typeof import('./components/PagingSelector.vue')['default'] + PosterSizeSlider: typeof import('./components/PosterSizeSlider.vue')['default'] PresentationSelector: typeof import('./components/PresentationSelector.vue')['default'] ReleaseCard: typeof import('./components/release/Card.vue')['default'] RemoteFileList: typeof import('./components/RemoteFileList.vue')['default'] diff --git a/next-ui/src/components/PagingSelector.stories.ts b/next-ui/src/components/PagingSelector.stories.ts new file mode 100644 index 00000000..e64e8b44 --- /dev/null +++ b/next-ui/src/components/PagingSelector.stories.ts @@ -0,0 +1,40 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' + +import PagingSelector from './PagingSelector.vue' +import { fn } from 'storybook/test' + +const meta = { + component: PagingSelector, + render: (args: object) => ({ + components: { PagingSelector }, + setup() { + return { args } + }, + template: '', + }), + parameters: { + // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout + docs: { + description: { + component: '', + }, + }, + }, + args: { + modelValue: 'scroll', + 'onUpdate:modelValue': fn(), + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Scroll: Story = { + args: {}, +} + +export const Paged: Story = { + args: { + modelValue: 'paged', + }, +} diff --git a/next-ui/src/components/PagingSelector.vue b/next-ui/src/components/PagingSelector.vue new file mode 100644 index 00000000..f2505c63 --- /dev/null +++ b/next-ui/src/components/PagingSelector.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/next-ui/src/components/PosterSizeSlider.vue b/next-ui/src/components/PosterSizeSlider.vue new file mode 100644 index 00000000..1c8a3b78 --- /dev/null +++ b/next-ui/src/components/PosterSizeSlider.vue @@ -0,0 +1,24 @@ + + + + + + + diff --git a/next-ui/src/components/filter/by/Author.vue b/next-ui/src/components/filter/by/Author.vue index 165dcf0d..d2380615 100644 --- a/next-ui/src/components/filter/by/Author.vue +++ b/next-ui/src/components/filter/by/Author.vue @@ -70,8 +70,7 @@ const { data: infiniteData, loadNextPage } = useInfiniteQuery({ }) // unwrap the openapi-fetch structure on success .then((res) => res.data), - getNextPageParam: (lastPage) => - !lastPage?.last ? new PageRequest((lastPage?.number ?? 0) + 1, lastPage?.size) : null, + getNextPageParam: (lastPage, _, lastPageParam) => (!lastPage?.last ? lastPageParam.next() : null), }) const infiniteItems = computed(() => { const itemTypes = (infiniteData.value?.pages.flatMap((it) => it?.content ?? []) ?? []).map((it) => diff --git a/next-ui/src/components/filter/by/Genre.vue b/next-ui/src/components/filter/by/Genre.vue index 359c8f1b..bf074513 100644 --- a/next-ui/src/components/filter/by/Genre.vue +++ b/next-ui/src/components/filter/by/Genre.vue @@ -65,8 +65,7 @@ const { data: infiniteData, loadNextPage } = useInfiniteQuery({ }) // unwrap the openapi-fetch structure on success .then((res) => res.data), - getNextPageParam: (lastPage) => - !lastPage?.last ? new PageRequest((lastPage?.number ?? 0) + 1, lastPage?.size) : null, + getNextPageParam: (lastPage, _, lastPageParam) => (!lastPage?.last ? lastPageParam.next() : null), }) const infiniteItems = computed(() => { const itemTypes = (infiniteData.value?.pages.flatMap((it) => it?.content ?? []) ?? []).map((it) => diff --git a/next-ui/src/components/filter/by/Publisher.vue b/next-ui/src/components/filter/by/Publisher.vue index ccd506ae..20274a78 100644 --- a/next-ui/src/components/filter/by/Publisher.vue +++ b/next-ui/src/components/filter/by/Publisher.vue @@ -65,8 +65,7 @@ const { data: infiniteData, loadNextPage } = useInfiniteQuery({ }) // unwrap the openapi-fetch structure on success .then((res) => res.data), - getNextPageParam: (lastPage) => - !lastPage?.last ? new PageRequest((lastPage?.number ?? 0) + 1, lastPage?.size) : null, + getNextPageParam: (lastPage, _, lastPageParam) => (!lastPage?.last ? lastPageParam.next() : null), }) const infiniteItems = computed(() => { const itemTypes = (infiniteData.value?.pages.flatMap((it) => it?.content ?? []) ?? []).map((it) => diff --git a/next-ui/src/components/filter/by/SharingLabel.vue b/next-ui/src/components/filter/by/SharingLabel.vue index ae9ec32d..e3ccd68b 100644 --- a/next-ui/src/components/filter/by/SharingLabel.vue +++ b/next-ui/src/components/filter/by/SharingLabel.vue @@ -65,8 +65,7 @@ const { data: infiniteData, loadNextPage } = useInfiniteQuery({ }) // unwrap the openapi-fetch structure on success .then((res) => res.data), - getNextPageParam: (lastPage) => - !lastPage?.last ? new PageRequest((lastPage?.number ?? 0) + 1, lastPage?.size) : null, + getNextPageParam: (lastPage, _, lastPageParam) => (!lastPage?.last ? lastPageParam.next() : null), }) const infiniteItems = computed(() => { const itemTypes = (infiniteData.value?.pages.flatMap((it) => it?.content ?? []) ?? []).map((it) => diff --git a/next-ui/src/components/filter/by/Tag.vue b/next-ui/src/components/filter/by/Tag.vue index e1b3c295..123aa6e7 100644 --- a/next-ui/src/components/filter/by/Tag.vue +++ b/next-ui/src/components/filter/by/Tag.vue @@ -70,8 +70,7 @@ const { data: infiniteData, loadNextPage } = useInfiniteQuery({ }) // unwrap the openapi-fetch structure on success .then((res) => res.data), - getNextPageParam: (lastPage) => - !lastPage?.last ? new PageRequest((lastPage?.number ?? 0) + 1, lastPage?.size) : null, + getNextPageParam: (lastPage, _, lastPageParam) => (!lastPage?.last ? lastPageParam.next() : null), }) const infiniteItems = computed(() => { const itemTypes = (infiniteData.value?.pages.flatMap((it) => it?.content ?? []) ?? []).map((it) => diff --git a/next-ui/src/pages/libraries/[id]/series.vue b/next-ui/src/pages/libraries/[id]/series.vue index a554b47c..596591a5 100644 --- a/next-ui/src/pages/libraries/[id]/series.vue +++ b/next-ui/src/pages/libraries/[id]/series.vue @@ -2,16 +2,7 @@ - + + + + - + + + + +