import type { PaginationProps, TableRowSelection } from '@arco-design/web-vue';
import type { TableExpandable } from '@arco-design/web-vue/es/table/interface';
import { reactive } from 'vue';
import { useAppStore } from '@/store';
import { isNumber } from '@/utils/is';
import { TablePageSizeOptions } from '@/types/const';

/**
 * 创建列表分页
 */
export const useTablePagination = (ext?: PaginationProps): PaginationProps => {
  const appStore = useAppStore();
  return reactive({
    total: 0,
    current: 1,
    pageSize: isNumber(appStore.defaultTablePageSize) ? appStore.defaultTablePageSize : TablePageSizeOptions[0],
    showTotal: true,
    showPageSize: true,
    pageSizeOptions: TablePageSizeOptions,
    ...ext
  });
};

/**
 * 创建行选择器
 */
export const useRowSelection = (ext?: TableRowSelection): TableRowSelection => {
  return reactive({
    type: 'checkbox',
    showCheckedAll: true,
    onlyCurrent: true,
    ...ext
  });
};

/**
 * 创建表格展开
 */
export const useExpandable = (ext?: TableExpandable): TableExpandable => {
  return reactive({
    width: 50,
    fixed: true,
    ...ext
  });
};
