UNPKG

@vrx-arco/pro-components

Version:

<p align="center"> <img src="https://vrx-arco.github.io/arco-design-pro/favicon.svg" width="200" height="250"> </p>

77 lines (76 loc) 1.95 kB
import { proPaginationProps } from "../ProPagination/props.js"; import { ProList } from "../ProList/index.js"; import { createVNode, defineComponent, mergeProps, toRef } from "vue"; import { Card } from "@arco-design/web-vue"; import { useGrid } from "@vrx-arco/use"; const ProCardList = /* @__PURE__ */ defineComponent({ name: "vrx-arco-pro-card-list", props: { ...proPaginationProps(), bottomOffset: { type: Number, default: 0 }, rowKey: String, dataKey: String, loading: { type: Boolean, default: false }, maxHeight: [Number, String], column: { type: [Number, Object], default: () => ({ xs: 1, sm: 2, md: 2, lg: 3, xl: 3, xxl: 4 }) }, gutter: { type: [Number, Array], default: 0 } }, emits: { pageChange: (page) => true, pageSizeChange: (pageSize) => true, itemClick: (item, index) => true }, setup: (props, { emit, slots }) => { const column = toRef(props, "column"); const gutter = toRef(props, "gutter"); const { gridProps } = useGrid(true, column, gutter); return () => { const { pagination, paginationProps, data, rowKey, bottomOffset, loading, dataKey, maxHeight } = props; return createVNode(ProList, { "data": data, "bordered": false, "split": false, "pagination": pagination, "paginationProps": paginationProps, "onPageChange": (current) => { emit("pageChange", current); }, "onPageSizeChange": (pageSize) => { emit("pageSizeChange", pageSize); }, "rowKey": rowKey, "dataKey": dataKey, "loading": loading, "bottomOffset": bottomOffset, "maxHeight": maxHeight, "gridProps": gridProps.value }, { header: slots.header, item: ({ item, index }) => createVNode(Card, mergeProps({ "hoverable": true }, { onClick: () => emit("itemClick", item, index) }), { default: () => [slots.item?.({ item, index })] }) }); }; } }); export { ProCardList };