@tmagic/table 1.2.0-beta.9 → 1.2.0

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,21 +1,24 @@
1
- import { defineComponent, openBlock, createBlock, unref, withCtx, createElementBlock, Fragment, renderList, withDirectives, createElementVNode, vShow, createVNode, createTextVNode, createCommentVNode, toDisplayString, resolveComponent, ref, computed, resolveDirective, resolveDynamicComponent } from 'vue';
1
+ import { defineComponent, openBlock, createBlock, unref, withCtx, createElementBlock, Fragment, renderList, withDirectives, createElementVNode, vShow, createVNode, createTextVNode, createCommentVNode, resolveDynamicComponent, normalizeProps, mergeProps, toDisplayString, resolveComponent, ref, computed, resolveDirective } from 'vue';
2
2
  import { cloneDeep } from 'lodash-es';
3
3
  import { TMagicTableColumn, TMagicButton, tMagicMessage, TMagicPopover, TMagicForm, TMagicTag, getConfig, TMagicTable } from '@tmagic/design';
4
4
  import { MForm } from '@tmagic/form';
5
5
  import { datetimeFormatter } from '@tmagic/utils';
6
6
 
7
- const _hoisted_1$1 = ["innerHTML"];
7
+ const _hoisted_1$2 = ["innerHTML"];
8
8
  const _hoisted_2$1 = /* @__PURE__ */ createTextVNode("\u4FDD\u5B58");
9
9
  const _hoisted_3$1 = /* @__PURE__ */ createTextVNode("\u53D6\u6D88");
10
+ const __default__$4 = defineComponent({
11
+ name: "MTableActionsColumn"
12
+ });
10
13
  const _sfc_main$4 = /* @__PURE__ */ defineComponent({
11
- __name: "ActionsColumn",
14
+ ...__default__$4,
12
15
  props: {
13
16
  columns: { default: () => [] },
14
17
  config: { default: () => ({}) },
15
18
  rowkeyName: { default: "c_id" },
16
19
  editState: { default: () => [] }
17
20
  },
18
- emits: ["afterAction"],
21
+ emits: ["after-action"],
19
22
  setup(__props, { emit }) {
20
23
  const props = __props;
21
24
  const display = (fuc, row) => {
@@ -55,13 +58,13 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
55
58
  if (res.ret === 0) {
56
59
  tMagicMessage.success("\u4FDD\u5B58\u6210\u529F");
57
60
  props.editState[index] = void 0;
58
- emit("afterAction");
61
+ emit("after-action");
59
62
  } else {
60
63
  tMagicMessage.error(res.msg || "\u4FDD\u5B58\u5931\u8D25");
61
64
  }
62
65
  } else {
63
66
  props.editState[index] = void 0;
64
- emit("afterAction");
67
+ emit("after-action");
65
68
  }
66
69
  };
67
70
  return (_ctx, _cache) => {
@@ -84,7 +87,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
84
87
  default: withCtx(() => [
85
88
  createElementVNode("span", {
86
89
  innerHTML: formatter(action.text, scope.row)
87
- }, null, 8, _hoisted_1$1)
90
+ }, null, 8, _hoisted_1$2)
88
91
  ]),
89
92
  _: 2
90
93
  }, 1032, ["icon", "onClick"])), [
@@ -126,12 +129,23 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
126
129
  }
127
130
  });
128
131
 
132
+ const _hoisted_1$1 = ["innerHTML"];
133
+ const __default__$3 = defineComponent({
134
+ name: "MTableExpandColumn"
135
+ });
129
136
  const _sfc_main$3 = /* @__PURE__ */ defineComponent({
130
- __name: "ExpandColumn",
137
+ ...__default__$3,
131
138
  props: {
132
139
  config: { default: () => ({}) }
133
140
  },
134
141
  setup(__props) {
142
+ const props = __props;
143
+ const componentProps = (row) => {
144
+ if (typeof props.config.props === "function") {
145
+ return props.config.props(row) || {};
146
+ }
147
+ return props.config.props || {};
148
+ };
135
149
  return (_ctx, _cache) => {
136
150
  return openBlock(), createBlock(unref(TMagicTableColumn), { type: "expand" }, {
137
151
  default: withCtx((scope) => [
@@ -145,7 +159,12 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
145
159
  key: 1,
146
160
  config: __props.config.form,
147
161
  "init-values": __props.config.values || __props.config.prop && scope.row[__props.config.prop] || {}
148
- }, null, 8, ["config", "init-values"])) : createCommentVNode("", true)
162
+ }, null, 8, ["config", "init-values"])) : createCommentVNode("", true),
163
+ __props.config.expandContent ? (openBlock(), createElementBlock("div", {
164
+ key: 2,
165
+ innerHTML: __props.config.expandContent(scope.row, __props.config.prop)
166
+ }, null, 8, _hoisted_1$1)) : createCommentVNode("", true),
167
+ __props.config.component ? (openBlock(), createBlock(resolveDynamicComponent(__props.config.component), normalizeProps(mergeProps({ key: 3 }, componentProps(scope.row))), null, 16)) : createCommentVNode("", true)
149
168
  ]),
