bm-admin-ui 1.0.0-alpha → 1.0.1-alpha

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 (126) hide show
  1. package/es/components/button/index.d.ts +9 -9
  2. package/es/components/button/index.js +1 -1
  3. package/es/components/button/src/button.vue.d.ts +9 -9
  4. package/es/components/float-table/index.d.ts +5 -0
  5. package/es/components/float-table/index.js +448 -0
  6. package/es/components/float-table/src/float-table.vue.d.ts +500 -0
  7. package/es/components/flow-designer/index.js +1 -1
  8. package/es/components/form-designer/index.js +1 -1
  9. package/es/components/index.d.ts +7 -0
  10. package/es/components/index.js +7 -0
  11. package/es/components/multi-cascader-compose/index.d.ts +135 -0
  12. package/es/components/multi-cascader-compose/index.js +1699 -0
  13. package/es/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
  14. package/es/components/multi-cascader-compose/src/props.d.ts +32 -0
  15. package/es/components/multi-cascader-compose/types.d.ts +10 -0
  16. package/es/components/over-tooltips/index.d.ts +35 -0
  17. package/es/components/over-tooltips/index.js +117 -0
  18. package/es/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  19. package/es/components/search-filter/index.d.ts +1 -1
  20. package/es/components/search-filter/index.js +593 -29
  21. package/es/components/search-filter/src/search-filter.vue.d.ts +1 -1
  22. package/es/components/shops-filter/index.d.ts +99 -0
  23. package/es/components/shops-filter/index.js +1614 -0
  24. package/es/components/shops-filter/src/shops-filter.d.ts +25 -0
  25. package/es/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  26. package/es/components/staffs-selector/index.d.ts +82 -0
  27. package/es/components/staffs-selector/index.js +1991 -0
  28. package/es/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
  29. package/es/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  30. package/es/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
  31. package/es/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  32. package/es/components/timeline/index.d.ts +93 -0
  33. package/es/components/timeline/index.js +164 -0
  34. package/es/components/timeline/src/props.d.ts +20 -0
  35. package/es/components/timeline/src/timeline-item.vue.d.ts +51 -0
  36. package/es/components/timeline/src/timeline.vue.d.ts +42 -0
  37. package/es/components/upload/index.d.ts +126 -0
  38. package/es/components/upload/index.js +1839 -0
  39. package/es/components/upload/src/icons.d.ts +13 -0
  40. package/es/components/upload/src/upload.vue.d.ts +125 -0
  41. package/es/components/upload/utils/index.d.ts +7 -0
  42. package/index.esm.js +62925 -1235
  43. package/index.js +63078 -1380
  44. package/lib/components/button/index.d.ts +9 -9
  45. package/lib/components/button/index.js +1 -1
  46. package/lib/components/button/src/button.vue.d.ts +9 -9
  47. package/lib/components/float-table/index.d.ts +5 -0
  48. package/lib/components/float-table/index.js +459 -0
  49. package/lib/components/float-table/src/float-table.vue.d.ts +500 -0
  50. package/lib/components/flow-designer/index.js +1 -1
  51. package/lib/components/form-designer/index.js +1 -1
  52. package/lib/components/index.d.ts +7 -0
  53. package/lib/components/index.js +49 -0
  54. package/lib/components/multi-cascader-compose/index.d.ts +135 -0
  55. package/lib/components/multi-cascader-compose/index.js +1704 -0
  56. package/lib/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
  57. package/lib/components/multi-cascader-compose/src/props.d.ts +32 -0
  58. package/lib/components/multi-cascader-compose/types.d.ts +10 -0
  59. package/lib/components/over-tooltips/index.d.ts +35 -0
  60. package/lib/components/over-tooltips/index.js +122 -0
  61. package/lib/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  62. package/lib/components/search-filter/index.d.ts +1 -1
  63. package/lib/components/search-filter/index.js +592 -28
  64. package/lib/components/search-filter/src/search-filter.vue.d.ts +1 -1
  65. package/lib/components/shops-filter/index.d.ts +99 -0
  66. package/lib/components/shops-filter/index.js +1626 -0
  67. package/lib/components/shops-filter/src/shops-filter.d.ts +25 -0
  68. package/lib/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  69. package/lib/components/staffs-selector/index.d.ts +82 -0
  70. package/lib/components/staffs-selector/index.js +2005 -0
  71. package/lib/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
  72. package/lib/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  73. package/lib/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
  74. package/lib/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  75. package/lib/components/timeline/index.d.ts +93 -0
  76. package/lib/components/timeline/index.js +170 -0
  77. package/lib/components/timeline/src/props.d.ts +20 -0
  78. package/lib/components/timeline/src/timeline-item.vue.d.ts +51 -0
  79. package/lib/components/timeline/src/timeline.vue.d.ts +42 -0
  80. package/lib/components/upload/index.d.ts +126 -0
  81. package/lib/components/upload/index.js +1844 -0
  82. package/lib/components/upload/src/icons.d.ts +13 -0
  83. package/lib/components/upload/src/upload.vue.d.ts +125 -0
  84. package/lib/components/upload/utils/index.d.ts +7 -0
  85. package/package.json +6 -3
  86. package/theme-chalk/button.css +1 -1
  87. package/theme-chalk/float-table.css +1 -0
  88. package/theme-chalk/floating-vue.css +1 -0
  89. package/theme-chalk/flow-designer.css +1 -1
  90. package/theme-chalk/index.css +1 -1
  91. package/theme-chalk/multi-cascader-compose.css +1 -0
  92. package/theme-chalk/over-tooltips.css +1 -0
  93. package/theme-chalk/search-filter.css +1 -1
  94. package/theme-chalk/shops-filter.css +1 -0
  95. package/theme-chalk/staffs-selector.css +1 -0
  96. package/theme-chalk/timeline.css +1 -0
  97. package/theme-chalk/upload.css +1 -0
  98. package/types/components/button/index.d.ts +9 -9
  99. package/types/components/button/src/button.vue.d.ts +9 -9
  100. package/types/components/float-table/index.d.ts +5 -0
  101. package/types/components/float-table/src/float-table.vue.d.ts +500 -0
  102. package/types/components/index.d.ts +7 -0
  103. package/types/components/multi-cascader-compose/index.d.ts +135 -0
  104. package/types/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
  105. package/types/components/multi-cascader-compose/src/props.d.ts +32 -0
  106. package/types/components/multi-cascader-compose/types.d.ts +10 -0
  107. package/types/components/over-tooltips/index.d.ts +35 -0
  108. package/types/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
  109. package/types/components/search-filter/index.d.ts +1 -1
  110. package/types/components/search-filter/src/search-filter.vue.d.ts +1 -1
  111. package/types/components/shops-filter/index.d.ts +99 -0
  112. package/types/components/shops-filter/src/shops-filter.d.ts +25 -0
  113. package/types/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
  114. package/types/components/staffs-selector/index.d.ts +82 -0
  115. package/types/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
  116. package/types/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
  117. package/types/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
  118. package/types/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
  119. package/types/components/timeline/index.d.ts +93 -0
  120. package/types/components/timeline/src/props.d.ts +20 -0
  121. package/types/components/timeline/src/timeline-item.vue.d.ts +51 -0
  122. package/types/components/timeline/src/timeline.vue.d.ts +42 -0
  123. package/types/components/upload/index.d.ts +126 -0
  124. package/types/components/upload/src/icons.d.ts +13 -0
  125. package/types/components/upload/src/upload.vue.d.ts +125 -0
  126. package/types/components/upload/utils/index.d.ts +7 -0
