UNPKG

vue-admin-core

Version:
1 lines 48 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/array-table/src/index.ts"],"sourcesContent":["/* eslint-disable indent */\nimport { computed, defineComponent, Ref, h, withDirectives, toRef } from \"vue\";\nimport { GeneralField, IVoidFieldFactoryProps, FieldDisplayTypes, ArrayField } from \"@formily/core\";\nimport {\n useField,\n useFieldSchema,\n RecursionField as _RecursionField,\n FragmentComponent,\n useForm\n} from \"@formily/vue\";\nimport { observer } from \"@formily/reactive-vue\";\nimport { isArr, isBool } from \"@formily/shared\";\nimport type { Schema } from \"@formily/json-schema\";\n\nimport type { VNode, Component, PropType } from \"vue\";\nimport { ElTable, ElTableColumn, ElPagination, ElLoading } from \"element-plus\";\n\nimport { Space } from \"../../space/src\";\nimport { ArrayBase } from \"../../array-base/src\";\nimport { stylePrefix } from \"../../__builtins__/configs\";\nimport { composeExport, isVueOptions, resolveComponent } from \"../../__builtins__/shared\";\nimport { PreviewText } from \"@vue-admin-core/formily/preview-text\";\nimport { batch, model } from \"@formily/reactive\";\nimport eachTree from \"xe-utils/eachTree.js\";\nimport { each, get } from \"lodash-es\";\n\nimport defaultProps from \"element-plus/es/components/table/src/table/defaults\";\n\nexport const arrayTableProps = {\n ...defaultProps,\n loading: {\n type: Boolean\n },\n table: {\n type: Object as PropType<ITable>\n },\n pagination: {\n type: [Boolean, Object] as PropType<boolean | IPagination>,\n default: false\n }\n};\n\ntype ElColumnProps = typeof ElTableColumn;\n\nconst RecursionField = _RecursionField as unknown as Component;\n\ninterface ObservableColumnSource {\n field: GeneralField | undefined;\n fieldProps: IVoidFieldFactoryProps<any, any>;\n columnProps: ElColumnProps & { title: string; asterisk: boolean };\n schema: Schema;\n display: FieldDisplayTypes;\n required: boolean;\n name: string;\n children?: ObservableColumnSource[];\n}\n\ntype ColumnProps = ElColumnProps & {\n key: string | number;\n asterisk: boolean;\n schema: Schema;\n render?: (\n startIndex?: Ref<number>\n ) => (props: { row: Record<string, any>; column: ElColumnProps; $index: number }) => VNode;\n children?: ColumnProps[];\n};\n\n// #region createTable\ninterface createTable {\n (): ITable;\n}\n\nexport interface ITable {\n /**\n * ElTable 实例\n */\n instance: InstanceType<typeof ElTable> | null;\n onInit(tableRef: InstanceType<typeof ElTable>): void;\n setExpandRow(row: any, expandedRows: any[] | boolean): void;\n /**\n * 展开的列\n */\n expandRows: any[];\n /**\n * 用于多选表格,清空用户的选择\n */\n clearSelection(): void;\n /**\n * 返回当前选中的行\n */\n getSelectionRows(): any;\n /**\n * 用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否\n * @param row\n * @param selected\n */\n toggleRowSelection(row: any, selected: boolean): void;\n /**\n * 用于多选表格,切换全选和全不选\n */\n toggleAllSelection(): void;\n /**\n * 用于可扩展的表格或树表格,如果某行被扩展,则切换。 使用第二个参数,您可以直接设置该行应该被扩展或折叠。\n * @param row\n * @param expanded\n */\n toggleRowExpansion(row: any, expanded?: boolean | undefined): void;\n /**\n * 展开所有行\n * @param isTree 是否是树表格\n */\n expandAll(isTree: boolean): any[];\n /**\n * 关闭所有展开行\n */\n clearExpand(): void;\n /**\n * 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态。\n * @param row\n */\n setCurrentRow(row: any): void;\n /**\n * 用于清空排序条件,数据会恢复成未排序的状态\n */\n clearSort(): void;\n /**\n * 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数,清除所有过滤器\n * @param columnKeys\n */\n clearFilter(columnKeys?: string[] | undefined): void;\n /**\n * 对 Table 进行重新布局。 当表格可见性变化时,您可能需要调用此方法以获得正确的布局\n */\n doLayout(): void;\n /**\n * 手动排序表格。 参数 prop 属性指定排序列,order 指定排序顺序。\n * @param prop\n * @param<\"ascending\" | \"descending\">order\n */\n sort(prop: string, order: \"ascending\" | \"descending\"): void;\n /**\n * 滚动到一组特定坐标\n * @param options\n * @param yCoord\n */\n scrollTo(options: number | ScrollToOptions, yCoord?: number | undefined): void;\n /**\n * 设置垂直滚动位置\n * @param top\n */\n setScrollTop(top?: number | undefined): void;\n /**\n * 设置水平滚动位置\n * @param left\n */\n setScrollLeft(left?: number | undefined): void;\n}\n// #endregion createTable\n\n// #region createPagination\ntype PaginationOptions = {\n // 当前页 默认1\n current?: number;\n // 页面大小 默认 10\n pageSize?: number;\n // 总是 默认 0\n total?: number;\n // 可选的每页显示条数 默认 [10, 20, 50, 100]\n pageSizes?: number[];\n // 位置 默认 right\n align?: \"left\" | \"right\" | \"center\";\n // 改变事件\n onChange?: (current: number, pageSize: number) => void;\n};\ninterface createPagination {\n (options?: PaginationOptions): IPagination;\n}\n\ninterface IPagination {\n // 当前页 默认1\n current: number;\n // 页面大小 默认 10\n pageSize: number;\n // 总是 默认 0\n total: number;\n // 可选的每页显示条数 默认 [10, 20, 50, 100]\n pageSizes: number[];\n // 位置 默认 right\n align: \"left\" | \"right\" | \"center\";\n // 改变事件\n onChange?: (current: number, pageSize: number) => void;\n setCurrent(current: number): void;\n setPageSize(pageSize: number): void;\n setPageSizes(pageSizes: number[]): void;\n setTotal(total: number): void;\n setAlign(align: \"left\" | \"right\" | \"center\"): void;\n}\n\n// #endregion createPagination\nconst isColumnComponent = (schema: Schema) => {\n if (typeof schema[\"x-component\"] !== \"string\") return false;\n return schema[\"x-component\"]?.indexOf(\"Column\") > -1;\n};\n\nconst isOperationsComponent = (schema: Schema) => {\n if (typeof schema[\"x-component\"] !== \"string\") return false;\n return schema[\"x-component\"]?.indexOf(\"Operation\") > -1;\n};\n\nconst isAdditionComponent = (schema: Schema) => {\n if (typeof schema[\"x-component\"] !== \"string\") return false;\n return schema[\"x-component\"]?.indexOf(\"Addition\") > -1;\n};\n\nconst getDefaultRender = (schema: Schema) => {\n const content = schema[\"x-render\"];\n if (typeof content === \"string\") return content;\n if (typeof content === \"function\") return content;\n if (typeof content === \"object\" && !isVueOptions(content) && content[\"default\"])\n return content[\"default\"];\n return undefined;\n};\n\n/**\n *\n * @param arrayFieldRef\n * @param schemaRef\n * @returns\n */\nconst getArrayTableSources = (arrayFieldRef: Ref<ArrayField>, schemaRef: Ref<Schema>) => {\n const arrayField = arrayFieldRef.value;\n const parseSources = (schema: Schema): ObservableColumnSource[] => {\n if (isColumnComponent(schema) || isOperationsComponent(schema) || isAdditionComponent(schema)) {\n if (!schema[\"x-component-props\"]?.[\"prop\"] && !schema[\"name\"]) return [];\n const name = schema[\"x-component-props\"]?.[\"prop\"] || schema[\"name\"];\n const field = arrayField.query(arrayField.address.concat(name)).take();\n const fieldProps = field?.props || schema.toFieldProps();\n const columnProps = (field?.component as any[])?.[1] || schema[\"x-component-props\"] || {};\n const display = field?.display || schema[\"x-display\"] || \"visible\";\n\n const required = schema.reduceProperties((required, property) => {\n if (required) {\n return required;\n }\n return !!property.required;\n }, false);\n return [\n {\n name,\n display,\n required,\n field,\n fieldProps,\n schema,\n columnProps,\n children: schema[\"x-table-header\"]\n ? schema.reduceProperties((buf: any[], schema) => {\n return buf.concat(parseSources(schema));\n }, [])\n : undefined\n }\n ];\n } else if (schema.properties) {\n return schema.reduceProperties((buf: any[], schema) => {\n return buf.concat(parseSources(schema));\n }, []);\n } else {\n return [];\n }\n };\n\n const parseArrayTable = (schema: Schema[\"items\"]) => {\n if (!schema) return [];\n const sources: ObservableColumnSource[] = [];\n const items = isArr(schema) ? schema : ([schema] as Schema[]);\n return items.reduce((columns, schema) => {\n const item = parseSources(schema);\n if (item) {\n return columns.concat(item);\n }\n return columns;\n }, sources);\n };\n\n if (!schemaRef.value) throw new Error(\"can not found schema object\");\n\n return parseArrayTable(schemaRef.value.items);\n};\n\nconst getArrayTableColumns = (sources: ObservableColumnSource[]): ColumnProps[] => {\n return sources.reduce(\n (\n buf: ColumnProps[],\n { name, columnProps, schema, display, required, field, children },\n key\n ) => {\n const { title, asterisk, ...props } = columnProps;\n if (display !== \"visible\") return buf;\n if (!isColumnComponent(schema) && !isOperationsComponent(schema)) return buf;\n\n if (isOperationsComponent(schema) && field?.pattern !== \"editable\") return buf;\n\n const render = (startIndex?: Ref<number>) => {\n return columnProps?.type &&\n columnProps?.type !== \"default\" &&\n columnProps?.type !== \"expand\"\n ? undefined\n : (props: { row: Record<string, any>; column: ElColumnProps; $index: number }): VNode => {\n const index = (startIndex?.value ?? 0) + props.$index;\n const children = h(\n ArrayBase.Item,\n { index, record: props.row, key: `${key}${index}` },\n {\n default: () => {\n const defaultRender = getDefaultRender(schema);\n if (defaultRender) {\n return resolveComponent(defaultRender, props);\n }\n if (!schema.properties) {\n if (columnProps.valueType === \"date\") {\n return h(PreviewText.DatePicker, {\n value: get(props.row, name),\n format: columnProps.format || \"YYYY-MM-DD\"\n });\n } else if (columnProps.valueType === \"dateTime\") {\n return h(PreviewText.DatePicker, {\n value: get(props.row, name)\n });\n } else if (columnProps.valueType === \"time\") {\n return h(PreviewText.TimePicker, {\n value: get(props.row, name),\n format: columnProps.format\n });\n } else if (columnProps.valueType === \"currency\") {\n return h(PreviewText, {\n value: get(props.row, name),\n format: columnProps.format || \"$0,0.00\"\n });\n } else if (columnProps.valueType === \"bytes\") {\n return h(PreviewText, {\n value: get(props.row, name),\n format: columnProps.format || \"0b\"\n });\n } else if (columnProps.valueType === \"percent\") {\n return h(PreviewText, {\n value: get(props.row, name),\n format: columnProps.format || \"0%\"\n });\n } else if (columnProps.valueType === \"address\") {\n return h(PreviewText.Cascader, { value: get(props.row, name) });\n }\n if (schema.enum) {\n return h(PreviewText.Select, {\n value: get(props.row, name),\n options: schema.enum,\n multiple: columnProps.multiple\n });\n }\n return h(PreviewText, {\n value: get(props.row, name),\n format: columnProps.format\n });\n }\n return h(\n RecursionField as any,\n {\n schema,\n name: index,\n onlyRenderProperties: true\n },\n {}\n );\n }\n }\n );\n return children;\n };\n };\n\n const item = {\n label: title,\n ...props,\n key,\n prop: name,\n asterisk: asterisk ?? required,\n schema\n };\n if (children && children.length > 0) {\n (item as any).children = getArrayTableColumns(children);\n } else {\n item.render = render;\n }\n\n return (buf as any).concat(item);\n },\n []\n );\n};\n\nconst renderAddition = () => {\n const schema = useFieldSchema();\n return schema.value.reduceProperties((addition, schema) => {\n if (isAdditionComponent(schema) || schema[\"x-addition\"]) {\n return h(\n RecursionField as any,\n {\n schema,\n name: \"addition\"\n },\n {}\n );\n }\n return addition;\n }, null);\n};\nconst createPagination = (options?: PaginationOptions) => {\n const pagination = model<IPagination>({\n current: options?.current || 1,\n pageSize: options?.pageSize || 10,\n pageSizes: options?.pageSizes || [10, 20, 50, 100],\n total: options?.total || 0,\n align: options?.align || \"right\",\n onChange: options?.onChange,\n setCurrent(current: number) {\n pagination.current = current;\n },\n setPageSize(pageSize: number) {\n pagination.pageSize = pageSize;\n },\n setPageSizes(pageSizes: number[]) {\n pagination.pageSizes = pageSizes;\n },\n setTotal(total: number) {\n pagination.total = total;\n },\n setAlign(align: \"left\" | \"right\" | \"center\") {\n pagination.align = align;\n }\n });\n\n return pagination;\n};\n\nconst createTable = () => {\n const table: ITable = {\n instance: null as InstanceType<typeof ElTable> | null,\n expandRows: [] as any[],\n onInit(tableRef: InstanceType<typeof ElTable>) {\n table.instance = tableRef;\n },\n setExpandRow(row: any, expandedRows: any[] | boolean) {\n if (typeof expandedRows === \"boolean\") {\n if (expandedRows) {\n table.expandRows.push(row);\n } else {\n table.expandRows.splice(table.expandRows.indexOf(row), 1);\n }\n } else {\n table.expandRows = expandedRows;\n }\n },\n clearSelection() {\n table.instance?.clearSelection();\n },\n getSelectionRows() {\n return table.instance?.getSelectionRows();\n },\n toggleRowSelection(row: any, selected: boolean) {\n table.instance?.toggleRowSelection(row, selected);\n },\n toggleAllSelection() {\n table.instance?.toggleAllSelection();\n },\n toggleRowExpansion(row: any, expanded?: boolean | undefined) {\n table.instance?.toggleRowExpansion(row, expanded);\n },\n expandAll(isTree: boolean) {\n const rows: any[] = [];\n if (isTree) {\n const { children, hasChildren } = table.instance?.treeProps as any;\n eachTree(\n table.instance?.data,\n (item: any) => {\n if ((item[children] && item[children].length > 0) || item[hasChildren]) {\n rows.push(item);\n table.toggleRowExpansion(item, true);\n }\n },\n { children }\n );\n } else {\n each(table.instance?.data, (item: any) => {\n rows.push(item);\n table.toggleRowExpansion(item, true);\n });\n }\n table.expandRows = rows;\n return rows;\n },\n clearExpand() {\n each([...table.expandRows], (item: any) => {\n table.toggleRowExpansion(item, false);\n });\n table.expandRows = [];\n },\n setCurrentRow(row: any) {\n table.instance?.setCurrentRow(row);\n },\n clearSort() {\n table.instance?.clearSort();\n },\n clearFilter(columnKeys?: string[] | undefined) {\n table.instance?.clearFilter(columnKeys);\n },\n doLayout() {\n table.instance?.doLayout();\n },\n sort(prop: string, order: string) {\n table.instance?.sort(prop, order);\n },\n scrollTo(options: number | ScrollToOptions, yCoord?: number | undefined) {\n table.instance?.scrollTo(options, yCoord);\n },\n setScrollTop(top?: number | undefined) {\n table.instance?.setScrollTop(top);\n },\n setScrollLeft(left?: number | undefined) {\n table.instance?.setScrollLeft(left);\n }\n };\n return table;\n};\n\nconst ArrayTablePagination = defineComponent({\n inheritAttrs: false,\n props: [\"dataSource\", \"pagination\"],\n setup(props, { attrs, slots }) {\n const prefixCls = `${stylePrefix}-array-table`;\n\n const dataSource = computed(() => props.dataSource);\n const paginationRef = computed(() => props.pagination ?? createPagination());\n\n const renderPagination = function () {\n const pagination = paginationRef.value;\n const current = pagination.current;\n const pageSize = pagination.pageSize;\n const pageSizes = pagination.pageSizes;\n const total = props.pagination ? pagination.total : dataSource.value?.length;\n const totalPage = Math.ceil(total / pageSize);\n const align = pagination.align;\n if (totalPage <= 1) return;\n return h(\n \"div\",\n {\n class: [`${prefixCls}-pagination`],\n style: {\n justifyContent: align\n }\n },\n h(\n Space,\n {},\n {\n default: () => [\n h(\n ElPagination,\n {\n background: true,\n layout: \"total, sizes, prev, pager, next, jumper\",\n ...attrs,\n pageSize: pageSize,\n pageSizes: pageSizes,\n pageCount: totalPage,\n currentPage: current,\n total: total,\n small: true,\n onCurrentChange: (val: number) => {\n pagination.setCurrent(val);\n // pagination.onChange?.(val, pageSize);\n },\n onSizeChange: (val: number) => {\n batch(() => {\n pagination.setCurrent(1);\n pagination.setPageSize(val);\n });\n // pagination.onChange?.(current, val);\n }\n },\n {}\n )\n ]\n }\n )\n );\n };\n\n return () => {\n const pagination = paginationRef.value;\n const startIndex = (pagination.current - 1) * pagination.pageSize;\n const endIndex = startIndex + pagination.pageSize - 1; // computed(() => startIndex.value + pageSize.value - 1);\n return h(\n FragmentComponent,\n {},\n {\n default: () =>\n slots?.default?.(\n props.pagination\n ? dataSource.value\n : dataSource.value?.slice(startIndex, endIndex + 1),\n renderPagination,\n props.pagination ? null : toRef(startIndex)\n )\n }\n );\n };\n }\n});\n\nconst ArrayTableInner = observer(\n defineComponent({\n name: \"FArrayTable\",\n inheritAttrs: false,\n props: arrayTableProps,\n setup(props, { attrs, slots }) {\n const fieldRef = useField<ArrayField>();\n const schemaRef = useFieldSchema();\n const formRef = useForm();\n const prefixCls = `${stylePrefix}-array-table`;\n const { getKey, keyMap } = ArrayBase.useKey(schemaRef.value);\n const defaultRowKey = (record: any, index: number) => {\n return getKey(record, index);\n };\n\n const tableRef = computed(() => props.table ?? createTable());\n\n return () => {\n // const props = attrs as unknown as ArrayTableProps;\n const field = fieldRef.value;\n const form = formRef.value;\n const dataSource = Array.isArray(field.value) ? field.value.slice() : [];\n const pagination = props.pagination;\n const sources = getArrayTableSources(fieldRef, schemaRef);\n const columns = getArrayTableColumns(sources);\n\n const renderColumns = (startIndex?: Ref<number>) => {\n const renderColumn = (columns: ColumnProps[]) => {\n return columns.map(\n ({ key, render, asterisk, schema, children: headerChildren, ...props }) => {\n if (headerChildren) {\n return h(\n ElTableColumn as any,\n {\n ...props,\n key\n },\n {\n default: () => renderColumn(headerChildren)\n }\n );\n }\n\n const children = {} as Record<string, any>;\n if (render) {\n children.default = render(startIndex);\n }\n if (asterisk) {\n children.header = ({\n column,\n $index\n }: {\n column: ElColumnProps;\n $index: number;\n }) =>\n h(\"span\", {}, [\n h(\"span\", { class: `${prefixCls}-inner-asterisk` }, \"*\"),\n schema[\"x-render\"] && schema[\"x-render\"][\"header\"]\n ? resolveComponent(schema[\"x-render\"][\"header\"], { column, $index })\n : column.label\n ]);\n } else {\n if (schema[\"x-render\"] && schema[\"x-render\"][\"header\"]) {\n children.header = ({\n column,\n $index\n }: {\n column: ElColumnProps;\n $index: number;\n }) => resolveComponent(schema[\"x-render\"][\"header\"], { column, $index });\n }\n }\n return h(\n ElTableColumn as any,\n {\n ...props,\n key\n },\n children\n );\n }\n );\n };\n\n return renderColumn(columns);\n };\n\n const renderStateManager = () =>\n sources.map((column, key) => {\n //专门用来承接对Column的状态管理\n if (!isColumnComponent(column.schema) && !isOperationsComponent(column.schema)) return;\n return h(\n RecursionField as any,\n {\n name: column.name,\n schema: column.schema,\n onlyRenderSelf: true,\n key\n },\n {}\n );\n });\n const renderTable = (dataSource?: any[], pager?: () => VNode, startIndex?: Ref<number>) => {\n return h(\n \"div\",\n { class: prefixCls },\n h(\n ArrayBase,\n {\n keyMap\n },\n {\n default: () => [\n withDirectives(\n h(\n ElTable as any,\n {\n ...props,\n ...attrs,\n rowKey: props.rowKey ? props.rowKey : defaultRowKey,\n data: dataSource,\n ref: (inst) => {\n tableRef.value.onInit(inst as any);\n field.inject({\n getRef: () => inst\n });\n },\n onExpandChange: (row: any, expandedRows: any[] | boolean) => {\n tableRef.value.setExpandRow(row, expandedRows);\n (attrs as any)?.onExpandChange?.(row, expandedRows);\n }\n },\n {\n ...slots,\n default: () => renderColumns(startIndex)\n }\n ),\n [\n [\n ElLoading.directive,\n props.loading !== undefined\n ? props.loading\n : field?.loading || form?.submitting\n ]\n ]\n ),\n pager?.(),\n renderStateManager(),\n renderAddition()\n ]\n }\n )\n );\n };\n\n if (!pagination) {\n return renderTable(dataSource);\n }\n return h(\n ArrayTablePagination,\n {\n pagination: isBool(pagination) ? null : pagination,\n dataSource\n },\n { default: renderTable }\n );\n };\n }\n })\n);\n\nconst ArrayTableColumn: Component = {\n name: \"FArrayTableColumn\",\n render() {\n return null;\n }\n};\n\nexport const ArrayTable = composeExport(ArrayTableInner, {\n Column: ArrayTableColumn,\n Index: ArrayBase.Index,\n SortHandle: ArrayBase.SortHandle,\n Addition: ArrayBase.Addition,\n Remove: ArrayBase.Remove,\n MoveDown: ArrayBase.MoveDown,\n MoveUp: ArrayBase.MoveUp,\n useArray: ArrayBase.useArray,\n useIndex: ArrayBase.useIndex,\n useRecord: ArrayBase.useRecord,\n ButtonGroup: ArrayBase.ButtonGroup,\n Button: ArrayBase.Button,\n createPagination: createPagination,\n createTable: createTable\n});\n\nexport default ArrayTable;\n"],"names":["_RecursionField","required","schema","props","children","columns","dataSource"],"mappings":"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"}