150
169
  _: 1
151
170
  });
@@ -170,8 +189,11 @@ const formatter = (item, row) => {
170
189
  }
171
190
  };
172
191
 
192
+ const __default__$2 = defineComponent({
193
+ name: "MTablePopoverColumn"
194
+ });
173
195
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
174
- __name: "PopoverColumn",
196
+ ...__default__$2,
175
197
  props: {
176
198
  config: { default: () => ({}) }
177
199
  },
@@ -223,8 +245,11 @@ const _hoisted_3 = ["src"];
223
245
  const _hoisted_4 = ["href"];
224
246
  const _hoisted_5 = /* @__PURE__ */ createTextVNode("\u6269\u5C55\u914D\u7F6E");
225
247
  const _hoisted_6 = ["innerHTML"];
248
+ const __default__$1 = defineComponent({
249
+ name: "MTableColumn"
250
+ });
226
251
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
227
- __name: "TextColumn",
252
+ ...__default__$1,
228
253
  props: {
229
254
  config: { default: () => ({}) },
230
255
  editState: { default: () => ({}) }
@@ -322,8 +347,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
322
347
  }
323
348
  });
324
349
 
350
+ const __default__ = defineComponent({
351
+ name: "MTable"
352
+ });
325
353
  const _sfc_main = /* @__PURE__ */ defineComponent({
326
- __name: "Table",
354
+ ...__default__,
327
355
  props: {
328
356
  data: null,
329
357
  columns: { default: () => [] },
@@ -336,7 +364,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
336
364
  rowkeyName: null,
337
365
  border: { type: Boolean, default: false }
338
366
  },
339
- emits: ["sort-change", "afterAction", "select", "select-all", "selection-change"],
367
+ emits: [
368
+ "sort-change",
369
+ "after-action",
370
+ "select",
371
+ "select-all",
372
+ "selection-change",
373
+ "expand-change",
374
+ "cell-click"
375
+ ],
340
376
  setup(__props, { expose, emit }) {
341
377
  const props = __props;
342
378
  const tMagicTable = ref();
@@ -370,6 +406,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
370
406
  const selectionChangeHandler = (selection) => {
371
407
  emit("selection-change", selection);
372
408
  };
409
+ const cellClickHandler = (...args) => {
410
+ emit("cell-click", ...args);
411
+ };
412
+ const expandChange = (...args) => {
413
+ emit("expand-change", ...args);
414
+ };
373
415
  const toggleRowSelection = (row, selected) => {
374
416
  tMagicTable.value?.toggleRowSelection(row, selected);
375
417
  };
@@ -405,14 +447,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
405
447
  "max-height": __props.bodyHeight,
406
448
  "default-expand-all": __props.defaultExpandAll,
407
449
  border: unref(hasBorder),
408
- "row-key": __props.rowkeyName || "c_id",
450
+ "row-key": __props.rowkeyName || "id",
409
451
  "tree-props": { children: "children" },
410
452
  "empty-text": __props.emptyText || "\u6682\u65E0\u6570\u636E",
411
453
  "span-method": objectSpanMethod,
412
454
  onSortChange: sortChange,
413
455
  onSelect: selectHandler,
414
456
  onSelectAll: selectAllHandler,
415
- onSelectionChange: selectionChangeHandler
457
+ onSelectionChange: selectionChangeHandler,
458
+ onCellClick: cellClickHandler,
459
+ onExpandChange: expandChange
416
460
  }, {
417
461
  default: withCtx(() => [
418
462
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (item, columnIndex) => {
@@ -431,7 +475,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
431
475
  "rowkey-name": __props.rowkeyName,
432
476
  "edit-state": editState.value,
433
477
  key: columnIndex,
434
- onAfterAction: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("afterAction"))
478
+ onAfterAction: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("after-action"))
435
479
  }, null, 8, ["columns", "config", "rowkey-name", "edit-state"])) : item.type === "popover" ? (openBlock(), createBlock(_sfc_main$2, {
436
480
  key: columnIndex,
437
481
  config: item
@@ -460,4 +504,4 @@ const index = {
460
504
  };
461
505
 
462
506
  export { _sfc_main as MagicTable, index as default };
463
- //# sourceMappingURL=tmagic-table.mjs.map
507
+ //# sourceMappingURL=tmagic-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmagic-table.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(['after-action']);\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('after-action');\n } else {\n tMagicMessage.error(res.msg || '保存失败');\n }\n } else {\n props.editState[index] = undefined;\n emit('after-action');\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 <div v-if=\"config.expandContent\" v-html=\"config.expandContent(scope.row, config.prop)\"></div>\n <component v-if=\"config.component\" :is=\"config.component\" v-bind=\"componentProps(scope.row)\"></component>\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\nconst props = withDefaults(\n defineProps<{\n config: ColumnConfig;\n }>(),\n {\n config: () => ({}),\n },\n);\n\nconst componentProps = (row: any) => {\n if (typeof props.config.props === 'function') {\n return props.config.props(row) || {};\n }\n return props.config.props || {};\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 || '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 @cell-click=\"cellClickHandler\"\n @expand-change=\"expandChange\"\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 @after-action=\"$emit('after-action')\"\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([\n 'sort-change',\n 'after-action',\n 'select',\n 'select-all',\n 'selection-change',\n 'expand-change',\n 'cell-click',\n]);\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 cellClickHandler = (...args: any[]) => {\n emit('cell-click', ...args);\n};\n\nconst expandChange = (...args: any[]) => {\n emit('expand-change', ...args);\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__","Table"],"mappings":"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"}
@@ -4,18 +4,21 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicTable = {}, global.Vue, global.lodashEs, global.design, global.form, global.utils));
5
5
  })(this, (function (exports, vue, lodashEs, design, form, utils) { 'use strict';
6
6
 
7
- const _hoisted_1$1 = ["innerHTML"];
7
+ const _hoisted_1$2 = ["innerHTML"];
8
8
  const _hoisted_2$1 = /* @__PURE__ */ vue.createTextVNode("\u4FDD\u5B58");
9
9
  const _hoisted_3$1 = /* @__PURE__ */ vue.createTextVNode("\u53D6\u6D88");
10
+ const __default__$4 = vue.defineComponent({
11
+ name: "MTableActionsColumn"
12
+ });
10
13
  const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
11
- __name: "ActionsColumn",
14
+ ...__default__$4,
12
15
  props: {
13
16
  columns: { default: () => [] },
14
17
  config: { default: () => ({}) },
15
18
  rowkeyName: { default: "c_id" },
16
19
  editState: { default: () => [] }
17
20
  },
18
- emits: ["afterAction"],
21
+ emits: ["after-action"],
19
22
  setup(__props, { emit }) {
20
23
  const props = __props;
21
24
  const display = (fuc, row) => {
@@ -55,13 +58,13 @@
55
58
  if (res.ret === 0) {
56
59
  design.tMagicMessage.success("\u4FDD\u5B58\u6210\u529F");
57
60
  props.editState[index] = void 0;
58
- emit("afterAction");
61
+ emit("after-action");
59
62
  } else {
60
63
  design.tMagicMessage.error(res.msg || "\u4FDD\u5B58\u5931\u8D25");
61
64
  }
62
65
  } else {
63
66
  props.editState[index] = void 0;
64
- emit("afterAction");
67
+ emit("after-action");
65
68
  }
66
69
  };
67
70
  return (_ctx, _cache) => {
@@ -84,7 +87,7 @@
84
87
  default: vue.withCtx(() => [
85
88
  vue.createElementVNode("span", {
86
89
  innerHTML: formatter(action.text, scope.row)
87
- }, null, 8, _hoisted_1$1)
90
+ }, null, 8, _hoisted_1$2)
88
91
  ]),
89
92
  _: 2
90
93
  }, 1032, ["icon", "onClick"])), [
@@ -126,12 +129,23 @@
126
129
  }
