efront 3.7.5 → 3.7.9

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 (42) hide show
  1. package/apps/kugou/api.js +1 -1
  2. package/apps/kugou/index.html +3 -0
  3. package/apps/pivot/api.yml +2 -2
  4. package/apps/pivot/auth/login.js +0 -1
  5. package/apps/pivot/link/list.html +2 -2
  6. package/apps/pivot/link/list.js +6 -6
  7. package/apps/pivot/link/list.less +5 -0
  8. package/apps/pivot/menu.yml +9 -5
  9. package/apps/pivot/task/edit.js +1 -0
  10. package/apps/pivot/task/list.js +6 -0
  11. package/apps/pivot/tick/list.js +5 -0
  12. package/apps/pivot/token/edit.js +1 -10
  13. package/apps/pivot/token/list.js +2 -9
  14. package/coms/crypt/encode62.js +1 -1
  15. package/coms/frame/list.js +36 -34
  16. package/coms/frame/list.less +3 -1
  17. package/coms/kugou/buildScroll.less +3 -0
  18. package/coms/pivot/pedit.js +13 -0
  19. package/coms/pivot/plist.js +13 -0
  20. package/coms/zimoli/LoadingArray.js +27 -0
  21. package/coms/zimoli/bggrid-func.less +16 -0
  22. package/coms/zimoli/color.js +18 -4
  23. package/coms/zimoli/colorlabel.js +3 -2
  24. package/coms/zimoli/colorlabel.less +24 -3
  25. package/coms/zimoli/colorpad.html +4 -0
  26. package/coms/zimoli/colorpad.js +120 -103
  27. package/coms/zimoli/colorpad.less +49 -47
  28. package/coms/zimoli/colorpicker.js +1 -1
  29. package/coms/zimoli/data.js +13 -1
  30. package/coms/zimoli/model.js +22 -2
  31. package/coms/zimoli/popup.js +2 -2
  32. package/coms/zimoli/render.js +2 -1
  33. package/coms/zimoli/select.js +3 -3
  34. package/coms/zimoli/selectList.js +35 -24
  35. package/coms/zimoli/selectList.less +4 -0
  36. package/coms/zimoli/selectListEdit.js +0 -1
  37. package/coms/zimoli/swap.less +1 -1
  38. package/coms/zimoli/table.html +2 -2
  39. package/coms/zimoli/table.js +1 -0
  40. package/package.json +1 -1
  41. package/public/efront.js +1 -1
  42. package/coms/zimoli/LoadingArray.ts +0 -14
@@ -13,12 +13,6 @@ var rgb2l = function (r, g, b) {
13
13
  var max = Math.max(r, g, b), min = Math.min(r, g, b);
14
14
  return (max + min) / 2;
15
15
  };
16
- // var rgb2s = function (r, g, b) {
17
- // var l = rgb2l(r, g, b);
18
- // var max = Math.max(r, g, b), min = Math.min(r, g, b);
19
- // var m = Math.sqrt((r * r + g * g + b * b));
20
- // return Math.sqrt((Math.pow(r - m, 2) + Math.pow(g - m, 2) + Math.pow(b - m, 2)) / 3);
21
- // };
22
16
  var rgb2v = color.rgb2v;
23
17
  var rgb2s = function (r, g, b) {
24
18
  var u = Math.sqrt((r * r + g * g + b * b) / 3);
@@ -34,8 +28,6 @@ var c4c = function (c, dark, light) {
34
28
  };
35
29
 
36
30
  var c2xy = function (c1, c2) {
37
- var left = 0, right = 1, top = 0, bottom = 1;
38
- var delta = 1 / 0xfffffff;
39
31
  var [r1, g1, b1] = color.parse(c1);
40
32
  var [r2, g2, b2] = color.parse(c2);
41
33
  var s = function (x, y) {
@@ -52,41 +44,13 @@ var c2xy = function (c1, c2) {
52
44
  }
53
45
  }
54
46
  }
55
- // while (right - left > delta || bottom - top > delta) {
56
- // var dx = (right - left) / 3;
57
- // var dy = (bottom - top) / 3;
58
- // var lx = left + dx;
59
- // var rx = right - dx;
60
- // var ty = top + dy;
61
- // var by = bottom - dy;
62
- // var res = [
63
- // [lx, ty],
64
- // [rx, ty],
65
- // [lx, by],
66
- // [rx, by]
67
- // ];
68
- // do {
69
- // var [x, y] = res.pop();
70
- // var r = s(x, y);
71
- // if (r < t) {
72
- // t = r;
73
- // mx = x;
74
- // my = y;
75
- // }
76
- // }
77
- // while (res.length);
78
- // left = mx - dx;
79
- // right = mx + dx;
80
- // top = my - dy;
81
- // bottom = my + dy;
82
- // }
83
47
  return [mx, my];
84
48
  };
