UNPKG

@antdv/pro-list

Version:

@antdv/pro-list

314 lines (313 loc) 13.1 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var stdin_exports = {}; __export(stdin_exports, { default: () => stdin_default, listViewProps: () => listViewProps }); module.exports = __toCommonJS(stdin_exports); var import_vue = require("vue"); var import_pro_provider = require("@antdv/pro-provider"); var import_pro_utils = require("@antdv/pro-utils"); var import_ant_design_vue = require("ant-design-vue"); var import_context = require("ant-design-vue/es/config-provider/context"); var import_list = require("ant-design-vue/es/list"); var import_useSelection = __toESM(require("ant-design-vue/es/table/hooks/useSelection")); var import_useLazyKVMap = __toESM(require("ant-design-vue/lib/table/hooks/useLazyKVMap")); var import_usePagination = __toESM(require("ant-design-vue/lib/table/hooks/usePagination")); var import_vue2 = require("vue"); var import_constants = require("./constants"); var import_Item = __toESM(require("./Item")); function listViewProps() { return __spreadProps(__spreadValues({}, (0, import_pro_utils.omit)((0, import_list.listProps)(), ["rowKey", "renderItem"])), { columns: (0, import_pro_utils.arrayType)(), pagination: (0, import_pro_utils.oneOfType)([Boolean, Object]).def(void 0), expandable: (0, import_pro_utils.objectType)(), rowKey: (0, import_pro_utils.oneOfType)([String, Number, Function]), showActions: (0, import_pro_utils.stringType)(), showExtra: (0, import_pro_utils.stringType)(), rowSelection: (0, import_pro_utils.objectType)(), prefixCls: String, dataSource: (0, import_pro_utils.arrayType)().isRequired, renderItem: (0, import_pro_utils.funcType)(), // 当非卡片模式时,用于为每一行的项目绑定事件,用户设置 `grid`时将会失效 onRow: (0, import_pro_utils.funcType)(), // 兼容普通和卡片模式的事件绑定,代表每一个项目的事件,是对`onRow`的补充 onItem: (0, import_pro_utils.funcType)(), rowClassName: (0, import_pro_utils.oneOfType)([String, Function]), /** Render 除了 header 之后的代码 */ itemHeaderRender: (0, import_pro_utils.oneOfType)([Function, Boolean]), itemTitleRender: (0, import_pro_utils.oneOfType)([Function, Boolean]), itemCardProps: (0, import_pro_utils.objectType)(), action: (0, import_pro_utils.objectType)() }); } var stdin_default = (0, import_vue2.defineComponent)({ name: "ProListView", inheritAttrs: false, props: listViewProps(), setup(props, { attrs }) { const { hashId } = import_pro_provider.ProProvider.useContext(); const { getPrefixCls } = (0, import_context.useConfigContextInject)(); const dataSource = (0, import_vue2.toRef)(props, "dataSource"); const getRowKey = (0, import_vue2.computed)(() => { if (typeof props.rowKey === "function") { return props.rowKey; } return (record, index) => record[props.rowKey] || index; }); const expandableConfig = (0, import_vue2.computed)(() => Object.assign({}, props.expandable, { defaultExpandAllRows: true })); const getExpandedKeys = () => { if (expandableConfig.value.defaultExpandedRowKeys) { return expandableConfig.value.defaultExpandedRowKeys; } if (expandableConfig.value.defaultExpandAllRows !== false) { return dataSource.value.map(getRowKey.value); } return []; }; const innerExpandedKeys = (0, import_vue2.ref)(getExpandedKeys()); const mergedExpandedKeys = (0, import_vue2.computed)(() => new Set(expandableConfig.value.expandedRowKeys || innerExpandedKeys.value || [])); const [getRecordByKey] = (0, import_useLazyKVMap.default)(dataSource, (0, import_vue2.ref)("children"), getRowKey); const [mergedPagination] = (0, import_usePagination.default)((0, import_vue2.computed)(() => dataSource.value.length), (0, import_vue2.toRef)(props, "pagination"), () => { }); const pageData = (0, import_vue2.computed)(() => { if (props.pagination === false || !mergedPagination.value.pageSize || dataSource.value.length < mergedPagination.value.total) { return dataSource.value; } const { current = 1, pageSize = 10 } = mergedPagination.value; const currentPageData = dataSource.value.slice((current - 1) * pageSize, current * pageSize); return currentPageData; }); const prefixCls = (0, import_vue2.computed)(() => getPrefixCls("pro-list", props.prefixCls)); const [selectItemRender, selectedKeySet] = (0, import_useSelection.default)((0, import_vue2.toRef)(props, "rowSelection"), { prefixCls, data: dataSource, pageData, getRowKey, getRecordByKey, expandType: (0, import_vue2.computed)(() => "row"), childrenColumnName: (0, import_vue2.computed)(() => "children"), locale: (0, import_vue2.computed)(() => ({})) }); return () => { const _a = props, { columns, rowKey, showActions, showExtra, prefixCls: customizePrefixCls, itemTitleRender, renderItem, itemCardProps, itemHeaderRender, expandable: _expandableConfig, rowSelection, pagination, onRow: onRow, onItem, rowClassName } = _a, rest = __objRest(_a, [ "columns", "rowKey", "showActions", "showExtra", "prefixCls", "itemTitleRender", "renderItem", "itemCardProps", "itemHeaderRender", "expandable", "rowSelection", "pagination", // List 的 pagination 默认是 false "onRow", "onItem", "rowClassName" ]); const onTriggerExpand = (record) => { var _a2; const key = getRowKey.value(record, dataSource.value.indexOf(record)); let newExpandedKeys; const hasKey = mergedExpandedKeys.value.has(key); if (hasKey) { mergedExpandedKeys.value.delete(key); newExpandedKeys = [...mergedExpandedKeys.value]; } else { newExpandedKeys = [...mergedExpandedKeys.value, key]; } innerExpandedKeys.value = newExpandedKeys; if ((_a2 = expandableConfig.value) == null ? void 0 : _a2.onExpand) { expandableConfig.value.onExpand(!hasKey, record); } if (expandableConfig.value.onExpandedRowsChange) { expandableConfig.value.onExpandedRowsChange(newExpandedKeys); } }; const selectItemDom = selectItemRender([])[0]; return (0, import_vue.createVNode)(import_ant_design_vue.List, (0, import_vue.mergeProps)(rest, { "class": (0, import_pro_utils.classNames)(getPrefixCls("pro-list-container", customizePrefixCls), hashId, attrs.class || ""), "style": attrs.style, "dataSource": pageData.value, "pagination": pagination && mergedPagination.value, "renderItem": ({ item, index }) => { var _a2; const listItemProps = { className: typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName }; columns == null ? void 0 : columns.forEach((column) => { const { listKey, cardActionProps } = column; if (!import_constants.PRO_LIST_KEYS_MAP.has(listKey)) { return; } const dataIndex = column.dataIndex || listKey || column.key; const rawData = Array.isArray(dataIndex) ? (0, import_pro_provider.get)(item, dataIndex) : item[dataIndex]; if (cardActionProps === "actions" && listKey === "actions") { Object.assign(listItemProps, { cardActionProps }); } const data = column.customRender ? column.customRender({ text: rawData, record: item, index, renderIndex: index, value: rawData, column }) : rawData; if (data !== "-") listItemProps[column.listKey] = data; }); let checkboxDom = null; if (selectItemDom && selectItemDom.customRender) { checkboxDom = selectItemDom.customRender({ text: item, record: item, index, renderIndex: index, value: item, column: {} }); } const { isEditable, recordKey } = ((_a2 = props.action) == null ? void 0 : _a2.isEditable(__spreadProps(__spreadValues({}, item), { index }))) || {}; const isChecked = selectedKeySet.value.has(recordKey || index); const defaultDom = (0, import_vue.createVNode)(import_Item.default, (0, import_vue.mergeProps)({ "key": recordKey, "cardProps": rest.grid ? __spreadProps(__spreadValues(__spreadValues({}, itemCardProps), rest.grid), { checked: isChecked, onChange: (0, import_pro_utils.isValidElement)(checkboxDom) ? (changeChecked) => { var _a3; return (_a3 = checkboxDom == null ? void 0 : checkboxDom.props) == null ? void 0 : _a3.onChange({ nativeEvent: {}, changeChecked }); } : void 0 }) : void 0 }, listItemProps, { "recordKey": recordKey, "isEditable": isEditable || false, "expandable": expandableConfig.value, "expand": mergedExpandedKeys.value.has(getRowKey.value(item, index)), "onExpand": () => { onTriggerExpand(item); }, "index": index, "record": item, "item": item, "showActions": showActions, "showExtra": showExtra, "itemTitleRender": itemTitleRender, "itemHeaderRender": itemHeaderRender, "rowSupportExpand": !expandableConfig.value.rowExpandable || expandableConfig.value.rowExpandable && expandableConfig.value.rowExpandable(item), "selected": selectedKeySet.value.has(getRowKey.value(item, index)), "checkbox": checkboxDom, "onRow": onRow, "onItem": onItem }), null); if (renderItem) { return renderItem({ item, index }); } return defaultDom; } }), null); }; } });