@gx-design-vue/pro-table 0.2.0-alpha.2 → 0.2.0-alpha.21

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 (160) hide show
  1. package/dist/ProTable.d.ts +14 -493
  2. package/dist/ProTable.js +902 -511
  3. package/dist/components/Drag/Handle.d.ts +90 -0
  4. package/dist/components/Drag/Handle.js +64 -0
  5. package/dist/components/Drag/Tbody.d.ts +17 -0
  6. package/dist/components/Drag/Tbody.js +27 -0
  7. package/dist/components/EllipsisText/index.d.ts +50 -0
  8. package/dist/components/EllipsisText/index.js +65 -0
  9. package/dist/components/ScrollBar/Bar.d.ts +79 -0
  10. package/dist/components/ScrollBar/Bar.js +84 -0
  11. package/dist/components/ScrollBar/Thumb.d.ts +50 -0
  12. package/dist/components/ScrollBar/{Thumb/index.js → Thumb.js} +67 -58
  13. package/dist/components/ScrollBar/context.d.ts +3 -4
  14. package/dist/components/ScrollBar/context.js +3 -5
  15. package/dist/components/ScrollBar/util.d.ts +6 -5
  16. package/dist/components/ScrollBar/util.js +1 -14
  17. package/dist/components/SearchForm/CollapseToggle.d.ts +53 -0
  18. package/dist/components/SearchForm/CollapseToggle.js +47 -0
  19. package/dist/components/SearchForm/FormItemContainer.d.ts +73 -0
  20. package/dist/components/SearchForm/FormItemContainer.js +225 -0
  21. package/dist/components/SearchForm/FormItemWrapper.d.ts +80 -0
  22. package/dist/components/SearchForm/FormItemWrapper.js +62 -0
  23. package/dist/components/SearchForm/SearchForm.d.ts +128 -0
  24. package/dist/components/SearchForm/SearchForm.js +319 -0
  25. package/dist/components/SearchForm/index.d.ts +2 -0
  26. package/dist/components/SearchForm/index.js +2 -0
  27. package/dist/components/Toolbar/FullscreenIcon.d.ts +24 -0
  28. package/dist/components/Toolbar/FullscreenIcon.js +22 -0
  29. package/dist/components/Toolbar/ListToolBar.d.ts +109 -0
  30. package/dist/components/Toolbar/ListToolBar.js +101 -0
  31. package/dist/components/Toolbar/index.d.ts +101 -0
  32. package/dist/components/Toolbar/index.js +101 -0
  33. package/dist/components/Toolbar/style.d.ts +8 -0
  34. package/dist/components/{ListToolBar → Toolbar}/style.js +32 -27
  35. package/dist/context/TableContext.d.ts +15 -27
  36. package/dist/context/TableContext.js +3 -5
  37. package/dist/hooks/index.d.ts +19 -0
  38. package/dist/hooks/index.js +19 -0
  39. package/dist/hooks/useAutoScroll.d.ts +32 -0
  40. package/dist/hooks/useAutoScroll.js +127 -0
  41. package/dist/hooks/useBreakpoints.d.ts +13 -0
  42. package/dist/hooks/useBreakpoints.js +65 -0
  43. package/dist/hooks/useCellRender.d.ts +13 -0
  44. package/dist/hooks/useCellRender.js +40 -0
  45. package/dist/hooks/useColumnResize.d.ts +29 -0
  46. package/dist/hooks/useColumnResize.js +112 -0
  47. package/dist/hooks/useColumns.d.ts +35 -24
  48. package/dist/hooks/useColumns.js +89 -58
  49. package/dist/hooks/useDragHandleColumn.d.ts +26 -0
  50. package/dist/hooks/useDragHandleColumn.js +52 -0
  51. package/dist/hooks/useEllipsis.d.ts +20 -0
  52. package/dist/hooks/useEllipsis.js +51 -0
  53. package/dist/hooks/useFetchData.d.ts +42 -65
  54. package/dist/hooks/useFetchData.js +160 -176
  55. package/dist/hooks/useFitPage.d.ts +19 -0
  56. package/dist/hooks/useFitPage.js +90 -0
  57. package/dist/hooks/useKeepAliveReload.d.ts +21 -0
  58. package/dist/hooks/useKeepAliveReload.js +24 -0
  59. package/dist/hooks/useLoading.d.ts +18 -7
  60. package/dist/hooks/useLoading.js +27 -11
  61. package/dist/hooks/usePagination.d.ts +10 -7
  62. package/dist/hooks/usePagination.js +38 -29
  63. package/dist/hooks/useRequestOptions.d.ts +18 -0
  64. package/dist/hooks/useRequestOptions.js +39 -0
  65. package/dist/hooks/useRowDrag.d.ts +42 -0
  66. package/dist/hooks/useRowDrag.js +268 -0
  67. package/dist/hooks/useRowSelection.d.ts +27 -15
  68. package/dist/hooks/useRowSelection.js +93 -80
  69. package/dist/hooks/useTable.d.ts +35 -77
  70. package/dist/hooks/useTable.js +76 -49
  71. package/dist/hooks/useTableForm.d.ts +17 -82
  72. package/dist/hooks/useTableForm.js +137 -52
  73. package/dist/hooks/useTableScroll.d.ts +33 -31
  74. package/dist/hooks/useTableScroll.js +71 -28
  75. package/dist/hooks/useTableSize.d.ts +17 -7
  76. package/dist/hooks/useTableSize.js +21 -9
  77. package/dist/index.d.ts +11 -7
  78. package/dist/index.js +10 -4
  79. package/dist/interface.d.ts +537 -0
  80. package/dist/interface.js +1 -0
  81. package/dist/pro-table.esm.js +8897 -4012
  82. package/dist/pro-table.js +4 -1
  83. package/dist/style/ellipsis.d.ts +13 -0
  84. package/dist/style/ellipsis.js +16 -0
  85. package/dist/style/fit-page.d.ts +4 -2
  86. package/dist/style/fit-page.js +10 -5
  87. package/dist/style/index.d.ts +3 -7
  88. package/dist/style/index.js +38 -76
  89. package/dist/style/list.d.ts +4 -2
  90. package/dist/style/list.js +2 -12
  91. package/dist/style/resizable.d.ts +8 -0
  92. package/dist/style/resizable.js +18 -0
  93. package/dist/style/row-drag.d.ts +8 -0
  94. package/dist/style/row-drag.js +44 -0
  95. package/dist/style/scroll.d.ts +4 -2
  96. package/dist/style/scroll.js +9 -9
  97. package/dist/style/search.d.ts +8 -0
  98. package/dist/{components/Form/style.js → style/search.js} +22 -9
  99. package/dist/theme/augment.d.ts +8 -0
  100. package/dist/theme/augment.js +1 -0
  101. package/dist/theme/interface/components.d.ts +8 -0
  102. package/dist/theme/interface/components.js +1 -0
  103. package/dist/utils/arrayMove.d.ts +9 -0
  104. package/dist/utils/arrayMove.js +15 -0
  105. package/dist/utils/dateFormat.d.ts +9 -0
  106. package/dist/utils/dateFormat.js +29 -0
  107. package/dist/utils/ellipsis.d.ts +19 -0
  108. package/dist/utils/ellipsis.js +30 -0
  109. package/dist/utils/flipAnimate.d.ts +25 -0
  110. package/dist/utils/flipAnimate.js +40 -0
  111. package/dist/utils/formConstants.d.ts +9 -0
  112. package/dist/utils/formConstants.js +29 -0
  113. package/dist/utils/valueFormat.d.ts +9 -0
  114. package/dist/utils/valueFormat.js +27 -0
  115. package/package.json +23 -11
  116. package/dist/components/Form/components/RequestSelect.d.ts +0 -50
  117. package/dist/components/Form/components/RequestSelect.js +0 -58
  118. package/dist/components/Form/hooks/useForm.d.ts +0 -11
  119. package/dist/components/Form/hooks/useForm.js +0 -32
  120. package/dist/components/Form/index.d.ts +0 -33
  121. package/dist/components/Form/index.js +0 -479
  122. package/dist/components/Form/style.d.ts +0 -6
  123. package/dist/components/Form/utils/config.d.ts +0 -9
  124. package/dist/components/Form/utils/config.js +0 -30
  125. package/dist/components/Form/utils/dateFormat.d.ts +0 -22
  126. package/dist/components/Form/utils/dateFormat.js +0 -45
  127. package/dist/components/ListToolBar/index.d.ts +0 -60
  128. package/dist/components/ListToolBar/index.js +0 -123
  129. package/dist/components/ListToolBar/style.d.ts +0 -6
  130. package/dist/components/ScrollBar/Bar/index.d.ts +0 -49
  131. package/dist/components/ScrollBar/Bar/index.js +0 -71
  132. package/dist/components/ScrollBar/Bar/props.d.ts +0 -25
  133. package/dist/components/ScrollBar/Bar/props.js +0 -18
  134. package/dist/components/ScrollBar/Thumb/index.d.ts +0 -40
  135. package/dist/components/ScrollBar/Thumb/props.d.ts +0 -20
  136. package/dist/components/ScrollBar/Thumb/props.js +0 -18
  137. package/dist/components/TableCell/index.d.ts +0 -37
  138. package/dist/components/TableCell/index.js +0 -72
  139. package/dist/components/ToolBar/FullscreenIcon.d.ts +0 -7
  140. package/dist/components/ToolBar/FullscreenIcon.js +0 -14
  141. package/dist/components/ToolBar/index.d.ts +0 -34
  142. package/dist/components/ToolBar/index.js +0 -100
  143. package/dist/hooks/tryOnActivated.d.ts +0 -6
  144. package/dist/hooks/tryOnActivated.js +0 -14
  145. package/dist/hooks/useDebounceFn.d.ts +0 -8
  146. package/dist/hooks/useDebounceFn.js +0 -34
  147. package/dist/hooks/useScrollArea.d.ts +0 -24
  148. package/dist/hooks/useScrollArea.js +0 -104
  149. package/dist/props.d.ts +0 -340
  150. package/dist/props.js +0 -251
  151. package/dist/types/ColumnTypings.d.ts +0 -129
  152. package/dist/types/ColumnTypings.js +0 -1
  153. package/dist/types/SlotsTypings.d.ts +0 -63
  154. package/dist/types/SlotsTypings.js +0 -13
  155. package/dist/types/TableTypings.d.ts +0 -359
  156. package/dist/types/TableTypings.js +0 -1
  157. package/dist/types/index.d.ts +0 -9
  158. package/dist/types/index.js +0 -1
  159. package/dist/utils/utils.d.ts +0 -10
  160. package/dist/utils/utils.js +0 -91
