123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
- import _typeof from "@babel/runtime/helpers/esm/typeof";
- import { Fragment as _Fragment, createVNode as _createVNode } from "vue";
- import { defineComponent, computed, ref, watch } from 'vue';
- import classNames from '../_util/classNames';
- import ListItem from './ListItem';
- import Pagination from '../pagination';
- import PropTypes from '../_util/vue-types';
- export var transferListBodyProps = {
- prefixCls: String,
- filteredRenderItems: PropTypes.array.def([]),
- selectedKeys: PropTypes.array,
- disabled: {
- type: Boolean,
- default: undefined
- },
- showRemove: {
- type: Boolean,
- default: undefined
- },
- pagination: PropTypes.any,
- onItemSelect: Function,
- onScroll: Function,
- onItemRemove: Function
- };
- function parsePagination(pagination) {
- if (!pagination) {
- return null;
- }
- var defaultPagination = {
- pageSize: 10
- };
- if (_typeof(pagination) === 'object') {
- return _objectSpread(_objectSpread({}, defaultPagination), pagination);
- }
- return defaultPagination;
- }
- var ListBody = defineComponent({
- compatConfig: {
- MODE: 3
- },
- name: 'ListBody',
- inheritAttrs: false,
- props: transferListBodyProps,
- emits: ['itemSelect', 'itemRemove', 'scroll'],
- setup: function setup(props, _ref) {
- var emit = _ref.emit,
- expose = _ref.expose;
- var current = ref(1);
- var handleItemSelect = function handleItemSelect(item) {
- var selectedKeys = props.selectedKeys;
- var checked = selectedKeys.indexOf(item.key) >= 0;
- emit('itemSelect', item.key, !checked);
- };
- var handleItemRemove = function handleItemRemove(item) {
- emit('itemRemove', [item.key]);
- };
- var handleScroll = function handleScroll(e) {
- emit('scroll', e);
- };
- var mergedPagination = computed(function () {
- return parsePagination(props.pagination);
- });
- watch([mergedPagination, function () {
- return props.filteredRenderItems;
- }], function () {
- if (mergedPagination.value) {
- // Calculate the page number
- var maxPageCount = Math.ceil(props.filteredRenderItems.length / mergedPagination.value.pageSize);
- if (current.value > maxPageCount) {
- current.value = maxPageCount;
- }
- }
- }, {
- immediate: true
- });
- var items = computed(function () {
- var filteredRenderItems = props.filteredRenderItems;
- var displayItems = filteredRenderItems;
- if (mergedPagination.value) {
- displayItems = filteredRenderItems.slice((current.value - 1) * mergedPagination.value.pageSize, current.value * mergedPagination.value.pageSize);
- }
- return displayItems;
- });
- var onPageChange = function onPageChange(cur) {
- current.value = cur;
- };
- expose({
- items: items
- });
- return function () {
- var prefixCls = props.prefixCls,
- filteredRenderItems = props.filteredRenderItems,
- selectedKeys = props.selectedKeys,
- globalDisabled = props.disabled,
- showRemove = props.showRemove;
- var paginationNode = null;
- if (mergedPagination.value) {
- paginationNode = _createVNode(Pagination, {
- "simple": true,
- "size": "small",
- "disabled": globalDisabled,
- "class": "".concat(prefixCls, "-pagination"),
- "total": filteredRenderItems.length,
- "pageSize": mergedPagination.value.pageSize,
- "current": current.value,
- "onChange": onPageChange
- }, null);
- }
- var itemsList = items.value.map(function (_ref2) {
- var renderedEl = _ref2.renderedEl,
- renderedText = _ref2.renderedText,
- item = _ref2.item;
- var disabled = item.disabled;
- var checked = selectedKeys.indexOf(item.key) >= 0;
- return _createVNode(ListItem, {
- "disabled": globalDisabled || disabled,
- "key": item.key,
- "item": item,
- "renderedText": renderedText,
- "renderedEl": renderedEl,
- "checked": checked,
- "prefixCls": prefixCls,
- "onClick": handleItemSelect,
- "onRemove": handleItemRemove,
- "showRemove": showRemove
- }, null);
- });
- return _createVNode(_Fragment, null, [_createVNode("ul", {
- "class": classNames("".concat(prefixCls, "-content"), _defineProperty({}, "".concat(prefixCls, "-content-show-remove"), showRemove)),
- "onScroll": handleScroll
- }, [itemsList]), paginationNode]);
- };
- }
- });
- export default ListBody;
|