Pagination
The Pagination component is responsive and flexible way to indicate a series of related content exists across multiple pages. It can be used to displays data in paged format and provides navigation between pages. The root element is a HTML native nav element to indicate a navigation section. The component uses the Button component for the navigation elements.
Examples
Base
The component uses three main properties: the current
prop,which is two-way bindable and shows the active page; the total
prop, which defines the total number of pages; and the per-page
prop, which is used to define the number of elements per page. The current page is marked with aria-current
set to "page" as well. In addition, since pages likely have more than one navigation section, it is advisable to provide a descriptive aria-label
for the nav
element to reflect its purpose.
Simple
The component can be displayed in a simplified state by using the simple
prop. This simplified representation uses aria-live="polite"
to notify the screen reader of changes to the pagination state.
Positions
The compoponent can be positioned by the position
prop.
Sizes
The component can be displayed in different sizes using the size
prop.
Disabled
Use thedisabled
prop to prevent buttons from being clicked.
Customise
Slots
The component can be further customised by using template slots to override specific buttons.
Pagination Component
A responsive and flexible paginator navigation.
<o-pagination></o-pagination>
Props
Prop name | Description | Type | Values | Default |
---|---|---|---|---|
ariaCurrentLabel | Accessibility label for the current page button. | string | - | From config: pagination: { |
ariaNextLabel | Accessibility label for the next page button. | string | - | From config: pagination: { |
ariaPageLabel | Accessibility label for the page button. | string | - | From config: pagination: { |
ariaPreviousLabel | Accessibility label for the previous page button. | string | - | From config: pagination: { |
buttonTag | Pagination button tag name | DynamicComponent | - | From config: pagination: { |
current | Current page number, use v-model:current to make it two-way binding | number | - | 1 |
disabled | Buttons will be disabled | boolean | - | false |
iconNext | Icon to use for next button | string | - | From config: pagination: { |
iconPack | Icon pack to use | string | mdi , fa , fas and any other custom icon pack | From config: pagination: { |
iconPrev | Icon to use for previous button | string | - | From config: pagination: { |
mobileBreakpoint | Mobile breakpoint as max-width value | string | - | From config: pagination: { |
order | Buttons order | "centered" | "left" | "right" | centered , right , left | From config: pagination: { |
override | Override existing theme classes completely | boolean | - | |
perPage | Items count for each page | number | string | - | From config: pagination: { |
position | Buttons position order | "centered" | "left" | "right" | centered , right , left | From config: pagination: { |
rangeAfter | Number of pagination items to show after current page | number | - | 1 |
rangeBefore | Number of pagination items to show before current page | number | - | 1 |
rounded | Enable rounded button style | boolean | - | From config: pagination: { |
simple | Enable simple style | boolean | - | From config: pagination: { |
size | Pagination size | string | small , medium , large | From config: pagination: { |
total | Total count of items | number | - |
Events
Event name | Properties | Description |
---|---|---|
update:current | value number - updated current prop | current prop two-way binding |
change | value number - current value | on current change event |
next | event Event - native click eventvalue number - new current value | on next button event click |
previous | event Event - native click eventvalue number - new current value | on previous button event |
Slots
Name | Description | Bindings |
---|---|---|
previous | Previous button slot | number number - page numberisCurrent boolean - if page is currentonClick (event: Event): void - click handlerariaLabel string - aria-label attribute |
next | Next button slot | number number - page numberisCurrent boolean - if page is currentonClick (event: Event): void - click handlerariaLabel string - aria-label attribute |
default | Pagination button slot | number number - page numberisCurrent boolean - if page is currentonClick (event: Event): void - click handlerariaLabel string - aria-label attribute |
Class Inspector
Class prop | Description | Props | Suffixes | |
---|---|---|---|---|
rootClass | Class of the root element. | |||
mobileClass | Class of the root element when on mobile. 👉 Switch to mobile view to see it in action! | |||
orderClass | Class of the root element with order. | order | centered | |
positionClass | Class of the root element with position. | position | centered | |
sizeClass | Class for the root elemnt with size. | size | small | |
simpleClass | Class of the root element when in `simple` mode. | simple | ||
infoClass | Class of the page info in `simple` mode. | simple | ||
listClass | Class of the items list element. | |||
listItemClass | Class of the list item element. | |||
ellipsisClass | Class of the ellipsis element. | |||
buttonClass | Class of the button element. | |||
roundedClass | Class of the button element when rounded. | rounded | ||
buttonCurrentClass | Class of the current button element. | |||
buttonPrevClass | Class of the prev button element. | |||
buttonNextClass | Class of the next button element. | |||
buttonDisabledClass | Class of the prev or next button when disabled. | |||
buttonClasses | Classes to apply on the internal button component. More details here. |
Sass Variables
Current theme ➜ Oruga
SASS Variable | Default |
---|---|
$pagination-disabled-opacity | var(--#{$prefix}base-disabled-opacity) |
$pagination-ellipsis-color | var(--#{$prefix}grey-light) |
$pagination-button-border-color | var(--#{$prefix}grey-light) |
$pagination-button-border-radius | var(--#{$prefix}base-border-radius) |
$pagination-button-border | 1px solid transparent |
$pagination-button-color | var(--#{$prefix}black) |
$pagination-button-background-color | transparent |
$pagination-button-background-color-hover | var( --#{$prefix}grey-lighter) |
$pagination-button-current-background-color | var(--#{$prefix}primary) |
$pagination-button-current-border-color | var(--#{$prefix}primary) |
$pagination-button-current-color | #fff |
$pagination-button-height | 2.25em |
$pagination-button-hover-border-color | var(--#{$prefix}grey-light) |
$pagination-button-line-height | var(--#{$prefix}base-line-height) |
$pagination-button-margin | 0.25rem |
$pagination-button-min-width | 2.25em |
$pagination-button-padding | 0.5em 0.5em |
$pagination-margin | -0.25rem |
$pagination-rounded-border-radius | var( --#{$prefix}base-border-radius-rounded) |
See ➜ 📄 SCSS file
Current theme ➜ Bulma
The theme does not have any custom variables for this component.