127
130
  });
128
131
 
132
+ const _hoisted_1$1 = ["innerHTML"];
133
+ const __default__$3 = vue.defineComponent({
134
+ name: "MTableExpandColumn"
135
+ });
129
136
  const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
130
- __name: "ExpandColumn",
137
+ ...__default__$3,
131
138
  props: {
132
139
  config: { default: () => ({}) }
133
140
  },
134
141
  setup(__props) {
142
+ const props = __props;
143
+ const componentProps = (row) => {
144
+ if (typeof props.config.props === "function") {
145
+ return props.config.props(row) || {};
146
+ }
147
+ return props.config.props || {};
148
+ };
135
149
  return (_ctx, _cache) => {
136
150
  return vue.openBlock(), vue.createBlock(vue.unref(design.TMagicTableColumn), { type: "expand" }, {
137
151
  default: vue.withCtx((scope) => [
@@ -145,7 +159,12 @@
145
159
  key: 1,
146
160
  config: __props.config.form,
147
161
  "init-values": __props.config.values || __props.config.prop && scope.row[__props.config.prop] || {}
148
- }, null, 8, ["config", "init-values"])) : vue.createCommentVNode("", true)
162
+ }, null, 8, ["config", "init-values"])) : vue.createCommentVNode("", true),
163
+ __props.config.expandContent ? (vue.openBlock(), vue.createElementBlock("div", {
164
+ key: 2,
165
+ innerHTML: __props.config.expandContent(scope.row, __props.config.prop)
166
+ }, null, 8, _hoisted_1$1)) : vue.createCommentVNode("", true),
167
+ __props.config.component ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(__props.config.component), vue.normalizeProps(vue.mergeProps({ key: 3 }, componentProps(scope.row))), null, 16)) : vue.createCommentVNode("", true)
149
168
  ]),
