huiyi-select-table 0.1.22 → 0.1.24

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.
Binary file
@@ -1,21 +1,21 @@
1
- import { defineComponent as K, openBlock as h, createElementBlock as V, createElementVNode as B, ref as i, watch as ee, onMounted as F, nextTick as g, computed as ne, onUnmounted as le, resolveComponent as R, createVNode as T, unref as y, isRef as te, withCtx as L, normalizeClass as oe, createBlock as E, Teleport as N, normalizeStyle as ae, Fragment as re, renderList as ue, createCommentVNode as q } from "vue";
1
+ import { defineComponent as q, openBlock as L, createElementBlock as B, createElementVNode as D, ref as d, watch as Q, onMounted as O, nextTick as _, computed as Z, onUnmounted as ee, resolveComponent as C, createVNode as S, unref as x, isRef as ne, withCtx as V, normalizeClass as le, withDirectives as te, normalizeStyle as oe, Fragment as ae, renderList as re, createBlock as se, vShow as ue } from "vue";
2
2
  /*! Element Plus Icons Vue v2.3.2 */
3
- var se = /* @__PURE__ */ K({
3
+ var ce = /* @__PURE__ */ q({
4
4
  name: "ArrowDown",
5
5
  __name: "arrow-down",
6
- setup(u) {
7
- return (f, _) => (h(), V("svg", {
6
+ setup(c) {
7
+ return (f, g) => (L(), B("svg", {
8
8
  xmlns: "http://www.w3.org/2000/svg",
9
9
  viewBox: "0 0 1024 1024"
10
10
  }, [
11
- B("path", {
11
+ D("path", {
12
12
  fill: "currentColor",
13
13
  d: "M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"
14
14
  })
15
15
  ]));
16
16
  }
17
- }), ce = se;
18
- const ie = /* @__PURE__ */ K({
17
+ }), ie = ce;
18
+ const de = { class: "dropdown-overlay" }, fe = /* @__PURE__ */ q({
19
19
  name: "InputSelectCompont",
20
20
  __name: "SelectTable",
21
21
  props: {
@@ -30,250 +30,255 @@ const ie = /* @__PURE__ */ K({
30
30
  column: Array
31
31
  },
32
32
  emits: ["getInputRef", "handleChangeSelectValue"],
33
- setup(u, { emit: f }) {
34
- const _ = f, l = u;
35
- let d = i(), p = i(""), C = i(), D = i(), r = i(!1), M = i({
33
+ setup(c, { emit: f }) {
34
+ const g = f, l = c;
35
+ let s = d(), p = d(""), k = d(), I = d(), u = d(!1), M = d({
36
36
  top: "0px",
37
- left: "0px"
38
- // width: "0px",
39
- }), t = i(-1), b = i(!1), I = i(!1);
40
- ee(
37
+ left: "0px",
38
+ minWidth: "100%"
39
+ }), o = d(-1), h = d(!1), T = d(!1);
40
+ Q(
41
41
  () => l.value,
42
42
  (e) => {
43
43
  p.value = e || "";
44
44
  },
45
45
  { immediate: !0 }
46
- ), F(() => {
47
- g(() => {
48
- _("getInputRef", C.value);
46
+ ), O(() => {
47
+ _(() => {
48
+ g("getInputRef", k.value);
49
49
  });
50
50
  });
51
- const k = () => {
52
- if (!D.value)
51
+ const y = () => {
52
+ if (!I.value)
53
53
  return;
54
- const e = D.value.getBoundingClientRect(), n = window.pageYOffset || document.documentElement.scrollTop, a = window.pageXOffset || document.documentElement.scrollLeft;
54
+ const e = I.value.getBoundingClientRect(), n = window.pageYOffset || document.documentElement.scrollTop, t = window.pageXOffset || document.documentElement.scrollLeft;
55
55
  M.value = {
56
56
  top: `${e.bottom + n}px`,
57
- left: `${e.left + a}px`
57
+ left: `${e.left + t}px`
58
58
  // width: `${rect.width}px`,
59
59
  };
60
- }, S = ne(() => {
61
- const e = l.column?.map((c) => c.prop) || [
60
+ }, b = Z(() => {
61
+ const e = l.column?.map((r) => r.prop) || [
62
62
  "name",
63
63
  "engname",
64
64
  "spell",
65
65
  "zjm",
66
66
  "infoOrder"
67
- ], n = l.options || [], a = p.value || "";
68
- return t.value = -1, g(() => {
69
- const c = l.options || [], w = c.find((m) => m.name === l.value);
70
- if (d.value && d.value.setCurrentRow(w), w) {
71
- const m = O(
67
+ ], n = l.options || [], t = p.value || "";
68
+ return o.value = -1, _(() => {
69
+ const r = l.options || [], w = r.find((m) => m.name === l.value);
70
+ if (s.value && s.value.setCurrentRow(w), w) {
71
+ const m = F(
72
72
  e,
73
- a,
74
- c
73
+ t,
74
+ r
75
75
  );
76
- t.value = m.findIndex(
77
- (o) => o.name === w.name
76
+ o.value = m.findIndex(
77
+ (a) => a.name === w.name
78
78
  );
79
79
  }
80
- }), O(e, a, n);
81
- }), U = (e) => {
82
- e?.stopPropagation(), !l.readonly && (r.value ? s() : v());
83
- }, Y = () => {
80
+ }), F(e, t, n);
81
+ }), K = (e) => {
82
+ e?.stopPropagation(), !l.readonly && (u.value ? i() : v());
83
+ }, N = () => {
84
84
  if (l.readonly) {
85
- s();
85
+ i();
86
86
  return;
87
87
  }
88
- r.value || v(), t.value = -1;
88
+ u.value ? E() : v(), o.value = -1;
89
89
  }, v = () => {
90
- l.readonly || I.value || (I.value = !0, r.value = !0, g(() => {
91
- k(), b.value = !1, setTimeout(() => {
92
- I.value = !1;
90
+ l.readonly || T.value || (T.value = !0, u.value = !0, _(() => {
91
+ y(), h.value = !1, E(), setTimeout(() => {
92
+ T.value = !1;
93
93
  }, 100);
94
94
  }));
95
- }, s = () => {
96
- r.value = !1, b.value = !1;
95
+ }, i = () => {
96
+ u.value = !1, h.value = !1;
97
97
  }, z = (e) => {
98
- p.value = e.name, s(), g(() => {
99
- C.value?.focus();
100
- }), _("handleChangeSelectValue", {
98
+ p.value = e.name, i(), _(() => {
99
+ k.value?.focus();
100
+ }), g("handleChangeSelectValue", {
101
101
  valueCode: e.code,
102
102
  value: e.name,
103
- index: l.itemIndex ? l.itemIndex : ""
103
+ index: l.itemIndex ? l.itemIndex : "",
104
+ row: e
104
105
  });
105
- }, $ = (e) => {
106
- b.value = !0, e.preventDefault();
107
- }, j = (e) => {
108
- e.stopPropagation(), s();
109
- }, H = async () => {
106
+ }, U = (e) => {
107
+ h.value = !0, e.preventDefault();
108
+ }, Y = (e) => {
109
+ e.stopPropagation(), i();
110
+ }, $ = async () => {
110
111
  if (console.log("handleInput"), l.readonly) {
111
- s();
112
+ i();
112
113
  return;
113
114
  }
114
- v(), t.value = -1;
115
- }, X = () => {
115
+ v(), o.value = -1;
116
+ }, j = () => {
116
117
  if (console.log("handleFocus"), l.readonly) {
117
- s();
118
+ i();
118
119
  return;
119
120
  }
120
- r.value || v(), t.value = -1;
121
- }, G = () => {
122
- console.log("handleBlur", b.value), setTimeout(() => {
123
- if (b.value) {
124
- g(() => {
125
- C.value?.focus();
121
+ console.log("handleFocus 111"), u.value ? E() : v(), o.value = -1;
122
+ }, H = () => {
123
+ console.log("handleBlur", h.value), setTimeout(() => {
124
+ if (h.value) {
125
+ _(() => {
126
+ k.value?.focus();
126
127
  });
127
128
  return;
128
129
  }
129
- s();
130
+ i();
130
131
  }, 150);
131
- }, J = (e) => {
132
- S.value.length !== 0 && (e.key === "ArrowDown" ? (e.preventDefault(), r.value || v(), P(1)) : e.key === "ArrowUp" ? (e.preventDefault(), r.value || v(), P(-1)) : e.key === "Enter" ? (e.preventDefault(), r.value ? Q() : v()) : (e.key === "Escape" || e.key === "Tab") && s());
132
+ }, W = (e) => {
133
+ b.value.length !== 0 && (e.key === "ArrowDown" ? (e.preventDefault(), u.value || v(), P(1)) : e.key === "ArrowUp" ? (e.preventDefault(), u.value || v(), P(-1)) : e.key === "Enter" ? (e.preventDefault(), u.value ? X() : v()) : (e.key === "Escape" || e.key === "Tab") && i());
133
134
  }, P = (e) => {
134
- const n = S.value;
135
+ const n = b.value;
135
136
  if (n.length === 0)
136
137
  return;
137
- t.value === -1 ? e === 1 ? t.value = 0 : t.value = n.length - 1 : (t.value += e, t.value < 0 ? t.value = n.length - 1 : t.value >= n.length && (t.value = 0));
138
- const a = n[t.value];
139
- d.value && d.value.setCurrentRow(a), W();
140
- }, Q = () => {
141
- const e = S.value;
142
- if (e.length === 0 || t.value === -1)
138
+ o.value === -1 ? e === 1 ? o.value = 0 : o.value = n.length - 1 : (o.value += e, o.value < 0 ? o.value = n.length - 1 : o.value >= n.length && (o.value = 0));
139
+ const t = n[o.value];
140
+ s.value && s.value.setCurrentRow(t), G();
141
+ }, X = () => {
142
+ const e = b.value;
143
+ if (e.length === 0 || o.value === -1)
143
144
  return;
144
- const n = e[t.value];
145
+ const n = e[o.value];
145
146
  z(n);
146
- }, W = () => {
147
- g(() => {
148
- const e = d.value;
147
+ }, G = () => {
148
+ _(() => {
149
+ const e = s.value;
149
150
  if (!e)
150
151
  return;
151
152
  const n = e.$el.querySelector(".el-table__body-wrapper");
152
153
  if (!n)
153
154
  return;
154
- const a = n.querySelector(".current-row");
155
- a && a.scrollIntoView({
155
+ const t = n.querySelector(".current-row");
156
+ t && t.scrollIntoView({
156
157
  behavior: "smooth",
157
158
  block: "nearest"
158
159
  });
159
160
  });
160
- }, O = (e, n, a) => {
161
- const c = n.trim().toLowerCase();
162
- return c ? a.filter(
161
+ }, E = () => {
162
+ _(() => {
163
+ const n = (l.options || []).find((t) => t.name === l.value);
164
+ if (console.log("targetRow", n), s.value && s.value.setCurrentRow(n), n) {
165
+ const t = b.value;
166
+ o.value = t.findIndex(
167
+ (r) => r.name === n.name
168
+ );
169
+ }
170
+ });
171
+ }, F = (e, n, t) => {
172
+ const r = n.trim().toLowerCase();
173
+ return r ? t.filter(
163
174
  (w) => e.some((m) => {
164
- const o = w[m];
165
- return o == null && o !== 0 ? !1 : String(o).toLowerCase().includes(c);
175
+ const a = w[m];
176
+ return a == null && a !== 0 ? !1 : String(a).toLowerCase().includes(r);
166
177
  })
167
- ) : a;
178
+ ) : t;
168
179
  };
169
- return F(() => {
170
- window.addEventListener("resize", k), window.addEventListener("scroll", k, !0);
171
- }), le(() => {
172
- window.removeEventListener("resize", k), window.removeEventListener("scroll", k, !0);
180
+ return O(() => {
181
+ window.addEventListener("resize", y), window.addEventListener("scroll", y, !0);
182
+ }), ee(() => {
183
+ window.removeEventListener("resize", y), window.removeEventListener("scroll", y, !0);
173
184
  }), (e, n) => {
174
- const a = R("el-icon"), c = R("el-input"), w = R("el-table-column"), m = R("el-table");
175
- return h(), V("div", {
185
+ const t = C("el-icon"), r = C("el-input"), w = C("el-table-column"), m = C("el-table");
186
+ return L(), B("div", {
176
187
  class: "custom-dropdown",
177
188
  ref_key: "dropdownRef",
178
- ref: D
189
+ ref: I
179
190
  }, [
180
- T(c, {
181
- modelValue: y(p),
182
- "onUpdate:modelValue": n[0] || (n[0] = (o) => te(p) ? p.value = o : p = o),
191
+ S(r, {
192
+ modelValue: x(p),
193
+ "onUpdate:modelValue": n[0] || (n[0] = (a) => ne(p) ? p.value = a : p = a),
183
194
  ref_key: "inputValueRef",
184
- ref: C,
195
+ ref: k,
185
196
  readonly: l.readonly,
186
- onInput: H,
187
- onKeydown: J,
188
- onFocus: X,
189
- onBlur: G,
190
- onClick: Y
197
+ onInput: $,
198
+ onKeydown: W,
199
+ onFocus: j,
200
+ onBlur: H,
201
+ onClick: N
191
202
  }, {
192
- suffix: L(() => [
193
- T(a, {
194
- class: oe(["el-input__icon dropdown-arrow", { "dropdown-arrow--open": y(r) }]),
195
- onClick: U
203
+ suffix: V(() => [
204
+ S(t, {
205
+ class: le(["el-input__icon dropdown-arrow", { "dropdown-arrow--open": x(u) }]),
206
+ onClick: K
196
207
  }, {
197
- default: L(() => [
198
- T(y(ce))
208
+ default: V(() => [
209
+ S(x(ie))
199
210
  ]),
200
211
  _: 1
201
212
  }, 8, ["class"])
202
213
  ]),
203
214
  _: 1
204
215
  }, 8, ["modelValue", "readonly"]),
205
- y(r) ? (h(), E(N, {
206
- key: 0,
207
- to: "body"
208
- }, [
209
- B("div", {
216
+ te(D("div", de, [
217
+ D("div", {
210
218
  class: "dropdown-panel",
211
- style: ae(y(M)),
212
- onMousedown: $
219
+ style: oe(x(M)),
220
+ onMousedown: U
213
221
  }, [
214
- T(m, {
222
+ S(m, {
215
223
  border: "",
216
- data: S.value,
224
+ data: b.value,
217
225
  "highlight-current-row": "",
218
226
  ref_key: "tableRef",
219
- ref: d,
227
+ ref: s,
220
228
  "max-height": "200px",
221
229
  onRowClick: z,
222
230
  style: { width: "100%" }
223
231
  }, {
224
- default: L(() => [
225
- (h(!0), V(re, null, ue(l.column, (o, Z) => (h(), E(w, {
226
- key: Z,
227
- prop: o.prop,
228
- label: o.label,
229
- width: o.width,
230
- align: o.align,
231
- type: o.type,
232
- "header-align": o.headerAlign
232
+ default: V(() => [
233
+ (L(!0), B(ae, null, re(l.column, (a, J) => (L(), se(w, {
234
+ key: J,
235
+ prop: a.prop,
236
+ label: a.label,
237
+ width: a.width,
238
+ align: a.align,
239
+ type: a.type,
240
+ "header-align": a.headerAlign
233
241
  }, null, 8, ["prop", "label", "width", "align", "type", "header-align"]))), 128))
234
242
  ]),
235
243
  _: 1
236
244
  }, 8, ["data"])
237
- ], 36)
238
- ])) : q("", !0),
239
- y(r) ? (h(), E(N, {
240
- key: 1,
241
- to: "body"
242
- }, [
243
- B("div", {
245
+ ], 36),
246
+ D("div", {
244
247
  class: "dropdown-mask",
245
- onMousedown: j
248
+ onMousedown: Y
246
249
  }, null, 32)
247
- ])) : q("", !0)
250
+ ], 512), [
251
+ [ue, x(u)]
252
+ ])
248
253
  ], 512);
249
254
  };
250
255
  }
251
256
  });
252
- const de = (u, f) => {
253
- const _ = u.__vccOpts || u;
254
- for (const [l, d] of f)
255
- _[l] = d;
256
- return _;
257
- }, x = /* @__PURE__ */ de(ie, [["__scopeId", "data-v-2301dea2"]]);
258
- x.install = (u) => {
259
- u.component(x.name, x);
257
+ const pe = (c, f) => {
258
+ const g = c.__vccOpts || c;
259
+ for (const [l, s] of f)
260
+ g[l] = s;
261
+ return g;
262
+ }, R = /* @__PURE__ */ pe(fe, [["__scopeId", "data-v-398878f9"]]);
263
+ R.install = (c) => {
264
+ c.component(R.name, R);
260
265
  };
261
- const fe = [
262
- x
263
- ], A = function(u) {
264
- A.installed || fe.forEach((f) => {
265
- u.component(f.name, f);
266
+ const ve = [
267
+ R
268
+ ], A = function(c) {
269
+ A.installed || ve.forEach((f) => {
270
+ c.component(f.name, f);
266
271
  });
267
272
  };
268
273
  typeof window < "u" && window.Vue && A(window.Vue);
269
- const ve = {
274
+ const me = {
270
275
  // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
271
276
  install: A,
272
277
  // 以下是具体的组件列表
273
- SelectTable: x
278
+ SelectTable: R
274
279
  };
275
280
  export {
276
- x as SelectTable,
277
- ve as default,
281
+ R as SelectTable,
282
+ me as default,
278
283
  A as install
279
284
  };
@@ -1 +1 @@
1
- (function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c.HuiyiSelectTable={},c.Vue))})(this,function(c,e){"use strict";const $="";/*! Element Plus Icons Vue v2.3.2 */var D=e.defineComponent({name:"ArrowDown",__name:"arrow-down",setup(i){return(p,g)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),I=D;const L=e.defineComponent({name:"InputSelectCompont",__name:"SelectTable",props:{options:Array,readonly:Boolean,required:Boolean,value:String,itemIndex:{type:[String,Number,null],default:null},column:Array},emits:["getInputRef","handleChangeSelectValue"],setup(i,{emit:p}){const g=p,o=i;let f=e.ref(),m=e.ref(""),C=e.ref(),S=e.ref(),s=e.ref(!1),B=e.ref({top:"0px",left:"0px"}),l=e.ref(-1),k=e.ref(!1),v=e.ref(!1);e.watch(()=>o.value,n=>{m.value=n||""},{immediate:!0}),e.onMounted(()=>{e.nextTick(()=>{g("getInputRef",C.value)})});const b=()=>{if(!S.value)return;const n=S.value.getBoundingClientRect(),t=window.pageYOffset||document.documentElement.scrollTop,r=window.pageXOffset||document.documentElement.scrollLeft;B.value={top:`${n.bottom+t}px`,left:`${n.left+r}px`}},T=e.computed(()=>{const n=o.column?.map(u=>u.prop)||["name","engname","spell","zjm","infoOrder"],t=o.options||[],r=m.value||"";return l.value=-1,e.nextTick(()=>{const u=o.options||[],_=u.find(y=>y.name===o.value);if(f.value&&f.value.setCurrentRow(_),_){const y=E(n,r,u);l.value=y.findIndex(a=>a.name===_.name)}}),E(n,r,t)}),A=n=>{n?.stopPropagation(),!o.readonly&&(s.value?d():w())},P=()=>{if(o.readonly){d();return}s.value||w(),l.value=-1},w=()=>{o.readonly||v.value||(v.value=!0,s.value=!0,e.nextTick(()=>{b(),k.value=!1,setTimeout(()=>{v.value=!1},100)}))},d=()=>{s.value=!1,k.value=!1},R=n=>{m.value=n.name,d(),e.nextTick(()=>{C.value?.focus()}),g("handleChangeSelectValue",{valueCode:n.code,value:n.name,index:o.itemIndex?o.itemIndex:""})},z=n=>{k.value=!0,n.preventDefault()},O=n=>{n.stopPropagation(),d()},q=async()=>{if(console.log("handleInput"),o.readonly){d();return}w(),l.value=-1},F=()=>{if(console.log("handleFocus"),o.readonly){d();return}s.value||w(),l.value=-1},j=()=>{console.log("handleBlur",k.value),setTimeout(()=>{if(k.value){e.nextTick(()=>{C.value?.focus()});return}d()},150)},K=n=>{T.value.length!==0&&(n.key==="ArrowDown"?(n.preventDefault(),s.value||w(),V(1)):n.key==="ArrowUp"?(n.preventDefault(),s.value||w(),V(-1)):n.key==="Enter"?(n.preventDefault(),s.value?U():w()):(n.key==="Escape"||n.key==="Tab")&&d())},V=n=>{const t=T.value;if(t.length===0)return;l.value===-1?n===1?l.value=0:l.value=t.length-1:(l.value+=n,l.value<0?l.value=t.length-1:l.value>=t.length&&(l.value=0));const r=t[l.value];f.value&&f.value.setCurrentRow(r),H()},U=()=>{const n=T.value;if(n.length===0||l.value===-1)return;const t=n[l.value];R(t)},H=()=>{e.nextTick(()=>{const n=f.value;if(!n)return;const t=n.$el.querySelector(".el-table__body-wrapper");if(!t)return;const r=t.querySelector(".current-row");r&&r.scrollIntoView({behavior:"smooth",block:"nearest"})})},E=(n,t,r)=>{const u=t.trim().toLowerCase();return u?r.filter(_=>n.some(y=>{const a=_[y];return a==null&&a!==0?!1:String(a).toLowerCase().includes(u)})):r};return e.onMounted(()=>{window.addEventListener("resize",b),window.addEventListener("scroll",b,!0)}),e.onUnmounted(()=>{window.removeEventListener("resize",b),window.removeEventListener("scroll",b,!0)}),(n,t)=>{const r=e.resolveComponent("el-icon"),u=e.resolveComponent("el-input"),_=e.resolveComponent("el-table-column"),y=e.resolveComponent("el-table");return e.openBlock(),e.createElementBlock("div",{class:"custom-dropdown",ref_key:"dropdownRef",ref:S},[e.createVNode(u,{modelValue:e.unref(m),"onUpdate:modelValue":t[0]||(t[0]=a=>e.isRef(m)?m.value=a:m=a),ref_key:"inputValueRef",ref:C,readonly:o.readonly,onInput:q,onKeydown:K,onFocus:F,onBlur:j,onClick:P},{suffix:e.withCtx(()=>[e.createVNode(r,{class:e.normalizeClass(["el-input__icon dropdown-arrow",{"dropdown-arrow--open":e.unref(s)}]),onClick:A},{default:e.withCtx(()=>[e.createVNode(e.unref(I))]),_:1},8,["class"])]),_:1},8,["modelValue","readonly"]),e.unref(s)?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:"body"},[e.createElementVNode("div",{class:"dropdown-panel",style:e.normalizeStyle(e.unref(B)),onMousedown:z},[e.createVNode(y,{border:"",data:T.value,"highlight-current-row":"",ref_key:"tableRef",ref:f,"max-height":"200px",onRowClick:R,style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.column,(a,Y)=>(e.openBlock(),e.createBlock(_,{key:Y,prop:a.prop,label:a.label,width:a.width,align:a.align,type:a.type,"header-align":a.headerAlign},null,8,["prop","label","width","align","type","header-align"]))),128))]),_:1},8,["data"])],36)])):e.createCommentVNode("",!0),e.unref(s)?(e.openBlock(),e.createBlock(e.Teleport,{key:1,to:"body"},[e.createElementVNode("div",{class:"dropdown-mask",onMousedown:O},null,32)])):e.createCommentVNode("",!0)],512)}}}),X="",h=((i,p)=>{const g=i.__vccOpts||i;for(const[o,f]of p)g[o]=f;return g})(L,[["__scopeId","data-v-2301dea2"]]);h.install=i=>{i.component(h.name,h)};const M=[h],x=function(i){x.installed||M.forEach(p=>{i.component(p.name,p)})};typeof window<"u"&&window.Vue&&x(window.Vue);const N={install:x,SelectTable:h};c.SelectTable=h,c.default=N,c.install=x,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(d,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(d=typeof globalThis<"u"?globalThis:d||self,e(d.HuiyiSelectTable={},d.Vue))})(this,function(d,e){"use strict";const X="";/*! Element Plus Icons Vue v2.3.2 */var D=e.defineComponent({name:"ArrowDown",__name:"arrow-down",setup(u){return(p,y)=>(e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e.createElementVNode("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),I=D;const M={class:"dropdown-overlay"},N=e.defineComponent({name:"InputSelectCompont",__name:"SelectTable",props:{options:Array,readonly:Boolean,required:Boolean,value:String,itemIndex:{type:[String,Number,null],default:null},column:Array},emits:["getInputRef","handleChangeSelectValue"],setup(u,{emit:p}){const y=p,o=u;let c=e.ref(),m=e.ref(""),C=e.ref(),S=e.ref(),i=e.ref(!1),V=e.ref({top:"0px",left:"0px",minWidth:"100%"}),a=e.ref(-1),v=e.ref(!1),T=e.ref(!1);e.watch(()=>o.value,n=>{m.value=n||""},{immediate:!0}),e.onMounted(()=>{e.nextTick(()=>{y("getInputRef",C.value)})});const k=()=>{if(!S.value)return;const n=S.value.getBoundingClientRect(),t=window.pageYOffset||document.documentElement.scrollTop,l=window.pageXOffset||document.documentElement.scrollLeft;V.value={top:`${n.bottom+t}px`,left:`${n.left+l}px`}},x=e.computed(()=>{const n=o.column?.map(s=>s.prop)||["name","engname","spell","zjm","infoOrder"],t=o.options||[],l=m.value||"";return a.value=-1,e.nextTick(()=>{const s=o.options||[],_=s.find(h=>h.name===o.value);if(c.value&&c.value.setCurrentRow(_),_){const h=B(n,l,s);a.value=h.findIndex(r=>r.name===_.name)}}),B(n,l,t)}),z=n=>{n?.stopPropagation(),!o.readonly&&(i.value?f():w())},O=()=>{if(o.readonly){f();return}i.value?R():w(),a.value=-1},w=()=>{o.readonly||T.value||(T.value=!0,i.value=!0,e.nextTick(()=>{k(),v.value=!1,R(),setTimeout(()=>{T.value=!1},100)}))},f=()=>{i.value=!1,v.value=!1},E=n=>{m.value=n.name,f(),e.nextTick(()=>{C.value?.focus()}),y("handleChangeSelectValue",{valueCode:n.code,value:n.name,index:o.itemIndex?o.itemIndex:"",row:n})},F=n=>{v.value=!0,n.preventDefault()},q=n=>{n.stopPropagation(),f()},j=async()=>{if(console.log("handleInput"),o.readonly){f();return}w(),a.value=-1},K=()=>{if(console.log("handleFocus"),o.readonly){f();return}console.log("handleFocus 111"),i.value?R():w(),a.value=-1},U=()=>{console.log("handleBlur",v.value),setTimeout(()=>{if(v.value){e.nextTick(()=>{C.value?.focus()});return}f()},150)},H=n=>{x.value.length!==0&&(n.key==="ArrowDown"?(n.preventDefault(),i.value||w(),L(1)):n.key==="ArrowUp"?(n.preventDefault(),i.value||w(),L(-1)):n.key==="Enter"?(n.preventDefault(),i.value?Y():w()):(n.key==="Escape"||n.key==="Tab")&&f())},L=n=>{const t=x.value;if(t.length===0)return;a.value===-1?n===1?a.value=0:a.value=t.length-1:(a.value+=n,a.value<0?a.value=t.length-1:a.value>=t.length&&(a.value=0));const l=t[a.value];c.value&&c.value.setCurrentRow(l),$()},Y=()=>{const n=x.value;if(n.length===0||a.value===-1)return;const t=n[a.value];E(t)},$=()=>{e.nextTick(()=>{const n=c.value;if(!n)return;const t=n.$el.querySelector(".el-table__body-wrapper");if(!t)return;const l=t.querySelector(".current-row");l&&l.scrollIntoView({behavior:"smooth",block:"nearest"})})},R=()=>{e.nextTick(()=>{const t=(o.options||[]).find(l=>l.name===o.value);if(console.log("targetRow",t),c.value&&c.value.setCurrentRow(t),t){const l=x.value;a.value=l.findIndex(s=>s.name===t.name)}})},B=(n,t,l)=>{const s=t.trim().toLowerCase();return s?l.filter(_=>n.some(h=>{const r=_[h];return r==null&&r!==0?!1:String(r).toLowerCase().includes(s)})):l};return e.onMounted(()=>{window.addEventListener("resize",k),window.addEventListener("scroll",k,!0)}),e.onUnmounted(()=>{window.removeEventListener("resize",k),window.removeEventListener("scroll",k,!0)}),(n,t)=>{const l=e.resolveComponent("el-icon"),s=e.resolveComponent("el-input"),_=e.resolveComponent("el-table-column"),h=e.resolveComponent("el-table");return e.openBlock(),e.createElementBlock("div",{class:"custom-dropdown",ref_key:"dropdownRef",ref:S},[e.createVNode(s,{modelValue:e.unref(m),"onUpdate:modelValue":t[0]||(t[0]=r=>e.isRef(m)?m.value=r:m=r),ref_key:"inputValueRef",ref:C,readonly:o.readonly,onInput:j,onKeydown:H,onFocus:K,onBlur:U,onClick:O},{suffix:e.withCtx(()=>[e.createVNode(l,{class:e.normalizeClass(["el-input__icon dropdown-arrow",{"dropdown-arrow--open":e.unref(i)}]),onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(I))]),_:1},8,["class"])]),_:1},8,["modelValue","readonly"]),e.withDirectives(e.createElementVNode("div",M,[e.createElementVNode("div",{class:"dropdown-panel",style:e.normalizeStyle(e.unref(V)),onMousedown:F},[e.createVNode(h,{border:"",data:x.value,"highlight-current-row":"",ref_key:"tableRef",ref:c,"max-height":"200px",onRowClick:E,style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.column,(r,W)=>(e.openBlock(),e.createBlock(_,{key:W,prop:r.prop,label:r.label,width:r.width,align:r.align,type:r.type,"header-align":r.headerAlign},null,8,["prop","label","width","align","type","header-align"]))),128))]),_:1},8,["data"])],36),e.createElementVNode("div",{class:"dropdown-mask",onMousedown:q},null,32)],512),[[e.vShow,e.unref(i)]])],512)}}}),G="",g=((u,p)=>{const y=u.__vccOpts||u;for(const[o,c]of p)y[o]=c;return y})(N,[["__scopeId","data-v-398878f9"]]);g.install=u=>{u.component(g.name,g)};const A=[g],b=function(u){b.installed||A.forEach(p=>{u.component(p.name,p)})};typeof window<"u"&&window.Vue&&b(window.Vue);const P={install:b,SelectTable:g};d.SelectTable=g,d.default=P,d.install=b,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "huiyi-select-table",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "A Vue.js select table component",
5
5
  "main": "huiyi-select-table.umd.js",
6
6
  "module": "huiyi-select-table.mjs",
package/style.css CHANGED
@@ -1 +1 @@
1
- .custom-dropdown[data-v-2301dea2]{position:relative;width:100%}.dropdown-panel[data-v-2301dea2]{position:fixed;z-index:9999;background:white;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px #0000001a;margin-top:4px;box-sizing:border-box;max-height:200px;overflow:hidden}.dropdown-mask[data-v-2301dea2]{position:fixed;inset:0;z-index:9998;background:transparent}.dropdown-arrow[data-v-2301dea2]{cursor:pointer;transition:transform .3s}.dropdown-arrow--open[data-v-2301dea2]{transform:rotate(180deg)}
1
+ .custom-dropdown[data-v-398878f9]{position:relative;width:100%;display:flex}.dropdown-overlay[data-v-398878f9]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9998;pointer-events:none}.dropdown-panel[data-v-398878f9]{position:absolute;z-index:9999;background:white;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px #0000001a;margin-top:4px;box-sizing:border-box;max-height:200px;overflow:hidden;pointer-events:auto}.dropdown-mask[data-v-398878f9]{position:absolute;inset:0;z-index:9998;background:transparent;pointer-events:auto}.dropdown-arrow[data-v-398878f9]{cursor:pointer;transition:transform .3s}.dropdown-arrow--open[data-v-398878f9]{transform:rotate(180deg)}
Binary file