All files index.ts

0% Statements 0/44
0% Branches 0/28
0% Functions 0/7
0% Lines 0/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                                                                                                                                                                                                                     
 
import { defineComponentHOC, Doraemon, Component, Watch, Emit } from '@doraemon-ui/miniprogram.core-js'
const { classNames } = Doraemon.util

@Component({
  props: {
    prefixCls: {
      type: String,
      default: 'dora-pagination',
    },
    mode: {
      type: String,
      default: 'button',
    },
    defaultCurrent: {
      type: Number,
      default: 1,
    },
    current: {
      type: Number,
      default: 1,
    },
    controlled: {
      type: Boolean,
      default: false,
    },
    total: {
      type: Number,
      default: 0,
    },
    simple: {
      type: Boolean,
      default: false,
    },
  },
})
class Pagination extends Doraemon {
  get classes () {
    const { prefixCls } = this as any
    const wrap = classNames(prefixCls)
    const prev = `${prefixCls}__prev`
    const button = `${prefixCls}__button`
    const number = `${prefixCls}__number`
    const active = `${prefixCls}__active`
    const pointer = `${prefixCls}__pointer`
    const dot = `${prefixCls}__dot`
    const next = `${prefixCls}__next`
    return {
      wrap,
      prev,
      button,
      number,
      active,
      pointer,
      dot,
      next,
    }
  }
 
  activeIndex: number = 1

  @Watch('current')
  watchCurrent (newVal: number) {
    if ((this as any).controlled) {
      this.updated(newVal)
    }
  }

  updated(activeIndex: number) {
    if (this.activeIndex !== activeIndex) {
      this.activeIndex = activeIndex
    }
  }

  @Emit('change')
  onChange(current: number, type: 'prev' | 'next') {
    if (!(this as any).controlled) {
      this.updated(current)
    }

    return {
      current,
      type,
    }
  }
 
  @Emit('prev')
  onPrev() {
    const current = this.activeIndex - 1
    this.onChange(current, 'prev')
    return {
      current,
    }
  }
 
  @Emit('next')
  onNext() {
    const current = this.activeIndex + 1
    this.onChange(current, 'next')
    return {
      current,
    }
  }
}
 
export default defineComponentHOC()(Pagination)