150
169
  _: 1
151
170
  });
@@ -170,8 +189,11 @@
170
189
  }
171
190
  };
172
191
 
192
+ const __default__$2 = vue.defineComponent({
193
+ name: "MTablePopoverColumn"
194
+ });
173
195
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
174
- __name: "PopoverColumn",
196
+ ...__default__$2,
175
197
  props: {
176
198
  config: { default: () => ({}) }
177
199
  },
@@ -223,8 +245,11 @@
223
245
  const _hoisted_4 = ["href"];
224
246
  const _hoisted_5 = /* @__PURE__ */ vue.createTextVNode("\u6269\u5C55\u914D\u7F6E");
225
247
  const _hoisted_6 = ["innerHTML"];
248
+ const __default__$1 = vue.defineComponent({
249
+ name: "MTableColumn"
250
+ });
226
251
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
227
- __name: "TextColumn",
252
+ ...__default__$1,
228
253
  props: {
229
254
  config: { default: () => ({}) },
230
255
  editState: { default: () => ({}) }
@@ -322,8 +347,11 @@
322
347
  }
323
348
  });
324
349
 
350
+ const __default__ = vue.defineComponent({
351
+ name: "MTable"
352
+ });
325
353
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
326
- __name: "Table",
354
+ ...__default__,
327
355
  props: {
328
356
  data: null,
329
357
  columns: { default: () => [] },
@@ -336,7 +364,15 @@
336
364
  rowkeyName: null,
337
365
  border: { type: Boolean, default: false }
338
366
  },