85
49
  var getCanvas = function (e) {
86
50
  return e.getElementsByTagName('canvas')[0];
87
51
  };
88
52
  var sample = "#ff0000";
89
- var buildpad = function (pad, c = sample) {
53
+ var buildpad = lazy(function (pad, c = sample) {
90
54
  var canvas = getCanvas(pad);
91
55
  canvas.width = 256;
92
56
  canvas.height = 256;
@@ -126,7 +90,24 @@ var buildpad = function (pad, c = sample) {
126
90
  }
127
91
  }
128
92
  context.putImageData(imagedata, 0, 0);
129
- };
93
+ }, {});
94
+ var buildopa = lazy(function (pad, c = sample) {
95
+ var canvas = getCanvas(pad);
96
+ canvas.width = 1;
97
+ canvas.height = 256;
98
+ var [r, g, b] = color.parse(c);
99
+ var context = canvas.getContext("2d");
100
+ var imagedata = context.getImageData(0, 0, 1, 256);
101
+ var data = imagedata.data;
102
+ for (var cx = 0, dx = data.length; cx < dx;) {
103
+ data[cx++] = r;
104
+ data[cx++] = g;
105
+ data[cx++] = b;
106
+ data[cx++] = 255 - (cx >> 2);
107
+ }
108
+ context.putImageData(imagedata, 0, 0);
109
+
110
+ }, {});
130
111
  var buildhue = function (hue) {
131
112
  var canvas = getCanvas(hue);
132
113
  canvas.width = 10;
@@ -149,86 +130,106 @@ var getpointer = function (e) {
149
130
  return e.getElementsByTagName('pointer')[0];
150
131
  };
151
132
  var bindinput = function (input, callback) {
152
- var key = 'oninput' in input ? 'oninput' : 'onkeyup';
153
- input[key] = input.onchange = input.onpaste = input.oncut = callback;
133
+ on("keydown.enter")(input, callback);
134
+ };
135
+ var color2xyz = function (c) {
136
+ var [r, g, b, a] = color.parse(c);
137
+ var z = color.rgb2h(r, g, b) / 360;
138
+ var c1 = z2c(z);
139
+ var [x, y] = c2xy(c1, c);
140
+ return [x, y, z, a];
154
141
  };
155
-
156
142
  function main(e) {
157
143
  var elem = e || div();
158
144
  elem.innerHTML = colorpad;
159
- var [bg, pad, hue, val] = elem.children;
145
+ var [bg, pad, hue, opa, val] = elem.children;
160
146
  buildpad(pad);
161
147
  buildhue(hue);
148
+ buildopa(opa);
162
149
  var [hex, rgb, hsl] = val.getElementsByTagName("input");
163
-
164
- bindinput(hex, function (e) {
165
- var { value } = this;
166
- if (!/^#[\da-f]{6}$/i.test(value)) {
167
- var match = /[\da-f]+/i.exec(value);
168
- value = "#" + (match ? match[0] : '');
169
- if (value.length > 7) value = value.slice(0, 7);
170
- if (value !== this.value) this.value = value;
171
- } else {
172
- var angle = color.angle(sample, value) / (Math.PI + Math.PI)
173
- if (angle >= 0) {
174
- z = angle;
175
- }
176
- [x, y] = c2xy(z2c(z), value);
177
- render();
150
+ var Hex = a => a > 15 ? a.toString(16) : "0" + a.toString(16);
151
+ hex.setValue = function (v) {
152
+ var [r, g, b, a] = color.parse(v);
153
+ var value = [r, g, b];
154
+ if (isFinite(a) && a !== 1) {
155
+ a = a * 255;
156
+ value[3] = a;
178
157
  }
179
- });
180
- bindinput(rgb, function (e) {
181
- var { value } = this;
182
- if (!/^rgb\(\d+,\s*\d+,\s*\d+\)$/i.test(value)) {
183
- var match = /rgb\((.*)\)?/i.exec(value);
184
- if (match) {
185
- value = match[0];
186
- }
187
- if (value !== this.value) this.value = value;
188
- } else {
189
- z = color.angle(sample, value) / (Math.PI + Math.PI);
190
- [x, y] = c2xy(z2c(z), value);
191
- render();
192
- }
193
-
194
- });
195
- bindinput(hsl, function (e) {
196
- });
197
- var x = 1, y = 0, z = 0, requester = 0;
158
+ this.value = "#" + value.map(a => +a.toFixed()).map(Hex).join("");
159
+ };
160
+ rgb.setValue = function (v) {
161
+ var [r, g, b, a] = color.parse(v);
162
+ r = r.toFixed();
163
+ g = g.toFixed();
164
+ b = b.toFixed();
165
+ a = +a.toFixed(3);
166
+ var o = +a;
167
+ this.value = `rgb${o !== 1 ? 'a' : ''}(${r}, ${g}, ${b}${o !== 1 ? ', ' + a : ''})`;
168
+ };
169
+ hsl.setValue = function (v) {
170
+ var [r, g, b, a] = color.parse(v);
171
+ var [h, s, l] = color.rgb2hsl([r, g, b]);
172
+ s *= 100;
173
+ l *= 100;
174
+ a *= 100;
175
+ s = +s.toFixed();
176
+ l = +l.toFixed();
177
+ a = +a.toFixed();
178
+ h = h.toFixed();
179
+ var o = a !== 100;
180
+ this.value = `hsl${o ? 'a' : ''}(${h}deg ${s}% ${l}%${o ? " / " + a + "%" : ""})`;
181
+ };
182
+ elem.setValue = function (v) {
183
+ var [_x, _y, z, a] = color2xyz(v);
184
+ hue.value = z;
185
+ opa.value = 1 - a;
186
+ css(huepointer, { top: +(z * 100).toFixed(6) + '%' })
187
+ css(opapointer, { top: +(100 - a * 100).toFixed(6) + '%' })
188
+ x = _x;
189
+ y = _y;
190
+ render();
191
+ };
192
+ var inputv = function () {
193
+ elem.setValue(this.value);
194
+ };
195
+ bindinput(hex, inputv);
196
+ bindinput(hsl, inputv);
197
+ bindinput(rgb, inputv);
198
+ var x = 1, y = 0, z = 0;
198
199
  var padpointer = getpointer(pad);
199
200
  var huepointer = getpointer(hue);
201
+ var opapointer = getpointer(opa);
200
202
  var render = function () {
201
- z = trim(z);
203
+ z = trim(hue.value || 0);
202
204
  x = trim(x);
203
205
  y = trim(y);
206
+ var a = trim(1 - (opa.value || 0));
204
207
  var c = z2c(z);
205
- var [r, g, b] = color.parse(c).map(a => xy2c(a, x, y));
206
- var p = color.stringify([r, g, b]);
207
- [r, g, b] = color.parse(p);
208
- var [h = 0, s = 0, l] = color.rgb2hsl([r, g, b]);
209
- cancelAnimationFrame(requester);
210
- requester = requestAnimationFrame(function () {
211
- buildpad(pad, c);
212
- });
208
+ var c0 = color.parse(c).slice(0, 3).map(a => xy2c(a, x, y));
209
+ c0[3] = a;
210
+ var p = color.stringify(c0);
213
211
  var value = p;
214
- var valuergb = `rgb(${r}, ${g}, ${b})`;
215
- var valuehsl = `hsl(${h.toFixed(0)}, ${(s * 100).toFixed(0)}%, ${(l * 100).toFixed(0)}%)`;
216
212
  css(padpointer, {
217
213
  left: +(x * 100).toFixed(6) + "%",
218
214
  top: +(y * 100).toFixed(6) + "%",
219
- background: value,
220
- borderColor: c4rgb(r, g, b, pad.dark, pad.light),
215
+ background: p,
216
+ outlineColor: color.pair(p),
221
217
  });
222
218
  css(huepointer, {
223
- top: +(z * 100).toFixed(6) + "%",
224
- borderColor: c4c(c),
219
+ outlineColor: color.pair(c),
225
220
  background: c
226
221
  });
227
- if (!color.equal(value, hex.value)) hex.value = value;
228
- if (!color.equal(valuergb, rgb.value)) rgb.value = valuergb;
229
- if (!color.equal(valuehsl, hsl.value)) hsl.value = valuehsl;
222
+ css(opapointer, {
223
+ outlineColor: color.pair(p),
224
+ background: p
225
+ });
226
+ buildopa(opa, p);
227
+
228
+ hex.setValue(value);
229
+ rgb.setValue(value);
230
+ hsl.setValue(value);
230
231
  bg.style.borderColor = value;
231
- val.style.color = c4rgb(r, g, b);
232
+ val.style.color = color.pair(value);
232
233
  elem.value = value;
233
234
  dispatch(elem, 'change');
234
235
  // console.log(value, hex.value, valuergb, valuehsl);
@@ -237,12 +238,25 @@ function main(e) {
237
238
  if (a < 0) a = 0;
238
239
  if (a > 1) a = 1;
239
240
  return a || 0;
240
- }
241
- var sethue = function (event) {
241
+ };
242
+ var sethue = function (z) {
243
+ var c = z2c(z);
244
+ buildpad(pad, c);
245
+ };
246
+ var setpointer = function (event) {
242
247
  var { clientY } = event;
243
- var { top, height } = getScreenPosition(hue);
244
- z = (clientY - top) / height;
245
- if (document.activeElement !== huepointer) huepointer.focus();
248
+ var { top, height } = getScreenPosition(this);
249
+ var z = (clientY - top) / height;
250
+ if (z > 1) z = 1;
251
+ if (z < 0) z = 0;
252
+ this.value = z;
253
+ if (this === hue) {
254
+ sethue(z);
255
+ }
256
+ var pointer = getpointer(this);
257
+ css(pointer, {
258
+ top: +(z * 100).toFixed(6) + "%",
259
+ });
246
260
  render();
247
261
  };
248
262
  var setpad = function (event) {
@@ -250,17 +264,20 @@ function main(e) {
250
264
  var { top, left, height, width } = getScreenPosition(pad);
251
265
  x = (clientX - left) / width;
252
266
  y = (clientY - top) / height;
253
- if (document.activeElement !== padpointer) padpointer.focus();
254
267
  render();
255
268
  };
256
269
  moveupon(hue, {
257
- start: sethue,
258
- move: sethue
270
+ start: setpointer,
271
+ move: setpointer
259
272
  });
260
273
  moveupon(pad, {
261
274
  start: setpad,
262
275
  move: setpad
263
276
  });
277
+ moveupon(opa, {
278
+ start: setpointer,
279
+ move: setpointer
280
+ });
264
281
  render();
265
282
  onmousedown(elem, e => /^input$/i.test(e.target.tagName) || e.preventDefault());
266
283
  return elem;
@@ -1,16 +1,18 @@
1
+ @import "./bggrid-func.less";
2
+
1
3
  pointer {
2
- display : block;
3
- height : 6px;
4
- border : 1px solid #fff;
4
+ display: block;
5
+ height: 6px;
6
+ outline: 1px solid #fff;
5
7
  background: #ccc;
6
- top : 0;
7
- left : 0;
8
+ top: 0;
9
+ left: 0;
8
10
  box-sizing: border-box;
9
- position : absolute;
11
+ position: absolute;
10
12
  }
11
13
 
12
14
  >div {
13
- display : inline-block;
15
+ display: inline-block;
14
16
  position: relative;
15
17
 
16
18
 
@@ -22,34 +24,38 @@ pointer {
22
24
  font-size: 0;
23
25
 
24
26
  >pointer {
25
- width : 6px;
27
+ width: 6px;
26
28
  margin: -3px;
27
29
  }
28
30
 
29
31
  >canvas {
30
- width : 256px;
31
- height : 256px;
32
+ width: 256px;
33
+ height: 256px;
32
34
  background: #fff;
33
35
  }
34
36
  }
35
37
 
36
- &.hue {
38
+ &.hue,
39
+ &.opa {
37
40
  font-size: 0;
38
41
 
39
42
  >pointer {
40
43
  margin: -3px -1px;
41
- width : 12px;
44
+ width: 10px;
45
+ padding: 0 1px;
46
+ box-sizing: content-box;
42
47
  }
43
48
 
44
49
  >canvas {
45
- background: #000;
46
- width : 10px;
47
- height : 256px;
50
+ background: #fff;
51
+ width: 10px;
52
+ height: 256px;
53
+ .grid();
48
54
  }
49
55
  }
50
56
 
51
57
  &.val {
52
- margin : 0;
58
+ margin: 0;
53
59
  padding: 10px 0 0 0;
54
60
 
55
61
  >input {
@@ -59,55 +65,51 @@ pointer {
59
65
  }
60
66
 
61
67
  color: inherit;
62
- text-transform : lowercase;
68
+ text-transform : lowercase;
63
69
  background-color: transparent;
64
- box-sizing : border-box;
65
- padding : 0 3px;
66
- position : relative;
67
- font-size : 12px;
68
- border : none;
69
- text-align : left;
70
- min-width : 40px;
71
- width : 30%;
72
-
73
- &+input {
74
- margin-left: 6px;
75
- }
70
+ box-sizing : border-box;
71
+ padding : 0 3px;
72
+ position : relative;
73
+ font-size : 12px;
74
+ border : none;
75
+ text-align : left;
76
+ min-width : 40px;
77
+ width : 30%;
76
78
  }
77
79
 
78
80
  >.hex {
79
- width: 56px;
81
+ width: 76px;
80
82
  }
81
83
 
82
84
  >.rgb {
83
- width: 114px;
85
+ width: 156px;
84
86
  }
85
87
 
86
88
  >.hsl {
87
- width: 114px;
89
+ width: 186px;
88
90
  }
89
91
  }
90
92
  }
91
93
 
92
94
  & {
93
- width : 312px;
94
- background : #fff;
95
- padding : 17px 0 7px 0;
96
- text-align : center;
97
- user-select : none;
95
+ width: 462px;
96
+ min-width: 372px;
97
+ background: #fff;
98
+ padding: 17px 0 7px 0;
99
+ text-align: center;
100
+ user-select: none;
98
101
  border-radius: 3px;
99
- position : relative;
102
+ position: relative;
100
103
  }
101
104
 
102
105
  &>.bg {
103
- display : block;
104
- left : 2px;
105
- top : 2px;
106
- right : 2px;
107
- bottom : 2px;
108
- border-radius : 2px;
109
- border-color : inherit;
110
- border : 2px solid;
106
+ display: block;
107
+ left: 0;
108
+ top: 0;
109
+ right: 0;
110
+ bottom: 0;
111
+ border-color: inherit;
112
+ border: 2px solid;
111
113
  border-bottom-width: 26px;
112
- position : absolute;
114
+ position: absolute;
113
115
  }
@@ -2,7 +2,7 @@ function main(element = document.createElement("div")) {
2
2
  element.innerHTML = colorpicker;
3
3
  var saved_value;
4
4
  var selector = element.firstChild;
5
- select(selector, colorpad(), false);
5
+ select(selector, colorpad(), false, 'y');
6
6
  render(element, {
7
7
  a: button,
8
8
  colorlabel,
@@ -155,6 +155,7 @@ function getUrlParamsForApi(api, url) {
155
155
  cap.push(a.slice(1));
156
156
  return r;
157
157
  });
158
+ if (api.base) base = api.base + base;
158
159
  var params = {};
159
160
  url = url.replace(/[\?#]*$/g, function (match) {
160
161
  match.split(/[&#\?]+/).forEach(function (s) {
@@ -402,6 +403,12 @@ function createApiMap(data) {
402
403
  }
403
404
  var _configfileurl;
404
405
  var configPormise;
406
+ function LoadingArray_then(ok, oh) {
407
+ if (this.loading_promise) this.loading_promise.then(ok, oh);
408
+ else if (this.is_errored) oh(this.error_message);
409
+ else ok();
410
+ }
411
+
405
412
  var privates = {
406
413
  loadAfterConfig(serviceId, params) {
407
414
  var promise = this.getApi(serviceId).then((api) => {
@@ -622,6 +629,7 @@ var data = {
622
629
  if (isObject(response)) {
623
630
  response.is_loaded = true;
624
631
  response.is_loading = false;
632
+ if (response.then === LoadingArray_then) delete response.then;
625
633
  }
626
634
  this.loading_count--;
627
635
  },
@@ -630,6 +638,7 @@ var data = {
630
638
  if (isObject(response)) {
631
639
  response.is_loaded = false;
632
640
  response.is_loading = true;
641
+ response.then = LoadingArray_then;
633
642
  }
634
643
  this.loading_count++;
635
644
  },
@@ -836,7 +845,10 @@ var data = {
836
845
  this.responseLoading(instance);
837
846
  var params = privates.pack(sid, params1);
838
847
  if (!privates.validApi(api, params)) throw aborted;
839
- var { method, uri, params, selector } = privates.prepare(api.method, api.url, params);
848
+ let url = api.url;
849
+ var base = api.base;
850
+ if (base) url = base + api.path;
851
+ var { method, uri, params, selector } = privates.prepare(api.method, url, params);
840
852
  var promise = new Promise(function (ok, oh) {
841
853
  var headers = api.headers;
842
854
  if (headers) {
@@ -37,6 +37,17 @@ var renderModel = function (field, data) {
37
37
  var constructors = {
38
38
  input,
39
39
  raw: input,
40
+ swap(e) {
41
+ var { field } = e;
42
+ e = swap(e);
43
+ if (field.options) {
44
+ e.getValue = function () {
45
+ return field.options[+this.checked].value;
46
+ };
47
+ }
48
+ return e;
49
+ },
50
+ switch: swap,
40
51
  row: textarea,
41
52
  password,
42
53
  text: textarea,
@@ -134,8 +145,18 @@ var readonly_types = {
134
145
  "size"({ field }, data) {
135
146
  var f = data[field.key];
136
147
  return size(f);
137
- }
148
+ },
149
+ swap(e, data) {
150
+ var { field } = e;
151
+ var v = data[field.key];
152
+ if (field.options) {
153
+ var o = field.options[v];
154
+ if (o) return o.name;
155
+ }
156
+ return v;
157
+ },
138
158
  };
159
+ readonly_types.select = readonly_types.swap;
139
160
  function main(elem) {
140
161
  var build = function () {
141
162
  var { data, readonly, field } = elem;
@@ -222,7 +243,6 @@ function main(elem) {
222
243
  }
223
244
  };
224
245
  on("changes")(elem, function ({ changes }) {
225
-
226
246
  if (changes.data || changes.field || changes.readonly) {
227
247
  build();
228
248
  }
@@ -262,12 +262,12 @@ var _as_yextra = function (global, innerWidth, innerHeight, element, target, poi
262
262
  viewrect.right = viewrect.left + viewrect.width;
263
263
  viewrect.bottom = viewrect.top + viewrect.height;
264
264
  }
265
- var maxHeight = Math.max(position.top, innerHeight - position.top - position.height);
265
+ var maxHeight = Math.max(position.top, innerHeight - position.top - position.height) | 0;
266
266
  var maxWidth = Math.max(position.left + position.width, innerWidth - position.left);
267
267
  var height = element.offsetHeight;
268
268
  //如果高度超出可视区,调整高度
269
269
  if (height > maxHeight) {
270
- css(element, { height: fromOffset(maxHeight) });
270
+ css(element, { height: fromOffset(maxHeight), maxHeight: fromOffset(maxHeight) });
271
271
  }
272
272
 
273
273
  css(element, `min-width:auto;`);
@@ -565,7 +565,8 @@ function getFromScopes(key, scope, parentScopes) {
565
565
  if (key in scope) {
566
566
  return scope[key];
567
567
  }
568
- if (parentScopes) for (var o of parentScopes) {
568
+ if (parentScopes) for (var cx = parentScopes.length - 1; cx >= 0; cx--) {
569
+ var o = parentScopes[cx];
569
570
  if (key in o) {
570
571
  return o[key];
571
572
  }
@@ -16,7 +16,7 @@ var _remove = function () {
16
16
  }
17
17
  once('blur')(activeElement, function () {
18
18
  if (!isMounted(this)) return removing_list.target.focus();
19
- run();
19
+ _remove();
20
20
  });
21
21
  });
22
22
  }
@@ -137,8 +137,8 @@ function select(target, list, removeOnSelect, direction) {
137
137
  }
138
138
  var mousedown = function () {
139
139
  initList();
140
- if (saved_list !== list) {
141
- _remove();
140
+ if (saved_list !== list || !isMounted(list)) {
141
+ if (saved_list && saved_list !== list) _remove();
142
142
  if (document.activeElement !== target) target.focus();
143
143
  popup(list, target, direction);
144
144
  saved_list = list;