Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / @skava/ui   js

Repository URL to install this package:

Version: 4.2.0-a11y.0 

/ src / components / molecules / Pagination / Pagination.tsx

import * as React from 'react'
import { observer } from 'xmobx/mobx-react'
import { PaginationProps, State } from './typings'
import { PaginationWrapper, SelectBox } from './styled'
import {
  defaultRenderArrows,
  defaultRenderLimit,
  defaultRenderOption,
  defaultRenderSelector,
} from './renderProps'

@observer
class Pagination extends React.Component<PaginationProps, State> {
  static defaultProps = {
    renderArrows: defaultRenderArrows,
    renderLimit: defaultRenderLimit,
    renderOption: defaultRenderOption,
    renderSelector: defaultRenderSelector,
  }

  state = this.props.state || new State(this.props)

  handlePage = (event: any) => {
    const val = event.target.value
    this.state.setValue(val)
  }

  handleSize = (event: any) => {
    const val = event.target.value
    this.state.setSize(val)
  }

  render() {
    const { nowrap, renderArrows, renderLimit, renderSelector } = this.props

    const Wrapper = nowrap ? React.Fragment : PaginationWrapper
    const SelectWrapper = nowrap ? React.Fragment : SelectBox

    return (
      <Wrapper>
        {renderLimit(this.props, this.state, this.handleSize)}
        <SelectWrapper>
          {renderSelector(this.props, this.state, this.handlePage)}
          {renderArrows(this.props, this.state)}
        </SelectWrapper>
      </Wrapper>
    )
  }
}

export default Pagination
export { Pagination }