br-dionysus 1.8.1 → 1.8.3

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.
@@ -92,7 +92,6 @@
92
92
  import { ref, watch, computed } from 'vue'
93
93
  import type { Ref } from 'vue'
94
94
  import createHash from '../../Tool/createHash/createHash'
95
- // import useMTableColumnSet from 'packages/MTableColumnSet/src/useMTableColumnSet'
96
95
  import { useZIndex } from 'element-plus'
97
96
  import type { TableConfigItem } from 'packages/Hook/useTableConfig/useTableConfig'
98
97
 
@@ -108,7 +107,7 @@ const props = withDefaults(defineProps<{
108
107
  /** 是否为链接按钮 */
109
108
  link?: boolean,
110
109
  /** 表格配置key */
111
- tableConfigKey?: ''
110
+ tableConfigKey?: string
112
111
  }>(), {
113
112
  modelValue: () => ({} as TableConfig),
114
113
  foldMode: false,
@@ -0,0 +1,54 @@
1
+ <script setup>
2
+ import demo from './demo.vue'
3
+ </script>
4
+
5
+ 虚拟化表格
6
+ =================
7
+
8
+ ### 1) 基础用法
9
+
10
+ <Preview comp-name="MTableV2" demo-name="demo">
11
+ <demo />
12
+ </Preview>
13
+
14
+ ### 2) Attributes
15
+
16
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
17
+ |--------------------|---------------------------------------------------|----------------------------|---------------------------|-----------------------------------------------------------------------------------|
18
+ | size | 尺寸 | string | small \| large \| default | default |
19
+ | data | 要在表中渲染的数据数组 | any[] | - | [] |
20
+ | columns | 表格列配置 | TableV2Title[] | - | [] |
21
+ | filtersValue | 表格内容筛选(当为null时,不显示筛选图标) | FilterValue \| null | - | null |
22
+ | tableConfig | 表格配置 | TableConfig \| null | - | null |
23
+ | tableConfigKey | 表格配置key | string | - | '' |
24
+ | fixed | 单元格宽度是自适应还是固定 | boolean | - | false |
25
+ | estimatedRowHeight | 渲染动态的单元格的预估高度 | number \| null | - | null |
26
+ | headerHeight | Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 | number \| number[] \| null | - | null |
27
+ | 其余参数 | 参考el官网的table | any | - | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E5%B1%9E%E6%80%A7 |
28
+
29
+ ### 3) Events
30
+
31
+ | 方法名 | 说明 | 回调参数 |
32
+ |--------------------|--------------|-----------------------------------------------------------------------------------|
33
+ | update:tableConfig | 表格配置更新 | \[tableConfig: TableConfig] |
34
+ | 其余方法 | 参考el官网的table | https://element-plus.org/zh-CN/component/table-v2.html#tablev2-%E4%BA%8B%E4%BB%B6 |
35
+
36
+ ### 4) TableV2Title
37
+
38
+ | 参数 | 说明 | 类型 |
39
+ |--------------------|------------------------------------------------------------------------------------|-------------------------------|
40
+ | title | 显示的标题 | string |
41
+ | key | 唯一标志 | string |
42
+ | dataKey | data 的唯一标志符 | string |
43
+ | align | 表格单元格内容对齐方式 | 'right' \| 'left' \| 'center' |
44
+ | class | 列的类名 | string |
45
+ | fixed | 列是否固定在左侧或者右侧。 true 表示固定在左侧 | true \| 'left' \| 'right' |
46
+ | headerClass | 自定义 header 头部类名 | string |
47
+ | hidden | 此列是否不可见 | boolean |
48
+ | style | 自定义列单元格的类名,将会与 gird 单元格合并 | object |
49
+ | minWidth | 对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列 | number \| string |
50
+ | maxWidth | 对应列的列的最大宽度 | number \| string |
51
+ | width | 对应列的宽度 | number \| string |
52
+ | cellRenderer | 自定义单元格渲染器 | any |
53
+ | headerCellRenderer | 自定义头部渲染器 | any |
54
+
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <div class="g-box">
3
+ <p @click="test">{{ tableConfig }}</p>
4
+ <MTableV2
5
+ :data="tableData"
6
+ :columns="tableTitle"
7
+ :height="500"
8
+ border
9
+ fixed
10
+ v-model:tableConfig="tableConfig"
11
+ tableConfigKey="MTableV2Demo"
12
+ ></MTableV2>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import { ref } from 'vue'
18
+ import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
19
+
20
+ const tableData = ref<any[]>([])
21
+ const { tableTitle, tableConfig, filtersValue } = useTableV2Config('MTableV2Demo', [{
22
+ title: '序号',
23
+ key: 'sn',
24
+ dataKey: 'sn',
25
+ width: 300
26
+ }, {
27
+ title: '时间',
28
+ key: 'date',
29
+ dataKey: 'date',
30
+ width: 300
31
+ }, {
32
+ title: '地址',
33
+ key: 'address',
34
+ dataKey: 'address',
35
+ width: 300
36
+ }, {
37
+ title: '名称',
38
+ key: 'name',
39
+ dataKey: 'name',
40
+ width: 300
41
+ }], tableData)
42
+
43
+ const test = () => {
44
+ filtersValue.value = {}
45
+ }
46
+ tableData.value = [{
47
+ id: 1,
48
+ sn: 'sn',
49
+ date: 'date',
50
+ address: 'address',
51
+ name: 'name'
52
+ }]
53
+ </script>
54
+
55
+ <style lang="scss" scoped>
56
+ .g-box {
57
+ max-width: 1000px;
58
+ }
59
+ </style>
@@ -0,0 +1,10 @@
1
+ import { App, Plugin } from 'vue'
2
+ import MTableV2 from './src/MTableV2.vue'
3
+
4
+ export const MTableV2Plugin: Plugin = {
5
+ install (app: App) {
6
+ app.component('MTableV2', MTableV2)
7
+ }
8
+ }
9
+
10
+ export { MTableV2 }
@@ -0,0 +1,196 @@
1
+ <template>
2
+ <div
3
+ class="br-m-table-v2-box"
4
+ :data-border="props.border"
5
+ :data-size="props.size"
6
+ >
7
+ <MTableColumnSet
8
+ class="br-m-table-config-set"
9
+ v-if="tableConfig && props.tableConfigKey"
10
+ foldMode
11
+ v-model="tableConfig"
12
+ :tableConfigKey="props.tableConfigKey"
13
+ ></MTableColumnSet>
14
+ <el-auto-resizer>
15
+ <template #default="{ width }">
16
+ <el-table-v2
17
+ :columns="props.columns"
18
+ :data="props.data"
19
+ :width="width"
20
+ :height="props.height"
21
+ :fixed="props.fixed"
22
+ :estimatedRowHeight="estimatedRowHeight"
23
+ :headerHeight="headerHeight"
24
+ v-bind="$attrs"
25
+ ></el-table-v2>
26
+ </template>
27
+ </el-auto-resizer>
28
+ </div>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ import { ref, watch, computed } from 'vue'
33
+ import { TableConfig } from './../../Hook/useTableConfig/useTableConfig'
34
+ import MTableColumnSet from './../../MTableColumnSet/src/MTableColumnSet.vue'
35
+
36
+ interface FilterValue {
37
+ [key: string]: Array<string | number>
38
+ }
39
+
40
+ const props = withDefaults(defineProps<{
41
+ size?: 'small' | 'large' | 'default',
42
+ data?: Array<{
43
+ [key: string]: any
44
+ }>,
45
+ /** 表格高度 */
46
+ height?: number,
47
+ /** 显示边框 */
48
+ border?: boolean,
49
+ /** 表格列配置 */
50
+ columns?: TableV2Title[],
51
+ /** 表格内容筛选(当为null时,不显示筛选图标) */
52
+ filtersValue?: FilterValue | null,
53
+ /** 表格配置 */
54
+ tableConfig?: TableConfig | null,
55
+ /** 表格配置key */
56
+ tableConfigKey?: string,
57
+ /** 单元格宽度是自适应还是固定 */
58
+ fixed?: boolean,
59
+ /** 渲染动态的单元格的预估高度 */
60
+ estimatedRowHeight?: number | null,
61
+ /** Header 的高度由height设置。 如果传入数组,它会使 header row 等于数组长度 */
62
+ headerHeight?: number | number[] | null
63
+ }>(), {
64
+ size: 'default',
65
+ data: () => [],
66
+ height: 100,
67
+ columns: () => [],
68
+ border: false,
69
+ filtersValue: null,
70
+ tableConfig: null,
71
+ tableConfigKey: '',
72
+ fixed: false,
73
+ estimatedRowHeight: null,
74
+ headerHeight: null
75
+ })
76
+
77
+ const sizeToHeight: { [key: string]: number } = {
78
+ small: 30,
79
+ default: 50,
80
+ large: 65
81
+ }
82
+ const estimatedRowHeight = computed(() => props.estimatedRowHeight || sizeToHeight[props.size])
83
+
84
+ const headerHeight = computed(() => props.headerHeight || sizeToHeight[props.size])
85
+
86
+ const tableConfig = ref<TableConfig>(props.tableConfig || {})
87
+ watch(
88
+ () => props.tableConfig,
89
+ () => {
90
+ if (JSON.stringify(tableConfig.value) === JSON.stringify(props.tableConfig)) return false
91
+ tableConfig.value = props.tableConfig || {}
92
+ }
93
+ )
94
+ watch(
95
+ () => tableConfig.value,
96
+ () => {
97
+ const configData: TableConfig = {}
98
+ for (const key in tableConfig.value) {
99
+ const item = tableConfig.value[key]
100
+ const align = item.headerAlign || item.align
101
+ configData[key] = {
102
+ ...item,
103
+ ...(align !== undefined ? { align } : {})
104
+ }
105
+ }
106
+ emit('update:tableConfig', configData)
107
+ }
108
+ )
109
+
110
+ const emit = defineEmits<{
111
+ pasteData: [
112
+ data: {
113
+ /** 粘贴行的行数据 */
114
+ editRow: { [key: string]: any },
115
+ /** 粘贴列的列名 */
116
+ editColumn: string,
117
+ /** 粘贴的数据 */
118
+ arr: Array<string | number>,
119
+ /** 起始行 */
120
+ rowIndex: number,
121
+ },
122
+ /** 粘贴完成后的表格数据 */
123
+ tableData: Array<{ [key: string]: any }>
124
+ ],
125
+ /** 表格配置更新 */
126
+ 'update:tableConfig': [tableConfig: TableConfig]
127
+ }>()
128
+
129
+ const tableRef = ref<any>(null)
130
+
131
+ defineExpose({
132
+ scrollTo: (param: { scrollLeft?: number, scrollTop?: number }) => tableRef.value?.scrollTo(param),
133
+ scrollToLeft: (scrollLeft: number) => tableRef.value?.scrollToLeft(scrollLeft),
134
+ scrollToTop: (scrollTop: number) => tableRef.value?.scrollToTop(scrollTop),
135
+ scrollToRow: (row: number, strategy?: 'center' | 'end' | 'start' | 'smart') => tableRef.value?.scrollToRow(row, strategy)
136
+ })
137
+ </script>
138
+
139
+ <style scoped lang="scss">
140
+ .br-m-table-v2-box {
141
+ position: relative;
142
+
143
+ .br-m-table-config-set {
144
+ position: absolute;
145
+ top: 0;
146
+ right: 0;
147
+ z-index: 4;
148
+ }
149
+
150
+ &[data-size="small"] .br-m-table-config-set {
151
+ top: (30px - 24px) / 2;
152
+ }
153
+
154
+ &[data-size="default"] .br-m-table-config-set {
155
+ top: (50px - 24px) / 2;
156
+ }
157
+
158
+ &[data-size="large"] .br-m-table-config-set {
159
+ top: (65px - 24px) / 2;
160
+ }
161
+ }
162
+ </style>
163
+
164
+ <style lang="scss">
165
+ .br-m-table-v2-box {
166
+ &[data-size="small"] .el-table-v2 {
167
+ font-size: 12px;
168
+ }
169
+
170
+ &[data-border="true"] {
171
+ .el-table-v2 {
172
+ border: 1px solid var(--el-table-border-color);
173
+
174
+ .el-table-v2__header-cell, .el-table-v2__row-cell {
175
+ border-right: var(--el-table-border);
176
+
177
+ &:nth-last-of-type(1) {
178
+ border-right: 0;
179
+ }
180
+ }
181
+ }
182
+ }
183
+
184
+ &[data-size="small"] .el-table-v2__cell-text {
185
+ line-height: 30px;
186
+ }
187
+
188
+ &[data-size="default"] .el-table-v2__cell-text {
189
+ line-height: 50px;
190
+ }
191
+
192
+ &[data-size="large"] .el-table-v2__cell-text {
193
+ line-height: 65px;
194
+ }
195
+ }
196
+ </style>
package/packages/index.ts CHANGED
@@ -12,8 +12,10 @@ import { MSelectV2Plugin } from 'packages/MSelectV2'
12
12
  import { MSelectTablePlugin } from 'packages/MSelectTable'
13
13
  import { MDialogPlugin } from 'packages/MDialog'
14
14
  import { MSelectTableV1Plugin } from 'packages/MSelectTableV1'
15
+ import { MTableV2Plugin } from 'packages/MTableV2'
15
16
 
16
17
  import useTableConfig from 'packages/Hook/useTableConfig/useTableConfig'
18
+ import useTableV2Config from 'packages/Hook/useTableV2Config/useTableV2Config'
17
19
  import useRemainingSpace from 'packages/Hook/useRemainingSpace/useRemainingSpace'
18
20
  import useSkin from 'packages/SkinConfig/src/useSkin'
19
21
  import useGlobalZIndex from 'packages/Hook/useZIndex/useGlobalZIndex'
@@ -39,11 +41,10 @@ const BrPlugin: Plugin = {
39
41
  MSelectV2Plugin.install?.(app)
40
42
  MDialogPlugin.install?.(app)
41
43
  MSelectTableV1Plugin.install?.(app)
44
+ MTableV2Plugin.install?.(app)
42
45
  }
43
46
  }
44
47
 
45
- export default BrPlugin
46
-
47
48
  export * from './TabPage'
48
49
  export * from './MInputNumber'
49
50
  export * from './MInline'
@@ -56,8 +57,10 @@ export * from './MSelectTable'
56
57
  export * from './MSelectV2'
57
58
  export * from './MDialog'
58
59
  export * from './MSelectTableV1'
60
+ export * from './MTableV2'
59
61
 
60
62
  export { useTableConfig }
63
+ export { useTableV2Config }
61
64
  export { useRemainingSpace }
62
65
  export { useSkin }
63
66
  export { useGlobalZIndex }
@@ -67,3 +70,5 @@ export { useMTableColumnSet }
67
70
  export { moneyFormat }
68
71
  export { checkType }
69
72
  export { compareStructures }
73
+
74
+ export default BrPlugin
@@ -29,6 +29,12 @@
29
29
  "compDesc": "这是一个表格组件",
30
30
  "compClassName": "m-table"
31
31
  },
