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.
Files changed (50) hide show
  1. package/dist/h5/index.js +18 -18
  2. package/dist/theme/element/index.css +1 -1
  3. package/dist/theme/element/src/components/form.scss +2 -0
  4. package/dist/web/index.js +128 -128
  5. package/dist/web/index.js.LICENSE.txt +15 -0
  6. package/package.json +5 -1
  7. package/scripts/webpack.config.js +18 -2
  8. package/src/components/packages-web/CustomComponentTable.jsx +8 -5
  9. package/src/components/table/index.ts +29 -0
  10. package/src/components/table/src/composables/use-scrollbar.ts +30 -0
  11. package/src/components/table/src/config.ts +256 -0
  12. package/src/components/table/src/filter-panel.vue +260 -0
  13. package/src/components/table/src/h-helper.ts +34 -0
  14. package/src/components/table/src/layout-observer.ts +78 -0
  15. package/src/components/table/src/store/current.ts +85 -0
  16. package/src/components/table/src/store/expand.ts +76 -0
  17. package/src/components/table/src/store/helper.ts +74 -0
  18. package/src/components/table/src/store/index.ts +246 -0
  19. package/src/components/table/src/store/tree.ts +230 -0
  20. package/src/components/table/src/store/watcher.ts +543 -0
  21. package/src/components/table/src/table/defaults.ts +402 -0
  22. package/src/components/table/src/table/key-render-helper.ts +27 -0
  23. package/src/components/table/src/table/style-helper.ts +378 -0
  24. package/src/components/table/src/table/utils-helper.ts +47 -0
  25. package/src/components/table/src/table-body/defaults.ts +52 -0
  26. package/src/components/table/src/table-body/events-helper.ts +203 -0
  27. package/src/components/table/src/table-body/index.ts +119 -0
  28. package/src/components/table/src/table-body/render-helper.ts +283 -0
  29. package/src/components/table/src/table-body/styles-helper.ts +164 -0
  30. package/src/components/table/src/table-column/defaults.ts +237 -0
  31. package/src/components/table/src/table-column/index.ts +202 -0
  32. package/src/components/table/src/table-column/render-helper.ts +214 -0
  33. package/src/components/table/src/table-column/watcher-helper.ts +88 -0
  34. package/src/components/table/src/table-footer/index.ts +128 -0
  35. package/src/components/table/src/table-footer/mapState-helper.ts +33 -0
  36. package/src/components/table/src/table-footer/style-helper.ts +51 -0
  37. package/src/components/table/src/table-header/event-helper.ts +213 -0
  38. package/src/components/table/src/table-header/index.ts +244 -0
  39. package/src/components/table/src/table-header/style.helper.ts +119 -0
  40. package/src/components/table/src/table-header/utils-helper.ts +94 -0
  41. package/src/components/table/src/table-layout.ts +259 -0
  42. package/src/components/table/src/table.vue +389 -0
  43. package/src/components/table/src/tableColumn.ts +3 -0
  44. package/src/components/table/src/tokens.ts +5 -0
  45. package/src/components/table/src/util.ts +521 -0
  46. package/src/components/table/style/css.ts +5 -0
  47. package/src/components/table/style/index.ts +5 -0
  48. package/src/theme/element/components/form.scss +2 -0
  49. package/tsconfig.json +19 -0
  50. 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>
@@ -0,0 +1,3 @@
1
+ import ElTableColumn from './table-column'
2
+
3
+ export default ElTableColumn
@@ -0,0 +1,5 @@
1
+ import type { InjectionKey } from 'vue'
2
+ import type { DefaultRow, Table } from './table/defaults'
3
+
4
+ export const TABLE_INJECTION_KEY: InjectionKey<Table<DefaultRow>> =
5
+ Symbol('ElTable')