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.
- package/es/components/button/index.d.ts +9 -9
- package/es/components/button/index.js +1 -1
- package/es/components/button/src/button.vue.d.ts +9 -9
- package/es/components/float-table/index.d.ts +5 -0
- package/es/components/float-table/index.js +448 -0
- package/es/components/float-table/src/float-table.vue.d.ts +500 -0
- package/es/components/flow-designer/index.js +1 -1
- package/es/components/form-designer/index.js +1 -1
- package/es/components/index.d.ts +7 -0
- package/es/components/index.js +7 -0
- package/es/components/multi-cascader-compose/index.d.ts +135 -0
- package/es/components/multi-cascader-compose/index.js +1699 -0
- package/es/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
- package/es/components/multi-cascader-compose/src/props.d.ts +32 -0
- package/es/components/multi-cascader-compose/types.d.ts +10 -0
- package/es/components/over-tooltips/index.d.ts +35 -0
- package/es/components/over-tooltips/index.js +117 -0
- package/es/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
- package/es/components/search-filter/index.d.ts +1 -1
- package/es/components/search-filter/index.js +593 -29
- package/es/components/search-filter/src/search-filter.vue.d.ts +1 -1
- package/es/components/shops-filter/index.d.ts +99 -0
- package/es/components/shops-filter/index.js +1614 -0
- package/es/components/shops-filter/src/shops-filter.d.ts +25 -0
- package/es/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
- package/es/components/staffs-selector/index.d.ts +82 -0
- package/es/components/staffs-selector/index.js +1991 -0
- package/es/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
- package/es/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
- package/es/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
- package/es/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
- package/es/components/timeline/index.d.ts +93 -0
- package/es/components/timeline/index.js +164 -0
- package/es/components/timeline/src/props.d.ts +20 -0
- package/es/components/timeline/src/timeline-item.vue.d.ts +51 -0
- package/es/components/timeline/src/timeline.vue.d.ts +42 -0
- package/es/components/upload/index.d.ts +126 -0
- package/es/components/upload/index.js +1839 -0
- package/es/components/upload/src/icons.d.ts +13 -0
- package/es/components/upload/src/upload.vue.d.ts +125 -0
- package/es/components/upload/utils/index.d.ts +7 -0
- package/index.esm.js +62925 -1235
- package/index.js +63078 -1380
- package/lib/components/button/index.d.ts +9 -9
- package/lib/components/button/index.js +1 -1
- package/lib/components/button/src/button.vue.d.ts +9 -9
- package/lib/components/float-table/index.d.ts +5 -0
- package/lib/components/float-table/index.js +459 -0
- package/lib/components/float-table/src/float-table.vue.d.ts +500 -0
- package/lib/components/flow-designer/index.js +1 -1
- package/lib/components/form-designer/index.js +1 -1
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.js +49 -0
- package/lib/components/multi-cascader-compose/index.d.ts +135 -0
- package/lib/components/multi-cascader-compose/index.js +1704 -0
- package/lib/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
- package/lib/components/multi-cascader-compose/src/props.d.ts +32 -0
- package/lib/components/multi-cascader-compose/types.d.ts +10 -0
- package/lib/components/over-tooltips/index.d.ts +35 -0
- package/lib/components/over-tooltips/index.js +122 -0
- package/lib/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
- package/lib/components/search-filter/index.d.ts +1 -1
- package/lib/components/search-filter/index.js +592 -28
- package/lib/components/search-filter/src/search-filter.vue.d.ts +1 -1
- package/lib/components/shops-filter/index.d.ts +99 -0
- package/lib/components/shops-filter/index.js +1626 -0
- package/lib/components/shops-filter/src/shops-filter.d.ts +25 -0
- package/lib/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
- package/lib/components/staffs-selector/index.d.ts +82 -0
- package/lib/components/staffs-selector/index.js +2005 -0
- package/lib/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
- package/lib/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
- package/lib/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
- package/lib/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
- package/lib/components/timeline/index.d.ts +93 -0
- package/lib/components/timeline/index.js +170 -0
- package/lib/components/timeline/src/props.d.ts +20 -0
- package/lib/components/timeline/src/timeline-item.vue.d.ts +51 -0
- package/lib/components/timeline/src/timeline.vue.d.ts +42 -0
- package/lib/components/upload/index.d.ts +126 -0
- package/lib/components/upload/index.js +1844 -0
- package/lib/components/upload/src/icons.d.ts +13 -0
- package/lib/components/upload/src/upload.vue.d.ts +125 -0
- package/lib/components/upload/utils/index.d.ts +7 -0
- package/package.json +6 -3
- package/theme-chalk/button.css +1 -1
- package/theme-chalk/float-table.css +1 -0
- package/theme-chalk/floating-vue.css +1 -0
- package/theme-chalk/flow-designer.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/multi-cascader-compose.css +1 -0
- package/theme-chalk/over-tooltips.css +1 -0
- package/theme-chalk/search-filter.css +1 -1
- package/theme-chalk/shops-filter.css +1 -0
- package/theme-chalk/staffs-selector.css +1 -0
- package/theme-chalk/timeline.css +1 -0
- package/theme-chalk/upload.css +1 -0
- package/types/components/button/index.d.ts +9 -9
- package/types/components/button/src/button.vue.d.ts +9 -9
- package/types/components/float-table/index.d.ts +5 -0
- package/types/components/float-table/src/float-table.vue.d.ts +500 -0
- package/types/components/index.d.ts +7 -0
- package/types/components/multi-cascader-compose/index.d.ts +135 -0
- package/types/components/multi-cascader-compose/src/multi-cascader-compose.vue.d.ts +135 -0
- package/types/components/multi-cascader-compose/src/props.d.ts +32 -0
- package/types/components/multi-cascader-compose/types.d.ts +10 -0
- package/types/components/over-tooltips/index.d.ts +35 -0
- package/types/components/over-tooltips/src/over-tooltips.vue.d.ts +34 -0
- package/types/components/search-filter/index.d.ts +1 -1
- package/types/components/search-filter/src/search-filter.vue.d.ts +1 -1
- package/types/components/shops-filter/index.d.ts +99 -0
- package/types/components/shops-filter/src/shops-filter.d.ts +25 -0
- package/types/components/shops-filter/src/shops-filter.vue.d.ts +98 -0
- package/types/components/staffs-selector/index.d.ts +82 -0
- package/types/components/staffs-selector/src/multipleCmp.vue.d.ts +79 -0
- package/types/components/staffs-selector/src/radioCmp.vue.d.ts +31 -0
- package/types/components/staffs-selector/src/staffs-selector.vue.d.ts +81 -0
- package/types/components/staffs-selector/src/variedCmp.vue.d.ts +62 -0
- package/types/components/timeline/index.d.ts +93 -0
- package/types/components/timeline/src/props.d.ts +20 -0
- package/types/components/timeline/src/timeline-item.vue.d.ts +51 -0
- package/types/components/timeline/src/timeline.vue.d.ts +42 -0
- package/types/components/upload/index.d.ts +126 -0
- package/types/components/upload/src/icons.d.ts +13 -0
- package/types/components/upload/src/upload.vue.d.ts +125 -0
- 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", "
|
|
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,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 };
|