br-dionysus 1.15.3 → 1.16.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.
- package/README.md +308 -36
- package/attributes.json +1 -1
- package/dist/br-dionysus.es.js +2048 -2034
- package/dist/br-dionysus.umd.js +7 -7
- package/dist/index.css +1 -1
- package/dist/packages/Hook/useTableConfig/useTableConfig.d.ts +2 -6
- package/dist/packages/MSelectTable/src/MSelectTable.vue.d.ts +3 -3
- package/dist/packages/MTable/src/MTable.vue.d.ts +19 -9
- package/package.json +1 -1
- package/packages/Hook/useTableConfig/demo.vue +1 -1
- package/packages/Hook/useTableConfig/useTableConfig.ts +2 -6
- package/packages/MDialog/src/BatchEdit.vue +174 -0
- package/packages/MSelectTable/src/MSelectTable.vue +35 -6
- package/packages/MTable/docs/README.md +8 -8
- package/packages/MTable/docs/demo.vue +146 -10
- package/packages/MTable/src/MTable.vue +77 -17
- package/packages/MTableSuper/src/MTableSuper.vue +1 -1
- package/packages/typings/global.d.ts +34 -32
- package/tags.json +1 -1
- package/vite.config.ts +1 -1
- package/web-types.json +1 -1
|
@@ -1,9 +1,37 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="g-box">
|
|
3
|
+
<h3>普通表格</h3>
|
|
4
|
+
<MTable
|
|
5
|
+
:data="tableData1"
|
|
6
|
+
border
|
|
7
|
+
:filtersValue="filtersValue"
|
|
8
|
+
scrollbarAlwaysOn
|
|
9
|
+
v-model:tableConfig="tableConfig"
|
|
10
|
+
@selectionChange="handleSelectionChange"
|
|
11
|
+
>
|
|
12
|
+
<el-table-column
|
|
13
|
+
fixed="left"
|
|
14
|
+
type="selection"
|
|
15
|
+
/>
|
|
16
|
+
<MTableColumn
|
|
17
|
+
v-for="item in tableTitle"
|
|
18
|
+
:key="item.prop"
|
|
19
|
+
:prop="item.prop"
|
|
20
|
+
:label="item.label"
|
|
21
|
+
:align="item.align"
|
|
22
|
+
:minWidth="item.minWidth"
|
|
23
|
+
:className="item.className"
|
|
24
|
+
:filters="item.filters"
|
|
25
|
+
:headerAlign="item.headerAlign"
|
|
26
|
+
:fixed="item.fixed"
|
|
27
|
+
v-model:filtersValue="filtersValue"
|
|
28
|
+
showOverflowTooltip
|
|
29
|
+
></MTableColumn>
|
|
30
|
+
</MTable>
|
|
31
|
+
|
|
3
32
|
<h3>展开列</h3>
|
|
4
33
|
<p @click="zzzz">{{ tableConfig }}</p>
|
|
5
34
|
<MTable
|
|
6
|
-
class="style.box"
|
|
7
35
|
:data="tableData"
|
|
8
36
|
border
|
|
9
37
|
@headerDragend="headerDragend"
|
|
@@ -58,9 +86,9 @@
|
|
|
58
86
|
>
|
|
59
87
|
</MTableColumn>
|
|
60
88
|
</MTable>
|
|
89
|
+
|
|
61
90
|
<h3>树状表格</h3>
|
|
62
91
|
<MTable
|
|
63
|
-
class="style.box"
|
|
64
92
|
:data="tableData"
|
|
65
93
|
border
|
|
66
94
|
@headerDragend="headerDragend"
|
|
@@ -87,6 +115,38 @@
|
|
|
87
115
|
>
|
|
88
116
|
</MTableColumn>
|
|
89
117
|
</MTable>
|
|
118
|
+
|
|
119
|
+
<h3>批改</h3>
|
|
120
|
+
<BatchEdit
|
|
121
|
+
ref="batchEditRef"
|
|
122
|
+
size="small"
|
|
123
|
+
v-model:tableData="tableData1"
|
|
124
|
+
:selectionCell="selectionCell"
|
|
125
|
+
:tableTitle="tableTitle"
|
|
126
|
+
></BatchEdit>
|
|
127
|
+
<MTable
|
|
128
|
+
:data="tableData1"
|
|
129
|
+
border
|
|
130
|
+
scrollbarAlwaysOn
|
|
131
|
+
showSelectionCellStatus
|
|
132
|
+
v-model:selectionCell="selectionCell"
|
|
133
|
+
>
|
|
134
|
+
<MTableColumn
|
|
135
|
+
v-for="item in tableTitle"
|
|
136
|
+
:key="item.prop"
|
|
137
|
+
:prop="item.prop"
|
|
138
|
+
:label="item.label"
|
|
139
|
+
:align="item.align"
|
|
140
|
+
:minWidth="item.minWidth"
|
|
141
|
+
:className="item.className"
|
|
142
|
+
:filters="item.filters"
|
|
143
|
+
:headerAlign="item.headerAlign"
|
|
144
|
+
:fixed="item.fixed"
|
|
145
|
+
v-model:filtersValue="filtersValue"
|
|
146
|
+
showOverflowTooltip
|
|
147
|
+
></MTableColumn>
|
|
148
|
+
</MTable>
|
|
149
|
+
<p>选中的单元格:{{ selectionCell }}</p>
|
|
90
150
|
</div>
|
|
91
151
|
</template>
|
|
92
152
|
|
|
@@ -94,34 +154,40 @@
|
|
|
94
154
|
import { ref } from 'vue'
|
|
95
155
|
import { useTableConfig } from './../../index'
|
|
96
156
|
import { MTableColumn } from './../../MTableColumn'
|
|
157
|
+
import BatchEdit from 'packages/MDialog/src/BatchEdit.vue'
|
|
97
158
|
|
|
98
159
|
const privateExpandChange = (row: any, expandedRows: any[]) => {
|
|
99
160
|
console.log('row', row)
|
|
100
161
|
console.log('expandedRows', expandedRows)
|
|
101
162
|
}
|
|
102
163
|
|
|
103
|
-
// const test = (data: any) => {
|
|
104
|
-
// console.log('data', data)
|
|
105
|
-
// }
|
|
106
|
-
|
|
107
164
|
const tableData = ref<any[]>([])
|
|
108
165
|
const { tableTitle, headerDragend, tableConfig, filtersValue } = useTableConfig('MTableDemo', [{
|
|
109
166
|
label: '序号',
|
|
110
167
|
prop: 'sn',
|
|
111
168
|
minWidth: 200,
|
|
112
|
-
fixed: 'left'
|
|
169
|
+
fixed: 'left',
|
|
170
|
+
isBatchEdit: false
|
|
113
171
|
}, {
|
|
114
172
|
label: '时间',
|
|
115
173
|
prop: 'date',
|
|
116
|
-
minWidth: 200
|
|
174
|
+
minWidth: 200,
|
|
175
|
+
isBatchEdit: true
|
|
117
176
|
}, {
|
|
118
177
|
label: '地址',
|
|
119
178
|
prop: 'address',
|
|
120
|
-
minWidth: 200
|
|
179
|
+
minWidth: 200,
|
|
180
|
+
isBatchEdit: true
|
|
121
181
|
}, {
|
|
122
182
|
label: '名称',
|
|
123
183
|
prop: 'name',
|
|
124
|
-
minWidth: 200
|
|
184
|
+
minWidth: 200,
|
|
185
|
+
isBatchEdit: true
|
|
186
|
+
}, {
|
|
187
|
+
label: '数量',
|
|
188
|
+
prop: 'qty',
|
|
189
|
+
minWidth: 200,
|
|
190
|
+
isBatchEdit: true
|
|
125
191
|
}], tableData)
|
|
126
192
|
|
|
127
193
|
// const childTableTitle: TableTitle[] = [{
|
|
@@ -209,6 +275,76 @@ tableData.value = [{
|
|
|
209
275
|
tag: 'Office',
|
|
210
276
|
pid: 0
|
|
211
277
|
}]
|
|
278
|
+
|
|
279
|
+
const tableData1 = ref<any[]>([])
|
|
280
|
+
tableData1.value = [{
|
|
281
|
+
id: 1,
|
|
282
|
+
sn: 1,
|
|
283
|
+
date: '2016-05-03',
|
|
284
|
+
name: 'Tom1',
|
|
285
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
286
|
+
tag: 'Home',
|
|
287
|
+
pid: 0,
|
|
288
|
+
qty: 10
|
|
289
|
+
}, {
|
|
290
|
+
id: 2,
|
|
291
|
+
sn: 2,
|
|
292
|
+
date: '2016-05-02',
|
|
293
|
+
name: 'Tom2',
|
|
294
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
295
|
+
tag: 'Office',
|
|
296
|
+
pid: 0,
|
|
297
|
+
qty: 101
|
|
298
|
+
}, {
|
|
299
|
+
id: 3,
|
|
300
|
+
sn: 3,
|
|
301
|
+
date: '2016-05-04',
|
|
302
|
+
name: 'Tom3',
|
|
303
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
304
|
+
tag: 'Home',
|
|
305
|
+
pid: 0,
|
|
306
|
+
qty: 102
|
|
307
|
+
}, {
|
|
308
|
+
id: 4,
|
|
309
|
+
sn: 4,
|
|
310
|
+
date: '2016-05-01',
|
|
311
|
+
name: 'Tom4',
|
|
312
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
313
|
+
tag: 'Office',
|
|
314
|
+
pid: 0,
|
|
315
|
+
qty: 103
|
|
316
|
+
}, {
|
|
317
|
+
id: 5,
|
|
318
|
+
sn: 5,
|
|
319
|
+
date: '2016-05-05',
|
|
320
|
+
name: 'Tom4',
|
|
321
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
322
|
+
tag: 'Office',
|
|
323
|
+
pid: 0,
|
|
324
|
+
qty: 104
|
|
325
|
+
}, {
|
|
326
|
+
id: 6,
|
|
327
|
+
sn: 6,
|
|
328
|
+
date: '2016-06-01',
|
|
329
|
+
name: 'Tom4',
|
|
330
|
+
address: 'No. 189, Grove St, Los Angeles',
|
|
331
|
+
tag: 'Office',
|
|
332
|
+
pid: 0,
|
|
333
|
+
qty: 105
|
|
334
|
+
}]
|
|
335
|
+
|
|
336
|
+
// 选中项
|
|
337
|
+
const multipleSelection = ref<number[]>([])
|
|
338
|
+
const handleSelectionChange = (val: any[]) => {
|
|
339
|
+
multipleSelection.value = val.map(item => item.sn)
|
|
340
|
+
tableData1.value[0].name = tableData1.value[0].name + 'd'
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* 批量修改
|
|
345
|
+
* */
|
|
346
|
+
const selectionCell = ref<string>('')
|
|
347
|
+
const batchEditRef = ref<InstanceType<typeof BatchEdit> | null>(null)
|
|
212
348
|
</script>
|
|
213
349
|
|
|
214
350
|
<style lang="scss" scoped>
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
:data="tableData"
|
|
11
11
|
:expandRowKeys="expandRowKeys"
|
|
12
12
|
:rowKey="props.rowKey"
|
|
13
|
+
:cellStyle="cellStyle"
|
|
13
14
|
@paste="paste"
|
|
14
15
|
@cellClick="cellClick"
|
|
15
16
|
@expandChange="expandChange"
|
|
@@ -28,33 +29,35 @@
|
|
|
28
29
|
</template>
|
|
29
30
|
|
|
30
31
|
<script setup lang="ts">
|
|
31
|
-
import { ref, onMounted, computed, useSlots, watch, provide } from 'vue'
|
|
32
|
+
import { ref, onMounted, computed, useSlots, watch, provide, reactive } from 'vue'
|
|
32
33
|
import checkType from '../../Tool/checkType/checkType'
|
|
33
34
|
import { TableConfig } from './../../Hook/useTableConfig/useTableConfig'
|
|
34
35
|
import { tableKey } from './token'
|
|
35
36
|
|
|
36
37
|
interface FilterValue {
|
|
37
|
-
[key: string]: Array<string | number
|
|
38
|
+
[key: string]: Array<string | number>;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
const props = withDefaults(defineProps<{
|
|
41
|
-
size?: 'small' | 'large' | ''
|
|
42
|
-
sole?: string
|
|
43
|
-
data?:
|
|
44
|
-
[key: string]: any
|
|
45
|
-
}>,
|
|
42
|
+
size?: 'small' | 'large' | '';
|
|
43
|
+
sole?: string;
|
|
44
|
+
data?: Record<string, any>[];
|
|
46
45
|
/** 表格内容筛选(当为null时,不显示筛选图标) */
|
|
47
|
-
filtersValue?: FilterValue | null
|
|
46
|
+
filtersValue?: FilterValue | null;
|
|
48
47
|
/** 表格配置 */
|
|
49
|
-
tableConfig?: TableConfig | null
|
|
48
|
+
tableConfig?: TableConfig | null;
|
|
50
49
|
/** 展开图标列(如使用这个属性则必须存在rowKey属性) (标记,约束条件后面解决) */
|
|
51
|
-
expandProp?: string
|
|
50
|
+
expandProp?: string;
|
|
52
51
|
/** 可以通过该属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。 */
|
|
53
|
-
expandRowKeys?: any[]
|
|
52
|
+
expandRowKeys?: any[];
|
|
54
53
|
/** 行数据的 Key,用来优化 Table 的渲染; 在使用reserve-selection功能与显示树形数据时,该属性是必填的。 类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。 */
|
|
55
|
-
rowKey?: Function | string
|
|
54
|
+
rowKey?: Function | string;
|
|
56
55
|
/** 表格配置key */
|
|
57
|
-
tableConfigKey?: string
|
|
56
|
+
tableConfigKey?: string;
|
|
57
|
+
/** 显示单元格选中状态 */
|
|
58
|
+
showSelectionCellStatus?: boolean;
|
|
59
|
+
/** 选中列(必须showSelection为true) */
|
|
60
|
+
selectionCell?: string;
|
|
58
61
|
}>(), {
|
|
59
62
|
size: '',
|
|
60
63
|
sole: 'key',
|
|
@@ -64,7 +67,9 @@ const props = withDefaults(defineProps<{
|
|
|
64
67
|
expandProp: '',
|
|
65
68
|
expandRowKeys: () => [],
|
|
66
69
|
rowKey: '',
|
|
67
|
-
tableConfigKey: ''
|
|
70
|
+
tableConfigKey: '',
|
|
71
|
+
showSelectionCellStatus: false,
|
|
72
|
+
selectionCell: ''
|
|
68
73
|
})
|
|
69
74
|
|
|
70
75
|
const expandRowKeys = ref<any[] | null>(props.rowKey ? props.expandRowKeys : null)
|
|
@@ -102,6 +107,7 @@ watch(
|
|
|
102
107
|
const slots = useSlots()
|
|
103
108
|
|
|
104
109
|
const tableData = computed(() => {
|
|
110
|
+
if (!Object.keys(props.filtersValue || {}).length) return props.data
|
|
105
111
|
return props.data.filter(item => {
|
|
106
112
|
for (const key in props.filtersValue) {
|
|
107
113
|
const node = props.filtersValue[key]
|
|
@@ -111,6 +117,27 @@ const tableData = computed(() => {
|
|
|
111
117
|
return true
|
|
112
118
|
})
|
|
113
119
|
})
|
|
120
|
+
// const tableData = ref<Record<string, any>[]>([])
|
|
121
|
+
// watch(
|
|
122
|
+
// () => [props.data, props.filtersValue],
|
|
123
|
+
// () => {
|
|
124
|
+
// if (!Object.keys(props.filtersValue || {}).length) {
|
|
125
|
+
// tableData.value = props.data
|
|
126
|
+
// return
|
|
127
|
+
// }
|
|
128
|
+
// tableData.value = props.data.filter(item => {
|
|
129
|
+
// for (const key in props.filtersValue) {
|
|
130
|
+
// const node = props.filtersValue[key]
|
|
131
|
+
// const colData = checkType(item[key]).isObject() || checkType(item[key]).isArray() ? JSON.stringify(item[key]) : item[key]
|
|
132
|
+
// if (!node.includes(colData) && node.length) return false
|
|
133
|
+
// }
|
|
134
|
+
// return true
|
|
135
|
+
// })
|
|
136
|
+
// }, {
|
|
137
|
+
// immediate: true,
|
|
138
|
+
// deep: true
|
|
139
|
+
// }
|
|
140
|
+
// )
|
|
114
141
|
const createHash = (hashLength: number = 24) => {
|
|
115
142
|
return Array.from(Array(Number(hashLength) || 24), () => Math.floor(Math.random() * 36).toString(36)).join('')
|
|
116
143
|
}
|
|
@@ -129,13 +156,37 @@ const emit = defineEmits<{
|
|
|
129
156
|
},
|
|
130
157
|
/** 粘贴完成后的表格数据 */
|
|
131
158
|
tableData: Array<{ [key: string]: any }>
|
|
132
|
-
]
|
|
159
|
+
];
|
|
133
160
|
/** 表格配置更新 */
|
|
134
|
-
'update:tableConfig': [tableConfig: TableConfig]
|
|
161
|
+
'update:tableConfig': [tableConfig: TableConfig];
|
|
135
162
|
/** expandProp模式下 当用户对某一行展开或者关闭的时候会触发该事件 */
|
|
136
|
-
privateExpandChange: [row: any, expandedRows: any[]]
|
|
163
|
+
privateExpandChange: [row: any, expandedRows: any[]];
|
|
164
|
+
/** 选中单元格更新 */
|
|
165
|
+
'update:selectionCell': [string];
|
|
137
166
|
}>()
|
|
138
167
|
|
|
168
|
+
interface SelectionCellInfoType {
|
|
169
|
+
/** 列索引 */
|
|
170
|
+
columnIndex: number | null;
|
|
171
|
+
/** 行索引 */
|
|
172
|
+
rowIndex: number | null;
|
|
173
|
+
/** 列key */
|
|
174
|
+
prop: string;
|
|
175
|
+
}
|
|
176
|
+
const selectionCellInfo: SelectionCellInfoType = reactive<SelectionCellInfoType>({
|
|
177
|
+
columnIndex: null,
|
|
178
|
+
rowIndex: null,
|
|
179
|
+
prop: ''
|
|
180
|
+
})
|
|
181
|
+
const cellStyle = (data: { row: any, column: any, rowIndex: number, columnIndex: number }): Record<string, any> => {
|
|
182
|
+
if (!props.selectionCell) return {}
|
|
183
|
+
if (!props.showSelectionCellStatus) return {}
|
|
184
|
+
if (data.columnIndex !== selectionCellInfo.columnIndex || data.rowIndex !== selectionCellInfo.rowIndex) return {}
|
|
185
|
+
return {
|
|
186
|
+
backgroundColor: 'var(--el-color-primary-light-9)'
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
139
190
|
const privateExpandChange = (index: number) => {
|
|
140
191
|
const row = tableData.value[index]
|
|
141
192
|
const expandedRows = tableData.value.filter(item => (expandRowKeys?.value || []).includes(item[props?.rowKey as any || '']))
|
|
@@ -159,6 +210,15 @@ const cellClick = (row: any, column: { property: string; }, cell: any) => {
|
|
|
159
210
|
editRowSole.value = row[props.sole] // 保存操作的行的元素唯一值
|
|
160
211
|
editRow.value = row // 获取行的key名
|
|
161
212
|
elDom.value?.addEventListener('paste', disablePasteEvent)
|
|
213
|
+
|
|
214
|
+
const tr = cell.parentElement
|
|
215
|
+
if (!tr) return
|
|
216
|
+
const parent = tr.parentNode
|
|
217
|
+
const rowIndex = Array.from(parent.children).indexOf(tr)
|
|
218
|
+
selectionCellInfo.columnIndex = cell.cellIndex
|
|
219
|
+
selectionCellInfo.rowIndex = rowIndex
|
|
220
|
+
selectionCellInfo.prop = column.property
|
|
221
|
+
emit('update:selectionCell', props.selectionCell === column.property ? '' : column.property)
|
|
162
222
|
}
|
|
163
223
|
const disablePasteEvent = (e: { preventDefault: () => void; }) => {
|
|
164
224
|
e.preventDefault()
|
|
@@ -38,38 +38,40 @@ type OptionsKeys = `${string}Options` | `${string}Map`
|
|
|
38
38
|
// }
|
|
39
39
|
|
|
40
40
|
/** 表头 */
|
|
41
|
-
interface TableTitle {
|
|
41
|
+
declare interface TableTitle<T extends Record<string, any> = any> {
|
|
42
42
|
/** 显示的标题 */
|
|
43
|
-
label
|
|
43
|
+
label: string;
|
|
44
44
|
/** 字段名称 对应列内容的字段名, 也可以使用 property属性 */
|
|
45
|
-
prop
|
|
45
|
+
prop: T extends Record<string, any> ? keyof T : string;
|
|
46
|
+
/** 对齐方式 */
|
|
47
|
+
align?: 'right' | 'left' | 'center';
|
|
46
48
|
/** 对应列的宽度 */
|
|
47
|
-
width?: number | string
|
|
49
|
+
width?: number | string;
|
|
48
50
|
/** 对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列 */
|
|
49
|
-
minWidth?: number | string
|
|
51
|
+
minWidth?: number | string;
|
|
50
52
|
/** 列的 className */
|
|
51
|
-
className?: string
|
|
53
|
+
className?: string;
|
|
52
54
|
/** 当前列标题的自定义类名 */
|
|
53
|
-
labelClassName?: string
|
|
55
|
+
labelClassName?: string;
|
|
54
56
|
/** 对应列是否可以排序, 如果设置为 'custom',则代表用户希望远程排序,需要监听 Table 的 sort-change 事件 */
|
|
55
|
-
sortable?: boolean
|
|
57
|
+
sortable?: boolean;
|
|
56
58
|
/** 指定数据按照哪个属性进行排序,仅当 sortable 设置为 true 且没有设置 sort-method 的时候有效。 如果 sort-by 为数组,则先按照第 1 个属性排序,如果第 1 个相等,再按照第 2 个排序,以此类推 */
|
|
57
|
-
sortBy?: (row: any, index: number) => string | string
|
|
59
|
+
sortBy?: (row: any, index: number) => string | string[];
|
|
58
60
|
/** 数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。 需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序 */
|
|
59
|
-
sortOrders?: ('ascending' | 'descending' | null)[]
|
|
61
|
+
sortOrders?: ('ascending' | 'descending' | null)[];
|
|
60
62
|
/** 数据过滤的选项, 数组格式,数组中的元素需要有 text 和 value 属性。 数组中的每个元素都需要有 text 和 value 属性。 */
|
|
61
63
|
filters?: {
|
|
62
|
-
text: string | number
|
|
63
|
-
value: string | number
|
|
64
|
-
}[]
|
|
64
|
+
text: string | number;
|
|
65
|
+
value: string | number;
|
|
66
|
+
}[];
|
|
65
67
|
/** 数据过滤使用的方法, 如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示。 */
|
|
66
|
-
filterMethod?: Function
|
|
68
|
+
filterMethod?: Function;
|
|
67
69
|
/** 表头对齐方式, 若不设置该项,则使用表格的对齐方式 */
|
|
68
|
-
headerAlign?: 'left' | 'center' | 'right'
|
|
69
|
-
/** 对齐方式 */
|
|
70
|
-
align?: 'left' | 'center' | 'right',
|
|
70
|
+
headerAlign?: 'left' | 'center' | 'right';
|
|
71
71
|
/** 列是否固定在左侧或者右侧。 true 表示固定在左侧 */
|
|
72
|
-
fixed?: 'left' | 'right'
|
|
72
|
+
fixed?: true | 'left' | 'right';
|
|
73
|
+
/** 是否允许批改 */
|
|
74
|
+
isBatchEdit?: boolean;
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
/** 要求对象中几个属性必有其一 */
|
|
@@ -78,31 +80,31 @@ type AtLeastOne<T, Keys extends keyof T> = Pick<T, Exclude<keyof T, Keys>> & { [
|
|
|
78
80
|
/** 表头(虚拟化表格) */
|
|
79
81
|
interface TableV2Title {
|
|
80
82
|
/** 显示的标题 */
|
|
81
|
-
title: string
|
|
83
|
+
title: string;
|
|
82
84
|
/** 唯一标志 */
|
|
83
|
-
key: string
|
|
85
|
+
key: string;
|
|
84
86
|
/** data 的唯一标志符 */
|
|
85
|
-
dataKey: string
|
|
87
|
+
dataKey: string;
|
|
86
88
|
/** 表格单元格内容对齐方式 */
|
|
87
|
-
align?: 'right' | 'left' | 'center'
|
|
89
|
+
align?: 'right' | 'left' | 'center';
|
|
88
90
|
/** 列的类名 */
|
|
89
|
-
class?: string
|
|
91
|
+
class?: string;
|
|
90
92
|
/** 列是否固定在左侧或者右侧。 true 表示固定在左侧 */
|
|
91
|
-
fixed?: true | 'left' | 'right'
|
|
93
|
+
fixed?: true | 'left' | 'right';
|
|
92
94
|
/** 自定义 header 头部类名 */
|
|
93
|
-
headerClass?: string
|
|
95
|
+
headerClass?: string;
|
|
94
96
|
/** 此列是否不可见 */
|
|
95
|
-
hidden?: boolean
|
|
97
|
+
hidden?: boolean;
|
|
96
98
|
/** 自定义列单元格的类名,将会与 gird 单元格合并 */
|
|
97
|
-
style?: object
|
|
99
|
+
style?: object;
|
|
98
100
|
/** 对应列的最小宽度, 对应列的最小宽度, 与 width 的区别是 width 是固定的,min-width 会把剩余宽度按比例分配给设置了 min-width 的列 */
|
|
99
|
-
minWidth?: number | string
|
|
101
|
+
minWidth?: number | string;
|
|
100
102
|
/** 对应列的列的最大宽度 */
|
|
101
|
-
maxWidth?: number | string
|
|
103
|
+
maxWidth?: number | string;
|
|
102
104
|
/** 对应列的宽度 */
|
|
103
|
-
width: number | string
|
|
105
|
+
width: number | string;
|
|
104
106
|
/** 自定义单元格渲染器 */
|
|
105
|
-
cellRenderer?: any
|
|
107
|
+
cellRenderer?: any;
|
|
106
108
|
/** 自定义头部渲染器 */
|
|
107
|
-
headerCellRenderer?: any
|
|
109
|
+
headerCellRenderer?: any;
|
|
108
110
|
}
|
package/tags.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"demo":{"attributes":[],"description":"这是一个demo"},"m-dialog":{"attributes":["modelValue","width","insideHeight","minInsideHeight","maxInsideHeight","resize","draggable","insideClassName","drawerMode","resized","update:insideHeight","update:modelValue"],"description":"这是一个MDialog"},"m-inline":{"attributes":["minWidth","maxWidth","size","configKey","model","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","modelValue","update:modelValue","change"],"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","selectChange","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-super":{"attributes":[],"description":"这是一个MTableSuper"},"m-table-v2":{"attributes":["size","data","height","border","columns","filtersValue","tableConfig","tableConfigKey","fixed","estimatedRowHeight","headerHeight","cellWidthAdaptive","pasteData","update:tableConfig"],"description":"这是一个MTableV2"},"skin-config":{"attributes":["change"],"description":"这是一个SkinConfig"},"tab-page":{"attributes":["modelValue","activeKey","showRightClickMenu","primaryColor","primaryBackgroundColor","close","click"],"description":"这是一个TabPage"}}
|
|
1
|
+
{"demo":{"attributes":[],"description":"这是一个demo"},"batch-edit":{"attributes":["selectionCell","size","tableData","tableTitle","update:tableData"],"description":"这是一个BatchEdit"},"m-dialog":{"attributes":["modelValue","width","insideHeight","minInsideHeight","maxInsideHeight","resize","draggable","insideClassName","drawerMode","resized","update:insideHeight","update:modelValue"],"description":"这是一个MDialog"},"m-inline":{"attributes":["minWidth","maxWidth","size","configKey","model","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","modelValue","update:modelValue","change"],"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","selectChange","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","showSelectionCellStatus","selectionCell","pasteData","update:tableConfig","privateExpandChange","update:selectionCell"],"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-super":{"attributes":[],"description":"这是一个MTableSuper"},"m-table-v2":{"attributes":["size","data","height","border","columns","filtersValue","tableConfig","tableConfigKey","fixed","estimatedRowHeight","headerHeight","cellWidthAdaptive","pasteData","update:tableConfig"],"description":"这是一个MTableV2"},"skin-config":{"attributes":["change"],"description":"这是一个SkinConfig"},"tab-page":{"attributes":["modelValue","activeKey","showRightClickMenu","primaryColor","primaryBackgroundColor","close","click"],"description":"这是一个TabPage"}}
|
package/vite.config.ts
CHANGED
|
@@ -4,7 +4,7 @@ import eslint from 'vite-plugin-eslint'
|
|
|
4
4
|
import vue from '@vitejs/plugin-vue'
|
|
5
5
|
import Markdown from 'vite-plugin-md'
|
|
6
6
|
import VueDevTools from 'vite-plugin-vue-devtools'
|
|
7
|
-
import compressedFiles from './compressedFiles'
|
|
7
|
+
// import compressedFiles from './compressedFiles'
|
|
8
8
|
|
|
9
9
|
export default defineConfig({
|
|
10
10
|
resolve: {
|