{"version":3,"file":"index2.mjs","sources":["../../../../../src/components/ivue-page/index.vue"],"sourcesContent":["<template>\r\n  <!-- 简洁版 -->\r\n  <ul :class=\"simpleWrapperClasses\" v-if=\"simple\">\r\n    <!-- 上一页按钮 -->\r\n    <li :class=\"prevClasses\" @click=\"handlePrev\">\r\n      <slot name=\"prev\">\r\n        <ivue-icon>{{ prevIcon }}</ivue-icon>\r\n      </slot>\r\n    </li>\r\n\r\n    <!-- 输入框 -->\r\n    <div :class=\"simplePageClasses\">\r\n      <!-- 输入框 -->\r\n      <input\r\n        :class=\"`${prefixCls}-simple-input`\"\r\n        type=\"text\"\r\n        autocomplete=\"off\"\r\n        spellcheck=\"false\"\r\n        :value=\"data.currentPage\"\r\n        :disabled=\"disabled\"\r\n        @keydown=\"handleKeyDown\"\r\n        @keyup=\"handleKeyUp\"\r\n      />\r\n      <!-- 符号 -->\r\n      <span :class=\"`${prefixCls}-simple-sign`\">/</span>\r\n      <!-- 所有页数 -->\r\n      <span>{{ allPages }}</span>\r\n    </div>\r\n\r\n    <!-- 下一页按钮 -->\r\n    <li :class=\"nextClasses\" @click=\"handleNext\">\r\n      <slot name=\"next\">\r\n        <ivue-icon>{{ nextIcon }}</ivue-icon>\r\n      </slot>\r\n    </li>\r\n  </ul>\r\n  <!-- 正常版 -->\r\n  <ul :class=\"wrapperClasses\" v-else>\r\n    <!-- 数据总条数 -->\r\n    <span :class=\"`${prefixCls}-total`\" v-if=\"showTotal\">\r\n      <slot name=\"total\">{{ `共 ${total} 条` }}</slot>\r\n    </span>\r\n    <!-- 上一页按钮 -->\r\n    <li :class=\"prevClasses\" @click=\"handlePrev\">\r\n      <slot name=\"prev\">\r\n        <ivue-icon>{{ prevIcon }}</ivue-icon>\r\n      </slot>\r\n    </li>\r\n    <!-- 第一页 -->\r\n    <li :class=\"firstClasses\" @click=\"handleCangePage(1)\">\r\n      <span :class=\"itemTextClass\">1</span>\r\n    </li>\r\n\r\n    <!-- 上一页更多 -->\r\n    <li\r\n      :class=\"abbreviationClasses\"\r\n      v-show=\"data.showPrevMore\"\r\n      @click=\"handleFastPrev\"\r\n    >\r\n      <slot name=\"prevArrow\">\r\n        <!-- 箭头 -->\r\n        <span class=\"arrow\">\r\n          <ivue-icon>chevron_left</ivue-icon>\r\n          <ivue-icon>chevron_left</ivue-icon>\r\n        </span>\r\n        <!-- 缩略号 -->\r\n        <ivue-icon class=\"abbreviation\">more_horiz</ivue-icon>\r\n      </slot>\r\n    </li>\r\n\r\n    <!-- 选项 -->\r\n    <li\r\n      :class=\"{\r\n        ...itemClasses,\r\n        [`${prefixCls}-item--active`]: item === data.currentPage,\r\n      }\"\r\n      v-for=\"(item, index) in pagerList\"\r\n      :key=\"index\"\r\n      @click=\"handleCangePage(item)\"\r\n    >\r\n      <span :class=\"itemTextClass\">{{ item }}</span>\r\n    </li>\r\n\r\n    <!-- 下一页更多 -->\r\n    <li\r\n      :class=\"abbreviationClasses\"\r\n      v-show=\"data.showNextMore\"\r\n      @click=\"handleFastNext\"\r\n    >\r\n      <slot name=\"nextArrow\">\r\n        <!-- 箭头 -->\r\n        <span class=\"arrow\">\r\n          <ivue-icon>chevron_right</ivue-icon>\r\n          <ivue-icon>chevron_right</ivue-icon>\r\n        </span>\r\n        <!-- 缩略号 -->\r\n        <ivue-icon class=\"abbreviation\">more_horiz</ivue-icon>\r\n      </slot>\r\n    </li>\r\n\r\n    <!-- 最后一页 -->\r\n    <li :class=\"lastClasses\" @click=\"handleCangePage(allPages)\">\r\n      <span :class=\"itemTextClass\">{{ allPages }}</span>\r\n    </li>\r\n\r\n    <!-- 下一页按钮 -->\r\n    <li :class=\"nextClasses\" @click=\"handleNext\">\r\n      <slot name=\"next\">\r\n        <ivue-icon>{{ nextIcon }}</ivue-icon>\r\n      </slot>\r\n    </li>\r\n\r\n    <!-- 显示分页 -->\r\n    <options\r\n      :showSizer=\"showSizer\"\r\n      :showElevator=\"showElevator\"\r\n      :pageSize=\"pageSize\"\r\n      :placement=\"placement\"\r\n      :transfer=\"transfer\"\r\n      :disabled=\"disabled\"\r\n      :pageSizeOpts=\"pageSizeOpts\"\r\n      :pageSizeText=\"pageSizeText\"\r\n      :elevatorText=\"elevatorText\"\r\n      :currentPage=\"data.currentPage\"\r\n      :allPages=\"allPages\"\r\n      @on-size=\"handleChangeSize\"\r\n      @on-page=\"handleChangePage\"\r\n    ></options>\r\n  </ul>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  defineComponent,\r\n  computed,\r\n  reactive,\r\n  watch,\r\n  getCurrentInstance,\r\n} from 'vue';\r\nimport { oneOf } from '../../utils/assist';\r\n\r\nimport IvueIcon from '../ivue-icon/index.vue';\r\nimport Options from './options.vue';\r\n\r\n// type\r\nimport type { Props, Data } from './types/page';\r\n\r\nconst prefixCls = 'ivue-page';\r\n\r\nexport default defineComponent({\r\n  name: prefixCls,\r\n  emits: [\r\n    'update:modelValue',\r\n    'on-change',\r\n    'on-prev',\r\n    'on-next',\r\n    'on-page-size-change',\r\n  ],\r\n  props: {\r\n    /**\r\n     * v-model\r\n     *\r\n     * @type {Number}\r\n     */\r\n    modelValue: {\r\n      type: Number,\r\n      default: 1,\r\n    },\r\n    /**\r\n     * 显示总条数\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    showTotal: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 数据总数\r\n     *\r\n     * @type {Number}\r\n     */\r\n    total: {\r\n      type: Number,\r\n      default: 0,\r\n    },\r\n    /**\r\n     * 上一页图标\r\n     *\r\n     * @type {String}\r\n     */\r\n    prevIcon: {\r\n      type: String,\r\n      default: 'keyboard_arrow_left',\r\n    },\r\n    /**\r\n     * 下一页图标\r\n     *\r\n     * @type {String}\r\n     */\r\n    nextIcon: {\r\n      type: String,\r\n      default: 'keyboard_arrow_right',\r\n    },\r\n    /**\r\n     * 是否禁用\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 每页条数\r\n     *\r\n     * @type {Number}\r\n     */\r\n    pageSize: {\r\n      type: Number,\r\n      default: 10,\r\n    },\r\n    /**\r\n     * 页码按钮的数量，当总页数超过该值时会折叠\r\n     * 大于等于 5 且小于等于 21 的奇数\r\n     *\r\n     * @type {Number}\r\n     */\r\n    pagerCount: {\r\n      type: Number,\r\n      validator(value: number) {\r\n        return (\r\n          (value | 0) === value && value > 4 && value < 22 && value % 2 === 1\r\n        );\r\n      },\r\n      default: 5,\r\n    },\r\n    /**\r\n     * 显示分页，用来改变page-size\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    showSizer: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 条数切换弹窗的展开方向，可选值为 bottom 和 top\r\n     *\r\n     * @type {String}\r\n     */\r\n    placement: {\r\n      type: String,\r\n      validator(value: string) {\r\n        return oneOf(value, ['top', 'bottom']);\r\n      },\r\n      default: 'bottom',\r\n    },\r\n    /**\r\n     * 是否将弹层放置于 body 内，在 Tabs、\r\n     * 带有 fixed 的 Table 列内使用时，\r\n     * 建议添加此属性，它将不受父级样式影响，\r\n     * 从而达到更好的效果\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    transfer: {\r\n      type: Boolean,\r\n      default() {\r\n        const global = getCurrentInstance().appContext.config.globalProperties;\r\n\r\n        return !global.$IVUE || global.$IVUE.transfer === ''\r\n          ? false\r\n          : global.$IVUE.transfer;\r\n      },\r\n    },\r\n    /**\r\n     * 页数选择选项\r\n     *\r\n     * @type {Array}\r\n     */\r\n    pageSizeOpts: {\r\n      type: Array,\r\n      default: () => [10, 20, 30, 40],\r\n    },\r\n    /**\r\n     * 页数选择文字\r\n     *\r\n     * @type {Array}\r\n     */\r\n    pageSizeText: {\r\n      type: String,\r\n      default: '条/页',\r\n    },\r\n    /**\r\n     * 是否显示电梯\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    showElevator: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 电梯文字\r\n     *\r\n     * @type {Array}\r\n     */\r\n    elevatorText: {\r\n      type: Array,\r\n      default: () => ['跳至', '页'],\r\n    },\r\n    /**\r\n     * 是否使用小型分页样式\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    small: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 简洁版\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    simple: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n  },\r\n  setup(props: Props, { slots, emit }) {\r\n    // data\r\n    const data = reactive<Data>({\r\n      // 当前页数\r\n      currentPage: props.modelValue,\r\n      // 当前每页条数\r\n      currentPageSize: props.pageSize,\r\n      // 显示更多上一页\r\n      showPrevMore: false,\r\n      // 显示更多下一页\r\n      showNextMore: false,\r\n    });\r\n\r\n    // 外层样式\r\n    const wrapperClasses = computed(() => {\r\n      return [\r\n        prefixCls,\r\n        {\r\n          // 是否使用小型分页样式\r\n          [`${prefixCls}-small`]: props.small,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 上一页样式\r\n    const prevClasses = computed(() => {\r\n      return [\r\n        `${prefixCls}-prev`,\r\n        {\r\n          // 选项样式\r\n          ...itemClasses.value,\r\n          [`${prefixCls}-slot`]: slots.prev,\r\n          [`${prefixCls}-disabled`]: data.currentPage === 1 || props.disabled,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 下一页样式\r\n    const nextClasses = computed(() => {\r\n      return [\r\n        `${prefixCls}-next`,\r\n        {\r\n          // 选项样式\r\n          ...itemClasses.value,\r\n          [`${prefixCls}-slot`]: slots.next,\r\n          [`${prefixCls}-disabled`]:\r\n            data.currentPage === allPages.value || props.disabled,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 选项样式\r\n    const itemClasses = computed(() => {\r\n      return {\r\n        [`${prefixCls}-item`]: true,\r\n      };\r\n    });\r\n\r\n    // 选项文字样式\r\n    const itemTextClass = computed(() => {\r\n      return {\r\n        [`${prefixCls}-item--text`]: true,\r\n      };\r\n    });\r\n\r\n    // 第一页按钮\r\n    const firstClasses = computed(() => {\r\n      return {\r\n        // 选项样式\r\n        ...itemClasses.value,\r\n        // 激活\r\n        [`${prefixCls}-item--active`]: data.currentPage === 1,\r\n      };\r\n    });\r\n\r\n    // 最后一页按钮\r\n    const lastClasses = computed(() => {\r\n      return {\r\n        // 选项样式\r\n        ...itemClasses.value,\r\n        // 激活\r\n        [`${prefixCls}-item--active`]: data.currentPage === allPages.value,\r\n      };\r\n    });\r\n\r\n    // 缩略号样式\r\n    const abbreviationClasses = computed(() => {\r\n      return {\r\n        ...itemClasses.value,\r\n        [`${prefixCls}-abbreviation`]: true,\r\n      };\r\n    });\r\n\r\n    // 简洁版\r\n    const simpleWrapperClasses = computed(() => {\r\n      return [prefixCls, `${prefixCls}-simple`];\r\n    });\r\n\r\n    // 输入框\r\n    const simplePageClasses = computed(() => {\r\n      return `${prefixCls}-simple-page`;\r\n    });\r\n\r\n    // 获取所有页数\r\n    const allPages = computed(() => {\r\n      // 总条数 / 当前每页条数 (100 / 10) = 10\r\n      const allPage = Math.ceil(props.total / data.currentPageSize);\r\n\r\n      // 默认显示1页\r\n      return allPage === 0 ? 1 : allPage;\r\n    });\r\n\r\n    // 计算选项数量\r\n    const pagerList = computed(() => {\r\n      // 页码按钮的数量，当总页数超过该值时会折叠\r\n      const pagerCount = props.pagerCount;\r\n      // 获取一半的数量\r\n      // (7 - 1) 偶数 / 2\r\n      const halfPagerCount = (pagerCount - 1) / 2;\r\n\r\n      // 当前页数\r\n      const currentPage = data.currentPage;\r\n\r\n      // 显示更多上一页\r\n      let showPrevMore = false;\r\n      // 显示更多下一页\r\n      let showNextMore = false;\r\n\r\n      // 总页数超过该值时折叠 10 > 7\r\n      if (allPages.value > pagerCount) {\r\n        // 当前页数 > (页码按钮的数量 - 获取一半的数量)\r\n        if (currentPage > pagerCount - halfPagerCount) {\r\n          showPrevMore = true;\r\n        }\r\n\r\n        // 当前页数 < (总页码数 - 获取一半的数量)\r\n        if (currentPage < allPages.value - halfPagerCount) {\r\n          showNextMore = true;\r\n        }\r\n      }\r\n\r\n      // 显示更多上一页\r\n      data.showPrevMore = showPrevMore;\r\n      // 显示更多下一页\r\n      data.showNextMore = showNextMore;\r\n\r\n      // 页数列表\r\n      const array = [];\r\n\r\n      // 有更多上一页 没有更多下一页\r\n      if (showPrevMore && !showNextMore) {\r\n        // 10 - 7 - 2\r\n        // 省略号后-开始的页数 总页数 - (页码按钮的数量 - 前后页码(2 = 1, 10))\r\n        const startPage = allPages.value - (pagerCount - 2);\r\n\r\n        // [5,6,7,8,9]  总页数 10\r\n        for (let i = startPage; i < allPages.value; i++) {\r\n          array.push(i);\r\n        }\r\n      }\r\n      // 没有更多上一页 有更多下一页\r\n      else if (!showPrevMore && showNextMore) {\r\n        // [2,3,4,5,6]\r\n        // 从第二页开始循环 2.....  pagerCount = 页码按钮的数量\r\n        for (let i = 2; i < pagerCount; i++) {\r\n          array.push(i);\r\n        }\r\n      }\r\n      // 有更多上一页 有更多下一页\r\n      else if (showPrevMore && showNextMore) {\r\n        // 中间值开始下标 页码按钮的数量 floor(7 / 2 = 3.5) = 3 -1 = 2\r\n        const offset = Math.floor(pagerCount / 2) - 1;\r\n\r\n        // i = 当前页数(5) - 中间值开始下标(2) = 3\r\n        // i <= 当前页数(5) + 中间值开始下标(2) = 7\r\n        for (let i = currentPage - offset; i <= currentPage + offset; i++) {\r\n          array.push(i);\r\n        }\r\n      }\r\n      // 没有省略号\r\n      else {\r\n        // 第二页开始循环 循环总页数\r\n        for (let i = 2; i < allPages.value; i++) {\r\n          array.push(i);\r\n        }\r\n      }\r\n\r\n      return array;\r\n    });\r\n\r\n    // methods\r\n\r\n    // 上一页\r\n    const handlePrev = () => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 当前页数\r\n      const current = data.currentPage;\r\n\r\n      // 第一页不执行\r\n      if (current <= 1) {\r\n        return false;\r\n      }\r\n\r\n      // 当前页数 - 1\r\n      const page = current - 1;\r\n\r\n      // 改变页数\r\n      handleCangePage(page);\r\n\r\n      // 切换上一页时触发，返回切换后的页码\r\n      emit('on-prev', page);\r\n    };\r\n\r\n    // 下一页\r\n    const handleNext = () => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 当前页数\r\n      const current = data.currentPage;\r\n\r\n      // 当前页数 >= 最大页数\r\n      if (current >= allPages.value) {\r\n        return false;\r\n      }\r\n\r\n      // 当前页数 + 1\r\n      const page = current + 1;\r\n\r\n      // 改变页数\r\n      handleCangePage(page);\r\n\r\n      // 切换上一页时触发，返回切换后的页码\r\n      emit('on-next', page);\r\n    };\r\n\r\n    // 改变页数\r\n    const handleCangePage = (page: number) => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 点击不是当前激活页数\r\n      if (data.currentPage != page) {\r\n        data.currentPage = page;\r\n\r\n        // v-model\r\n        emit('update:modelValue', page);\r\n\r\n        // 页码改变的回调，返回改变后的页码\r\n        emit('on-change', page);\r\n      }\r\n    };\r\n\r\n    // 快速前进上一页\r\n    const handleFastPrev = () => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 前进后的页数 当前页数 - 5\r\n      const page = data.currentPage - 5;\r\n\r\n      // 前进后的页数 > 0\r\n      if (page > 0) {\r\n        handleCangePage(page);\r\n      }\r\n      // 返回第一页\r\n      else {\r\n        handleCangePage(1);\r\n      }\r\n    };\r\n\r\n    // 快速前进下一页\r\n    const handleFastNext = () => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 前进后的页数 当前页数 + 5\r\n      const page = data.currentPage + 5;\r\n\r\n      // 前进后的页数 > 总页数\r\n      if (page > allPages.value) {\r\n        handleCangePage(allPages.value);\r\n      }\r\n      // 前进后的页数 1 + 5 = 6 前进到弟6页\r\n      else {\r\n        handleCangePage(page);\r\n      }\r\n    };\r\n\r\n    // 分页条数改变\r\n    const handleChangeSize = (value: number) => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 当前每页条数\r\n      data.currentPageSize = value;\r\n\r\n      emit('on-page-size-change', value);\r\n\r\n      // 重置页数到第一页\r\n      handleCangePage(1);\r\n    };\r\n\r\n    // 页数改变\r\n    const handleChangePage = (value: number) => {\r\n      // 禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 跳转页数\r\n      handleCangePage(value);\r\n    };\r\n\r\n    // 键盘按下\r\n    const handleKeyDown = (event) => {\r\n      const key = event.keyCode;\r\n\r\n      const condition =\r\n        (key >= 48 && key <= 57) ||\r\n        (key >= 96 && key <= 105) ||\r\n        key === 8 ||\r\n        key === 37 ||\r\n        key === 39;\r\n\r\n      if (!condition) {\r\n        event.preventDefault();\r\n      }\r\n    };\r\n\r\n    // 键盘弹起\r\n    const handleKeyUp = ({ keyCode, target }) => {\r\n      const key = keyCode;\r\n      const value = parseInt(target.value);\r\n\r\n      // 上一页\r\n      if (key === 38) {\r\n        handlePrev();\r\n      }\r\n      // 下一页\r\n      else if (key === 40) {\r\n        handleNext();\r\n      }\r\n      // 确认\r\n      else if (key === 13) {\r\n        let page = 1;\r\n\r\n        // 超过最大页数\r\n        if (value > allPages.value) {\r\n          page = allPages.value;\r\n        }\r\n        // 小于0\r\n        else if (value <= 0 || !value) {\r\n          page = 1;\r\n        }\r\n        // 当前页数\r\n        else {\r\n          page = value;\r\n        }\r\n\r\n        target.value = page;\r\n\r\n        // 改变页数\r\n        handleCangePage(page);\r\n      }\r\n    };\r\n\r\n    // watch\r\n\r\n    // 监听总数\r\n    watch(\r\n      () => props.total,\r\n      (value) => {\r\n        // 最大页数 100 / 10 返回大于或等于一个给定数字的最小整数\r\n        const maxPage = Math.ceil(value / data.currentPageSize);\r\n\r\n        // 最大页数小于当前页数\r\n        if (maxPage < data.currentPage) {\r\n          data.currentPage = maxPage === 0 ? 1 : maxPage;\r\n        }\r\n      }\r\n    );\r\n\r\n    // 监听 v-model\r\n    watch(\r\n      () => props.modelValue,\r\n      (value) => {\r\n        data.currentPage = value;\r\n      }\r\n    );\r\n\r\n    // 监听每页条数\r\n    watch(\r\n      () => props.pageSize,\r\n      (value) => {\r\n        data.currentPageSize = value;\r\n      }\r\n    );\r\n\r\n    return {\r\n      prefixCls,\r\n      // data\r\n      data,\r\n\r\n      // computed\r\n      wrapperClasses,\r\n      prevClasses,\r\n      nextClasses,\r\n      itemClasses,\r\n      itemTextClass,\r\n      firstClasses,\r\n      allPages,\r\n      lastClasses,\r\n      abbreviationClasses,\r\n      pagerList,\r\n      simpleWrapperClasses,\r\n      simplePageClasses,\r\n\r\n      // methods\r\n      handlePrev,\r\n      handleNext,\r\n      handleCangePage,\r\n      handleFastPrev,\r\n      handleFastNext,\r\n      handleChangeSize,\r\n      handleChangePage,\r\n      handleKeyDown,\r\n      handleKeyUp,\r\n    };\r\n  },\r\n  components: {\r\n    IvueIcon,\r\n    Options,\r\n  },\r\n});\r\n</script>\r\n"],"names":["_openBlock","_createElementBlock","_Fragment","_createCommentVNode","_normalizeClass","_createElementVNode","_renderSlot","_createVNode","_withCtx","_toDisplayString","_withDirectives","_vShow","_renderList"],"mappings":"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"}