package/dist/ProTable.js CHANGED
@@ -1,533 +1,924 @@
1
- import { provideTableContext } from "./context/TableContext.js";
2
- import { proTableProps, tableProps } from "./props.js";
3
- import Form_default from "./components/Form/index.js";
4
- import { genListToolBarStyle } from "./components/ListToolBar/style.js";
5
- import Bar_default from "./components/ScrollBar/Bar/index.js";
6
- import TableCell_default from "./components/TableCell/index.js";
7
- import ToolBar_default from "./components/ToolBar/index.js";
8
- import { tryOnActivated } from "./hooks/tryOnActivated.js";
9
- import { useColumns } from "./hooks/useColumns.js";
10
- import { useConfigFetchData, useFetchData } from "./hooks/useFetchData.js";
1
+ import { createDragTbody } from "./components/Drag/Tbody.js";
2
+ import Bar_default from "./components/ScrollBar/Bar.js";
3
+ import { useProBreakpoints } from "./hooks/useBreakpoints.js";
4
+ import ProTableSearchForm from "./components/SearchForm/SearchForm.js";
5
+ import "./components/SearchForm/index.js";
6
+ import { useProvideTableContext } from "./context/TableContext.js";
7
+ import { Toolbar } from "./components/Toolbar/index.js";
8
+ import { useCellRender } from "./hooks/useCellRender.js";
9
+ import { applyIndexColumn, useColumns } from "./hooks/useColumns.js";
10
+ import { useDragHandleColumn } from "./hooks/useDragHandleColumn.js";
11
+ import { useColumnResize } from "./hooks/useColumnResize.js";
12
+ import { useFetchData } from "./hooks/useFetchData.js";
13
+ import { useFitPage } from "./hooks/useFitPage.js";
14
+ import { useKeepAliveReload } from "./hooks/useKeepAliveReload.js";
11
15
  import { useLoading } from "./hooks/useLoading.js";
12
16
  import { usePagination } from "./hooks/usePagination.js";
17
+ import { useRowDrag } from "./hooks/useRowDrag.js";
13
18
  import { useRowSelection } from "./hooks/useRowSelection.js";
14
- import { getCurrentData, valueFormat } from "./utils/utils.js";
15
- import { useScrollArea } from "./hooks/useScrollArea.js";
16
19
  import { useTableForm } from "./hooks/useTableForm.js";
17
20
  import { useTableScroll } from "./hooks/useTableScroll.js";
18
21
  import { useTableSize } from "./hooks/useTableSize.js";
19
- import { genProTableFitPage } from "./style/fit-page.js";
20
- import { genProTableList } from "./style/list.js";
21
- import { genProTableScroll } from "./style/scroll.js";
22
- import { genProTableStyle } from "./style/index.js";
23
- import { Fragment, Teleport, cloneVNode, computed, createVNode, defineComponent, h, isVNode, mergeProps, ref, toRaw, toRef, unref, watchEffect } from "vue";
24
- import { useProAppContext } from "@gx-design-vue/pro-app";
25
- import { useBreakpoint } from "@gx-design-vue/pro-hooks";
26
- import { unit, useProStyle } from "@gx-design-vue/pro-provider";
27
- import { classNames, cloneDeep, convertValueBoolean, deepMerge, filterEmpty, getPrefixCls, getRandomNumber, getSlot, getSlotVNode, getSlotsProps, handleEmptyField, handleShowIndex, isArray, isObject } from "@gx-design-vue/pro-utils";
28
- import { useFullscreen, useWindowSize } from "@vueuse/core";
29
- import { Empty, Pagination, Spin, Table } from "ant-design-vue";
30
- import { omit, pick } from "es-toolkit";
31
-
22
+ import "./hooks/index.js";
23
+ import style_default from "./style/index.js";
24
+ import { Fragment, Teleport, computed, createVNode, defineComponent, mergeDefaults, mergeProps, ref, toRef, watch } from "vue";
25
+ import { useProConfigContext } from "@gx-design-vue/pro-provider";
26
+ import { classNames, getSlotVNode } from "@gx-design-vue/pro-utils";
27
+ import { useFullscreen } from "@vueuse/core";
28
+ import { Pagination, Spin, Table } from "antdv-next";
29
+ import { useBaseConfig } from "antdv-next/config-provider/context";
30
+ import useCSSVarCls from "antdv-next/config-provider/hooks/useCSSVarCls";
32
31
  //#region src/ProTable.tsx