@@ -27,12 +27,12 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
27
27
  $props: Partial<{
28
28
  block: boolean;
29
29
  disabled: boolean;
30
- ghost: boolean;
31
- danger: boolean;
32
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
33
30
  loading: boolean | {
34
31
  delay?: number | undefined;
35
32
  };
33
+ ghost: boolean;
34
+ danger: boolean;
35
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
36
36
  }> & Omit<Readonly<import("vue").ExtractPropTypes<{
37
37
  prefixCls: StringConstructor;
38
38
  type: import("vue").PropType<import("ant-design-vue/lib/button").ButtonType>;
@@ -144,12 +144,12 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
144
144
  }>>, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
145
145
  block: boolean;
146
146
  disabled: boolean;
147
- ghost: boolean;
148
- danger: boolean;
149
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
150
147
  loading: boolean | {
151
148
  delay?: number | undefined;
152
149
  };
150
+ ghost: boolean;
151
+ danger: boolean;
152
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
153
153
  }> & {
154
154
  beforeCreate?: (() => void) | (() => void)[] | undefined;
155
155
  created?: (() => void) | (() => void)[] | undefined;
@@ -271,12 +271,12 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
271
271
  }>>, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
272
272
  block: boolean;
273
273
  disabled: boolean;
274
- ghost: boolean;
275
- danger: boolean;
276
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
277
274
  loading: boolean | {
278
275
  delay?: number | undefined;
279
276
  };
