@tmagic/table 1.2.0-beta.1 → 1.2.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-button\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n v-html=\"action.text\"\n class=\"action-btn\"\n text\n type=\"primary\"\n size=\"small\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ></el-button>\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n text\n type=\"primary\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</el-button\n >\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n text\n type=\"primary\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</el-button\n >\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { PropType } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n</script>\n\n<script lang=\"ts\" setup>\nconst props = defineProps({\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n config: {\n type: Object as PropType<ColumnConfig>,\n require: true,\n default: () => {},\n },\n\n rowkeyName: {\n type: String,\n default: 'c_id',\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n});\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc.call(this, this, row);\n }\n return true;\n};\n\nconst success = (msg: string, action: ColumnActionConfig, row: any) => {\n ElMessage.success(msg);\n action.after?.(row);\n};\n\nconst error = (msg: string) => ElMessage.error(msg);\n\nconst deleteAction = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('删除成功!', action, row);\n } else {\n error(res.msg || '删除失败');\n }\n};\n\nconst copyHandler = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n try {\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('复制成功!', action, row);\n } else {\n error(`复制失败!${res.msg}`);\n }\n } catch (e) {\n error('复制失败!');\n }\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n await action.before?.(row);\n if (action.type === 'delete') {\n await deleteAction(action, row);\n } else if (action.type === 'copy') {\n await copyHandler(action, row);\n } else if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n }\n action.after?.(row);\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n ElMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n ElMessage.error({\n duration: 10000,\n showClose: true,\n dangerouslyUseHTMLString: true,\n message: res.msg || '保存失败',\n });\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","<template>\n <el-table-column type=\"expand\">\n <template #default=\"scope\">\n <m-table\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <m-form\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || scope.row[config.prop] || {}\"\n ></m-form>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\n\nexport default defineComponent({\n components: { MForm },\n\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-popover :placement=\"config.popover.placement\" :width=\"config.popover.width\" :trigger=\"config.popover.trigger\">\n <m-table\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <template #reference>\n <el-button text type=\"primary\"> {{ config.text || formatter(config, scope.row) }}</el-button>\n </template>\n </el-popover>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table-column\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <el-form v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </el-form>\n\n <el-button v-else-if=\"config.action === 'actionLink'\" text type=\"primary\" @click=\"config.handler(scope.row)\">\n {{ formatter(config, scope.row) }}\n </el-button>\n\n <a v-else-if=\"config.action === 'img'\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a v-else-if=\"config.action === 'link'\" target=\"_blank\" :href=\"scope.row[config.prop]\" class=\"keep-all\">{{\n scope.row[config.prop]\n }}</a>\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <el-button text type=\"primary\">扩展配置</el-button>\n </el-tooltip>\n\n <el-tag\n v-else-if=\"config.action === 'tag'\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</el-tag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\n v-loading=\"loading\"\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <expand-column :config=\"item\" :key=\"columnIndex\"></expand-column>\n </template>\n\n <template v-else-if=\"item.selection\">\n <el-table-column type=\"selection\" :key=\"columnIndex\" width=\"40\" :selectable=\"item.selectable\"></el-table-column>\n </template>\n\n <template v-else-if=\"item.actions\">\n <actions-column\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></actions-column>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <popover-column :key=\"columnIndex\" :config=\"item\"></popover-column>\n </template>\n\n <template v-else>\n <text-column :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></text-column>\n </template>\n </template>\n </el-table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\nimport { ElTable } from 'element-plus';\nimport { cloneDeep } from 'lodash-es';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nexport default defineComponent({\n name: 'm-table',\n\n components: { ExpandColumn, ActionsColumn, PopoverColumn, TextColumn },\n\n props: {\n data: {\n type: Array,\n require: true,\n },\n\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n /** 合并行或列的计算方法 */\n spanMethod: {\n type: Function as PropType<\n (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number]\n >,\n },\n\n loading: {\n type: Boolean,\n default: false,\n },\n\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight: {\n type: [String, Number],\n },\n\n /** 是否显示表头 */\n showHeader: {\n type: Boolean,\n default: true,\n },\n\n /** 空数据时显示的文本内容 */\n emptyText: {\n type: String,\n },\n\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll: {\n type: Boolean,\n default: false,\n },\n\n rowkeyName: {\n type: String,\n },\n\n /** 是否带有纵向边框 */\n border: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['sort-change', 'afterAction', 'select', 'select-all', 'selection-change'],\n\n data(): {\n editState: any[];\n } {\n return {\n editState: [],\n };\n },\n\n computed: {\n tableData() {\n if (this.selectionColumn) {\n return this.data || [];\n }\n\n return cloneDeep(this.data) || [];\n },\n\n selectionColumn() {\n const column = this.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n },\n\n hasBorder() {\n return typeof this.border !== 'undefined' ? this.border : true;\n },\n },\n\n methods: {\n sortChange(data: any) {\n this.$emit('sort-change', data);\n },\n\n selectHandler(selection: any, row: any) {\n const column = this.selectionColumn;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n this.$emit('select', selection, row);\n },\n\n selectAllHandler(selection: any) {\n this.$emit('select-all', selection);\n },\n\n selectionChangeHandler(selection: any) {\n this.$emit('selection-change', selection);\n },\n\n toggleRowSelection(row: any, selected: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowSelection.bind(table)(row, selected);\n },\n\n toggleRowExpansion(row: any, expanded: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowExpansion.bind(table)(row, expanded);\n },\n\n clearSelection() {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.clearSelection.bind(table)();\n },\n\n objectSpanMethod(data: any) {\n if (typeof this.spanMethod === 'function') {\n return this.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n },\n },\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nconst components = [Table];\n\nexport default {\n install(app: App) {\n components.forEach((component) => {\n app.component(component.name, component);\n });\n },\n};\n"],"names":["ElMessage","ElMessageBox","defineComponent","MForm","_resolveComponent","_openBlock","_createBlock","_withCtx","datetimeFormatter","_createVNode","_createElementBlock","_createElementVNode","_toDisplayString","ActionsColumn","cloneDeep","_withDirectives","_Fragment","_renderList"],"mappings":"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"}
1
+ {"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'MTableActionsColumn',\n})\n</script>\n<template>\n <TMagicTableColumn :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <TMagicButton\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n class=\"action-btn\"\n text\n type=\"primary\"\n size=\"small\"\n :icon=\"action.icon\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ><span v-html=\"formatter(action.text, scope.row)\"></span\n ></TMagicButton>\n <TMagicButton\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n text\n type=\"primary\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</TMagicButton\n >\n <TMagicButton\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n text\n type=\"primary\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</TMagicButton\n >\n </template>\n </TMagicTableColumn>\n</template>\n\n<script lang=\"ts\" setup name=\"MTableActionsColumn\">\nimport { TMagicButton, tMagicMessage, TMagicTableColumn } from '@tmagic/design';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n\nconst props = withDefaults(\n defineProps<{\n columns: any[];\n config: ColumnConfig;\n rowkeyName?: string;\n editState?: any;\n }>(),\n {\n columns: () => [],\n config: () => ({}),\n rowkeyName: 'c_id',\n editState: () => [],\n },\n);\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc(row);\n }\n return true;\n};\n\nconst formatter = (fuc: string | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc(row);\n }\n return fuc;\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n await action.before?.(row);\n if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n }\n action.after?.(row);\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n tMagicMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n tMagicMessage.error(res.msg || '保存失败');\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'MTableExpandColumn',\n})\n</script>\n<template>\n <TMagicTableColumn type=\"expand\">\n <template #default=\"scope\">\n <MTable\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"(config.prop && scope.row[config.prop]) || []\"\n ></MTable>\n <MForm\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || (config.prop && scope.row[config.prop]) || {}\"\n ></MForm>\n </template>\n </TMagicTableColumn>\n</template>\n\n<script lang=\"ts\" setup name=\"MTableExpandColumn\">\nimport { TMagicTableColumn } from '@tmagic/design';\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\nimport MTable from './Table.vue';\n\nwithDefaults(\n defineProps<{\n config: ColumnConfig;\n }>(),\n {\n config: () => ({}),\n },\n);\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (!item.prop) return '';\n\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'MTablePopoverColumn',\n})\n</script>\n<template>\n <TMagicTableColumn :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <TMagicPopover\n v-if=\"config.popover\"\n :placement=\"config.popover.placement\"\n :width=\"config.popover.width\"\n :trigger=\"config.popover.trigger\"\n >\n <MTable\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"(config.prop && scope.row[config.prop]) || []\"\n ></MTable>\n <template #reference>\n <TMagicButton text type=\"primary\"> {{ config.text || formatter(config, scope.row) }}</TMagicButton>\n </template>\n </TMagicPopover>\n </template>\n </TMagicTableColumn>\n</template>\n\n<script lang=\"ts\" setup name=\"MTablePopoverColumn\">\nimport { TMagicButton, TMagicPopover, TMagicTableColumn } from '@tmagic/design';\n\nimport { ColumnConfig } from './schema';\nimport MTable from './Table.vue';\nimport { formatter } from './utils';\n\nwithDefaults(\n defineProps<{\n config: ColumnConfig;\n }>(),\n {\n config: () => ({}),\n },\n);\n</script>\n","<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'MTableColumn',\n})\n</script>\n<template>\n <TMagicTableColumn\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <TMagicForm v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </TMagicForm>\n\n <TMagicButton\n v-else-if=\"config.action === 'actionLink' && config.prop\"\n text\n type=\"primary\"\n @click=\"config.handler?.(scope.row)\"\n >\n <span v-html=\"formatter(config, scope.row)\"></span>\n </TMagicButton>\n\n <a v-else-if=\"config.action === 'img' && config.prop\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a\n v-else-if=\"config.action === 'link' && config.prop\"\n target=\"_blank\"\n :href=\"scope.row[config.prop]\"\n class=\"keep-all\"\n >{{ scope.row[config.prop] }}</a\n >\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <TMagicButton text type=\"primary\">扩展配置</TMagicButton>\n </el-tooltip>\n\n <TMagicTag\n v-else-if=\"config.action === 'tag' && config.prop\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</TMagicTag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </TMagicTableColumn>\n</template>\n\n<script lang=\"ts\" setup name=\"MTableColumn\">\nimport { TMagicButton, TMagicForm, TMagicTableColumn, TMagicTag } from '@tmagic/design';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nwithDefaults(\n defineProps<{\n config: ColumnConfig;\n editState?: any;\n }>(),\n {\n config: () => ({}),\n editState: () => ({}),\n },\n);\n</script>\n","<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'MTable',\n})\n</script>\n<template>\n <TMagicTable\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"tMagicTable\"\n v-loading=\"loading\"\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <ExpandColumn :config=\"item\" :key=\"columnIndex\"></ExpandColumn>\n </template>\n\n <template v-else-if=\"item.selection\">\n <component\n width=\"40\"\n type=\"selection\"\n :is=\"tableColumnComponent.component\"\n :key=\"columnIndex\"\n :selectable=\"item.selectable\"\n ></component>\n </template>\n\n <template v-else-if=\"item.actions\">\n <ActionsColumn\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></ActionsColumn>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <PopoverColumn :key=\"columnIndex\" :config=\"item\"></PopoverColumn>\n </template>\n\n <template v-else>\n <TextColumn :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></TextColumn>\n </template>\n </template>\n </TMagicTable>\n</template>\n\n<script lang=\"ts\" setup name=\"MTable\">\nimport { computed, ref } from 'vue';\nimport { cloneDeep } from 'lodash-es';\n\nimport { getConfig, TMagicTable } from '@tmagic/design';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nconst props = withDefaults(\n defineProps<{\n data: any[];\n columns?: any[];\n /** 合并行或列的计算方法 */\n spanMethod?: (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number];\n loading?: boolean;\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight?: string | number;\n /** 是否显示表头 */\n showHeader?: boolean;\n /** 空数据时显示的文本内容 */\n emptyText?: string;\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll?: boolean;\n rowkeyName?: string;\n /** 是否带有纵向边框 */\n border?: boolean;\n }>(),\n {\n columns: () => [],\n loading: false,\n showHeader: true,\n defaultExpandAll: false,\n border: false,\n },\n);\n\nconst emit = defineEmits(['sort-change', 'afterAction', 'select', 'select-all', 'selection-change']);\n\nconst tMagicTable = ref<InstanceType<typeof TMagicTable>>();\n\nconst editState = ref([]);\n\nconst tableColumnComponent = getConfig('components').tableColumn;\nconst selectionColumn = computed(() => {\n const column = props.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n});\n\nconst tableData = computed(() => {\n if (selectionColumn.value) {\n return props.data || [];\n }\n\n return cloneDeep(props.data) || [];\n});\n\nconst hasBorder = computed(() => (typeof props.border !== 'undefined' ? props.border : true));\n\nconst sortChange = (data: any) => {\n emit('sort-change', data);\n};\n\nconst selectHandler = (selection: any, row: any) => {\n const column = selectionColumn.value;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n emit('select', selection, row);\n};\n\nconst selectAllHandler = (selection: any) => {\n emit('select-all', selection);\n};\n\nconst selectionChangeHandler = (selection: any) => {\n emit('selection-change', selection);\n};\n\nconst toggleRowSelection = (row: any, selected: boolean) => {\n tMagicTable.value?.toggleRowSelection(row, selected);\n};\n\nconst toggleRowExpansion = (row: any, expanded: boolean) => {\n tMagicTable.value?.toggleRowExpansion(row, expanded);\n};\n\nconst clearSelection = () => {\n tMagicTable.value?.clearSelection();\n};\n\nconst objectSpanMethod = (data: any) => {\n if (typeof props.spanMethod === 'function') {\n return props.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n};\n\ndefineExpose({\n toggleRowSelection,\n toggleRowExpansion,\n clearSelection,\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nexport default {\n install(app: App) {\n app.component('m-table', Table);\n },\n};\n"],"names":["__default__","defineComponent","tMagicMessage","datetimeFormatter","ref","getConfig","computed","cloneDeep","Table"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.0-beta.1",
2
+ "version": "1.2.0-beta.11",
3
3
  "name": "@tmagic/table",
4
4
  "sideEffects": [
5
5
  "dist/*"
@@ -32,15 +32,14 @@
32
32
  "url": "https://github.com/Tencent/tmagic-editor.git"
33
33
  },
34
34
  "dependencies": {
35
- "@tmagic/form": "1.2.0-beta.1",
36
- "@tmagic/utils": "1.2.0-beta.1",
37
- "element-plus": "^2.2.17",
35
+ "@tmagic/design": "1.2.0-beta.11",
36
+ "@tmagic/form": "1.2.0-beta.11",
37
+ "@tmagic/utils": "1.2.0-beta.11",
38
38
  "lodash-es": "^4.17.21",
39
39
  "vue": "^3.2.37"
40
40
  },
41
41
  "peerDependencies": {
42
- "@tmagic/form": "1.2.0-beta.1",
43
- "element-plus": "^2.2.17",
42
+ "@tmagic/form": "1.2.0-beta.11",
44
43
  "vue": "^3.2.37"
45
44
  },
46
45
  "devDependencies": {
@@ -54,6 +53,7 @@
54
53
  "sass": "^1.35.1",
55
54
  "typescript": "^4.7.4",
56
55
  "vite": "^3.1.3",
57
- "vue-tsc": "^0.39.4"
56
+ "vite-plugin-vue-setup-extend": "^0.4.0",
57
+ "vue-tsc": "^1.0.8"
58
58
  }
59
59
  }