339
- emits: ["sort-change", "afterAction", "select", "select-all", "selection-change"],
367
+ emits: [
368
+ "sort-change",
369
+ "after-action",
370
+ "select",
371
+ "select-all",
372
+ "selection-change",
373
+ "expand-change",
374
+ "cell-click"
375
+ ],
340
376
  setup(__props, { expose, emit }) {
341
377
  const props = __props;
342
378
  const tMagicTable = vue.ref();
@@ -370,6 +406,12 @@
370
406
  const selectionChangeHandler = (selection) => {
371
407
  emit("selection-change", selection);
372
408
  };
409
+ const cellClickHandler = (...args) => {
410
+ emit("cell-click", ...args);
411
+ };
412
+ const expandChange = (...args) => {
413
+ emit("expand-change", ...args);
414
+ };
373
415
  const toggleRowSelection = (row, selected) => {
374
416
  tMagicTable.value?.toggleRowSelection(row, selected);
375
417
  };
@@ -405,14 +447,16 @@
405
447
  "max-height": __props.bodyHeight,
406
448
  "default-expand-all": __props.defaultExpandAll,
407
449
  border: vue.unref(hasBorder),
408
- "row-key": __props.rowkeyName || "c_id",
450
+ "row-key": __props.rowkeyName || "id",
409
451
  "tree-props": { children: "children" },
410
452
  "empty-text": __props.emptyText || "\u6682\u65E0\u6570\u636E",
411
453
  "span-method": objectSpanMethod,
412
454
  onSortChange: sortChange,
413
455
  onSelect: selectHandler,
414
456
  onSelectAll: selectAllHandler,
415
- onSelectionChange: selectionChangeHandler
457
+ onSelectionChange: selectionChangeHandler,
458
+ onCellClick: cellClickHandler,
459
+ onExpandChange: expandChange
416
460
  }, {
417
461
  default: vue.withCtx(() => [
418
462
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.columns, (item, columnIndex) => {
@@ -431,7 +475,7 @@
431
475
  "rowkey-name": __props.rowkeyName,
432
476
  "edit-state": editState.value,
433
477
  key: columnIndex,
434
- onAfterAction: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("afterAction"))
478
+ onAfterAction: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("after-action"))
435
479
  }, null, 8, ["columns", "config", "rowkey-name", "edit-state"])) : item.type === "popover" ? (vue.openBlock(), vue.createBlock(_sfc_main$2, {
436
480
  key: columnIndex,
437
481
  config: item
@@ -465,4 +509,4 @@
465
509
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
466
510
 
467
511
  }));
468
- //# sourceMappingURL=tmagic-table.umd.js.map
512
+ //# sourceMappingURL=tmagic-table.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmagic-table.umd.cjs","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(['after-action']);\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('after-action');\n } else {\n tMagicMessage.error(res.msg || '保存失败');\n }\n } else {\n props.editState[index] = undefined;\n emit('after-action');\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 <div v-if=\"config.expandContent\" v-html=\"config.expandContent(scope.row, config.prop)\"></div>\n <component v-if=\"config.component\" :is=\"config.component\" v-bind=\"componentProps(scope.row)\"></component>\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\nconst props = withDefaults(\n defineProps<{\n config: ColumnConfig;\n }>(),\n {\n config: () => ({}),\n },\n);\n\nconst componentProps = (row: any) => {\n if (typeof props.config.props === 'function') {\n return props.config.props(row) || {};\n }\n return props.config.props || {};\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 || '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 @cell-click=\"cellClickHandler\"\n @expand-change=\"expandChange\"\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 @after-action=\"$emit('after-action')\"\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([\n 'sort-change',\n 'after-action',\n 'select',\n 'select-all',\n 'selection-change',\n 'expand-change',\n 'cell-click',\n]);\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 cellClickHandler = (...args: any[]) => {\n emit('cell-click', ...args);\n};\n\nconst expandChange = (...args: any[]) => {\n emit('expand-change', ...args);\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,16 +1,17 @@
1
1
  {
2
- "version": "1.2.0-beta.9",
2
+ "version": "1.2.0",
3
3
  "name": "@tmagic/table",
4
+ "type": "module",
4
5
  "sideEffects": [
5
6
  "dist/*"
6
7
  ],
7
- "main": "dist/tmagic-table.umd.js",
8
- "module": "dist/tmagic-table.mjs",
8
+ "main": "dist/tmagic-table.umd.cjs",
9
+ "module": "dist/tmagic-table.js",
9
10
  "types": "types/index.d.ts",
10
11
  "exports": {
11
12
  ".": {
12
- "import": "./dist/tmagic-table.mjs",
13
- "require": "./dist/tmagic-table.umd.js"
13
+ "import": "./dist/tmagic-table.js",
14
+ "require": "./dist/tmagic-table.umd.cjs"
14
15
  },
15
16
  "./dist/style.css": {
16
17
  "import": "./dist/style.css",
@@ -32,14 +33,14 @@
32
33
  "url": "https://github.com/Tencent/tmagic-editor.git"
33
34
  },
34
35
  "dependencies": {
35
- "@tmagic/design": "1.2.0-beta.9",
36
- "@tmagic/form": "1.2.0-beta.9",
37
- "@tmagic/utils": "1.2.0-beta.9",
36
+ "@tmagic/design": "1.2.0",
37
+ "@tmagic/form": "1.2.0",
38
+ "@tmagic/utils": "1.2.0",
38
39
  "lodash-es": "^4.17.21",
39
40
  "vue": "^3.2.37"
40
41
  },
41
42
  "peerDependencies": {
42
- "@tmagic/form": "1.2.0-beta.9",
43
+ "@tmagic/form": "1.2.0",
43
44
  "vue": "^3.2.37"
44
45
  },
45
46
  "devDependencies": {
@@ -53,6 +54,7 @@
53
54
  "sass": "^1.35.1",
54
55
  "typescript": "^4.7.4",
55
56
  "vite": "^3.1.3",
56
- "vue-tsc": "^1.0.8"
57
+ "vite-plugin-vue-setup-extend": "^0.4.0",
58
+ "vue-tsc": "^1.0.11"
57
59
  }
58
60
  }
@@ -35,7 +35,7 @@
35
35
  </TMagicTableColumn>
36
36
  </template>
37
37
 
38
- <script lang="ts" setup>
38
+ <script lang="ts" setup name="MTableActionsColumn">
39
39
  import { TMagicButton, tMagicMessage, TMagicTableColumn } from '@tmagic/design';
40
40
 
41
41
  import { ColumnActionConfig, ColumnConfig } from './schema';
@@ -55,7 +55,7 @@ const props = withDefaults(
55
55
  },
56
56
  );