33
- const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
34
- const ProTable = /* @__PURE__ */ defineComponent({
35
- name: "GProTable",
36
- inheritAttrs: false,
37
- props: proTableProps,
38
- emits: [
39
- "reset",
40
- "reload",
41
- "submit",
42
- "sizeChange",
43
- "expandedRowsChange",
44
- "expand",
45
- "change",
46
- "requestError",
47
- "columnsStateChange",
48
- "loadingChange"
49
- ],
50
- slots: Object,
51
- setup(props, { emit, slots, expose }) {
52
- const baseClassName = getPrefixCls({
53
- suffixCls: "table",
54
- isPor: true
55
- });
56
- const { wrapSSR, hashId } = useProStyle("ProBaseTable", [
57
- genProTableStyle,
58
- genProTableScroll,
59
- genProTableFitPage,
60
- genProTableList,
61
- genListToolBarStyle
62
- ], baseClassName);
63
- const screens = useBreakpoint();
64
- const { width: screenWidth } = useWindowSize();
65
- const activated = ref(false);
66
- const appContext = useProAppContext();
67
- const tableRef = ref();
68
- const tableFormRef = ref();
69
- const waitRequest = ref(props.waitRequest);
70
- watchEffect(() => waitRequest.value = props.waitRequest);
71
- const { toggle, isFullscreen } = useFullscreen(tableRef);
72
- const isMobile = computed(() => !screens.value.xl);
73
- const formRef = computed(() => {
74
- if (props.form === false) return false;
75
- const defaultConfig = {
76
- actions: { resetReload: true },
77
- autoRequest: false,
78
- span: {
79
- xxl: 5,
80
- xl: 5,
81
- lg: 3
82
- },
83
- resetText: "重置",
84
- searchText: "查询"
85
- };
86
- if (isObject(props.form)) return deepMerge(defaultConfig, props.form);
87
- return defaultConfig;
88
- });
89
- const formConfig = computed(() => formRef.value === false ? {} : formRef.value);
90
- const formAutoRequest = computed(() => formConfig.value?.autoRequest ?? props.autoRequest);
91
- const formActions = computed(() => formConfig.value?.actions);
92
- const cacheColumns = computed(() => {
93
- function initColumns(data) {
94
- return data.filter((item) => item.key || item.dataIndex).filter((item) => item.show ?? true).map((item, order) => {
95
- const key = item.key || item.dataIndex;
96
- item.key = key;
97
- item.order = order;
98
- item.dataIndex = key;
99
- item.align = item.align || props.align || "left";
100
- item.uuid = item.uuid || getRandomNumber().uuid(15);
101
- if (item.children) item.children = initColumns(item.children);
102
- return item;
103
- });
104
- }
105
- return handleShowIndex(initColumns(cloneDeep(props.columns || [])), {
106
- align: props.align || "left",
107
- showIndex: props.showIndex ?? false
32
+ const defaults = {
33
+ rowKey: "id",
34
+ align: "left",
35
+ columns: [],
36
+ dataSource: [],
37
+ pagination: void 0,
38
+ params: {},
39
+ waitRequest: false,
40
+ immediate: true,
41
+ autoRequest: true,
42
+ debounceTime: 10,
43
+ polling: false,
44
+ pollingTime: 2e3,
45
+ showLoading: true,
46
+ keepAliveReload: false
47
+ };
48
+ const TABLE_PASSTHROUGH_KEYS = [
49
+ "bordered",
50
+ "expandable",
51
+ "showHeader",
52
+ "showSorterTooltip",
53
+ "sortDirections",
54
+ "sticky",
55
+ "tableLayout",
56
+ "virtual",
57
+ "locale",
58
+ "getPopupContainer",
59
+ "dropdownPrefixCls",
60
+ "rowClassName",
61
+ "rowHoverable",
62
+ "rootClass",
63
+ "prefixCls",
64
+ "classes",
65
+ "styles"
66
+ ];
67
+ const ForwardProTable = /* @__PURE__ */ defineComponent((props, { attrs, slots, emit, expose }) => {
68
+ const { prefixCls } = useBaseConfig("pro-table", props);
69
+ const rootCls = useCSSVarCls(prefixCls);
70
+ const [hashId, cssVarCls] = style_default(prefixCls, rootCls);
71
+ const configContext = useProConfigContext();
72
+ const rootEl = ref();
73
+ const { toggle: toggleFullscreen, isFullscreen } = useFullscreen(rootEl);
74
+ watch(isFullscreen, (val) => {
75
+ emit("fullscreenChange", val);
76
+ });
77
+ const rootClassNames = computed(() => {
78
+ return classNames(prefixCls.value, hashId.value, cssVarCls.value, rootCls.value, attrs.class, props.proClasses?.root, fullPageClass.value);
79
+ });
80
+ const mergedStyle = computed(() => {
81
+ return [props.proStyles?.root, attrs.style];
82
+ });
83
+ const { isMobile, screenWidth, screens } = useProBreakpoints();
84
+ const { paginationInfo, paginationAlign, requestPagination, setPagination } = usePagination({ pagination: toRef(props, "pagination") });
85
+ const { tableSize, setTableSize } = useTableSize({
86
+ size: computed(() => props.size),
87
+ onChange: (s) => emit("sizeChange", s)
88
+ });
89
+ const { loading: internalLoading, setLoading } = useLoading({
90
+ loading: computed(() => props.loading),
91
+ onChange: (val) => props.onLoadingChange?.(val)
92
+ });
93
+ /**
94
+ * loading 指示器解析:
95
+ * 优先级 loading(SpinProps).indicator > 全局 configContext.indicator > Spin 默认。
96
+ * configContext.indicator 可能是函数,需调用取值(与 AppPage 一致)。
97
+ */
98
+ const resolvedIndicator = computed(() => {
99
+ const loadingProp = props.loading;
100
+ if (loadingProp && typeof loadingProp === "object") {
101
+ const indicator = loadingProp.indicator;
102
+ if (indicator !== void 0) return indicator;
103
+ }
104
+ const ctxIndicator = configContext?.indicator?.value;
105
+ return typeof ctxIndicator === "function" ? ctxIndicator() : ctxIndicator;
106
+ });
107
+ const { selectedRowKeys, selectedItems, mergedRowSelection, select: selectRow, selectAll: selectAllRows, remove: removeSelectedKeys, clear: clearSelectedKeys, sync: syncSelectedRows } = useRowSelection({
108
+ rowKey: computed(() => props.rowKey),
109
+ rowSelection: computed(() => props.rowSelection),
110
+ dataSource: computed(() => props.dataSource ?? [])
111
+ });
112
+ const columnsForScroll = computed(() => {
113
+ return applyIndexColumn(props.columns ?? [], props.indexColumn, props.align ?? "left");
114
+ });
115
+ const { tableScroll: policyTableScroll, shouldFixActionColumn } = useTableScroll({
116
+ scroll: computed(() => props.scroll),
117
+ columns: columnsForScroll,
118
+ rowSelection: computed(() => props.rowSelection),
119
+ screens,
120
+ screenWidth,
121
+ scrollPolicy: computed(() => props.scrollPolicy)
122
+ });
123
+ const rowDraggableRef = computed(() => props.rowDraggable);
124
+ const { dragColumns } = useDragHandleColumn({
125
+ columns: computed(() => props.columns ?? []),
126
+ rowDraggable: rowDraggableRef,
127
+ prefixCls,
128
+ cssVarCls
129
+ });
130
+ const { tableColumns, cacheColumns, setColumns } = useColumns({
131
+ columns: dragColumns,
132
+ align: computed(() => props.align ?? "left"),
133
+ indexColumn: computed(() => props.indexColumn),
134
+ shouldFixActionColumn,
135
+ wrapColumnRender: useCellRender({
136
+ columnEmptyText: computed(() => props.columnEmptyText),
137
+ prefixCls
138
+ }).wrapColumnRender
139
+ });
140
+ const { resizableColumns, resizableComponents } = useColumnResize({
141
+ columns: tableColumns,
142
+ onResize: (w, col) => emit("resizeColumn", w, col)
143
+ });
144
+ const dragTbodyRef = ref();
145
+ const DragTbody = createDragTbody(dragTbodyRef);
146
+ if (props.virtual && props.rowDraggable) console.warn("[GProTable] rowDraggable 与 virtual 模式不兼容(虚拟滚动下行未挂载,拖拽不可靠),已忽略行拖拽。");
147
+ const rowDragEnabled = computed(() => !!props.rowDraggable && !props.virtual);
148
+ const formConfig = computed(() => props.form === false ? void 0 : props.form);
149
+ const formAutoRequest = computed(() => {
150
+ if (props.form === false) return props.autoRequest ?? true;
151
+ return props.form?.autoRequest ?? props.autoRequest ?? true;
152
+ });
153
+ const formActions = computed(() => {
154
+ if (props.form === false) return void 0;
155
+ return props.form?.actions;
156
+ });
157
+ const { formColumns, formParamKeys, defaultFormSearch, formState, getFormSearch, resetFormState } = useTableForm({
158
+ searchMap: computed(() => props.searchMap ?? []),
159
+ columns: computed(() => props.columns ?? []),
160
+ params: computed(() => props.params)
161
+ });
162
+ const { dataSource, setTableDataList, operateTableDataRow, handleTableChange, reload, run } = useFetchData({
163
+ rowKey: computed(() => props.rowKey),
164
+ polling: computed(() => props.polling ?? false),
165
+ pollingTime: computed(() => props.pollingTime ?? 2e3),
166
+ request: props.request,
167
+ postData: props.postData,
168
+ dataSource: computed(() => props.dataSource),
169
+ immediate: computed(() => props.immediate ?? true),
170
+ waitRequest: computed(() => props.waitRequest ?? false),
171
+ autoRequest: computed(() => props.autoRequest ?? true),
172
+ debounceTime: computed(() => props.debounceTime ?? 10),
173
+ params: computed(() => props.params),
174
+ defaultFormSearch,
175
+ formParamKeys,
176
+ getFormSearch,
177
+ onLoadingChange: props.onLoadingChange,
178
+ onRequestError: props.onRequestError,
179
+ onBeforeSearchSubmit: props.onBeforeSearchSubmit
180
+ }, {
181
+ pageInfo: requestPagination,
182
+ paginationInfo,
183
+ setPagination,
184
+ setLoading,
185
+ setColumns,
186
+ removeRowKeys: removeSelectedKeys,
187
+ syncSelectedRows,
188
+ columns: cacheColumns
189
+ });
190
+ useKeepAliveReload({
191
+ enabled: computed(() => props.keepAliveReload ?? false),
192
+ reload
193
+ });
194
+ const cardEl = ref();
195
+ const { scrollY: fitPageScrollY, overflowHidden, fullPageClass, scrollEl, barRef } = useFitPage({
196
+ fitPage: computed(() => !policyTableScroll.value?.y && !!props.fitPage),
197
+ cardEl,
198
+ prefixCls
199
+ });
200
+ const tableScroll = computed(() => ({
201
+ ...policyTableScroll.value ?? {},
202
+ ...fitPageScrollY.value > 0 ? { y: fitPageScrollY.value } : {}
203
+ }));
204
+ const { getRowProps } = useRowDrag({
205
+ tbodyEl: dragTbodyRef,
206
+ scrollEl,
207
+ dataSource,
208
+ rowKey: computed(() => props.rowKey),
209
+ rowDraggable: rowDraggableRef,
210
+ onSortEnd: (from, to, newData, record) => {
211
+ emit("rowSortEnd", {
212
+ from,
213
+ to,
214
+ data: newData,
215
+ record
108
216
  });
217
+ }
218
+ });
219
+ const mergedOnRow = computed(() => {
220
+ if (!rowDragEnabled.value) return props.onRow;
221
+ const userOnRow = props.onRow;
222
+ return (record, index) => ({
223
+ ...userOnRow?.(record, index) ?? {},
224
+ ...getRowProps(record, index)
109
225
  });
110
- /**
111
- * @Author gx12358
112
- * @DateTime 2022/1/21
113
- * @lastTime 2022/1/21
114
- * @description Table-loading hooks 方法
115
- */
116
- const [loading, setLoading] = useLoading({
117
- loading: toRef(props, "loading"),
118
- onChange: (value) => {
119
- props.onLoadingChange && props.onLoadingChange(value);
120
- }
121
- });
122
- /**
123
- * @Author gx12358
124
- * @DateTime 2022/1/21
125
- * @lastTime 2022/1/21
126
- * @description Table-size hooks 方法
127
- */
128
- const [tableSize, setTableSize] = useTableSize({
129
- size: toRef(props, "size"),
130
- onChange: (value) => {
131
- props.onSizeChange && props.onSizeChange(value);
226
+ });
227
+ const mergedComponents = computed(() => {
228
+ const base = props.draggable ? resizableComponents.value : {};
229
+ if (!rowDragEnabled.value) return passThroughProps.value.components ?? base;
230
+ return {
231
+ ...base,
232
+ body: {
233
+ ...base?.body ?? {},
234
+ wrapper: DragTbody
132
235
  }
236
+ };
237
+ });
238
+ useProvideTableContext({
239
+ reload,
240
+ setPagination,
241
+ tableSize,
242
+ setTableSize,
243
+ formAutoRequest,
244
+ formConfig,
245
+ formActions,
246
+ isMobile,
247
+ screenWidth,
248
+ toggleFullscreen,
249
+ isFullscreen
250
+ });
251
+ const isCustomRenderMode = computed(() => !!(props.customRender || slots.customRender));
252
+ const shouldRenderForm = computed(() => {
253
+ if (props.form === false) return false;
254
+ return formColumns.value.length > 0 || !!slots.form;
255
+ });
256
+ function handleTableSubmit(params, action) {
257
+ if (formAutoRequest.value) {
258
+ reload({ params });
259
+ return;
260
+ }
261
+ if (action === "reset") {
262
+ emit("reset", params);
263
+ if (props.request && formActions.value?.resetReload !== false) reload({ params });
264
+ } else if (props.request) {
265
+ emit("submit", params);
266
+ reload({ params });
267
+ }
268
+ }
269
+ function sliceCurrentPageData(fullData) {
270
+ const pagination = paginationInfo.value;
271
+ if (!pagination) return fullData;
272
+ const { current = 1, pageSize = 10 } = pagination;
273
+ return fullData.filter((_, index) => index >= (current - 1) * pageSize && index < current * pageSize);
274
+ }
275
+ function renderCustomContent() {
276
+ const customRenderFn = props.customRender || slots.customRender;
277
+ if (!customRenderFn) return null;
278
+ const tableData = dataSource.value;
279
+ if (!tableData?.length) return renderEmptyText();
280
+ if (typeof customRenderFn === "function") return customRenderFn({
281
+ dataSource: tableData,
282
+ currentData: sliceCurrentPageData(tableData)
133
283
  });
134
- /**
135
- * @Author gx12358
136
- * @DateTime 2022/1/21
137
- * @lastTime 2022/1/21
138
- * @description Table-page hooks 方法
139
- */
140
- const { paginationInfo, requestPagination, setPagination } = usePagination({
141
- pagination: toRef(props, "pagination"),
142
- pageItemRender: getSlot({
143
- slots,
144
- props,
145
- key: "pageItemRender"
146
- })
147
- });
148
- /**
149
- * @Author gx12358
150
- * @DateTime 2022/1/21
151
- * @lastTime 2022/1/21
152
- * @description Table-scroll hooks 方法
153
- */
154
- const { proScroll, breakpoint } = useTableScroll({
155
- scroll: toRef(props, "scroll"),
156
- autoScroll: toRef(props, "autoScroll"),
157
- modalScroll: toRef(props, "modalScroll"),
158
- neverScroll: toRef(props, "neverScroll"),
159
- rowSelection: toRef(props, "rowSelection"),
160
- scrollBreakpoint: toRef(props, "scrollBreakpoint"),
161
- innerWidth: screenWidth,
162
- columns: cacheColumns,
163
- screens
164
- });
165
- /**
166
- * @Author gx12358
167
- * @DateTime 2022/1/21
168
- * @lastTime 2022/1/21
169
- * @description Table-columns hooks 方法
170
- */
171
- const { proColumns, setColumns, resizeColumnWidth } = useColumns({
172
- draggable: toRef(props, "draggable"),
173
- neverScroll: toRef(props, "neverScroll"),
174
- autoScroll: toRef(props, "autoScroll"),
175
- breakpoint,
176
- scroll: proScroll,
177
- columns: cacheColumns
284
+ return null;
285
+ }
286
+ function renderEmptyText() {
287
+ const emptyTextSlot = getSlotVNode({
288
+ slots,
289
+ props,
290
+ key: "emptyText"
178
291
  });
179
- /**
180
- * @Author gx12358
181
- * @DateTime 2022/1/21
182
- * @lastTime 2022/1/21
183
- * @description Table-setting columns hooks 方法
184
- */
185
- /**
186
- * @Author gx12358
187
- * @DateTime 2022/1/21
188
- * @lastTime 2022/1/21
189
- * @description Table-Form(搜索) hooks 方法
190
- */
191
- const { formCols, defaultFormSearch } = useTableForm({
192
- searchMap: toRef(props, "searchMap"),
193
- columns: cacheColumns
292
+ if (emptyTextSlot && configContext?.renderEmpty?.value) return emptyTextSlot || configContext?.renderEmpty?.value?.();
293
+ return null;
294
+ }
295
+ function onCustomPaginationChange(currentPage, currentPageSize) {
296
+ onTableChange({
297
+ current: currentPage,
298
+ pageSize: currentPageSize
299
+ }, {}, {}, {});
300
+ }
301
+ const loadingState = computed(() => {
302
+ if (props.showLoading === false) return false;
303
+ return internalLoading.value;
304
+ });
305
+ const passThroughProps = computed(() => {
306
+ const result = {};
307
+ for (const key of TABLE_PASSTHROUGH_KEYS) {
308
+ if (key === "classes") {
309
+ const userClasses = props.classes;
310
+ const tableClass = props.proClasses?.table;
311
+ if (userClasses || tableClass) result.classes = {
312
+ ...userClasses ?? {},
313
+ ...tableClass ? { root: classNames(userClasses?.root, tableClass) } : {}
314
+ };
315
+ continue;
316
+ }
317
+ if (key === "expandable") {
318
+ const userExpandable = props.expandable;
319
+ const controlledExpandedRowKeys = props.expandedRowKeys;
320
+ if (userExpandable !== void 0 || controlledExpandedRowKeys !== void 0) result.expandable = {
321
+ ...userExpandable ?? {},
322
+ ...controlledExpandedRowKeys !== void 0 ? { expandedRowKeys: controlledExpandedRowKeys } : {}
323
+ };
324
+ continue;
325
+ }
326
+ const val = props[key];
327
+ if (val !== void 0) result[key] = val;
328
+ }
329
+ return result;
330
+ });
331
+ function onTableChange(paginationConfig, filters, sorter, extra) {
332
+ handleTableChange(paginationConfig, filters, sorter, extra);
333
+ props.onChange?.(paginationConfig, filters, sorter, extra);
334
+ }
335
+ function onTableExpandedRowKeysChange(keys) {
336
+ emit("update:expandedRowKeys", keys);
337
+ }
338
+ function onTableScroll(e) {
339
+ emit("scroll", e);
340
+ }
341
+ const passthroughSlotKeys = [
342
+ "title",
343
+ "footer",
344
+ "summary",
345
+ "expandIcon",
346
+ "expandedRowRender",
347
+ "filterDropdown",
348
+ "filterIcon"
349
+ ];
350
+ const tableSlots = computed(() => {
351
+ const result = {};
352
+ for (const key of passthroughSlotKeys) if (slots[key]) result[key] = slots[key];
353
+ if (slots.bodyCell) result.bodyCell = (ctx) => slots.bodyCell(ctx);
354
+ if (slots.headerCell) result.headerCell = (ctx) => slots.headerCell(ctx);
355
+ const emptyTextRender = getSlotVNode({
356
+ slots,
357
+ props,
358
+ key: "emptyText"
194
359
  });
195
- const { selectedKeys, selectedItems, changeRowKey, selectRowKey, selectAllRowKey, syncSelectedRows, removeRowKeys, clearAllRowKeys } = useRowSelection(toRef(props, "rowKey"), toRef(props, "rowSelection"));
196
- const { run, setTableDataList, operateTableDataRow, isTreeDataRef, dataSource, handleTableChange } = useFetchData({
197
- ...useConfigFetchData(props),
198
- waitRequest
199
- }, {
200
- loading,
201
- paginationInfo,
360
+ if (emptyTextRender || configContext?.renderEmpty?.value) result.emptyText = () => emptyTextRender || configContext?.renderEmpty?.value?.();
361
+ return result;
362
+ });
363
+ expose({
364
+ actionRef: () => ({
365
+ loading: internalLoading,
366
+ dataSource,
202
367
  pageInfo: requestPagination,
368
+ reload,
369
+ reloadAndReset: (options) => {
370
+ setPagination({ current: 1 });
371
+ resetFormState();
372
+ run();
373
+ options?.callBack?.();
374
+ },
203
375
  setPagination,
204
- removeRowKeys,
205
- syncSelectedRows,
376
+ setPageInfo: (pagination, filters, sorter, extra) => {
377
+ setPagination(pagination);
378
+ handleTableChange(pagination, filters ?? {}, sorter ?? {}, extra ?? {});
379
+ },
380
+ setTableDataList,
381
+ operateTableDataRow,
206
382
  setLoading,
207
- setColumns,
208
- columns: proColumns,
209
- defaultFormSearch,
210
- params: toRef(props, "params"),
211
- onRequestError: props.onRequestError,
212
- onBeforeSearchSubmit: props.onBeforeSearchSubmit,
213
- hasCustomRender: computed(() => convertValueBoolean(props.customRender || slots?.customRender))
214
- }, emit);
215
- const { tableCardEl, tableScrollYHeight, tableListToolsHeight, tableScrollEl, tableOverHidden, barRef } = useScrollArea({
216
- hashId,
217
- scroll: proScroll,
218
- baseClassName,
219
- fitPage: toRef(props, "fitPage")
220
- });
221
- const tableScrollState = computed(() => {
222
- const fitScrollY = tableScrollYHeight.value && props.fitPage ? { y: tableScrollYHeight.value } : {};
223
- return {
224
- ...unref(proScroll),
225
- ...fitScrollY
226
- };
227
- });
228
- const tablePropsValues = computed(() => {
229
- return {
230
- ...omit(props, Object.keys(tableProps).concat([
231
- "style",
232
- "class",
233
- "loading",
234
- "rowKey",
235
- "transformCellText",
236
- "rowSelection",
237
- "onChange",
238
- "onExpandedRowsChange",
239
- "onExpand",
240
- "onResizeColumn"
241
- ])),
242
- size: unref(tableSize),
243
- scroll: unref(tableScrollState),
244
- dataSource: unref(dataSource),
245
- pagination: unref(paginationInfo),
246
- columns: unref(proColumns).filter((column) => column.show || column.show === void 0)
247
- };
248
- });
249
- const loadingState = computed(() => {
250
- const spinningProps = isObject(props.loading) ? omit(props.loading, ["spinning"]) : {};
251
- if (!spinningProps.indicator && appContext?.indicator?.value) spinningProps.indicator = appContext?.indicator?.value;
252
- return {
253
- spinning: props.showLoading ? convertValueBoolean(loading.value) : false,
254
- ...spinningProps
255
- };
256
- });
257
- const paginationPosition = computed(() => {
258
- let positionClass;
259
- const defaultPosition = props.direction === "rtl" ? "bottomLeft" : "right";
260
- const tablePosition = unref(paginationInfo)?.position;
261
- if (tablePosition !== null && Array.isArray(tablePosition)) {
262
- const topPos = tablePosition.find((p) => p.includes("top"));
263
- const bottomPos = tablePosition.find((p) => p.includes("bottom"));
264
- const isDisable = tablePosition.every((p) => `${p}` === "none");
265
- if (!topPos && !bottomPos && !isDisable) positionClass = defaultPosition;
266
- if (topPos) positionClass = topPos.toLowerCase().replace("top", "");
267
- if (bottomPos) positionClass = bottomPos.toLowerCase().replace("bottom", "");
268
- } else positionClass = defaultPosition;
269
- return positionClass;
270
- });
271
- function getFormSearch() {
272
- return {
273
- ...unref(defaultFormSearch),
274
- ...tableFormRef.value?.getFormSearch(),
275
- ...props.params
276
- };
277
- }
278
- tryOnActivated(() => {
279
- if (activated.value) {
280
- if (props.keepAliveReload) run({ params: getFormSearch() });
281
- } else activated.value = true;
282
- });
283
- const handleTableSubmit = async (value, action) => {
284
- if (formAutoRequest.value) {
285
- run({ params: value });
286
- return;
383
+ selectedKeys: selectedRowKeys,
384
+ selectedItems,
385
+ rowsSelection: {
386
+ clear: clearSelectedKeys,
387
+ select: selectRow,
388
+ selectAll: selectAllRows,
389
+ remove: removeSelectedKeys,
390
+ sync: syncSelectedRows
287
391
  }
288
- if (action === "reset") {
289
- emit("reset", value);
290
- if (props.request && formActions.value?.resetReload) run({ params: value });
291
- } else if (props.request) {
292
- emit("submit", value);
293
- run({ params: value });
392
+ }),
393
+ formRef: () => ({
394
+ getFormSearch,
395
+ getFormInnerState: () => formState.value,
396
+ restFormState: (callback) => {
397
+ resetFormState();
398
+ callback?.();
294
399
  }
295
- };
296
- /**
297
- * @Author gx12358
298
- * @DateTime 2021/7/14
299
- * @lastTime 2021/7/14
300
- * @description ant-table原始方法
301
- */
302
- const changePage = (pagination, filters, sorter, extra) => {
303
- handleTableChange(pagination, filters, sorter, extra);
304
- props.onChange?.(pagination, filters, sorter, extra);
305
- };
306
- const expandedRowsChange = (expandedRows) => props.onExpandedRowsChange?.(expandedRows);
307
- const expand = (expanded, record) => props.onExpand?.(expanded, record);
308
- const handleResizeColumn = (w, col) => {
309
- resizeColumnWidth(w, col);
310
- props.onResizeColumn?.(w, col);
311
- };
312
- function renderEmptyText() {
313
- const emptyTextRender = getSlotVNode({
314
- slots,
315
- props,
316
- key: "emptyText"
317
- });
318
- if (emptyTextRender !== false && appContext?.emptyText?.value !== false) {
319
- const extraProps = props.emptyTextProps?.extraProps || {};
320
- const emptyRender = emptyTextRender || appContext?.emptyText?.value;
321
- const isNode = isVNode(emptyRender);
322
- const customEmpty = isNode ? h(emptyRender, extraProps) : filterEmpty(isArray(emptyRender) ? emptyRender : [emptyRender]);
323
- return createVNode("div", {
324
- "class": classNames(`${baseClassName}-empty-text`, hashId.value, props.emptyTextProps?.class),
325
- "style": props.emptyTextProps?.style
326
- }, [isNode ? customEmpty : isArray(customEmpty) && customEmpty.length ? customEmpty.map((item) => cloneVNode(item, extraProps)) : createVNode(Empty, { "image": simpleImage }, null)]);
400
+ })
401
+ });
402
+ return () => {
403
+ const actionsRender = slots.actions?.() || props.actionProps?.actions;
404
+ return createVNode("div", {
405
+ "ref": rootEl,
406
+ "class": rootClassNames.value,
407
+ "style": mergedStyle.value
408
+ }, [createVNode("div", {
409
+ "class": classNames(props.proClasses?.content, `${prefixCls.value}-content`),
410
+ "style": props.proStyles?.content
411
+ }, [shouldRenderForm.value && createVNode(ProTableSearchForm, {
412
+ "prefixCls": prefixCls.value,
413
+ "formColumns": formColumns.value,
414
+ "formState": formState.value,
415
+ "defaultFormSearch": defaultFormSearch.value,
416
+ "formConfig": formConfig.value,
417
+ "formAutoRequest": formAutoRequest.value,
418
+ "formActions": formActions.value,
419
+ "loading": loadingState.value,
420
+ "cardBordered": props.cardBordered,
421
+ "proClasses": props.proClasses ?? {},
422
+ "proStyles": props.proStyles ?? {},
423
+ "onSearch": handleTableSubmit,
424
+ "onReset": (params) => emit("reset", params)
425
+ }, { default: () => [slots.form?.()] }), createVNode("div", {
426
+ "ref": cardEl,
427
+ "class": classNames(props.proClasses?.card, `${prefixCls.value}-card`, props.cardBordered && `${prefixCls.value}-card-border`),
428
+ "style": props.proStyles?.card
429
+ }, [createVNode(Toolbar, {
430
+ "prefixCls": prefixCls.value,
431
+ "options": props.options,
432
+ "titleTipText": props.titleTipText,
433
+ "actionsPlacement": props.actionProps?.placement,
434
+ "actions": actionsRender,
435
+ "headerTitle": slots.headerTitle?.() ?? props.headerTitle,
436
+ "headerTitleTip": slots.headerTitleTip?.() ?? props.headerTitleTip,
437
+ "listToolAfter": slots.listToolAfter?.() ?? props.listToolAfter,
438
+ "proClasses": props.proClasses ?? {},
439
+ "proStyles": props.proStyles ?? {}
440
+ }, null), createVNode("div", { "class": `${prefixCls.value}-loading-container` }, [isCustomRenderMode.value ? createVNode("div", { "class": classNames(`${prefixCls.value}-list`, props.proClasses?.list) }, [createVNode("div", {
441
+ "class": classNames(`${prefixCls.value}-list-content`, props.proClasses?.listContent),
442
+ "style": props.proStyles?.listContent
443
+ }, [renderCustomContent()]), paginationInfo.value !== false && dataSource.value?.length > 0 && createVNode(Pagination, mergeProps(paginationInfo.value, {
444
+ "align": paginationAlign.value,
445
+ "class": classNames(`${prefixCls.value}-pagination`, props.proClasses?.pagination),
446
+ "style": props.proStyles?.pagination,
447
+ "onChange": onCustomPaginationChange
448
+ }), null)]) : createVNode(Fragment, null, [createVNode(Table, mergeProps(passThroughProps.value, {
449
+ "scroll": tableScroll.value,
450
+ "dataSource": dataSource.value,
451
+ "columns": props.draggable ? resizableColumns.value : tableColumns.value,
452
+ "components": mergedComponents.value,
453
+ "onRow": mergedOnRow.value,
454
+ "rowKey": props.rowKey,
455
+ "size": tableSize.value,
456
+ "pagination": paginationInfo.value,
457
+ "loading": false,
458
+ "rowSelection": mergedRowSelection.value,
459
+ "onChange": onTableChange,
460
+ "onUpdate:expandedRowKeys": onTableExpandedRowKeysChange,
461
+ "onScroll": onTableScroll,
462
+ "classes": {
463
+ ...passThroughProps.value.classes,
464
+ ...overflowHidden.value ? { root: `${prefixCls.value}-overflow-hidden` } : {}
327
465
  }
328
- return null;
466
+ }), tableSlots.value), scrollEl.value && createVNode(Teleport, { "to": scrollEl.value }, { default: () => [createVNode(Bar_default, {
467
+ "ref": barRef,
468
+ "hasScrollY": !!tableScroll.value.y
469
+ }, null)] })]), loadingState.value && createVNode("div", { "class": classNames(`${prefixCls.value}-loading-mask`, hashId.value) }, [createVNode(Spin, { "indicator": resolvedIndicator.value }, null)])])])])]);
470
+ };
471
+ }, {
472
+ props: /*@__PURE__*/ mergeDefaults({
473
+ loading: {
474
+ type: [Boolean, Object],
475
+ required: false,
476
+ default: void 0
477
+ },
478
+ rowKey: { required: false },
479
+ columns: {
480
+ type: Array,
481
+ required: false
482
+ },
483
+ indexColumn: {
484
+ type: [Boolean, Object],
485
+ required: false,
486
+ default: void 0
487
+ },
488
+ scrollPolicy: {
489
+ type: [Boolean, Object],
490
+ required: false,
491
+ default: void 0
492
+ },
493
+ fitPage: {
494
+ type: Boolean,
495
+ required: false,
496
+ default: void 0
497
+ },
498
+ dataSource: {
499
+ type: Array,
500
+ required: false
501
+ },
502
+ proClasses: {
503
+ type: Object,
504
+ required: false
505
+ },
506
+ proStyles: {
507
+ type: Object,
508
+ required: false
509
+ },
510
+ cardBordered: {
511
+ type: Boolean,
512
+ required: false,
513
+ default: void 0
514
+ },
515
+ align: {
516
+ type: String,
517
+ required: false
518
+ },
519
+ waitRequest: {
520
+ type: Boolean,
521
+ required: false,
522
+ default: void 0
523
+ },
524
+ polling: {
525
+ type: Boolean,
526
+ required: false,
527
+ default: void 0
528
+ },
529
+ pollingTime: {
530
+ type: Number,
531
+ required: false
532
+ },
533
+ request: {
534
+ type: Function,
535
+ required: false
536
+ },
537
+ immediate: {
538
+ type: Boolean,
539
+ required: false,
540
+ default: void 0
541
+ },
542
+ autoRequest: {
543
+ type: Boolean,
544
+ required: false,
545
+ default: void 0
546
+ },
547
+ debounceTime: {
548
+ type: Number,
549
+ required: false
550
+ },
551
+ showLoading: {
552
+ type: Boolean,
553
+ required: false,
554
+ default: void 0
555
+ },
556
+ params: { required: false },
557
+ postData: {
558
+ type: Function,
559
+ required: false
560
+ },
561
+ form: {
562
+ type: [Object, Boolean],
563
+ required: false,
564
+ default: void 0
565
+ },
566
+ searchMap: {
567
+ type: Array,
568
+ required: false
569
+ },
570
+ pagination: {
571
+ type: [Object, Boolean],
572
+ required: false,
573
+ default: void 0
574
+ },
575
+ onChange: {
576
+ type: Function,
577
+ required: false
578
+ },
579
+ onReset: {
580
+ type: Function,
581
+ required: false
582
+ },
583
+ onReload: {
584
+ type: Function,
585
+ required: false
586
+ },
587
+ onSubmit: {
588
+ type: Function,
589
+ required: false
590
+ },
591
+ onLoadingChange: {
592
+ type: Function,
593
+ required: false
594
+ },
595
+ onRequestError: {
596
+ type: Function,
597
+ required: false
598
+ },
599
+ onSizeChange: {
600
+ type: Function,
601
+ required: false
602
+ },
603
+ onBeforeSearchSubmit: {
604
+ type: Function,
605
+ required: false
606
+ },
607
+ onResizeColumn: {
608
+ type: Function,
609
+ required: false
610
+ },
611
+ draggable: {
612
+ type: Boolean,
613
+ required: false,
614
+ default: void 0
615
+ },
616
+ rowDraggable: {
617
+ type: [Boolean, Object],
618
+ required: false,
619
+ default: void 0
620
+ },
621
+ onRowSortEnd: {
622
+ type: Function,
623
+ required: false
624
+ },
625
+ keepAliveReload: {
626
+ type: Boolean,
627
+ required: false,
628
+ default: void 0
629
+ },
630
+ columnEmptyText: {
631
+ type: [String, Function],
632
+ required: false
633
+ },
634
+ options: {
635
+ type: [Object, Boolean],
636
+ required: false,
637
+ default: void 0
638
+ },
639
+ titleTipText: {
640
+ type: String,
641
+ required: false
642
+ },
643
+ actionProps: {
644
+ type: Object,
645
+ required: false
646
+ },
647
+ onFullscreenChange: {
648
+ type: Function,
649
+ required: false
650
+ },
651
+ emptyText: {
652
+ type: [
653
+ Function,
654
+ String,
655
+ Number,
656
+ null,
657
+ Object,
658
+ Boolean
659
+ ],
660
+ required: false,
661
+ default: void 0
662
+ },
663
+ headerTitle: {
664
+ type: [
665
+ Function,
666
+ String,
667
+ Number,
668
+ null,
669
+ Object,
670
+ Boolean
671
+ ],
672
+ required: false,
673
+ default: void 0
674
+ },
675
+ headerTitleTip: {
676
+ type: [
677
+ Function,
678
+ String,
679
+ Number,
680
+ null,
681
+ Object,
682
+ Boolean
683
+ ],
684
+ required: false,
685
+ default: void 0
686
+ },
687
+ listToolAfter: {
688
+ type: [
689
+ Function,
690
+ String,
691
+ Number,
692
+ null,
693
+ Object,
694
+ Boolean
695
+ ],
696
+ required: false,
697
+ default: void 0
698
+ },
699
+ customRender: {
700
+ type: Boolean,
701
+ required: false,
702
+ skipCheck: true,
703
+ default: void 0
704
+ },
705
+ pageItemRender: {
706
+ type: Boolean,
707
+ required: false,
708
+ skipCheck: true,
709
+ default: void 0
710
+ },
711
+ classes: {
712
+ type: [Object, Function],
713
+ required: false
714
+ },
715
+ styles: {
716
+ type: [Object, Function],
717
+ required: false
718
+ },
719
+ dropdownPrefixCls: {
720
+ type: String,
721
+ required: false
722
+ },
723
+ column: {
724
+ type: Object,
725
+ required: false
726
+ },
727
+ size: {
728
+ type: [String, null],
729
+ required: false
730
+ },
731
+ bordered: {
732
+ type: Boolean,
733
+ required: false,
734
+ default: void 0
735
+ },
736
+ locale: {
737
+ type: Object,
738
+ required: false
739
+ },
740
+ rowSelection: {
741
+ type: Object,
742
+ required: false
743
+ },
744
+ getPopupContainer: {
745
+ type: Function,
746
+ required: false
747
+ },
748
+ scroll: {
749
+ type: Object,
750
+ required: false
751
+ },
752
+ sortDirections: {
753
+ type: Array,
754
+ required: false
755
+ },
756
+ showSorterTooltip: {
757
+ type: [Boolean, Object],
758
+ required: false,
759
+ default: void 0
760
+ },
761
+ virtual: {
762
+ type: Boolean,
763
+ required: false,
764
+ default: void 0
765
+ },
766
+ rootClass: {
767
+ type: String,
768
+ required: false
769
+ },
770
+ prefixCls: {
771
+ type: String,
772
+ required: false
773
+ },
774
+ tableLayout: {
775
+ type: String,
776
+ required: false
777
+ },
778
+ expandable: {
779
+ type: Object,
780
+ required: false
781
+ },
782
+ indentSize: {
783
+ type: Number,
784
+ required: false
785
+ },
786
+ rowClassName: {
787
+ type: [String, Function],
788
+ required: false
789
+ },
790
+ title: {
791
+ type: Function,
792
+ required: false
793
+ },
794
+ footer: {
795
+ type: Function,
796
+ required: false
797
+ },
798
+ summary: {
799
+ type: Function,
800
+ required: false
801
+ },
802
+ headerCell: {
803
+ type: Function,
804
+ required: false
805
+ },
806
+ bodyCell: {
807
+ type: Function,
808
+ required: false
809
+ },
810
+ caption: { required: false },
811
+ id: {
812
+ type: String,
813
+ required: false
814
+ },
815
+ showHeader: {
816
+ type: Boolean,
817
+ required: false,
818
+ default: void 0
819
+ },
820
+ components: {
821
+ type: Object,
822
+ required: false
823
+ },
824
+ onRow: {
825
+ type: Function,
826
+ required: false
827
+ },
828
+ onHeaderRow: {
829
+ type: Function,
830
+ required: false
831
+ },
832
+ direction: {
833
+ type: String,
834
+ required: false
835
+ },
836
+ sticky: {
837
+ type: [Boolean, Object],
838
+ required: false,
839
+ default: void 0
840
+ },
841
+ rowHoverable: {
842
+ type: Boolean,
843
+ required: false,
844
+ default: void 0
845
+ },
846
+ tailor: {
847
+ type: Boolean,
848
+ required: false,
849
+ default: void 0
850
+ },
851
+ getContainerWidth: {
852
+ type: Function,
853
+ required: false
854
+ },
855
+ measureRowRender: {
856
+ type: Function,
857
+ required: false
858
+ },
859
+ expandedRowKeys: {
860
+ type: Array,
861
+ required: false
862
+ },
863
+ defaultExpandedRowKeys: {
864
+ type: Array,
865
+ required: false
866
+ },
867
+ expandedRowRender: {
868
+ type: Function,
869
+ required: false
870
+ },
871
+ expandRowByClick: {
872
+ type: Boolean,
873
+ required: false,
874
+ default: void 0
875
+ },
876
+ expandIcon: {
877
+ type: Function,
878
+ required: false
879
+ },
880
+ onExpand: {
881
+ type: Function,
882
+ required: false
883
+ },
884
+ onExpandedRowsChange: {
885
+ type: Function,
886
+ required: false
887
+ },
888
+ defaultExpandAllRows: {
889
+ type: Boolean,
890
+ required: false,
891
+ default: void 0
892
+ },
893
+ expandIconColumnIndex: {
894
+ type: Number,
895
+ required: false
896
+ },
897
+ expandedRowClassName: {
898
+ type: Function,
899
+ required: false
900
+ },
901
+ childrenColumnName: {
902
+ type: String,
903
+ required: false
329
904
  }
330
- const renderCustomize = () => {
331
- const customRender = getSlot({
332
- slots,
333
- props,
334
- key: "customRender"
335
- });
336
- if (customRender) {
337
- if (dataSource.value?.length) {
338
- const tableData = cloneDeep(unref(dataSource));
339
- return customRender?.({
340
- dataSource: tableData,
341
- currentData: getCurrentData(tableData, paginationInfo.value)
342
- });
343
- }
344
- return renderEmptyText();
345
- }
346
- return createVNode(Fragment, null, null);
347
- };
348
- provideTableContext({
349
- hashId,
350
- prefixCls: baseClassName,
351
- tableScrollState,
352
- tableSize,
353
- columns: proColumns,
354
- cacheColumns,
355
- isMobile,
356
- formConfig,
357
- formAutoRequest,
358
- formActions,
359
- screenWidth,
360
- tableListToolsHeight,
361
- styles: toRef(props, "styles"),
362
- classNames: toRef(props, "classNames"),
363
- action: {
364
- setTableSize,
365
- reload: (info) => run(info),
366
- toggle
367
- },
368
- setPagination
369
- });
370
- expose({
371
- formRef: () => ({
372
- getFormSearch,
373
- getFormInnerState: () => tableFormRef.value?.getFormSearch() || {},
374
- restFormState: (callBack) => {
375
- waitRequest.value = true;
376
- callBack && callBack?.();
377
- tableFormRef.value?.resetForm(false);
378
- waitRequest.value = false;
379
- }
380
- }),
381
- actionRef: () => ({
382
- loading,
383
- dataSource,
384
- pageInfo: requestPagination,
385
- pagination: paginationInfo.value,
386
- selectedKeys: computed(() => selectedKeys.value),
387
- selectedItems: computed(() => selectedItems.value),
388
- rowsSelection: {
389
- clear: clearAllRowKeys,
390
- select: selectRowKey,
391
- remove: removeRowKeys,
392
- sync: syncSelectedRows,
393
- selectAll: selectAllRowKey
394
- },
395
- reload: run,
396
- getLoadingStatus: () => unref(loading),
397
- reloadAndReset: async (options) => {
398
- waitRequest.value = true;
399
- setPagination({
400
- current: 1,
401
- pageSize: requestPagination?.pageSize || 10
402
- });
403
- if (options && options?.callBack) if (options.wait) await options.callBack();
404
- else options.callBack();
405
- tableFormRef.value?.resetForm(true);
406
- waitRequest.value = false;
407
- },
408
- setPageInfo: changePage,
409
- setTableDataList,
410
- setPagination,
411
- operateTableDataRow,
412
- setLoading
413
- })
414
- });
415
- return () => {
416
- const hasCustom = convertValueBoolean(props.customRender || slots.customRender);
417
- const actionsRender = slots.actions?.() || props.actionProps?.actions;
418
- const slotsPropsVNode = getSlotsProps({
419
- slots,
420
- props,
421
- keys: [
422
- "headerTitle",
423
- "headerTitleTip",
424
- "listToolAfter"
425
- ],
426
- render: true
427
- });
428
- return wrapSSR(createVNode("div", {
429
- "ref": tableRef,
430
- "class": classNames(baseClassName, hashId.value, props.class, props.classNames?.root, [{
431
- [`${baseClassName}-no-scroll`]: !Object.keys(unref(proScroll) || {}).length,
432
- [`${baseClassName}-table-tree`]: isTreeDataRef.value,
433
- [`${baseClassName}-full-page`]: props.fitPage,
434
- [`${baseClassName}-full-screen`]: isFullscreen.value
435
- }]),
436
- "style": {
437
- ...props.style,
438
- ...props.styles?.root || {}
439
- }
440
- }, [createVNode("div", {
441
- "class": classNames(`${baseClassName}-content`, hashId.value, props.classNames?.content),
442
- "style": props.styles?.content
443
- }, [(formCols.value.length > 0 || !!slots.form) && props.form !== false && createVNode(Form_default, {
444
- "ref": tableFormRef,
445
- "modalScroll": props.modalScroll,
446
- "cardBordered": props.cardBordered,
447
- "formCols": formCols.value,
448
- "prefixCls": baseClassName,
449
- "loading": unref(loading),
450
- "onSearch": handleTableSubmit,
451
- "defaultFormSearch": defaultFormSearch.value
452
- }, { default: slots.form ? () => slots.form?.() : null }), createVNode("div", {
453
- "ref": tableCardEl,
454
- "class": classNames(props.classNames?.card, hashId.value, `${baseClassName}-card`, props.cardBordered && `${baseClassName}-card-border`),
455
- "style": props.styles?.card
456
- }, [createVNode(ToolBar_default, {
457
- "options": props.options ? isObject(props.options) ? props.options : {} : false,
458
- "titleTipText": props.titleTipText,
459
- "actionsPlacement": props.actionProps?.placement,
460
- "actionsRender": actionsRender,
461
- "headerTitle": slotsPropsVNode.headerTitle,
462
- "listToolAfter": slotsPropsVNode.listToolAfter,
463
- "headerTitleTip": slotsPropsVNode.headerTitleTip
464
- }, null), hasCustom ? createVNode(Spin, loadingState.value, { default: () => [createVNode("div", {
465
- "class": classNames(`${baseClassName}-list ${hashId.value}`, props.classNames?.list),
466
- "style": props.styles?.list
467
- }, [createVNode("div", {
468
- "class": classNames(`${baseClassName}-list-content`, hashId.value, props.classNames?.listContent),
469
- "style": {
470
- ...props.styles?.listContent || {},
471
- height: tableScrollYHeight.value ? unit(tableScrollYHeight.value) : props.styles?.listContent?.height
472
- }
473
- }, [renderCustomize()]), props.pagination !== false && dataSource.value?.length > 0 && createVNode(Pagination, mergeProps(toRaw(unref(paginationInfo)), {
474
- "class": classNames(hashId.value, `${baseClassName}-pagination`, `${baseClassName}-pagination-${paginationPosition.value}`, props.classNames?.pagination),
475
- "style": props.styles?.pagination,
476
- "onChange": (current, pageSize) => changePage({
477
- current,
478
- pageSize
479
- })
480
- }), null)])] }) : createVNode(Fragment, null, [createVNode(Table, mergeProps(pick(props, Object.keys(tableProps)), unref(tablePropsValues), {
481
- "style": props.styles?.table,
482
- "class": classNames(props.classNames?.table, hashId.value, tableOverHidden.value && `${baseClassName}-overflow-hidden`),
483
- "loading": loadingState.value,
484
- "rowKey": (record) => record[props.rowKey],
485
- "transformCellText": (options) => {
486
- if (props.transformCellText && typeof props.transformCellText === "function") props.transformCellText?.(options);
487
- const { column, record } = options;
488
- if (!column) return options.text;
489
- const key = column?.key || column?.dataIndex;
490
- let text = options.text;
491
- if (isArray(text)) {
492
- if (text.length === 0 || text.length === 1 && !isVNode(text[0])) text = text?.[0];
493
- else if (text[0]?.type === "template") text = text[0]?.children;
494
- }
495
- text = valueFormat(text, column?.valueType || props.columns?.find((item) => (item.key || item.dataIndex) === key)?.valueType, baseClassName, hashId.value);
496
- const columnEmptyText = column?.columnEmptyText || props?.columnEmptyText;
497
- const { value, success } = handleEmptyField(text, columnEmptyText ? typeof columnEmptyText === "function" ? columnEmptyText(record) : columnEmptyText : "");
498
- if (success && column?.ellipsis && text) return createVNode(TableCell_default, {
499
- "text": value,
500
- "column": column,
501
- "className": baseClassName,
502
- "hashId": hashId.value
503
- }, null);
504
- return value;
505
- },
506
- "rowSelection": props.rowSelection ? {
507
- ...omit(props.rowSelection, [
508
- "onSelect",
509
- "onSelectAll",
510
- "onChange",
511
- "selectedRowKeys"
512
- ]),
513
- selectedRowKeys: selectedKeys.value || [],
514
- onSelect: selectRowKey,
515
- onSelectAll: selectAllRowKey,
516
- onChange: changeRowKey
517
- } : void 0,
518
- "rowClassName": () => "aaa",
519
- "onChange": changePage,
520
- "onExpandedRowsChange": expandedRowsChange,
521
- "onExpand": expand,
522
- "onResizeColumn": (w, col) => handleResizeColumn(w, col)
523
- }), {
524
- ...slots,
525
- emptyText: () => renderEmptyText()
526
- }), tableScrollEl.value && !hasCustom && createVNode(Teleport, { "to": tableScrollEl.value }, { default: () => [createVNode(Bar_default, { "ref": barRef }, null)] })])])])]));
527
- };
528
- }
905
+ }, defaults),
906
+ emits: [
907
+ "change",
908
+ "reset",
909
+ "reload",
910
+ "submit",
911
+ "loadingChange",
912
+ "requestError",
913
+ "sizeChange",
914
+ "resizeColumn",
915
+ "fullscreenChange",
916
+ "rowSortEnd",
917
+ "update:expandedRowKeys",
918
+ "scroll"
919
+ ],
920
+ name: "GProTable",
921
+ inheritAttrs: false
529
922
  });
530
- var ProTable_default = ProTable;
531
-
532
923
  //#endregion
533
- export { ProTable_default as default };
924
+ export { ForwardProTable as default };