@@ -1,130 +1,79 @@
1
1
  <template>
2
- <el-table-column :label="config.label" :width="config.width" :fixed="config.fixed">
2
+ <TMagicTableColumn :label="config.label" :width="config.width" :fixed="config.fixed">
3
3
  <template v-slot="scope">
4
- <el-button
4
+ <TMagicButton
5
5
  v-for="(action, actionIndex) in config.actions"
6
6
  v-show="display(action.display, scope.row) && !editState[scope.$index]"
7
- v-html="action.text"
8
7
  class="action-btn"
9
8
  text
10
9
  type="primary"
11
10
  size="small"
11
+ :icon="action.icon"
12
12
  :key="actionIndex"
13
13
  @click="actionHandler(action, scope.row, scope.$index)"
14
- ></el-button>
15
- <el-button
14
+ ><span v-html="formatter(action.text, scope.row)"></span
15
+ ></TMagicButton>
16
+ <TMagicButton
16
17
  class="action-btn"
17
18
  v-show="editState[scope.$index]"
18
19
  text
19
20
  type="primary"
20
21
  size="small"
21
22
  @click="save(scope.$index, config)"
22
- >保存</el-button
23
+ >保存</TMagicButton
23
24
  >
24
- <el-button
25
+ <TMagicButton
25
26
  class="action-btn"
