@cmstops/pro-compo 0.1.80 → 0.1.82

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.
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, watch, onMounted, openBlock, createElementBlock, createElementVNode, withDirectives, createVNode, unref, withModifiers, withCtx, createTextVNode, vShow, renderSlot } from "vue";
2
2
  import { Button } from "@arco-design/web-vue";
3
3
  import { IconCaretDown } from "@arco-design/web-vue/es/icon";
4
- import { createPopper } from "@popperjs/core";
4
+ import usePopper from "../../hooks/usePopper.js";
5
5
  const _hoisted_1 = { class: "filter-view-container" };
6
6
  const _hoisted_2 = { class: "more-btn" };
7
7
  const _hoisted_3 = { class: "right-prefix" };
@@ -14,120 +14,89 @@ const _hoisted_6 = {
14
14
  const _sfc_main = defineComponent({
15
15
  __name: "FilterGroup",
16
16
  setup(__props) {
17
- const documentWidth = ref(0);
18
- const overflowWidth = ref(0);
19
- watch(
20
- () => documentWidth.value,
21
- (n) => checkOverflow()
22
- );
23
- watch(
24
- () => overflowWidth.value,
25
- (n) => setPannelItem()
26
- );
27
- const initDocWidthListener = function() {
28
- window.onresize = (() => {
29
- return () => {
30
- documentWidth.value = document.body.clientWidth;
31
- };
32
- })();
17
+ const getRect = (el) => {
18
+ if (!el || !el.getClientRects())
19
+ return { right: 0, width: 0 };
20
+ const [{ right, width }] = el.getClientRects();
21
+ return {
22
+ right,
23
+ width
24
+ };
33
25
  };
34
- const filterItemsRef = ref();
35
26
  const moreBtnRef = ref();
36
27
  const dpPannelRef = ref();
37
- const initPopper = function() {
38
- createPopper(moreBtnRef.value, dpPannelRef.value, {
39
- placement: "bottom-start"
40
- });
28
+ const { initPopper, show, visible } = usePopper(dpPannelRef, moreBtnRef);
29
+ const filterItemsRef = ref();
30
+ const windowWidth = ref(0);
31
+ const filterWidth = ref(0);
32
+ const filterBorder = ref(0);
33
+ const initWidth = () => {
34
+ var _a;
35
+ windowWidth.value = ((_a = document.body) == null ? void 0 : _a.clientWidth) || 0;
36
+ if (filterItemsRef.value) {
37
+ filterWidth.value = filterItemsRef.value.clientWidth || 0;
38
+ filterBorder.value = getRect(filterItemsRef.value).right;
39
+ }
41
40
  };
42
- const popperShowFlag = ref(false);
43
- function showPopper() {
44
- popperShowFlag.value = true;
45
- window.onclick = hidePopper;
46
- }
47
- function hidePopper() {
48
- popperShowFlag.value = false;
49
- }
50
- const itemNodeArr = ref([]);
51
- const itemWidthArr = ref([]);
52
- const itemArr = ref([]);
53
- function checkOverflow() {
54
- if (!filterItemsRef.value)
41
+ const initDocWidthListener = () => window.onresize = () => initWidth();
42
+ const hideElementList = ref([]);
43
+ const inNode = (el) => {
44
+ var _a, _b;
45
+ hideElementList.value.push({ width: getRect(el).width, el });
46
+ (_a = filterItemsRef.value) == null ? void 0 : _a.removeChild(el);
47
+ (_b = dpPannelRef.value) == null ? void 0 : _b.appendChild(el);
48
+ };
49
+ const outNode = () => {
50
+ var _a, _b;
51
+ if (!hideElementList.value.length || !filterItemsRef.value)
55
52
  return;
56
- const parent = filterItemsRef.value.parentNode;
57
- if (!itemNodeArr.value.length) {
58
- itemNodeArr.value = mapNodes(filterItemsRef.value.childNodes);
59
- itemWidthArr.value = itemNodeArr.value.map((node) => node.clientWidth + 10);
60
- itemArr.value = itemWidthArr.value.map((_, idx) => idx);
61
- }
62
- const parentWidth = parent.clientWidth;
63
- const leftWidth = getArrWidth(itemWidthArr.value);
64
- const rightWidth = parent.childNodes[parent.childNodes.length - 1].clientWidth;
65
- overflowWidth.value = leftWidth + rightWidth - parentWidth;
66
- }
67
- function mapNodes(nodes) {
68
- const nodeArr = [];
69
- for (let i = 0; i < nodes.length; i++) {
70
- const element = nodes[i];
71
- nodeArr.push(element);
53
+ const popEl = hideElementList.value.pop();
54
+ if (!popEl)
55
+ return;
56
+ const { width, el } = popEl;
57
+ el.style.width = `${width}px`;
58
+ (_a = dpPannelRef.value) == null ? void 0 : _a.removeChild(el);
59
+ (_b = filterItemsRef.value) == null ? void 0 : _b.appendChild(el);
60
+ hideElementList.value.splice(-1, 0);
61
+ };
62
+ const checkOverflow = () => {
63
+ if (!filterItemsRef.value)
64
+ return -1;
65
+ const elements = Array.from(filterItemsRef.value.childNodes);
66
+ let rightBorder = 0;
67
+ elements.forEach((item) => {
68
+ if (item.className !== "filter-item-view")
69
+ return;
70
+ const { right } = getRect(item);
71
+ if (right <= filterBorder.value) {
72
+ rightBorder = right;
73
+ return;
74
+ }
75
+ inNode(item);
76
+ });
77
+ return rightBorder;
78
+ };
79
+ const refreshPanel = () => {
80
+ const border = checkOverflow();
81
+ if (hideElementList.value.length && border !== -1) {
82
+ const spaceWidth = filterBorder.value - border;
83
+ const { width } = hideElementList.value[hideElementList.value.length - 1];
84
+ if (spaceWidth > width + 20) {
85
+ outNode();
86
+ }
72
87
  }
73
- return nodeArr.filter((item) => item.clientWidth);
74
- }
75
- function getArrWidth(arr) {
76
- return arr.reduce((prev, cur) => prev + cur, 0);
77
- }
78
- const pannelArray = ref("");
88
+ };
79
89
  watch(
80
- () => pannelArray.value,
81
- (n, o) => refreshPannel(n, o)
90
+ () => windowWidth.value,
91
+ () => refreshPanel()
82
92
  );
83
- function refreshPannel(newStr, oldStr) {
84
- const nArr = newStr ? newStr.split(",") : [];
85
- const oArr = oldStr ? oldStr.split(",") : [];
86
- if (nArr.length && nArr.length > oArr.length) {
87
- diff(nArr, oArr).forEach((index) => inNode(parseInt(index, 10)));
88
- } else if (nArr.length >= 0 && nArr.length < oArr.length) {
89
- diff(oArr, nArr).forEach((index) => outNode(parseInt(index, 10)));
90
- }
91
- }
92
- const diff = (arr1, arr2) => {
93
- const diff2 = [];
94
- for (let i = 0; i < arr1.length; i++) {
95
- const item = arr1[i];
96
- if (!arr2.includes(item))
97
- diff2.push(item);
98
- }
99
- return diff2;
100
- };
101
- function inNode(index) {
102
- var _a, _b, _c;
103
- const node = mapNodes((_a = filterItemsRef.value) == null ? void 0 : _a.childNodes)[index];
104
- const temp = document.createElement("div");
105
- temp.style.width = `${itemWidthArr.value[index]}px`;
106
- temp.style.position = "absolute";
107
- temp.style.left = `${50}px`;
108
- (_b = filterItemsRef.value) == null ? void 0 : _b.replaceChild(temp, node);
109
- (_c = dpPannelRef.value) == null ? void 0 : _c.appendChild(node);
110
- }
111
- function outNode(index) {
112
- var _a;
113
- const node = itemNodeArr.value[index];
114
- (_a = filterItemsRef.value) == null ? void 0 : _a.replaceChild(
115
- node,
116
- mapNodes(filterItemsRef.value.childNodes)[index]
117
- );
118
- }
119
- function setPannelItem() {
120
- let inPannelNum = 0;
121
- if (overflowWidth.value > 0) {
122
- const avgWidth = 120;
123
- inPannelNum = Math.ceil((overflowWidth.value + 200) / avgWidth);
124
- }
125
- pannelArray.value = itemArr.value.slice(0, inPannelNum).join(",");
126
- }
127
93
  onMounted(() => {
128
94
  initDocWidthListener();
129
95
  initPopper();
130
- setTimeout(() => checkOverflow());
96
+ initWidth();
97
+ setTimeout(() => {
98
+ refreshPanel();
99
+ });
131
100
  });
132
101
  return (_ctx, _cache) => {
133
102
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -137,7 +106,7 @@ const _sfc_main = defineComponent({
137
106
  ref: moreBtnRef
138
107
  }, [
139
108
  withDirectives(createVNode(unref(Button), {
140
- onClick: withModifiers(showPopper, ["stop"])
109
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => unref(show)(), ["stop"]))
141
110
  }, {
142
111
  default: withCtx(() => [
143
112
  createElementVNode("span", _hoisted_3, [
@@ -147,7 +116,7 @@ const _sfc_main = defineComponent({
147
116
  ]),
148
117
  _: 1
149
118
  }, 512), [
150
- [vShow, pannelArray.value]
119
+ [vShow, hideElementList.value.length]
151
120
  ])
152
121
  ], 512),
153
122
  withDirectives(createElementVNode("div", {
@@ -156,7 +125,7 @@ const _sfc_main = defineComponent({
156
125
  ref: dpPannelRef,
157
126
  class: "filter-pannel"
158
127
  }, null, 512), [
159
- [vShow, popperShowFlag.value]
128
+ [vShow, unref(visible)]
160
129
  ])
161
130
  ]),
162
131
  createElementVNode("div", _hoisted_4, [
@@ -1,60 +1,52 @@
1
1
  // FilterGroup 内部样式
2
2
  .filter-view-container {
3
3
  display: flex;
4
+ gap: 10px;
4
5
  align-items: center;
6
+ justify-content: space-between;
7
+ width: 100%;
5
8
  margin-bottom: 10px;
6
9
  font-size: 14px;
7
10
 
8
- .filter-search {
9
- display: flex;
10
- gap: 10px;
11
- width: 180px;
12
- margin-right: 10px;
11
+ .more-btn {
12
+ .right-prefix {
13
+ display: flex;
14
+ gap: 10px;
15
+ align-items: center;
16
+ }
17
+
18
+ .filter-pannel {
19
+ display: flex;
20
+ gap: 10px;
21
+ padding: 10px;
22
+ background-color: white;
23
+ border-radius: 6px;
24
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
25
+ }
13
26
  }
14
27
 
15
28
  .filter-content {
16
- position: relative;
17
29
  display: flex;
18
30
  flex: 1;
19
31
  align-items: center;
20
32
  justify-content: space-between;
21
- }
22
33
 
23
- .left {
24
- display: flex;
25
- gap: 10px;
26
- align-items: center;
27
- }
34
+ .left {
35
+ display: flex;
36
+ flex: 1;
37
+ gap: 10px;
38
+ width: 100px;
39
+ overflow: hidden;
40
+ background-color: #fff;
41
+ }
28
42
 
29
- .right {
30
- position: absolute;
31
- right: 0;
32
- z-index: 1;
33
- display: flex;
34
- flex-wrap: nowrap;
35
- align-items: center;
36
- height: 100%;
37
- padding-left: 20px;
38
- background: white;
39
- }
40
-
41
- .more-btn {
42
- z-index: 10;
43
- margin-right: 10px;
44
- }
45
-
46
- .right-prefix {
47
- display: flex;
48
- gap: 10px;
49
- align-items: center;
50
- }
51
-
52
- .filter-pannel {
53
- display: flex;
54
- gap: 10px;
55
- padding: 10px;
56
- background-color: white;
57
- border-radius: 6px;
58
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
43
+ .right {
44
+ display: flex;
45
+ flex-wrap: nowrap;
46
+ align-items: center;
47
+ height: 100%;
48
+ padding-left: 20px;
49
+ background: white;
50
+ }
59
51
  }
60
52
  }
@@ -1,31 +1,40 @@
1
1
  .filter-view-container {
2
2
  display: flex;
3
+ gap: 10px;
3
4
  align-items: center;
5
+ justify-content: space-between;
6
+ width: 100%;
4
7
  margin-bottom: 10px;
5
8
  font-size: 14px;
6
9
  }
7
- .filter-view-container .filter-search {
10
+ .filter-view-container .more-btn .right-prefix {
11
+ display: flex;
12
+ gap: 10px;
13
+ align-items: center;
14
+ }
15
+ .filter-view-container .more-btn .filter-pannel {
8
16
  display: flex;
9
17
  gap: 10px;
10
- width: 180px;
11
- margin-right: 10px;
18
+ padding: 10px;
19
+ background-color: white;
20
+ border-radius: 6px;
21
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
12
22
  }
13
23
  .filter-view-container .filter-content {
14
- position: relative;
15
24
  display: flex;
16
25
  flex: 1;
17
26
  align-items: center;
18
27
  justify-content: space-between;
19
28
  }
20
- .filter-view-container .left {
29
+ .filter-view-container .filter-content .left {
21
30
  display: flex;
31
+ flex: 1;
22
32
  gap: 10px;
23
- align-items: center;
33
+ width: 100px;
34
+ overflow: hidden;
35
+ background-color: #fff;
24
36
  }
25
- .filter-view-container .right {
26
- position: absolute;
27
- right: 0;
28
- z-index: 1;
37
+ .filter-view-container .filter-content .right {
29
38
  display: flex;
30
39
  flex-wrap: nowrap;
31
40
  align-items: center;
@@ -33,23 +42,6 @@
33
42
  padding-left: 20px;
34
43
  background: white;
35
44
  }
36
- .filter-view-container .more-btn {
37
- z-index: 10;
38
- margin-right: 10px;
39
- }
40
- .filter-view-container .right-prefix {
41
- display: flex;
42
- gap: 10px;
43
- align-items: center;
44
- }
45
- .filter-view-container .filter-pannel {
46
- display: flex;
47
- gap: 10px;
48
- padding: 10px;
49
- background-color: white;
50
- border-radius: 6px;
51
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
52
- }
53
45
  .base-filter-container {
54
46
  display: flex;
55
47
  align-items: center;
@@ -1,4 +1,11 @@
1
1
  import { Ref } from 'vue';
2
+ /**
3
+ * @deprecated 改为其他方式实现
4
+ * @param filterItemsRef
5
+ * @param dpPannelRef
6
+ * @param moreBtnRef
7
+ * @returns
8
+ */
2
9
  export default function useCalcWidth(filterItemsRef: Ref<HTMLElement | undefined>, dpPannelRef: Ref<HTMLElement | undefined>, moreBtnRef: Ref<HTMLElement | undefined>): {
3
10
  pannelArray: Ref<string>;
4
11
  popperShowFlag: Ref<boolean>;
@@ -37,11 +37,12 @@ function __variableDynamicImportRuntime0__(path) {
37
37
  });
38
38
  }
39
39
  }
40
- const _hoisted_1 = {
41
- key: 0,
40
+ const _hoisted_1 = ["src"];
41
+ const _hoisted_2 = {
42
+ key: 2,
42
43
  class: "tip"
43
44
  };
44
- const _hoisted_2 = { class: "slot-view" };
45
+ const _hoisted_3 = { class: "slot-view" };
45
46
  const _sfc_main = defineComponent({
46
47
  ...{ name: "emptyData" },
47
48
  __name: "component",
@@ -49,6 +50,7 @@ const _sfc_main = defineComponent({
49
50
  type: {},
50
51
  size: {},
51
52
  customTip: {},
53
+ customIcon: {},
52
54
  noTip: { type: Boolean }
53
55
  },
54
56
  setup(__props) {
@@ -81,9 +83,13 @@ const _sfc_main = defineComponent({
81
83
  key: 0,
82
84
  class: normalizeClass(["empty-data-container", { small: _ctx.size === "small" }])
83
85
  }, [
84
- (openBlock(), createBlock(resolveDynamicComponent(dynamicComponent.value))),
85
- !_ctx.noTip ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(_ctx.customTip ? _ctx.customTip : tipMap.value[_ctx.type]), 1)) : createCommentVNode("v-if", true),
86
- createElementVNode("div", _hoisted_2, [
86
+ _ctx.customIcon ? (openBlock(), createElementBlock("img", {
87
+ key: 0,
88
+ class: "custom-icon",
89
+ src: _ctx.customIcon
90
+ }, null, 8, _hoisted_1)) : (openBlock(), createBlock(resolveDynamicComponent(dynamicComponent.value), { key: 1 })),
91
+ !_ctx.noTip ? (openBlock(), createElementBlock("div", _hoisted_2, toDisplayString(_ctx.customTip ? _ctx.customTip : tipMap.value[_ctx.type]), 1)) : createCommentVNode("v-if", true),
92
+ createElementVNode("div", _hoisted_3, [
87
93
  renderSlot(_ctx.$slots, "extra")
88
94
  ])
89
95
  ], 2)) : createCommentVNode("v-if", true);
@@ -16,6 +16,9 @@
16
16
  .empty-data-container img {
17
17
  width: 100%;
18
18
  }
19
+ .empty-data-container .custom-icon {
20
+ width: 100%;
21
+ }
19
22
  .empty-data-container .tip {
20
23
  margin-top: 16px;
21
24
  color: #999eaa;
@@ -18,6 +18,10 @@
18
18
  width: 100%;
19
19
  }
20
20
 
21
+ .custom-icon {
22
+ width: 100%;
23
+ }
24
+
21
25
  .tip {
22
26
  margin-top: 16px;
23
27
  color: #999eaa;
@@ -0,0 +1,7 @@
1
+ import { Placement } from '@popperjs/core';
2
+ import { Ref } from 'vue';
3
+ export default function usePopper(pannel: Ref<HTMLElement | undefined>, triggerEl: Ref<HTMLElement | undefined>): {
4
+ initPopper: (placement?: Placement) => void;
5
+ show: () => void;
6
+ visible: Ref<boolean>;
7
+ };
@@ -0,0 +1,25 @@
1
+ import { createPopper } from "@popperjs/core";
2
+ import { ref } from "vue";
3
+ function usePopper(pannel, triggerEl) {
4
+ const visible = ref(false);
5
+ const show = () => {
6
+ visible.value = true;
7
+ window.onclick = (e) => {
8
+ visible.value = false;
9
+ window.onclick = null;
10
+ };
11
+ };
12
+ const initPopper = (placement = "bottom-start") => {
13
+ if (!pannel.value || !triggerEl.value)
14
+ return;
15
+ createPopper(triggerEl.value, pannel.value, {
16
+ placement
17
+ });
18
+ };
19
+ return {
20
+ initPopper,
21
+ show,
22
+ visible
23
+ };
24
+ }
25
+ export { usePopper as default };
package/es/index.css CHANGED
@@ -3140,6 +3140,9 @@
3140
3140
  .empty-data-container img {
3141
3141
  width: 100%;
3142
3142
  }
3143
+ .empty-data-container .custom-icon {
3144
+ width: 100%;
3145
+ }
3143
3146
  .empty-data-container .tip {
3144
3147
  margin-top: 16px;
3145
3148
  color: #999eaa;
@@ -3495,32 +3498,41 @@
3495
3498
  }
3496
3499
  .filter-view-container {
3497
3500
  display: flex;
3501
+ gap: 10px;
3498
3502
  align-items: center;
3503
+ justify-content: space-between;
3504
+ width: 100%;
3499
3505
  margin-bottom: 10px;
3500
3506
  font-size: 14px;
3501
3507
  }
3502
- .filter-view-container .filter-search {
3508
+ .filter-view-container .more-btn .right-prefix {
3503
3509
  display: flex;
3504
3510
  gap: 10px;
3505
- width: 180px;
3506
- margin-right: 10px;
3511
+ align-items: center;
3512
+ }
3513
+ .filter-view-container .more-btn .filter-pannel {
3514
+ display: flex;
3515
+ gap: 10px;
3516
+ padding: 10px;
3517
+ background-color: white;
3518
+ border-radius: 6px;
3519
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
3507
3520
  }
3508
3521
  .filter-view-container .filter-content {
3509
- position: relative;
3510
3522
  display: flex;
3511
3523
  flex: 1;
3512
3524
  align-items: center;
3513
3525
  justify-content: space-between;
3514
3526
  }
3515
- .filter-view-container .left {
3527
+ .filter-view-container .filter-content .left {
3516
3528
  display: flex;
3529
+ flex: 1;
3517
3530
  gap: 10px;
3518
- align-items: center;
3531
+ width: 100px;
3532
+ overflow: hidden;
3533
+ background-color: #fff;
3519
3534
  }
3520
- .filter-view-container .right {
3521
- position: absolute;
3522
- right: 0;
3523
- z-index: 1;
3535
+ .filter-view-container .filter-content .right {
3524
3536
  display: flex;
3525
3537
  flex-wrap: nowrap;
3526
3538
  align-items: center;
@@ -3528,23 +3540,6 @@
3528
3540
  padding-left: 20px;
3529
3541
  background: white;
3530
3542
  }
3531
- .filter-view-container .more-btn {
3532
- z-index: 10;
3533
- margin-right: 10px;
3534
- }
3535
- .filter-view-container .right-prefix {
3536
- display: flex;
3537
- gap: 10px;
3538
- align-items: center;
3539
- }
3540
- .filter-view-container .filter-pannel {
3541
- display: flex;
3542
- gap: 10px;
3543
- padding: 10px;
3544
- background-color: white;
3545
- border-radius: 6px;
3546
- box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
3547
- }
3548
3543
  .base-filter-container {
3549
3544
  display: flex;
3550
3545
  align-items: center;
@@ -126,6 +126,11 @@ const _sfc_main = vue.defineComponent({
126
126
  );
127
127
  return (_ctx, _cache) => {
128
128
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
129
+ vue.createElementVNode("div", {
130
+ id: "base-filter-popup-container",
131
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
132
+ }, ["stop"]))
133
+ }),
129
134
  vue.createVNode(FilterGroup, null, {
130
135
  left: vue.withCtx(() => [
131
136
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(renderColumns.value, (item, index) => {
@@ -147,6 +152,7 @@ const _sfc_main = vue.defineComponent({
147
152
  key: 1,
148
153
  modelValue: form.value[item.key],
149
154
  "onUpdate:modelValue": ($event) => form.value[item.key] = $event,
155
+ "popup-container": "#base-filter-popup-container",
150
156
  "allow-clear": "",
151
157
  style: vue.normalizeStyle({ width: styleWidth(columnsMap.value[item.key]) }),
152
158
  placeholder: `\u8BF7\u9009\u62E9${item.label}`
@@ -168,7 +174,8 @@ const _sfc_main = vue.defineComponent({
168
174
  "onUpdate:modelValue": ($event) => form.value[item.key].range = $event,
169
175
  style: vue.normalizeStyle({ width: styleWidth(form.value[item.key]) }),
170
176
  "value-format": "timestamp",
171
- onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
177
+ "popup-container": "#base-filter-popup-container",
178
+ onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
172
179
  }, ["stop"]))
173
180
  }, null, 8, ["modelValue", "onUpdate:modelValue", "style"])) : vue.createCommentVNode("v-if", true)
174
181
  ]),
@@ -180,9 +187,8 @@ const _sfc_main = vue.defineComponent({
180
187
  vue.renderSlot(_ctx.$slots, "right")
181
188
  ]),
182
189
  _: 3
183
- }),
184
- vue.createCommentVNode(' <div class="base-filter-container">\n <div class="left">\n <div v-if="render" class="form-ul">\n <template v-for="(item, index) in renderColumns" :key="index">\n <filter-item :active="hasValue(item.key)">\n <a-input-search\n v-if="item.component === \'input\'"\n v-model="form[item.key]"\n :style="{ width: styleWidth(columnsMap[item.key]) }"\n allow-clear\n size="medium"\n :placeholder="`\u8BF7\u8F93\u5165${item.label}`"\n />\n <a-select\n v-if="item.component === \'select\'"\n v-model="form[item.key]"\n allow-clear\n :style="{ width: styleWidth(columnsMap[item.key]) }"\n :placeholder="`\u8BF7\u9009\u62E9${item.label}`"\n >\n <template v-for="opt in getOptions(item)" :key="opt.value">\n <a-option :label="opt.label" :value="opt.value"></a-option\n ></template>\n </a-select>\n <a-range-picker\n v-if="item.component === \'range-picker\'"\n v-model="form[item.key].range"\n :style="{ width: styleWidth(form[item.key]) }"\n value-format="timestamp"\n @click.stop\n />\n </filter-item>\n </template>\n </div>\n </div>\n <div class="right">\n <slot name="right"></slot>\n </div>\n </div> ')
185
- ], 2112);
190
+ })
191
+ ], 64);
186
192
  };
187
193
  }
188
194
  });