@tmagic/table 1.0.0-beta.6 → 1.0.0-rc.10
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.
- package/README.md +1 -0
- package/dist/style.css +0 -3
- package/dist/tmagic-table.es.js +27 -15
- package/dist/tmagic-table.es.js.map +1 -1
- package/dist/tmagic-table.umd.js +29 -18
- package/dist/tmagic-table.umd.js.map +1 -1
- package/dist/types/src/Table.vue.d.ts +2 -0
- package/dist/types/src/schema.d.ts +2 -1
- package/package.json +15 -6
- package/src/ActionsColumn.vue +12 -8
- package/src/PopoverColumn.vue +1 -1
- package/src/Table.vue +2 -4
- package/src/TextColumn.vue +2 -2
- package/src/schema.ts +2 -1
- package/tsconfig.json +0 -9
- package/vite.config.ts +0 -27
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# [文档](https://tencent.github.io/tmagic-editor/docs/)
|
package/dist/style.css
CHANGED
package/dist/tmagic-table.es.js
CHANGED
|
@@ -7,6 +7,7 @@ import { datetimeFormatter } from '@tmagic/utils';
|
|
|
7
7
|
const _hoisted_1$1 = /* @__PURE__ */ createTextVNode("\u4FDD\u5B58");
|
|
8
8
|
const _hoisted_2$1 = /* @__PURE__ */ createTextVNode("\u53D6\u6D88");
|
|
9
9
|
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
10
|
+
__name: "ActionsColumn",
|
|
10
11
|
props: {
|
|
11
12
|
columns: {
|
|
12
13
|
type: Array,
|
|
@@ -38,9 +39,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
38
39
|
}
|
|
39
40
|
return true;
|
|
40
41
|
};
|
|
41
|
-
const success = (msg, action) => {
|
|
42
|
+
const success = (msg, action, row) => {
|
|
42
43
|
ElMessage.success(msg);
|
|
43
|
-
action.after?.();
|
|
44
|
+
action.after?.(row);
|
|
44
45
|
};
|
|
45
46
|
const error = (msg) => ElMessage.error(msg);
|
|
46
47
|
const deleteAction = async (action, row) => {
|
|
@@ -51,7 +52,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
51
52
|
});
|
|
52
53
|
const res = await action.handler?.(row);
|
|
53
54
|
if (res.ret === 0) {
|
|
54
|
-
success("\u5220\u9664\u6210\u529F!", action);
|
|
55
|
+
success("\u5220\u9664\u6210\u529F!", action, row);
|
|
55
56
|
} else {
|
|
56
57
|
error(res.msg || "\u5220\u9664\u5931\u8D25");
|
|
57
58
|
}
|
|
@@ -65,7 +66,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
65
66
|
try {
|
|
66
67
|
const res = await action.handler?.(row);
|
|
67
68
|
if (res.ret === 0) {
|
|
68
|
-
success("\u590D\u5236\u6210\u529F!", action);
|
|
69
|
+
success("\u590D\u5236\u6210\u529F!", action, row);
|
|
69
70
|
} else {
|
|
70
71
|
error(`\u590D\u5236\u5931\u8D25!${res.msg}`);
|
|
71
72
|
}
|
|
@@ -74,6 +75,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
74
75
|
}
|
|
75
76
|
};
|
|
76
77
|
const actionHandler = async (action, row, index) => {
|
|
78
|
+
await action.before?.(row);
|
|
77
79
|
if (action.type === "delete") {
|
|
78
80
|
await deleteAction(action, row);
|
|
79
81
|
} else if (action.type === "copy") {
|
|
@@ -82,8 +84,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
82
84
|
props.editState[index] = row;
|
|
83
85
|
} else {
|
|
84
86
|
await action.handler?.(row);
|
|
85
|
-
action.after?.();
|
|
86
87
|
}
|
|
88
|
+
action.after?.(row);
|
|
87
89
|
};
|
|
88
90
|
const save = async (index, config) => {
|
|
89
91
|
const action = config.actions?.find((item) => item.type === "edit")?.action;
|
|
@@ -128,7 +130,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
128
130
|
return withDirectives((openBlock(), createBlock(_component_el_button, {
|
|
129
131
|
innerHTML: action.text,
|
|
130
132
|
class: "action-btn",
|
|
131
|
-
|
|
133
|
+
text: "",
|
|
134
|
+
type: "primary",
|
|
132
135
|
size: "small",
|
|
133
136
|
key: actionIndex,
|
|
134
137
|
onClick: ($event) => actionHandler(action, scope.row, scope.$index)
|
|
@@ -138,7 +141,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
138
141
|
}), 128)),
|
|
139
142
|
withDirectives(createVNode(_component_el_button, {
|
|
140
143
|
class: "action-btn",
|
|
141
|
-
|
|
144
|
+
text: "",
|
|
145
|
+
type: "primary",
|
|
142
146
|
size: "small",
|
|
143
147
|
onClick: ($event) => save(scope.$index, __props.config)
|
|
144
148
|
}, {
|
|
@@ -151,7 +155,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
151
155
|
]),
|
|
152
156
|
withDirectives(createVNode(_component_el_button, {
|
|
153
157
|
class: "action-btn",
|
|
154
|
-
|
|
158
|
+
text: "",
|
|
159
|
+
type: "primary",
|
|
155
160
|
size: "small",
|
|
156
161
|
onClick: ($event) => __props.editState[scope.$index] = void 0
|
|
157
162
|
}, {
|
|
@@ -256,7 +261,10 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
256
261
|
trigger: _ctx.config.popover.trigger
|
|
257
262
|
}, {
|
|
258
263
|
reference: withCtx(() => [
|
|
259
|
-
createVNode(_component_el_button, {
|
|
264
|
+
createVNode(_component_el_button, {
|
|
265
|
+
text: "",
|
|
266
|
+
type: "primary"
|
|
267
|
+
}, {
|
|
260
268
|
default: withCtx(() => [
|
|
261
269
|
createTextVNode(toDisplayString(_ctx.config.text || _ctx.formatter(_ctx.config, scope.row)), 1)
|
|
262
270
|
]),
|
|
@@ -336,7 +344,8 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
336
344
|
_: 2
|
|
337
345
|
}, 1032, ["model"])) : _ctx.config.action === "actionLink" ? (openBlock(), createBlock(_component_el_button, {
|
|
338
346
|
key: 1,
|
|
339
|
-
|
|
347
|
+
text: "",
|
|
348
|
+
type: "primary",
|
|
340
349
|
onClick: ($event) => _ctx.config.handler(scope.row)
|
|
341
350
|
}, {
|
|
342
351
|
default: withCtx(() => [
|
|
@@ -365,7 +374,10 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
365
374
|
createElementVNode("div", null, toDisplayString(_ctx.formatter(_ctx.config, scope.row)), 1)
|
|
366
375
|
]),
|
|
367
376
|
default: withCtx(() => [
|
|
368
|
-
createVNode(_component_el_button, {
|
|
377
|
+
createVNode(_component_el_button, {
|
|
378
|
+
text: "",
|
|
379
|
+
type: "primary"
|
|
380
|
+
}, {
|
|
369
381
|
default: withCtx(() => [
|
|
370
382
|
_hoisted_4
|
|
371
383
|
]),
|
|
@@ -392,7 +404,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
392
404
|
}
|
|
393
405
|
var TextColumn = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
|
|
394
406
|
|
|
395
|
-
var Table_vue_vue_type_style_index_0_lang =
|
|
407
|
+
var Table_vue_vue_type_style_index_0_lang = /* #__PURE__ */ (() => ".m-table .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n}\n.m-table .keep-all {\n word-break: keep-all;\n}\n.m-table .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n}\n.m-table .el-table__row.el-table__row--level-1 {\n color: #999;\n}")();
|
|
396
408
|
|
|
397
409
|
const _sfc_main = defineComponent({
|
|
398
410
|
name: "m-table",
|
|
@@ -418,7 +430,8 @@ const _sfc_main = defineComponent({
|
|
|
418
430
|
type: [String, Number]
|
|
419
431
|
},
|
|
420
432
|
showHeader: {
|
|
421
|
-
type: Boolean
|
|
433
|
+
type: Boolean,
|
|
434
|
+
default: true
|
|
422
435
|
},
|
|
423
436
|
emptyText: {
|
|
424
437
|
type: String
|
|
@@ -528,8 +541,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
528
541
|
item.type === "expand" ? (openBlock(), createBlock(_component_expand_column, {
|
|
529
542
|
config: item,
|
|
530
543
|
key: columnIndex
|
|
531
|
-
}, null, 8, ["config"])) :
|
|
532
|
-
item.selection ? (openBlock(), createBlock(_component_el_table_column, {
|
|
544
|
+
}, null, 8, ["config"])) : item.selection ? (openBlock(), createBlock(_component_el_table_column, {
|
|
533
545
|
type: "selection",
|
|
534
546
|
key: columnIndex,
|
|
535
547
|
width: "40",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmagic-table.es.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../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 type=\"text\"\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 type=\"text\"\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 type=\"text\"\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) => {\n ElMessage.success(msg);\n action.after?.();\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);\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);\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 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 action.after?.();\n }\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","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\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 type=\"text\"> {{ 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'\" type=\"text\" @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 type=\"text\">扩展配置</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 :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\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-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 fetch: {\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 },\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 {\n margin-right: 10px;\n }\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":["_sfc_main","_openBlock","_createBlock","_withCtx","_createCommentVNode","_toDisplayString","ActionsColumn","_createElementBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmagic-table.es.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../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","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\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 :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\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 fetch: {\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":["_sfc_main","_openBlock","_createBlock","_withCtx","_createCommentVNode","_createVNode","_createElementBlock","_createElementVNode","_toDisplayString","ActionsColumn","_Fragment","_renderList"],"mappings":"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"}
|
package/dist/tmagic-table.umd.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('lodash-es'), require('element-plus'), require('@tmagic/form'), require('@tmagic/utils')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', 'vue', 'lodash-es', 'element-plus', '@tmagic/form', '@tmagic/utils'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicTable = {}, global.
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicTable = {}, global.Vue, global.lodashEs, global.ElementPlus, global.form, global.utils));
|
|
5
5
|
})(this, (function (exports, vue, lodashEs, elementPlus, form, utils) { 'use strict';
|
|
6
6
|
|
|
7
7
|
const _hoisted_1$1 = /* @__PURE__ */ vue.createTextVNode("\u4FDD\u5B58");
|
|
8
8
|
const _hoisted_2$1 = /* @__PURE__ */ vue.createTextVNode("\u53D6\u6D88");
|
|
9
9
|
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
10
|
+
__name: "ActionsColumn",
|
|
10
11
|
props: {
|
|
11
12
|
columns: {
|
|
12
13
|
type: Array,
|
|
@@ -38,9 +39,9 @@
|
|
|
38
39
|
}
|
|
39
40
|
return true;
|
|
40
41
|
};
|
|
41
|
-
const success = (msg, action) => {
|
|
42
|
+
const success = (msg, action, row) => {
|
|
42
43
|
elementPlus.ElMessage.success(msg);
|
|
43
|
-
action.after?.();
|
|
44
|
+
action.after?.(row);
|
|
44
45
|
};
|
|
45
46
|
const error = (msg) => elementPlus.ElMessage.error(msg);
|
|
46
47
|
const deleteAction = async (action, row) => {
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
});
|
|
52
53
|
const res = await action.handler?.(row);
|
|
53
54
|
if (res.ret === 0) {
|
|
54
|
-
success("\u5220\u9664\u6210\u529F!", action);
|
|
55
|
+
success("\u5220\u9664\u6210\u529F!", action, row);
|
|
55
56
|
} else {
|
|
56
57
|
error(res.msg || "\u5220\u9664\u5931\u8D25");
|
|
57
58
|
}
|
|
@@ -65,7 +66,7 @@
|
|
|
65
66
|
try {
|
|
66
67
|
const res = await action.handler?.(row);
|
|
67
68
|
if (res.ret === 0) {
|
|
68
|
-
success("\u590D\u5236\u6210\u529F!", action);
|
|
69
|
+
success("\u590D\u5236\u6210\u529F!", action, row);
|
|
69
70
|
} else {
|
|
70
71
|
error(`\u590D\u5236\u5931\u8D25!${res.msg}`);
|
|
71
72
|
}
|
|
@@ -74,6 +75,7 @@
|
|
|
74
75
|
}
|
|
75
76
|
};
|
|
76
77
|
const actionHandler = async (action, row, index) => {
|
|
78
|
+
await action.before?.(row);
|
|
77
79
|
if (action.type === "delete") {
|
|
78
80
|
await deleteAction(action, row);
|
|
79
81
|
} else if (action.type === "copy") {
|
|
@@ -82,8 +84,8 @@
|
|
|
82
84
|
props.editState[index] = row;
|
|
83
85
|
} else {
|
|
84
86
|
await action.handler?.(row);
|
|
85
|
-
action.after?.();
|
|
86
87
|
}
|
|
88
|
+
action.after?.(row);
|
|
87
89
|
};
|
|
88
90
|
const save = async (index, config) => {
|
|
89
91
|
const action = config.actions?.find((item) => item.type === "edit")?.action;
|
|
@@ -128,7 +130,8 @@
|
|
|
128
130
|
return vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
129
131
|
innerHTML: action.text,
|
|
130
132
|
class: "action-btn",
|
|
131
|
-
|
|
133
|
+
text: "",
|
|
134
|
+
type: "primary",
|
|
132
135
|
size: "small",
|
|
133
136
|
key: actionIndex,
|
|
134
137
|
onClick: ($event) => actionHandler(action, scope.row, scope.$index)
|
|
@@ -138,7 +141,8 @@
|
|
|
138
141
|
}), 128)),
|
|
139
142
|
vue.withDirectives(vue.createVNode(_component_el_button, {
|
|
140
143
|
class: "action-btn",
|
|
141
|
-
|
|
144
|
+
text: "",
|
|
145
|
+
type: "primary",
|
|
142
146
|
size: "small",
|
|
143
147
|
onClick: ($event) => save(scope.$index, __props.config)
|
|
144
148
|
}, {
|
|
@@ -151,7 +155,8 @@
|
|
|
151
155
|
]),
|
|
152
156
|
vue.withDirectives(vue.createVNode(_component_el_button, {
|
|
153
157
|
class: "action-btn",
|
|
154
|
-
|
|
158
|
+
text: "",
|
|
159
|
+
type: "primary",
|
|
155
160
|
size: "small",
|
|
156
161
|
onClick: ($event) => __props.editState[scope.$index] = void 0
|
|
157
162
|
}, {
|
|
@@ -256,7 +261,10 @@
|
|
|
256
261
|
trigger: _ctx.config.popover.trigger
|
|
257
262
|
}, {
|
|
258
263
|
reference: vue.withCtx(() => [
|
|
259
|
-
vue.createVNode(_component_el_button, {
|
|
264
|
+
vue.createVNode(_component_el_button, {
|
|
265
|
+
text: "",
|
|
266
|
+
type: "primary"
|
|
267
|
+
}, {
|
|
260
268
|
default: vue.withCtx(() => [
|
|
261
269
|
vue.createTextVNode(vue.toDisplayString(_ctx.config.text || _ctx.formatter(_ctx.config, scope.row)), 1)
|
|
262
270
|
]),
|
|
@@ -336,7 +344,8 @@
|
|
|
336
344
|
_: 2
|
|
337
345
|
}, 1032, ["model"])) : _ctx.config.action === "actionLink" ? (vue.openBlock(), vue.createBlock(_component_el_button, {
|
|
338
346
|
key: 1,
|
|
339
|
-
|
|
347
|
+
text: "",
|
|
348
|
+
type: "primary",
|
|
340
349
|
onClick: ($event) => _ctx.config.handler(scope.row)
|
|
341
350
|
}, {
|
|
342
351
|
default: vue.withCtx(() => [
|
|
@@ -365,7 +374,10 @@
|
|
|
365
374
|
vue.createElementVNode("div", null, vue.toDisplayString(_ctx.formatter(_ctx.config, scope.row)), 1)
|
|
366
375
|
]),
|
|
367
376
|
default: vue.withCtx(() => [
|
|
368
|
-
vue.createVNode(_component_el_button, {
|
|
377
|
+
vue.createVNode(_component_el_button, {
|
|
378
|
+
text: "",
|
|
379
|
+
type: "primary"
|
|
380
|
+
}, {
|
|
369
381
|
default: vue.withCtx(() => [
|
|
370
382
|
_hoisted_4
|
|
371
383
|
]),
|
|
@@ -392,7 +404,7 @@
|
|
|
392
404
|
}
|
|
393
405
|
var TextColumn = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
|
|
394
406
|
|
|
395
|
-
var Table_vue_vue_type_style_index_0_lang =
|
|
407
|
+
var Table_vue_vue_type_style_index_0_lang = /* #__PURE__ */ (() => ".m-table .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n}\n.m-table .keep-all {\n word-break: keep-all;\n}\n.m-table .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n}\n.m-table .el-table__row.el-table__row--level-1 {\n color: #999;\n}")();
|
|
396
408
|
|
|
397
409
|
const _sfc_main = vue.defineComponent({
|
|
398
410
|
name: "m-table",
|
|
@@ -418,7 +430,8 @@
|
|
|
418
430
|
type: [String, Number]
|
|
419
431
|
},
|
|
420
432
|
showHeader: {
|
|
421
|
-
type: Boolean
|
|
433
|
+
type: Boolean,
|
|
434
|
+
default: true
|
|
422
435
|
},
|
|
423
436
|
emptyText: {
|
|
424
437
|
type: String
|
|
@@ -528,8 +541,7 @@
|
|
|
528
541
|
item.type === "expand" ? (vue.openBlock(), vue.createBlock(_component_expand_column, {
|
|
529
542
|
config: item,
|
|
530
543
|
key: columnIndex
|
|
531
|
-
}, null, 8, ["config"])) : vue.
|
|
532
|
-
item.selection ? (vue.openBlock(), vue.createBlock(_component_el_table_column, {
|
|
544
|
+
}, null, 8, ["config"])) : item.selection ? (vue.openBlock(), vue.createBlock(_component_el_table_column, {
|
|
533
545
|
type: "selection",
|
|
534
546
|
key: columnIndex,
|
|
535
547
|
width: "40",
|
|
@@ -569,8 +581,7 @@
|
|
|
569
581
|
exports.MagicTable = Table;
|
|
570
582
|
exports["default"] = index;
|
|
571
583
|
|
|
572
|
-
Object.
|
|
573
|
-
exports[Symbol.toStringTag] = 'Module';
|
|
584
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
574
585
|
|
|
575
586
|
}));
|
|
576
587
|
//# sourceMappingURL=tmagic-table.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../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 type=\"text\"\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 type=\"text\"\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 type=\"text\"\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) => {\n ElMessage.success(msg);\n action.after?.();\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);\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);\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 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 action.after?.();\n }\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","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\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 type=\"text\"> {{ 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'\" type=\"text\" @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 type=\"text\">扩展配置</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 :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\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-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 fetch: {\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 },\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 {\n margin-right: 10px;\n }\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","_sfc_main","defineComponent","MForm","_openBlock","_createBlock","_withCtx","_createCommentVNode","datetimeFormatter","_toDisplayString","ActionsColumn","cloneDeep","_createElementBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../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","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\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 :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\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 fetch: {\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","_sfc_main","defineComponent","MForm","_openBlock","_createBlock","_withCtx","_createCommentVNode","datetimeFormatter","_createVNode","_createElementBlock","_createElementVNode","_toDisplayString","ActionsColumn","cloneDeep","_Fragment","_renderList"],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ declare const _default: DefineComponent<{
|
|
|
29
29
|
/** 是否显示表头 */
|
|
30
30
|
showHeader: {
|
|
31
31
|
type: BooleanConstructor;
|
|
32
|
+
default: boolean;
|
|
32
33
|
};
|
|
33
34
|
/** 空数据时显示的文本内容 */
|
|
34
35
|
emptyText: {
|
|
@@ -95,6 +96,7 @@ declare const _default: DefineComponent<{
|
|
|
95
96
|
/** 是否显示表头 */
|
|
96
97
|
showHeader: {
|
|
97
98
|
type: BooleanConstructor;
|
|
99
|
+
default: boolean;
|
|
98
100
|
};
|
|
99
101
|
/** 空数据时显示的文本内容 */
|
|
100
102
|
emptyText: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.0-
|
|
2
|
+
"version": "1.0.0-rc.10",
|
|
3
3
|
"name": "@tmagic/table",
|
|
4
|
-
"sideEffects":
|
|
4
|
+
"sideEffects": [
|
|
5
|
+
"dist/*"
|
|
6
|
+
],
|
|
5
7
|
"main": "dist/tmagic-table.umd.js",
|
|
6
8
|
"module": "dist/tmagic-table.es.js",
|
|
7
9
|
"types": "dist/types/src/index.d.ts",
|
|
@@ -13,8 +15,10 @@
|
|
|
13
15
|
"./dist/style.css": {
|
|
14
16
|
"import": "./dist/style.css",
|
|
15
17
|
"require": "./dist/style.css"
|
|
16
|
-
}
|
|
18
|
+
},
|
|
19
|
+
"./*": "./*"
|
|
17
20
|
},
|
|
21
|
+
"license": "Apache-2.0",
|
|
18
22
|
"scripts": {
|
|
19
23
|
"build": "vite build"
|
|
20
24
|
},
|
|
@@ -26,18 +30,23 @@
|
|
|
26
30
|
"url": "https://github.com/Tencent/tmagic-editor.git"
|
|
27
31
|
},
|
|
28
32
|
"dependencies": {
|
|
29
|
-
"@tmagic/form": "
|
|
30
|
-
"element-plus": "^2.0
|
|
33
|
+
"@tmagic/form": "1.0.0-rc.10",
|
|
34
|
+
"element-plus": "^2.2.0",
|
|
31
35
|
"lodash-es": "^4.17.21",
|
|
32
36
|
"vue": "^3.2.0"
|
|
33
37
|
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@tmagic/form": "1.0.0-rc.10",
|
|
40
|
+
"element-plus": "^2.2.0",
|
|
41
|
+
"vue": "^3.2.0"
|
|
42
|
+
},
|
|
34
43
|
"devDependencies": {
|
|
35
44
|
"@types/color": "^3.0.1",
|
|
36
45
|
"@types/lodash-es": "^4.17.4",
|
|
37
46
|
"@types/node": "^15.12.4",
|
|
38
47
|
"@vitejs/plugin-vue": "^1.2.3",
|
|
39
48
|
"@vue/compiler-sfc": "^3.2.0",
|
|
40
|
-
"@vue/test-utils": "^2.0.0
|
|
49
|
+
"@vue/test-utils": "^2.0.0",
|
|
41
50
|
"sass": "^1.35.1",
|
|
42
51
|
"typescript": "^4.3.4",
|
|
43
52
|
"vite": "^2.3.7",
|
package/src/ActionsColumn.vue
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
v-show="display(action.display, scope.row) && !editState[scope.$index]"
|
|
7
7
|
v-html="action.text"
|
|
8
8
|
class="action-btn"
|
|
9
|
-
|
|
9
|
+
text
|
|
10
|
+
type="primary"
|
|
10
11
|
size="small"
|
|
11
12
|
:key="actionIndex"
|
|
12
13
|
@click="actionHandler(action, scope.row, scope.$index)"
|
|
@@ -14,7 +15,8 @@
|
|
|
14
15
|
<el-button
|
|
15
16
|
class="action-btn"
|
|
16
17
|
v-show="editState[scope.$index]"
|
|
17
|
-
|
|
18
|
+
text
|
|
19
|
+
type="primary"
|
|
18
20
|
size="small"
|
|
19
21
|
@click="save(scope.$index, config)"
|
|
20
22
|
>保存</el-button
|
|
@@ -22,7 +24,8 @@
|
|
|
22
24
|
<el-button
|
|
23
25
|
class="action-btn"
|
|
24
26
|
v-show="editState[scope.$index]"
|
|
25
|
-
|
|
27
|
+
text
|
|
28
|
+
type="primary"
|
|
26
29
|
size="small"
|
|
27
30
|
@click="editState[scope.$index] = undefined"
|
|
28
31
|
>取消</el-button
|
|
@@ -72,9 +75,9 @@ const display = (fuc: boolean | Function | undefined, row: any) => {
|
|
|
72
75
|
return true;
|
|
73
76
|
};
|
|
74
77
|
|
|
75
|
-
const success = (msg: string, action: ColumnActionConfig) => {
|
|
78
|
+
const success = (msg: string, action: ColumnActionConfig, row: any) => {
|
|
76
79
|
ElMessage.success(msg);
|
|
77
|
-
action.after?.();
|
|
80
|
+
action.after?.(row);
|
|
78
81
|
};
|
|
79
82
|
|
|
80
83
|
const error = (msg: string) => ElMessage.error(msg);
|
|
@@ -89,7 +92,7 @@ const deleteAction = async (action: ColumnActionConfig, row: any) => {
|
|
|
89
92
|
const res = await action.handler?.(row);
|
|
90
93
|
|
|
91
94
|
if (res.ret === 0) {
|
|
92
|
-
success('删除成功!', action);
|
|
95
|
+
success('删除成功!', action, row);
|
|
93
96
|
} else {
|
|
94
97
|
error(res.msg || '删除失败');
|
|
95
98
|
}
|
|
@@ -106,7 +109,7 @@ const copyHandler = async (action: ColumnActionConfig, row: any) => {
|
|
|
106
109
|
const res = await action.handler?.(row);
|
|
107
110
|
|
|
108
111
|
if (res.ret === 0) {
|
|
109
|
-
success('复制成功!', action);
|
|
112
|
+
success('复制成功!', action, row);
|
|
110
113
|
} else {
|
|
111
114
|
error(`复制失败!${res.msg}`);
|
|
112
115
|
}
|
|
@@ -116,6 +119,7 @@ const copyHandler = async (action: ColumnActionConfig, row: any) => {
|
|
|
116
119
|
};
|
|
117
120
|
|
|
118
121
|
const actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {
|
|
122
|
+
await action.before?.(row);
|
|
119
123
|
if (action.type === 'delete') {
|
|
120
124
|
await deleteAction(action, row);
|
|
121
125
|
} else if (action.type === 'copy') {
|
|
@@ -124,8 +128,8 @@ const actionHandler = async (action: ColumnActionConfig, row: any, index: number
|
|
|
124
128
|
props.editState[index] = row;
|
|
125
129
|
} else {
|
|
126
130
|
await action.handler?.(row);
|
|
127
|
-
action.after?.();
|
|
128
131
|
}
|
|
132
|
+
action.after?.(row);
|
|
129
133
|
};
|
|
130
134
|
|
|
131
135
|
const save = async (index: number, config: ColumnConfig) => {
|
package/src/PopoverColumn.vue
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
:data="scope.row[config.prop]"
|
|
10
10
|
></m-table>
|
|
11
11
|
<template #reference>
|
|
12
|
-
<el-button type="
|
|
12
|
+
<el-button text type="primary"> {{ config.text || formatter(config, scope.row) }}</el-button>
|
|
13
13
|
</template>
|
|
14
14
|
</el-popover>
|
|
15
15
|
</template>
|
package/src/Table.vue
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<expand-column :config="item" :key="columnIndex"></expand-column>
|
|
23
23
|
</template>
|
|
24
24
|
|
|
25
|
-
<template v-if="item.selection">
|
|
25
|
+
<template v-else-if="item.selection">
|
|
26
26
|
<el-table-column type="selection" :key="columnIndex" width="40" :selectable="item.selectable"></el-table-column>
|
|
27
27
|
</template>
|
|
28
28
|
|
|
@@ -95,6 +95,7 @@ export default defineComponent({
|
|
|
95
95
|
/** 是否显示表头 */
|
|
96
96
|
showHeader: {
|
|
97
97
|
type: Boolean,
|
|
98
|
+
default: true,
|
|
98
99
|
},
|
|
99
100
|
|
|
100
101
|
/** 空数据时显示的文本内容 */
|
|
@@ -204,9 +205,6 @@ export default defineComponent({
|
|
|
204
205
|
|
|
205
206
|
<style lang="scss">
|
|
206
207
|
.m-table {
|
|
207
|
-
.el-button.action-btn {
|
|
208
|
-
margin-right: 10px;
|
|
209
|
-
}
|
|
210
208
|
.el-button.action-btn + .el-button.action-btn {
|
|
211
209
|
margin-left: 0;
|
|
212
210
|
}
|
package/src/TextColumn.vue
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
></m-form-container>
|
|
19
19
|
</el-form>
|
|
20
20
|
|
|
21
|
-
<el-button v-else-if="config.action === 'actionLink'" type="
|
|
21
|
+
<el-button v-else-if="config.action === 'actionLink'" text type="primary" @click="config.handler(scope.row)">
|
|
22
22
|
{{ formatter(config, scope.row) }}
|
|
23
23
|
</el-button>
|
|
24
24
|
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<template #content>
|
|
35
35
|
<div>{{ formatter(config, scope.row) }}</div>
|
|
36
36
|
</template>
|
|
37
|
-
<el-button type="
|
|
37
|
+
<el-button text type="primary">扩展配置</el-button>
|
|
38
38
|
</el-tooltip>
|
|
39
39
|
|
|
40
40
|
<el-tag
|
package/src/schema.ts
CHANGED
package/tsconfig.json
DELETED
package/vite.config.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Tencent is pleased to support the open source community by making TMagicEditor available.
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.
|
|
5
|
-
*
|
|
6
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
* you may not use this file except in compliance with the License.
|
|
8
|
-
* You may obtain a copy of the License at
|
|
9
|
-
*
|
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
*
|
|
12
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
* See the License for the specific language governing permissions and
|
|
16
|
-
* limitations under the License.
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
import { defineConfig } from 'vite';
|
|
20
|
-
|
|
21
|
-
import { getBaseConfig } from '../vite-config';
|
|
22
|
-
|
|
23
|
-
import pkg from './package.json';
|
|
24
|
-
|
|
25
|
-
const deps = Object.keys(pkg.dependencies);
|
|
26
|
-
|
|
27
|
-
export default defineConfig(getBaseConfig(deps, 'TMagicTable'));
|