resolver-egretimp-plus 0.1.30 → 0.1.32
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/dist/h5/index.js +18 -18
- package/dist/theme/element/index.css +1 -1
- package/dist/theme/element/src/components/form.scss +2 -0
- package/dist/web/index.js +128 -128
- package/dist/web/index.js.LICENSE.txt +15 -0
- package/package.json +5 -1
- package/scripts/webpack.config.js +18 -2
- package/src/components/packages-web/CustomComponentTable.jsx +8 -5
- package/src/components/table/index.ts +29 -0
- package/src/components/table/src/composables/use-scrollbar.ts +30 -0
- package/src/components/table/src/config.ts +256 -0
- package/src/components/table/src/filter-panel.vue +260 -0
- package/src/components/table/src/h-helper.ts +34 -0
- package/src/components/table/src/layout-observer.ts +78 -0
- package/src/components/table/src/store/current.ts +85 -0
- package/src/components/table/src/store/expand.ts +76 -0
- package/src/components/table/src/store/helper.ts +74 -0
- package/src/components/table/src/store/index.ts +246 -0
- package/src/components/table/src/store/tree.ts +230 -0
- package/src/components/table/src/store/watcher.ts +543 -0
- package/src/components/table/src/table/defaults.ts +402 -0
- package/src/components/table/src/table/key-render-helper.ts +27 -0
- package/src/components/table/src/table/style-helper.ts +378 -0
- package/src/components/table/src/table/utils-helper.ts +47 -0
- package/src/components/table/src/table-body/defaults.ts +52 -0
- package/src/components/table/src/table-body/events-helper.ts +203 -0
- package/src/components/table/src/table-body/index.ts +119 -0
- package/src/components/table/src/table-body/render-helper.ts +283 -0
- package/src/components/table/src/table-body/styles-helper.ts +164 -0
- package/src/components/table/src/table-column/defaults.ts +237 -0
- package/src/components/table/src/table-column/index.ts +202 -0
- package/src/components/table/src/table-column/render-helper.ts +214 -0
- package/src/components/table/src/table-column/watcher-helper.ts +88 -0
- package/src/components/table/src/table-footer/index.ts +128 -0
- package/src/components/table/src/table-footer/mapState-helper.ts +33 -0
- package/src/components/table/src/table-footer/style-helper.ts +51 -0
- package/src/components/table/src/table-header/event-helper.ts +213 -0
- package/src/components/table/src/table-header/index.ts +244 -0
- package/src/components/table/src/table-header/style.helper.ts +119 -0
- package/src/components/table/src/table-header/utils-helper.ts +94 -0
- package/src/components/table/src/table-layout.ts +259 -0
- package/src/components/table/src/table.vue +389 -0
- package/src/components/table/src/tableColumn.ts +3 -0
- package/src/components/table/src/tokens.ts +5 -0
- package/src/components/table/src/util.ts +521 -0
- package/src/components/table/style/css.ts +5 -0
- package/src/components/table/style/index.ts +5 -0
- package/src/theme/element/components/form.scss +2 -0
- package/tsconfig.json +19 -0
- package/vue-shims.d.ts +4 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
ref="tableWrapper"
|
|
4
|
+
:class="[
|
|
5
|
+
{
|
|
6
|
+
[ns.m('fit')]: fit,
|
|
7
|
+
[ns.m('striped')]: stripe,
|
|
8
|
+
[ns.m('border')]: border || isGroup,
|
|
9
|
+
[ns.m('hidden')]: isHidden,
|
|
10
|
+
[ns.m('group')]: isGroup,
|
|
11
|
+
[ns.m('fluid-height')]: maxHeight,
|
|
12
|
+
[ns.m('scrollable-x')]: layout.scrollX.value,
|
|
13
|
+
[ns.m('scrollable-y')]: layout.scrollY.value,
|
|
14
|
+
[ns.m('enable-row-hover')]: !store.states.isComplex.value,
|
|
15
|
+
[ns.m('enable-row-transition')]:
|
|
16
|
+
(store.states.data.value || []).length !== 0 &&
|
|
17
|
+
(store.states.data.value || []).length < 100,
|
|
18
|
+
'has-footer': showSummary,
|
|
19
|
+
},
|
|
20
|
+
ns.m(tableSize),
|
|
21
|
+
className,
|
|
22
|
+
ns.b(),
|
|
23
|
+
ns.m(`layout-${tableLayout}`),
|
|
24
|
+
]"
|
|
25
|
+
:style="style"
|
|
26
|
+
:data-prefix="ns.namespace.value"
|
|
27
|
+
@mouseleave="handleMouseLeave"
|
|
28
|
+
>
|
|
29
|
+
<div :class="ns.e('inner-wrapper')" :style="tableInnerStyle">
|
|
30
|
+
<div ref="hiddenColumns" class="hidden-columns">
|
|
31
|
+
<slot />
|
|
32
|
+
</div>
|
|
33
|
+
<div
|
|
34
|
+
v-if="showHeader && tableLayout === 'fixed'"
|
|
35
|
+
ref="headerWrapper"
|
|
36
|
+
v-mousewheel="handleHeaderFooterMousewheel"
|
|
37
|
+
:class="ns.e('header-wrapper')"
|
|
38
|
+
>
|
|
39
|
+
<table
|
|
40
|
+
ref="tableHeader"
|
|
41
|
+
:class="ns.e('header')"
|
|
42
|
+
:style="tableBodyStyles"
|
|
43
|
+
border="0"
|
|
44
|
+
cellpadding="0"
|
|
45
|
+
cellspacing="0"
|
|
46
|
+
>
|
|
47
|
+
<hColgroup
|
|
48
|
+
:columns="store.states.columns.value"
|
|
49
|
+
:table-layout="tableLayout"
|
|
50
|
+
/>
|
|
51
|
+
<table-header
|
|
52
|
+
ref="tableHeaderRef"
|
|
53
|
+
:border="border"
|
|
54
|
+
:default-sort="defaultSort"
|
|
55
|
+
:store="store"
|
|
56
|
+
@set-drag-visible="setDragVisible"
|
|
57
|
+
/>
|
|
58
|
+
</table>
|
|
59
|
+
</div>
|
|
60
|
+
<div ref="bodyWrapper" :class="ns.e('body-wrapper')">
|
|
61
|
+
<el-scrollbar
|
|
62
|
+
ref="scrollBarRef"
|
|
63
|
+
:view-style="scrollbarViewStyle"
|
|
64
|
+
:wrap-style="scrollbarStyle"
|
|
65
|
+
:always="scrollbarAlwaysOn"
|
|
66
|
+
>
|
|
67
|
+
<table
|
|
68
|
+
ref="tableBody"
|
|
69
|
+
:class="ns.e('body')"
|
|
70
|
+
cellspacing="0"
|
|
71
|
+
cellpadding="0"
|
|
72
|
+
border="0"
|
|
73
|
+
:style="{
|
|
74
|
+
width: bodyWidth,
|
|
75
|
+
tableLayout,
|
|
76
|
+
}"
|
|
77
|
+
>
|
|
78
|
+
<hColgroup
|
|
79
|
+
:columns="store.states.columns.value"
|
|
80
|
+
:table-layout="tableLayout"
|
|
81
|
+
/>
|
|
82
|
+
<table-header
|
|
83
|
+
v-if="showHeader && tableLayout === 'auto'"
|
|
84
|
+
ref="tableHeaderRef"
|
|
85
|
+
:class="ns.e('body-header')"
|
|
86
|
+
:border="border"
|
|
87
|
+
:default-sort="defaultSort"
|
|
88
|
+
:store="store"
|
|
89
|
+
@set-drag-visible="setDragVisible"
|
|
90
|
+
/>
|
|
91
|
+
<table-body
|
|
92
|
+
:context="context"
|
|
93
|
+
:highlight="highlightCurrentRow"
|
|
94
|
+
:row-class-name="rowClassName"
|
|
95
|
+
:tooltip-effect="tooltipEffect"
|
|
96
|
+
:tooltip-options="tooltipOptions"
|
|
97
|
+
:row-style="rowStyle"
|
|
98
|
+
:store="store"
|
|
99
|
+
:stripe="stripe"
|
|
100
|
+
/>
|
|
101
|
+
<table-footer
|
|
102
|
+
v-if="showSummary && tableLayout === 'auto'"
|
|
103
|
+
:class="ns.e('body-footer')"
|
|
104
|
+
:border="border"
|
|
105
|
+
:default-sort="defaultSort"
|
|
106
|
+
:store="store"
|
|
107
|
+
:sum-text="computedSumText"
|
|
108
|
+
:summary-method="summaryMethod"
|
|
109
|
+
/>
|
|
110
|
+
</table>
|
|
111
|
+
<div
|
|
112
|
+
v-if="isEmpty"
|
|
113
|
+
ref="emptyBlock"
|
|
114
|
+
:style="emptyBlockStyle"
|
|
115
|
+
:class="ns.e('empty-block')"
|
|
116
|
+
>
|
|
117
|
+
<span :class="ns.e('empty-text')">
|
|
118
|
+
<slot name="empty">{{ computedEmptyText }}</slot>
|
|
119
|
+
</span>
|
|
120
|
+
</div>
|
|
121
|
+
<div
|
|
122
|
+
v-if="$slots.append"
|
|
123
|
+
ref="appendWrapper"
|
|
124
|
+
:class="ns.e('append-wrapper')"
|
|
125
|
+
>
|
|
126
|
+
<slot name="append" />
|
|
127
|
+
</div>
|
|
128
|
+
</el-scrollbar>
|
|
129
|
+
</div>
|
|
130
|
+
<div
|
|
131
|
+
v-if="showSummary && tableLayout === 'fixed'"
|
|
132
|
+
v-show="!isEmpty"
|
|
133
|
+
ref="footerWrapper"
|
|
134
|
+
v-mousewheel="handleHeaderFooterMousewheel"
|
|
135
|
+
:class="ns.e('footer-wrapper')"
|
|
136
|
+
>
|
|
137
|
+
<table
|
|
138
|
+
:class="ns.e('footer')"
|
|
139
|
+
cellspacing="0"
|
|
140
|
+
cellpadding="0"
|
|
141
|
+
border="0"
|
|
142
|
+
:style="tableBodyStyles"
|
|
143
|
+
>
|
|
144
|
+
<hColgroup
|
|
145
|
+
:columns="store.states.columns.value"
|
|
146
|
+
:table-layout="tableLayout"
|
|
147
|
+
/>
|
|
148
|
+
<table-footer
|
|
149
|
+
:border="border"
|
|
150
|
+
:default-sort="defaultSort"
|
|
151
|
+
:store="store"
|
|
152
|
+
:sum-text="computedSumText"
|
|
153
|
+
:summary-method="summaryMethod"
|
|
154
|
+
/>
|
|
155
|
+
</table>
|
|
156
|
+
</div>
|
|
157
|
+
<div v-if="border || isGroup" :class="ns.e('border-left-patch')" />
|
|
158
|
+
</div>
|
|
159
|
+
<div
|
|
160
|
+
v-show="resizeProxyVisible"
|
|
161
|
+
ref="resizeProxy"
|
|
162
|
+
:class="ns.e('column-resize-proxy')"
|
|
163
|
+
/>
|
|
164
|
+
</div>
|
|
165
|
+
</template>
|
|
166
|
+
|
|
167
|
+
<script lang="ts">
|
|
168
|
+
// @ts-nocheck
|
|
169
|
+
import { computed, defineComponent, getCurrentInstance, provide } from 'vue'
|
|
170
|
+
import { debounce } from 'lodash-unified'
|
|
171
|
+
import { Mousewheel } from 'element-plus/es/directives/index.mjs'
|
|
172
|
+
import { useLocale, useNamespace } from 'element-plus/es/hooks/index.mjs'
|
|
173
|
+
import ElScrollbar from 'element-plus/es/components/scrollbar/index.mjs'
|
|
174
|
+
import { createStore } from './store/helper'
|
|
175
|
+
import TableLayout from './table-layout'
|
|
176
|
+
import TableHeader from './table-header'
|
|
177
|
+
import TableBody from './table-body'
|
|
178
|
+
import TableFooter from './table-footer'
|
|
179
|
+
import useUtils from './table/utils-helper'
|
|
180
|
+
import { convertToRows } from './table-header/utils-helper'
|
|
181
|
+
import useStyle from './table/style-helper'
|
|
182
|
+
import useKeyRender from './table/key-render-helper'
|
|
183
|
+
import defaultProps from './table/defaults'
|
|
184
|
+
import { TABLE_INJECTION_KEY } from './tokens'
|
|
185
|
+
import { hColgroup } from './h-helper'
|
|
186
|
+
import { useScrollbar } from './composables/use-scrollbar'
|
|
187
|
+
|
|
188
|
+
import type { Table } from './table/defaults'
|
|
189
|
+
|
|
190
|
+
let tableIdSeed = 1
|
|
191
|
+
export default defineComponent({
|
|
192
|
+
name: 'ElTable',
|
|
193
|
+
directives: {
|
|
194
|
+
Mousewheel,
|
|
195
|
+
},
|
|
196
|
+
components: {
|
|
197
|
+
TableHeader,
|
|
198
|
+
TableBody,
|
|
199
|
+
TableFooter,
|
|
200
|
+
ElScrollbar,
|
|
201
|
+
hColgroup,
|
|
202
|
+
},
|
|
203
|
+
props: defaultProps,
|
|
204
|
+
emits: [
|
|
205
|
+
'select',
|
|
206
|
+
'select-all',
|
|
207
|
+
'selection-change',
|
|
208
|
+
'cell-mouse-enter',
|
|
209
|
+
'cell-mouse-leave',
|
|
210
|
+
'cell-contextmenu',
|
|
211
|
+
'cell-click',
|
|
212
|
+
'cell-dblclick',
|
|
213
|
+
'row-click',
|
|
214
|
+
'row-contextmenu',
|
|
215
|
+
'row-dblclick',
|
|
216
|
+
'header-click',
|
|
217
|
+
'header-contextmenu',
|
|
218
|
+
'sort-change',
|
|
219
|
+
'filter-change',
|
|
220
|
+
'current-change',
|
|
221
|
+
'header-dragend',
|
|
222
|
+
'expand-change',
|
|
223
|
+
],
|
|
224
|
+
setup(props) {
|
|
225
|
+
type Row = typeof props.data[number]
|
|
226
|
+
const { t } = useLocale()
|
|
227
|
+
const ns = useNamespace('table')
|
|
228
|
+
const table = getCurrentInstance() as Table<Row>
|
|
229
|
+
provide(TABLE_INJECTION_KEY, table)
|
|
230
|
+
const store = createStore<Row>(table, props)
|
|
231
|
+
table.store = store
|
|
232
|
+
const layout = new TableLayout<Row>({
|
|
233
|
+
store: table.store,
|
|
234
|
+
table,
|
|
235
|
+
fit: props.fit,
|
|
236
|
+
showHeader: props.showHeader,
|
|
237
|
+
})
|
|
238
|
+
table.layout = layout
|
|
239
|
+
|
|
240
|
+
const isEmpty = computed(() => (store.states.data.value || []).length === 0)
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* open functions
|
|
244
|
+
*/
|
|
245
|
+
const {
|
|
246
|
+
setCurrentRow,
|
|
247
|
+
getSelectionRows,
|
|
248
|
+
toggleRowSelection,
|
|
249
|
+
clearSelection,
|
|
250
|
+
clearFilter,
|
|
251
|
+
toggleAllSelection,
|
|
252
|
+
toggleRowExpansion,
|
|
253
|
+
clearSort,
|
|
254
|
+
sort,
|
|
255
|
+
} = useUtils<Row>(store)
|
|
256
|
+
const {
|
|
257
|
+
isHidden,
|
|
258
|
+
renderExpanded,
|
|
259
|
+
setDragVisible,
|
|
260
|
+
isGroup,
|
|
261
|
+
handleMouseLeave,
|
|
262
|
+
handleHeaderFooterMousewheel,
|
|
263
|
+
tableSize,
|
|
264
|
+
emptyBlockStyle,
|
|
265
|
+
handleFixedMousewheel,
|
|
266
|
+
resizeProxyVisible,
|
|
267
|
+
bodyWidth,
|
|
268
|
+
resizeState,
|
|
269
|
+
doLayout,
|
|
270
|
+
tableBodyStyles,
|
|
271
|
+
tableLayout,
|
|
272
|
+
scrollbarViewStyle,
|
|
273
|
+
tableInnerStyle,
|
|
274
|
+
scrollbarStyle,
|
|
275
|
+
} = useStyle<Row>(props, layout, store, table)
|
|
276
|
+
|
|
277
|
+
const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } =
|
|
278
|
+
useScrollbar()
|
|
279
|
+
|
|
280
|
+
const debouncedUpdateLayout = debounce(doLayout, 50)
|
|
281
|
+
|
|
282
|
+
const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`
|
|
283
|
+
table.tableId = tableId
|
|
284
|
+
table.state = {
|
|
285
|
+
isGroup,
|
|
286
|
+
resizeState,
|
|
287
|
+
doLayout,
|
|
288
|
+
debouncedUpdateLayout,
|
|
289
|
+
}
|
|
290
|
+
const computedSumText = computed(
|
|
291
|
+
() => props.sumText || t('el.table.sumText')
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
const computedEmptyText = computed(() => {
|
|
295
|
+
return props.emptyText || t('el.table.emptyText')
|
|
296
|
+
})
|
|
297
|
+
|
|
298
|
+
const columns = computed(() => {
|
|
299
|
+
return convertToRows(store.states.originColumns.value)[0]
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
useKeyRender(table)
|
|
303
|
+
|
|
304
|
+
return {
|
|
305
|
+
ns,
|
|
306
|
+
layout,
|
|
307
|
+
store,
|
|
308
|
+
columns,
|
|
309
|
+
handleHeaderFooterMousewheel,
|
|
310
|
+
handleMouseLeave,
|
|
311
|
+
tableId,
|
|
312
|
+
tableSize,
|
|
313
|
+
isHidden,
|
|
314
|
+
isEmpty,
|
|
315
|
+
renderExpanded,
|
|
316
|
+
resizeProxyVisible,
|
|
317
|
+
resizeState,
|
|
318
|
+
isGroup,
|
|
319
|
+
bodyWidth,
|
|
320
|
+
tableBodyStyles,
|
|
321
|
+
emptyBlockStyle,
|
|
322
|
+
debouncedUpdateLayout,
|
|
323
|
+
handleFixedMousewheel,
|
|
324
|
+
/**
|
|
325
|
+
* @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection
|
|
326
|
+
*/
|
|
327
|
+
setCurrentRow,
|
|
328
|
+
/**
|
|
329
|
+
* @description returns the currently selected rows
|
|
330
|
+
*/
|
|
331
|
+
getSelectionRows,
|
|
332
|
+
/**
|
|
333
|
+
* @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected
|
|
334
|
+
*/
|
|
335
|
+
toggleRowSelection,
|
|
336
|
+
/**
|
|
337
|
+
* @description used in multiple selection Table, clear user selection
|
|
338
|
+
*/
|
|
339
|
+
clearSelection,
|
|
340
|
+
/**
|
|
341
|
+
* @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters
|
|
342
|
+
*/
|
|
343
|
+
clearFilter,
|
|
344
|
+
/**
|
|
345
|
+
* @description used in multiple selection Table, toggle select all and deselect all
|
|
346
|
+
*/
|
|
347
|
+
toggleAllSelection,
|
|
348
|
+
/**
|
|
349
|
+
* @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed
|
|
350
|
+
*/
|
|
351
|
+
toggleRowExpansion,
|
|
352
|
+
/**
|
|
353
|
+
* @description clear sorting, restore data to the original order
|
|
354
|
+
*/
|
|
355
|
+
clearSort,
|
|
356
|
+
/**
|
|
357
|
+
* @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout
|
|
358
|
+
*/
|
|
359
|
+
doLayout,
|
|
360
|
+
/**
|
|
361
|
+
* @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order
|
|
362
|
+
*/
|
|
363
|
+
sort,
|
|
364
|
+
t,
|
|
365
|
+
setDragVisible,
|
|
366
|
+
context: table,
|
|
367
|
+
computedSumText,
|
|
368
|
+
computedEmptyText,
|
|
369
|
+
tableLayout,
|
|
370
|
+
scrollbarViewStyle,
|
|
371
|
+
tableInnerStyle,
|
|
372
|
+
scrollbarStyle,
|
|
373
|
+
scrollBarRef,
|
|
374
|
+
/**
|
|
375
|
+
* @description scrolls to a particular set of coordinates
|
|
376
|
+
*/
|
|
377
|
+
scrollTo,
|
|
378
|
+
/**
|
|
379
|
+
* @description set horizontal scroll position
|
|
380
|
+
*/
|
|
381
|
+
setScrollLeft,
|
|
382
|
+
/**
|
|
383
|
+
* @description set vertical scroll position
|
|
384
|
+
*/
|
|
385
|
+
setScrollTop,
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
})
|
|
389
|
+
</script>
|