32
+ {
33
+ "compName": "MTableV2",
34
+ "compZhName": "虚拟化表格组件",
35
+ "compDesc": "这是一个虚拟化表格组件",
36
+ "compClassName": "m-table-v2"
37
+ },
32
38
  {
33
39
  "compName": "MTableColumn",
34
40
  "compZhName": "表格列组件",
@@ -77,6 +83,12 @@
77
83
  "compDesc": "这是一个表格组合 hook",
78
84
  "compClassName": "useTableConfig"
79
85
  },
86
+ {
87
+ "compName": "useTableV2Config",
88
+ "compZhName": "表格V2组合 hook",
89
+ "compDesc": "这是一个表格V2组合 hook",
90
+ "compClassName": "useTableV2Config"
91
+ },
80
92
  {
81
93
  "compName": "useRemainingSpace",
82
94
  "compZhName": "计算获取剩余空间 hook",
@@ -42,11 +42,15 @@ interface TableTitle {
42
42
  /** 显示的标题 */
43
43
  label: string,
44
44
  /** 字段名称 对应列内容的字段名, 也可以使用 property属性 */
45
- prop: string
45
+ prop: string,
46
+ /** 对应列的宽度 */
47
+ width?: number | string,
46
48
  /** 对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列 */
47
49
  minWidth?: number | string,
48
50
  /** 列的 className */
49
51
  className?: string,
52
+ /** 当前列标题的自定义类名 */
53
+ labelClassName?: string,
50
54
  /** 对应列是否可以排序, 如果设置为 'custom',则代表用户希望远程排序,需要监听 Table 的 sort-change 事件 */
51
55
  sortable?: boolean,
52
56
  /** 指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推 */
@@ -67,3 +71,38 @@ interface TableTitle {
67
71
  /** 列是否固定在左侧或者右侧。 true 表示固定在左侧 */
68
72
  fixed?: 'left' | 'right' | boolean,
69
73
  }
74
+
75
+ /** 要求对象中几个属性必有其一 */
76
+ type AtLeastOne<T, Keys extends keyof T> = Pick<T, Exclude<keyof T, Keys>> & { [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>> }[Keys]
77
+
78
+ /** 表头(虚拟化表格) */
79
+ interface TableV2Title {
80
+ /** 显示的标题 */
81
+ title: string,
82
+ /** 唯一标志 */
83
+ key: string,
84
+ /** data 的唯一标志符 */
85
+ dataKey: string,
86
+ /** 表格单元格内容对齐方式 */
87
+ align?: 'right' | 'left' | 'center',
88
+ /** 列的类名 */
89
+ class?: string,
90
+ /** 列是否固定在左侧或者右侧。 true 表示固定在左侧 */
91
+ fixed?: true | 'left' | 'right',
92
+ /** 自定义 header 头部类名 */
93
+ headerClass?: string,
94
+ /** 此列是否不可见 */
95
+ hidden?: boolean,
96
+ /** 自定义列单元格的类名,将会与 gird 单元格合并 */
97
+ style?: object,
98
+ /** 对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列 */
99
+ minWidth?: number | string,
100
+ /** 对应列的列的最大宽度 */
101
+ maxWidth?: number | string,
102
+ /** 对应列的宽度 */
103
+ width: number | string,
104
+ /** 自定义单元格渲染器 */
105
+ cellRenderer?: any,
106
+ /** 自定义头部渲染器 */
107
+ headerCellRenderer?: any,
108
+ }
package/src/router.ts CHANGED
@@ -30,6 +30,11 @@ const routes = [{
30
30
  name: 'MTable',
31
31
  path: '/components/MTable',
32
32
  component: () => import('packages/MTable/docs/README.md')
33
+ }, {
34
+ title: '虚拟化表格组件',
35
+ name: 'MTableV2',
36
+ path: '/components/MTableV2',
37
+ component: () => import('packages/MTableV2/docs/README.md')
33
38
  }, {
34
39
  title: '表格列组件',
35
40
  name: 'MTableColumn',
@@ -66,10 +71,15 @@ const routes = [{
66
71
  path: '/components/usePackageConfig',
67
72
  component: () => import('packages/Hook/usePackageConfig/README.md')
68
73
  }, {
69
- title: '表格pageSize',
74
+ title: '表格组合hook',
70
75
  name: 'useTableConfig',
71
76
  path: '/components/useTableConfig',
72
77
  component: () => import('packages/Hook/useTableConfig/README.md')
78
+ }, {
79
+ title: '表格V2组合hook',
80
+ name: 'useTableV2Config',
81
+ path: '/components/useTableV2Config',
82
+ component: () => import('packages/Hook/useTableV2Config/README.md')
73
83
  }, {
74
84
  title: '计算获取剩余空间 hook',
75
85
  name: 'useRemainingSpace',
package/tags.json CHANGED
@@ -1 +1 @@
1
- {"demo":{"attributes":[],"description":"这是一个demo"},"m-dialog":{"attributes":["modelValue","width","insideHeight","minInsideHeight","maxInsideHeight","resize","draggable","insideClassName","resized","update:insideHeight","update:modelValue"],"description":"这是一个MDialog"},"m-inline":{"attributes":["minWidth","maxWidth","size","switch"],"description":"这是一个MInline"},"m-input-number":{"attributes":["modelValue","placeholder","disabled","size","min","max","step","stepStrictly","thousandthPlace","noBorder","noSpacing","update:modelValue","change","focus","blur"],"description":"这是一个MInputNumber"},"m-option":{"attributes":[],"description":"这是一个MOption"},"m-select":{"attributes":["checkboxMode","multiple"],"description":"这是一个MSelect"},"m-select-table":{"attributes":["modelValue","name","placeholder","disabled","size","total","filterMethod","filterable","remote","remoteMethod","options","tableTitle","multiple","keywords","reserveSelection","tableHeight","isAffirmBtn","scrollbarAlwaysOn","allowCreate","border","popupWidth","selected","selectMultiple","toPage","update:modelValue","clear","removeTag"],"description":"这是一个MSelectTable"},"m-select-table-v1":{"attributes":["modelValue","placeholder","disabled","options","tableTitle","remoteMethod","allowCreate","focusShow","isSelect","clearable","size","labelKey","scrollbarAlwaysOn","total","update:modelValue","selectMultiple","change","selected","clear"],"description":"这是一个MSelectTableV1"},"m-select-v2":{"attributes":["modelValue","checkboxMode","multiple","showAll","options","update:modelValue"],"description":"这是一个MSelectV2"},"m-table":{"attributes":["size","sole","data","filtersValue","tableConfig","expandProp","expandRowKeys","rowKey","tableConfigKey","pasteData","update:tableConfig","privateExpandChange"],"description":"这是一个MTable"},"m-table-column":{"attributes":["filtersValue","filters","filterMethod","children","update:filtersValue"],"description":"这是一个MTableColumn"},"m-table-column-set":{"attributes":["modelValue","foldMode","link","tableConfigKey","update:modelValue","change"],"description":"这是一个MTableColumnSet"},"skin-config":{"attributes":["change"],"description":"这是一个SkinConfig"},"tab-page":{"attributes":["modelValue","activeKey","showRightClickMenu","primaryColor","primaryBackgroundColor","close","click"],"description":"这是一个TabPage"}}
1
+ {"demo":{"attributes":[],"description":"这是一个demo"},"m-dialog":{"attributes":["modelValue","width","insideHeight","minInsideHeight","maxInsideHeight","resize","draggable","insideClassName","resized","update:insideHeight","update:modelValue"],"description":"这是一个MDialog"},"m-inline":{"attributes":["minWidth","maxWidth","size","switch"],"description":"这是一个MInline"},"m-input-number":{"attributes":["modelValue","placeholder","disabled","size","min","max","step","stepStrictly","thousandthPlace","noBorder","noSpacing","update:modelValue","change","focus","blur"],"description":"这是一个MInputNumber"},"m-option":{"attributes":[],"description":"这是一个MOption"},"m-select":{"attributes":["checkboxMode","multiple"],"description":"这是一个MSelect"},"m-select-table":{"attributes":["modelValue","name","placeholder","disabled","size","total","filterMethod","filterable","remote","remoteMethod","options","tableTitle","multiple","keywords","reserveSelection","tableHeight","isAffirmBtn","scrollbarAlwaysOn","allowCreate","border","popupWidth","selected","selectMultiple","toPage","update:modelValue","clear","removeTag"],"description":"这是一个MSelectTable"},"m-select-table-v1":{"attributes":["modelValue","placeholder","disabled","options","tableTitle","remoteMethod","allowCreate","focusShow","isSelect","clearable","size","labelKey","scrollbarAlwaysOn","total","update:modelValue","selectMultiple","change","selected","clear"],"description":"这是一个MSelectTableV1"},"m-select-v2":{"attributes":["modelValue","checkboxMode","multiple","showAll","options","update:modelValue"],"description":"这是一个MSelectV2"},"m-table":{"attributes":["size","sole","data","filtersValue","tableConfig","expandProp","expandRowKeys","rowKey","tableConfigKey","pasteData","update:tableConfig","privateExpandChange"],"description":"这是一个MTable"},"m-table-column":{"attributes":["filtersValue","filters","filterMethod","children","update:filtersValue"],"description":"这是一个MTableColumn"},"m-table-column-set":{"attributes":["modelValue","foldMode","link","tableConfigKey","update:modelValue","change"],"description":"这是一个MTableColumnSet"},"m-table-v2":{"attributes":["size","data","height","border","columns","filtersValue","tableConfig","tableConfigKey","fixed","estimatedRowHeight","headerHeight","pasteData","update:tableConfig"],"description":"这是一个MTableV2"},"skin-config":{"attributes":["change"],"description":"这是一个SkinConfig"},"tab-page":{"attributes":["modelValue","activeKey","showRightClickMenu","primaryColor","primaryBackgroundColor","close","click"],"description":"这是一个TabPage"}}