26
27
  v-show="editState[scope.$index]"
27
28
  text
28
29
  type="primary"
29
30
  size="small"
30
31
  @click="editState[scope.$index] = undefined"
31
- >取消</el-button
32
+ >取消</TMagicButton
32
33
  >
33
34
  </template>
34
- </el-table-column>
35
+ </TMagicTableColumn>
35
36
  </template>
36
37
 
37
- <script lang="ts">
38
- import { PropType } from 'vue';
39
- import { ElMessage, ElMessageBox } from 'element-plus';
38
+ <script lang="ts" setup name="MTableActionsColumn">
39
+ import { TMagicButton, tMagicMessage, TMagicTableColumn } from '@tmagic/design';
40
40
 
41
41
  import { ColumnActionConfig, ColumnConfig } from './schema';
42
- </script>
43
-
44
- <script lang="ts" setup>
45
- const props = defineProps({
46
- columns: {
47
- type: Array as PropType<any[]>,
48
- require: true,
49
- default: () => [],
50
- },
51
-
52
- config: {
53
- type: Object as PropType<ColumnConfig>,
54
- require: true,
55
- default: () => {},
56
- },
57
-
58
- rowkeyName: {
59
- type: String,
60
- default: 'c_id',
61
- },
62
42
 
63
- editState: {
64
- type: Object,
65
- default: () => {},
43
+ const props = withDefaults(
44
+ defineProps<{
45
+ columns: any[];
46
+ config: ColumnConfig;
47
+ rowkeyName?: string;
48
+ editState?: any;
49
+ }>(),
50
+ {
51
+ columns: () => [],
52
+ config: () => ({}),
53
+ rowkeyName: 'c_id',
54
+ editState: () => [],
66
55
  },
67
- });
56
+ );
68
57
 
69
58
  const emit = defineEmits(['afterAction']);
70
59
 
71
60
  const display = (fuc: boolean | Function | undefined, row: any) => {
72
61
  if (typeof fuc === 'function') {
73
- return fuc.call(this, this, row);
62
+ return fuc(row);
74
63
  }
75
64
  return true;
76
65
  };
77
66
 
78
- const success = (msg: string, action: ColumnActionConfig, row: any) => {
79
- ElMessage.success(msg);
80
- action.after?.(row);
81
- };
82
-
83
- const error = (msg: string) => ElMessage.error(msg);
84
-
85
- const deleteAction = async (action: ColumnActionConfig, row: any) => {
86
- await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {
87
- confirmButtonText: '确定',
88
- cancelButtonText: '取消',
89
- type: 'warning',
90
- });
91
-
92
- const res = await action.handler?.(row);
93
-
94
- if (res.ret === 0) {
95
- success('删除成功!', action, row);
96
- } else {
97
- error(res.msg || '删除失败');
98
- }
99
- };
100
-
101
- const copyHandler = async (action: ColumnActionConfig, row: any) => {
102
- await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {
103
- confirmButtonText: '确定',
104
- cancelButtonText: '取消',
105
- type: 'warning',
106
- });
107
-
108
- try {
109
- const res = await action.handler?.(row);
110
-
111
- if (res.ret === 0) {
112
- success('复制成功!', action, row);
113
- } else {
114
- error(`复制失败!${res.msg}`);
115
- }
116
- } catch (e) {
117
- error('复制失败!');
67
+ const formatter = (fuc: string | Function | undefined, row: any) => {
68
+ if (typeof fuc === 'function') {
69
+ return fuc(row);
118
70
  }
71
+ return fuc;
119
72
  };
120
73
 
121
74
  const actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {
122
75
  await action.before?.(row);
123
- if (action.type === 'delete') {
124
- await deleteAction(action, row);
125
- } else if (action.type === 'copy') {
126
- await copyHandler(action, row);
127
- } else if (action.type === 'edit') {
76
+ if (action.type === 'edit') {
128
77
  props.editState[index] = row;
129
78
  } else {
130
79
  await action.handler?.(row);
@@ -150,16 +99,11 @@ const save = async (index: number, config: ColumnConfig) => {
150
99
 
151
100
  if (res) {
152
101
  if (res.ret === 0) {
153
- ElMessage.success('保存成功');
102
+ tMagicMessage.success('保存成功');
154
103
  props.editState[index] = undefined;
155
104
  emit('afterAction');
156
105
  } else {
157
- ElMessage.error({
158
- duration: 10000,
159
- showClose: true,
160
- dangerouslyUseHTMLString: true,
161
- message: res.msg || '保存失败',
162
- });
106
+ tMagicMessage.error(res.msg || '保存失败');
163
107
  }
164
108
  } else {
165
109
  props.editState[index] = undefined;
@@ -1,37 +1,34 @@
1
1
  <template>
2
- <el-table-column type="expand">
2
+ <TMagicTableColumn type="expand">
3
3
  <template #default="scope">
4
- <m-table
4
+ <MTable
5
5
  v-if="config.table"
6
6
  :show-header="false"
7
7
  :columns="config.table"
8
- :data="scope.row[config.prop]"
9
- ></m-table>
10
- <m-form
8
+ :data="(config.prop && scope.row[config.prop]) || []"
9
+ ></MTable>
10
+ <MForm
11
11
  v-if="config.form"
12
12
  :config="config.form"
13
- :init-values="config.values || scope.row[config.prop] || {}"
14
- ></m-form>
13
+ :init-values="config.values || (config.prop && scope.row[config.prop]) || {}"
14
+ ></MForm>
15
15
  </template>
16
- </el-table-column>
16
+ </TMagicTableColumn>
17
17
  </template>
18
18
 
19
- <script lang="ts">
20
- import { defineComponent, PropType } from 'vue';
21
-
19
+ <script lang="ts" setup name="MTableExpandColumn">
20
+ import { TMagicTableColumn } from '@tmagic/design';
22
21
  import { MForm } from '@tmagic/form';
23
22
 
24
23
  import { ColumnConfig } from './schema';
24
+ import MTable from './Table.vue';
25
25
 
26
- export default defineComponent({
27
- components: { MForm },
28
-
29
- props: {
30
- config: {
31
- type: Object as PropType<ColumnConfig>,
32
- default: () => ({}),
33
- required: true,
34
- },
26
+ withDefaults(
27
+ defineProps<{
28
+ config: ColumnConfig;
29
+ }>(),
30
+ {
31
+ config: () => ({}),
35
32
  },
36
- });
33
+ );
37
34
  </script>
@@ -1,40 +1,39 @@
1
1
  <template>
2
- <el-table-column :label="config.label" :width="config.width" :fixed="config.fixed">
2
+ <TMagicTableColumn :label="config.label" :width="config.width" :fixed="config.fixed">
3
3
  <template v-slot="scope">
4
- <el-popover :placement="config.popover.placement" :width="config.popover.width" :trigger="config.popover.trigger">
5
- <m-table
4
+ <TMagicPopover
5
+ v-if="config.popover"
6
+ :placement="config.popover.placement"
7
+ :width="config.popover.width"
8
+ :trigger="config.popover.trigger"
9
+ >
10
+ <MTable
6
11
  v-if="config.popover.tableEmbed"
7
12
  :show-header="config.showHeader"
8
13
  :columns="config.table"
9
- :data="scope.row[config.prop]"
10
- ></m-table>
14
+ :data="(config.prop && scope.row[config.prop]) || []"
15
+ ></MTable>
11
16
  <template #reference>
12
- <el-button text type="primary"> {{ config.text || formatter(config, scope.row) }}</el-button>
17
+ <TMagicButton text type="primary"> {{ config.text || formatter(config, scope.row) }}</TMagicButton>
13
18
  </template>
14
- </el-popover>
19
+ </TMagicPopover>
15
20
  </template>
16
- </el-table-column>
21
+ </TMagicTableColumn>
17
22
  </template>
18
23
 
19
- <script lang="ts">
20
- import { defineComponent, PropType } from 'vue';
24
+ <script lang="ts" setup name="MTablePopoverColumn">
25
+ import { TMagicButton, TMagicPopover, TMagicTableColumn } from '@tmagic/design';
21
26
 
22
27
  import { ColumnConfig } from './schema';
28
+ import MTable from './Table.vue';
23
29
  import { formatter } from './utils';
24
30
 
25
- export default defineComponent({
26
- props: {
27
- config: {
28
- type: Object as PropType<ColumnConfig>,
29
- default: () => ({}),
30
- required: true,
31
- },
31
+ withDefaults(
32
+ defineProps<{
33
+ config: ColumnConfig;
34
+ }>(),
35
+ {
36
+ config: () => ({}),
32
37
  },
33
-
34
- setup() {
35
- return {
36
- formatter,
37
- };
38
- },
39
- });
38
+ );
40
39
  </script>