277
+ ghost: boolean;
278
+ danger: boolean;
279
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
280
280
  }> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("@vue/runtime-core").Plugin & {
281
281
  readonly Group: import("vue").DefineComponent<{
282
282
  prefixCls: StringConstructor;
@@ -42,7 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
42
42
  };
43
43
  }
44
44
  });
45
- var Button = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/hesiying/work/bm-admin-ui/packages/components/button/src/button.vue"]]);
45
+ var Button = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "button.vue"]]);
46
46
 
47
47
  const BmButton = withInstall(Button);
48
48
 
@@ -29,12 +29,12 @@ declare const _default: import("vue").DefineComponent<{
29
29
  $props: Partial<{
30
30
  block: boolean;
31
31
  disabled: boolean;
32
- ghost: boolean;
33
- danger: boolean;
34
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
35
32
  loading: boolean | {
36
33
  delay?: number | undefined;
37
34
  };
35
+ ghost: boolean;
36
+ danger: boolean;
37
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
38
38
  }> & Omit<Readonly<import("vue").ExtractPropTypes<{
39
39
  prefixCls: StringConstructor;
40
40
  type: import("vue").PropType<ButtonType>;
@@ -146,12 +146,12 @@ declare const _default: import("vue").DefineComponent<{
146
146
  }>>, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
147
147
  block: boolean;
148
148
  disabled: boolean;
149
- ghost: boolean;
150
- danger: boolean;
151
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
152
149
  loading: boolean | {
153
150
  delay?: number | undefined;
154
151
  };
152
+ ghost: boolean;
153
+ danger: boolean;
154
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
155
155
  }> & {
156
156
  beforeCreate?: (() => void) | (() => void)[] | undefined;
157
157
  created?: (() => void) | (() => void)[] | undefined;
@@ -273,12 +273,12 @@ declare const _default: import("vue").DefineComponent<{
273
273
  }>>, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, {
274
274
  block: boolean;
275
275
  disabled: boolean;
276
- ghost: boolean;
277
- danger: boolean;
278
- htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
279
276
  loading: boolean | {
280
277
  delay?: number | undefined;
281
278
  };
279
+ ghost: boolean;
280
+ danger: boolean;
281
+ htmlType: import("ant-design-vue/lib/button/buttonTypes").ButtonHTMLType;
282
282
  }> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & import("@vue/runtime-core").Plugin & {
283
283
  readonly Group: import("vue").DefineComponent<{
284
284
  prefixCls: StringConstructor;
@@ -0,0 +1,5 @@
1
+ declare const BmFloatTable: {
2
+ install(app: any): void;
3
+ };
4
+ export { BmFloatTable };
5
+ export default BmFloatTable;
@@ -0,0 +1,448 @@
1
+ import { withInstall } from 'bm-admin-ui/es/utils/with-install';
2
+ import { defineComponent, ref, reactive, computed, watch, onBeforeUnmount, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, mergeProps, toHandlers, createSlots, withCtx, createCommentVNode, createElementVNode, renderList, renderSlot, withDirectives, normalizeStyle, vShow, nextTick } from 'vue';
3
+ import Pagination from 'ant-design-vue/lib/pagination';
4
+ import { Empty } from 'ant-design-vue';
5
+ import XEUtils from 'xe-utils';
6
+ import { VXETable, Header, Footer, Column, Table, Grid, Pager, Checkbox, CheckboxGroup, Radio, RadioGroup, Select, Input, Tooltip, Keyboard, Toolbar, Button, Icon } from 'vxe-table';
7
+ import zhCN from 'vxe-table/es/locale/lang/zh-CN';
8
+
9
+ var _export_sfc = (sfc, props) => {
10
+ const target = sfc.__vccOpts || sfc;
11
+ for (const [key, val] of props) {
12
+ target[key] = val;
13
+ }
14
+ return target;
15
+ };
16
+
17
+ const _hoisted_1 = {
18
+ key: 0,
19
+ class: "floatPager"
20
+ };
21
+ const _sfc_main = /* @__PURE__ */ defineComponent({
22
+ props: {
23
+ config: {
24
+ type: Object,
25
+ required: true,
26
+ default: () => {
27
+ return {};
28
+ }
29
+ },
30
+ pagerProps: {
31
+ type: Object,
32
+ default: () => {
33
+ return {};
34
+ }
35
+ },
36
+ events: {
37
+ type: Object,
38
+ default: () => {
39
+ return {};
40
+ }
41
+ },
42
+ isNeedFloatHandle: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ size: {
47
+ type: String,
48
+ default: "middle"
49
+ }
50
+ },
51
+ emits: [
52
+ "radioChange",
53
+ "checkboxChange",
54
+ "checkboxChangeAll",
55
+ "pageChange",
56
+ "pageSizeChange"
57
+ ],
58
+ setup(__props, { expose, emit: emits }) {
59
+ const props = __props;
60
+ const AEmpty = Empty;
61
+ const floatTable = ref();
62
+ const xGrid = ref();
63
+ const state = reactive({
64
+ emptyImg: AEmpty.PRESENTED_IMAGE_SIMPLE,
65
+ floatRefsId: {},
66
+ floatId: "",
67
+ isShowFloatHandle: true,
68
+ gridOptions: {
69
+ resizable: false,
70
+ border: "default",
71
+ highlightHoverRow: true,
72
+ showOverflow: false,
73
+ showHeaderOverflow: true,
74
+ align: null,
75
+ columns: [],
76
+ tooltipConfig: { leaveDelay: 1e6 },
77
+ data: [],
78
+ pagerConfig: {},
79
+ emptyText: "\u6682\u65E0\u6570\u636E",
80
+ checkboxConfig: {
81
+ reserve: false,
82
+ highlight: computed(function() {
83
+ return props.config.columns.some(function(item) {
84
+ return item.type === "checkbox" || item.type === "checkbox";
85
+ });
86
+ }),
87
+ trigger: "row"
88
+ },
89
+ rowClassName: "tb-row",
90
+ sortConfig: {
91
+ trigger: "cell",
92
+ orders: ["desc", "asc", null]
93
+ }
94
+ },
95
+ gridEvents: {
96
+ radioChange(val) {
97
+ emits("radioChange", val);
98
+ },
99
+ checkboxChange(val) {
100
+ emits("checkboxChange", val);
101
+ },
102
+ checkboxAll(val) {
103
+ emits("checkboxChangeAll", val);
104
+ }
105
+ },
106
+ atVisible: false,
107
+ goAnimationEnd: false,
108
+ floatPosition: {
109
+ top: "0",
110
+ height: "0"
111
+ },
112
+ trNodes: [],
113
+ isInScroll: false,
114
+ inMaxScorllX: false,
115
+ floatRow: {},
116
+ floatRowIndex: void 0,
117
+ floatHandleDomCol: null
118
+ });
119
+ const classes = computed(() => {
120
+ return [
121
+ "floatTable",
122
+ "bm-table",
123
+ `table-${props.size}`,
124
+ {
125
+ floatHandleTable: props.isNeedFloatHandle && (!state.atVisible || state.inMaxScorllX) && state.floatHandleDomCol
126
+ }
127
+ ];
128
+ });
129
+ const gridOptions = computed(() => {
130
+ return {
131
+ ...state.gridOptions,
132
+ ...props.config
133
+ };
134
+ });
135
+ let mouseenterCellTime;
136
+ const gridEvents = computed(() => {
137
+ let extraFn = {};
138
+ if (props.isNeedFloatHandle) {
139
+ let propscellMouseenter = props.events.cellMouseenter;
140
+ extraFn.cellMouseenter = (e) => {
141
+ if (props.isNeedFloatHandle) {
142
+ if (state.isInScroll) {
143
+ state.isShowFloatHandle = false;
144
+ return;
145
+ }
146
+ if (state.inMaxScorllX) {
147
+ state.isShowFloatHandle = false;
148
+ }
149
+ let rowid = e.rowid;
150
+ let row = e.row;
151
+ clearTimeout(mouseenterCellTime);
152
+ mouseenterCellTime = setTimeout(function() {
153
+ if (state.floatId !== rowid) {
154
+ state.goAnimationEnd = false;
155
+ } else {
156
+ return;
157
+ }
158
+ state.floatId = rowid;
159
+ state.floatRow = row;
160
+ state.floatRowIndex = e.rowIndex;
161
+ let domEl = state.floatRefsId[rowid];
162
+ let tdDom = domEl && domEl.closest("td");
163
+ if (!tdDom)
164
+ return;
165
+ let clientHeight = tdDom.clientHeight - 1 + "px";
166
+ let trDoms = document.querySelectorAll(`[rowid='${rowid}']`);
167
+ state.trNodes = trDoms;
168
+ let top = e.cell.getBoundingClientRect().top;
169
+ let parentTop = floatTable.value.getBoundingClientRect().top;
170
+ top = top - parentTop + "px";
171
+ state.floatPosition = {
172
+ top,
173
+ height: clientHeight
174
+ };
175
+ if (!state.atVisible && !state.inMaxScorllX) {
176
+ state.isShowFloatHandle = true;
177
+ }
178
+ nextTick(() => {
179
+ let $floatHandle = document.querySelector(".floatHandle");
180
+ if ($floatHandle.clientWidth === 32) {
181
+ $floatHandle.style.padding = 0;
182
+ }
183
+ });
184
+ }, 200);
185
+ }
186
+ propscellMouseenter && propscellMouseenter(e);
187
+ };
188
+ extraFn.scroll = (e) => {
189
+ let propsscroll = props.events.scroll;
190
+ if (e.isY && props.isNeedFloatHandle) {
191
+ scrollNotShowFloat();
192
+ }
193
+ if (e.isX && props.isNeedFloatHandle && state.floatHandleDomCol && gridOptions.value.data && gridOptions.value.data.length > 0) {
194
+ if (e.scrollLeft + e.$event.target.clientWidth >= e.$event.target.scrollWidth - state.floatHandleDomCol.clientWidth) {
195
+ state.inMaxScorllX = true;
196
+ state.isShowFloatHandle = false;
197
+ } else {
198
+ state.inMaxScorllX = false;
199
+ state.isShowFloatHandle = true;
200
+ }
201
+ }
202
+ propsscroll && propsscroll(e);
203
+ };
204
+ extraFn.cellMouseleave = (e) => {
205
+ let propsCellMouseLeave = props.events.cellMouseleave;
206
+ floatMouseLeave();
207
+ propsCellMouseLeave && propsCellMouseLeave(e);
208
+ };
209
+ }
210
+ return {
211
+ ...state.gridEvents,
212
+ ...props.events,
213
+ ...extraFn
214
+ };
215
+ });
216
+ const pager = computed(() => {
217
+ let pager2 = {
218
+ size: "small",
219
+ showTotal: (total) => `\u5171 ${total} \u6761`,
220
+ showQuickJumper: true,
221
+ showSizeChanger: true,
222
+ current: 1,
223
+ pageSize: 10,
224
+ total: 0,
225
+ hideOnSinglePage: false,
226
+ pageSizeOptions: ["10", "30", "50", "100"]
227
+ };
228
+ return {
229
+ ...pager2,
230
+ ...props.pagerProps
231
+ };
232
+ });
233
+ const setItemRef = (el, column, rowid) => {
234
+ if (!props.isNeedFloatHandle)
235
+ return;
236
+ state.floatRefsId[rowid] = el;
237
+ if (state.floatHandleDomCol)
238
+ return;
239
+ let id = column.id;
240
+ state.floatHandleDomCol = floatTable.value.querySelector(`.vxe-table--header-wrapper .vxe-header--row .${id}`);
241
+ };
242
+ const leaveFloatTable = () => {
243
+ let timer = setTimeout(() => {
244
+ state.isShowFloatHandle = false;
245
+ state.floatId = "";
246
+ clearTimeout(timer);
247
+ }, 210);
248
+ };
249
+ const scrollTo = (config = {}) => {
250
+ config = {
251
+ top: 0,
252
+ ...config
253
+ };
254
+ floatTable.value?.querySelectorAll(".vxe-table--body-wrapper")?.forEach((table) => table?.scrollTo?.(config));
255
+ };
256
+ expose({ scrollTo });
257
+ const pageNoChange = async (val) => {
258
+ await emits("pageChange", val);
259
+ scrollTo();
260
+ };
261
+ const pageSizeChange = async (val, size) => {
262
+ await emits("pageSizeChange", size);
263
+ scrollTo();
264
+ };
265
+ const floatMouseLeave = () => {
266
+ if (!state.trNodes || state.trNodes?.length === 0)
267
+ return;
268
+ state.trNodes.forEach((item) => {
269
+ if (item && item.className.includes("floatHoverTr")) {
270
+ item.className = `${item.className.replace(/floatHoverTr/g, "")}`;
271
+ }
272
+ });
273
+ };
274
+ const floatOverMouse = () => {
275
+ if (!state.trNodes || state.trNodes?.length === 0)
276
+ return;
277
+ state.trNodes.forEach((item) => {
278
+ if (item && !item.className.includes("floatHoverTr")) {
279
+ item.className = `${item.className} floatHoverTr`;
280
+ }
281
+ });
282
+ };
283
+ const goAnimationEndFn = () => {
284
+ state.goAnimationEnd = true;
285
+ };
286
+ let scrollNotShowFloatTime;
287
+ const scrollNotShowFloat = () => {
288
+ state.isInScroll = true;
289
+ state.isShowFloatHandle = false;
290
+ clearTimeout(scrollNotShowFloatTime);
291
+ if (!state.atVisible) {
292
+ scrollNotShowFloatTime = setTimeout(function() {
293
+ state.isInScroll = false;
294
+ }, 300);
295
+ }
296
+ };
297
+ let inObserverDom;
298
+ let isHasOver;
299
+ let closeSetRow;
300
+ let headerWarpper;
301
+ if (props.isNeedFloatHandle) {
302
+ inObserverDom = new IntersectionObserver((entries) => {
303
+ entries.forEach((item) => {
304
+ if (item.intersectionRatio > 0.1) {
305
+ closeSetRow = closeSetRow || item.target.closest(".vxe-header--row");
306
+ headerWarpper = headerWarpper || item.target.closest(".vxe-table--header-wrapper");
307
+ if (closeSetRow.clientWidth <= headerWarpper.clientWidth && !isHasOver) {
308
+ inObserverDom.disconnect();
309
+ } else {
310
+ isHasOver = true;
311
+ }
312
+ state.isShowFloatHandle = false;
313
+ state.atVisible = true;
314
+ } else {
315
+ if (gridOptions.value.data && gridOptions.value.data.length > 0) {
316
+ state.goAnimationEnd = false;
317
+ state.isShowFloatHandle = true;
318
+ state.atVisible = false;
319
+ }
320
+ }
321
+ });
322
+ }, {
323
+ threshold: 0.1
324
+ });
325
+ watch(() => state.floatHandleDomCol, function(col) {
326
+ if (col) {
327
+ inObserverDom.observe(col);
328
+ }
329
+ }, {
330
+ immediate: true
331
+ });
332
+ }
333
+ onBeforeUnmount(function() {
334
+ inObserverDom && inObserverDom.disconnect();
335
+ scrollNotShowFloatTime && clearTimeout(scrollNotShowFloatTime);
336
+ });
337
+ return (_ctx, _cache) => {
338
+ const _component_vxe_grid = resolveComponent("vxe-grid");
339
+ return openBlock(), createElementBlock("div", {
340
+ ref_key: "floatTable",
341
+ ref: floatTable,
342
+ class: normalizeClass(unref(classes)),
343
+ onMouseleave: leaveFloatTable
344
+ }, [
345
+ createVNode(_component_vxe_grid, mergeProps({
346
+ ref_key: "xGrid",
347
+ ref: xGrid
348
+ }, unref(gridOptions), toHandlers(unref(gridEvents))), createSlots({
349
+ pager: withCtx(() => [
350
+ unref(pager).total && !unref(pager).hideOnSinglePage ? (openBlock(), createElementBlock("div", _hoisted_1, [
351
+ createVNode(unref(Pagination), mergeProps(unref(pager), {
352
+ onChange: pageNoChange,
353
+ onShowSizeChange: pageSizeChange
354
+ }), null, 16)
355
+ ])) : createCommentVNode("v-if", true)
356
+ ]),
357
+ empty: withCtx(() => [
358
+ createElementVNode("div", null, [
359
+ createVNode(unref(AEmpty), {
360
+ image: unref(state).emptyImg
361
+ }, null, 8, ["image"])
362
+ ])
363
+ ]),
364
+ _: 2
365
+ }, [
366
+ renderList(_ctx.$slots, (slot, key) => {
367
+ return {
368
+ name: key,
369
+ fn: withCtx((data) => [
370
+ key !== "floatHandle" ? renderSlot(_ctx.$slots, key, {
371
+ key: 0,
372
+ rowIndex: data.rowIndex,
373
+ row: data.row,
374
+ column: data.column
375
+ }) : (openBlock(), createElementBlock("div", {
376
+ key: 1,
377
+ ref: (el) => setItemRef(el, data.column, data.rowid)
378
+ }, [
379
+ renderSlot(_ctx.$slots, "floatHandle", {
380
+ row: data.row,
381
+ rowIndex: data.rowIndex,
382
+ column: data.column
383
+ })
384
+ ], 512))
385
+ ])
386
+ };
387
+ })
388
+ ]), 1040),
389
+ withDirectives(createElementVNode("div", {
390
+ ref: "floatHandle",
391
+ class: normalizeClass(["floatHandle", {
392
+ floatRightIn: unref(state).isShowFloatHandle && !unref(state).goAnimationEnd
393
+ }]),
394
+ style: normalizeStyle({
395
+ top: unref(state).floatPosition?.top,
396
+ height: unref(state).floatPosition?.height
397
+ }),
398
+ onAnimationend: goAnimationEndFn,
399
+ onMouseenter: floatOverMouse,
400
+ onMouseleave: floatMouseLeave
401
+ }, [
402
+ createElementVNode("div", null, [
403
+ renderSlot(_ctx.$slots, "floatHandle", {
404
+ row: unref(state).floatRow,
405
+ rowIndex: unref(state).floatRowIndex
406
+ })
407
+ ])
408
+ ], 38), [
409
+ [
410
+ vShow,
411
+ unref(state).floatPosition?.top && __props.isNeedFloatHandle && unref(state).isShowFloatHandle
412
+ ]
413
+ ])
414
+ ], 34);
415
+ };
416
+ }
417
+ });
418
+ var FloatTable = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "float-table.vue"]]);
419
+
420
+ VXETable.setup({
421
+ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args),
422
+ });
423
+ const BmTable = withInstall(FloatTable);
424
+ const BmFloatTable = {
425
+ install(app) {
426
+ app.component('BmTable', BmTable);
427
+ app
428
+ .use(Header)
429
+ .use(Footer)
430
+ .use(Column)
431
+ .use(Table)
432
+ .use(Grid)
433
+ .use(Pager)
434
+ .use(Checkbox)
435
+ .use(CheckboxGroup)
436
+ .use(Radio)
437
+ .use(RadioGroup)
438
+ .use(Select)
439
+ .use(Input)
440
+ .use(Tooltip)
441
+ .use(Keyboard)
442
+ .use(Toolbar)
443
+ .use(Button)
444
+ .use(Icon);
445
+ },
446
+ };
447
+
448
+ export { BmFloatTable, BmFloatTable as default };