57
57
 
58
- const emit = defineEmits(['afterAction']);
58
+ const emit = defineEmits(['after-action']);
59
59
 
60
60
  const display = (fuc: boolean | Function | undefined, row: any) => {
61
61
  if (typeof fuc === 'function') {
@@ -101,13 +101,13 @@ const save = async (index: number, config: ColumnConfig) => {
101
101
  if (res.ret === 0) {
102
102
  tMagicMessage.success('保存成功');
103
103
  props.editState[index] = undefined;
104
- emit('afterAction');
104
+ emit('after-action');
105
105
  } else {
106
106
  tMagicMessage.error(res.msg || '保存失败');
107
107
  }
108
108
  } else {
109
109
  props.editState[index] = undefined;
110
- emit('afterAction');
110
+ emit('after-action');
111
111
  }
112
112
  };
113
113
  </script>
@@ -12,18 +12,20 @@
12
12
  :config="config.form"
13
13
  :init-values="config.values || (config.prop && scope.row[config.prop]) || {}"
14
14
  ></MForm>
15
+ <div v-if="config.expandContent" v-html="config.expandContent(scope.row, config.prop)"></div>
16
+ <component v-if="config.component" :is="config.component" v-bind="componentProps(scope.row)"></component>
15
17
  </template>
16
18
  </TMagicTableColumn>
17
19
  </template>
18
20
 
19
- <script lang="ts" setup>
21
+ <script lang="ts" setup name="MTableExpandColumn">
20
22
  import { TMagicTableColumn } from '@tmagic/design';
21
23
  import { MForm } from '@tmagic/form';
22
24
 
23
25
  import { ColumnConfig } from './schema';
24
26
  import MTable from './Table.vue';
25
27
 
26
- withDefaults(
28
+ const props = withDefaults(
27
29
  defineProps<{
28
30
  config: ColumnConfig;
29
31
  }>(),
@@ -31,4 +33,11 @@ withDefaults(
31
33
  config: () => ({}),
32
34
  },
33
35
  );
36
+
37
+ const componentProps = (row: any) => {
38
+ if (typeof props.config.props === 'function') {
39
+ return props.config.props(row) || {};
40
+ }
41
+ return props.config.props || {};
42
+ };
34
43
  </script>
@@ -21,7 +21,7 @@
21
21
  </TMagicTableColumn>
22
22
  </template>
23
23
 
24
- <script lang="ts" setup>
24
+ <script lang="ts" setup name="MTablePopoverColumn">
25
25
  import { TMagicButton, TMagicPopover, TMagicTableColumn } from '@tmagic/design';
26
26
 
27
27
  import { ColumnConfig } from './schema';