neo.mjs 4.6.3 → 4.6.5
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/examples/button/base/MainContainer.mjs +18 -1
- package/examples/toast/MainContainer.mjs +2 -2
- package/examples/toast/MainContainerController.mjs +1 -1
- package/package.json +1 -1
- package/resources/scss/src/button/Base.scss +60 -23
- package/resources/scss/src/component/Toast.scss +191 -0
- package/resources/scss/theme-dark/button/Base.scss +16 -2
- package/resources/scss/theme-dark/component/Toast.scss +21 -0
- package/resources/scss/theme-light/button/Base.scss +16 -2
- package/resources/scss/theme-light/component/Toast.scss +21 -0
- package/src/component/Base.mjs +10 -1
- package/src/{dialog → component}/Toast.mjs +67 -70
- package/src/form/field/Select.mjs +77 -81
- package/src/manager/Toast.mjs +119 -74
- package/resources/scss/src/dialog/Toast.scss +0 -190
- package/resources/scss/theme-dark/dialog/Toast.scss +0 -13
- package/resources/scss/theme-light/dialog/Toast.scss +0 -25
@@ -3,7 +3,7 @@ import ToastManager from '../manager/Toast.mjs';
|
|
3
3
|
import NeoArray from "../util/Array.mjs";
|
4
4
|
|
5
5
|
/**
|
6
|
-
* @class Neo.
|
6
|
+
* @class Neo.component.Toast
|
7
7
|
* @extends Neo.component.Base
|
8
8
|
*
|
9
9
|
* @example
|
@@ -16,7 +16,7 @@ import NeoArray from "../util/Array.mjs";
|
|
16
16
|
iconCls : 'fa fa-bell', // null
|
17
17
|
maxWidth : 300, // 250
|
18
18
|
position : 'br', // 'tr'
|
19
|
-
slideDirection : 'right', // '
|
19
|
+
slideDirection : 'right', // 'right'
|
20
20
|
title : 'Alarm Clock' // null
|
21
21
|
})
|
22
22
|
*/
|
@@ -28,11 +28,10 @@ class Toast extends Base {
|
|
28
28
|
*/
|
29
29
|
running = false
|
30
30
|
/**
|
31
|
-
*
|
32
|
-
* @member {
|
33
|
-
* @private
|
31
|
+
* Timeout in ms after which the toast is removed
|
32
|
+
* @member {Number} timeout=3000
|
34
33
|
*/
|
35
|
-
|
34
|
+
timeout = 3000
|
36
35
|
|
37
36
|
static getStaticConfig() {return {
|
38
37
|
/**
|
@@ -52,24 +51,15 @@ class Toast extends Base {
|
|
52
51
|
|
53
52
|
static getConfig() {return {
|
54
53
|
/**
|
55
|
-
* @member {String} className='Neo.
|
54
|
+
* @member {String} className='Neo.component.Toast'
|
56
55
|
* @protected
|
57
56
|
*/
|
58
|
-
className: 'Neo.
|
57
|
+
className: 'Neo.component.Toast',
|
59
58
|
/**
|
60
59
|
* @member {String} ntype='toast'
|
61
60
|
* @protected
|
62
61
|
*/
|
63
62
|
ntype: 'toast',
|
64
|
-
|
65
|
-
/**
|
66
|
-
* @member {Boolean} autoMount=true
|
67
|
-
*/
|
68
|
-
autoMount: true,
|
69
|
-
/**
|
70
|
-
* @member {Boolean} autoRender=true
|
71
|
-
*/
|
72
|
-
autoRender: true,
|
73
63
|
/**
|
74
64
|
* @member {String[]} baseCls=['neo-toast']
|
75
65
|
* @protected
|
@@ -110,14 +100,9 @@ class Toast extends Base {
|
|
110
100
|
/**
|
111
101
|
* Describes which direction from which side the toasts slides-in
|
112
102
|
* This creates a cls `neo-toast-slide-${direction}-in`
|
113
|
-
* @member {'down'|'up'|'left'|'right'} slideDirection_=
|
114
|
-
*/
|
115
|
-
slideDirection_: 'down',
|
116
|
-
/**
|
117
|
-
* Timeout in ms after which the toast is removed
|
118
|
-
* @member {Number} timeout_=3000
|
103
|
+
* @member {'down'|'up'|'left'|'right'} slideDirection_='right'
|
119
104
|
*/
|
120
|
-
|
105
|
+
slideDirection_: 'right',
|
121
106
|
/**
|
122
107
|
* Adds a title to the toast
|
123
108
|
* @member {Number} title_=null
|
@@ -126,7 +111,8 @@ class Toast extends Base {
|
|
126
111
|
/**
|
127
112
|
* @member {String|null} title=null
|
128
113
|
*/
|
129
|
-
vdom:
|
114
|
+
vdom:
|
115
|
+
{cn: [{
|
130
116
|
cls: 'neo-toast-inner', cn: [
|
131
117
|
{cls: ['neo-toast-icon'], removeDom: true},
|
132
118
|
{cls: 'neo-toast-text', cn: [
|
@@ -138,6 +124,9 @@ class Toast extends Base {
|
|
138
124
|
}]}
|
139
125
|
}}
|
140
126
|
|
127
|
+
/**
|
128
|
+
* @param {Object} config
|
129
|
+
*/
|
141
130
|
construct(config) {
|
142
131
|
super.construct(config);
|
143
132
|
|
@@ -145,8 +134,10 @@ class Toast extends Base {
|
|
145
134
|
|
146
135
|
// click listener for close
|
147
136
|
me.addDomListeners([
|
148
|
-
{click: {fn: me.
|
149
|
-
])
|
137
|
+
{click: {fn: me.destroy, delegate: '.neo-toast-close', scope: me}}
|
138
|
+
]);
|
139
|
+
|
140
|
+
ToastManager.register(me);
|
150
141
|
}
|
151
142
|
|
152
143
|
/**
|
@@ -164,41 +155,26 @@ class Toast extends Base {
|
|
164
155
|
* @param {String|null} oldValue
|
165
156
|
*/
|
166
157
|
afterSetIconCls(value, oldValue) {
|
167
|
-
let vdom
|
168
|
-
cls
|
169
|
-
clsFn = !!value ? 'add' : 'remove';
|
158
|
+
let vdom = this.getVdomInner().cn[0],
|
159
|
+
cls = vdom.cls;
|
170
160
|
|
171
161
|
vdom.removeDom = Neo.isEmpty(value);
|
172
|
-
NeoArray[
|
162
|
+
NeoArray[value ? 'add' : 'remove'](cls, value);
|
173
163
|
}
|
174
164
|
|
175
165
|
/**
|
176
166
|
* Using the afterSetMsg to trigger the setup of the dom
|
177
167
|
* A new container is added as an item.
|
178
168
|
* We cannot use the vdom here.
|
179
|
-
*
|
180
169
|
* @param {String|null} value
|
181
170
|
* @param {String|null} oldValue
|
182
171
|
*/
|
183
172
|
afterSetMsg(value, oldValue) {
|
184
|
-
let vdom
|
173
|
+
let vdom = this.getTextRootVdom().cn[1];
|
185
174
|
|
186
175
|
vdom.innerHTML = value;
|
187
176
|
}
|
188
177
|
|
189
|
-
/**
|
190
|
-
* @param {String|null} value
|
191
|
-
* @param {String|null} oldValue
|
192
|
-
*/
|
193
|
-
afterSetTitle(value, oldValue) {
|
194
|
-
let vdom = this.getTextRootVdom().cn[0],
|
195
|
-
clsFn = !!value ? 'add' : 'remove';
|
196
|
-
|
197
|
-
vdom.removeDom = Neo.isEmpty(value);
|
198
|
-
vdom.innerHTML = value;
|
199
|
-
NeoArray[clsFn](vdom.cls, 'neo-toast-has-title');
|
200
|
-
}
|
201
|
-
|
202
178
|
/**
|
203
179
|
* Apply a cls, based on the position
|
204
180
|
* @param {String} value
|
@@ -218,17 +194,34 @@ class Toast extends Base {
|
|
218
194
|
}
|
219
195
|
|
220
196
|
/**
|
221
|
-
* Close the toast after the
|
222
|
-
* @param {
|
223
|
-
* @param {
|
197
|
+
* Close the toast after the mounted if not closable
|
198
|
+
* @param {Boolean} value
|
199
|
+
* @param {Boolean} oldValue
|
224
200
|
*/
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
201
|
+
afterSetMounted(value, oldValue) {
|
202
|
+
super.afterSetMounted(value, oldValue);
|
203
|
+
|
204
|
+
let me = this;
|
205
|
+
|
206
|
+
if (!me.closable && value) {
|
207
|
+
setTimeout(() => {
|
208
|
+
this.destroy(true);
|
209
|
+
}, me.timeout)
|
229
210
|
}
|
230
211
|
}
|
231
212
|
|
213
|
+
/**
|
214
|
+
* @param {String|null} value
|
215
|
+
* @param {String|null} oldValue
|
216
|
+
*/
|
217
|
+
afterSetTitle(value, oldValue) {
|
218
|
+
let vdom = this.getTextRootVdom().cn[0];
|
219
|
+
|
220
|
+
vdom.removeDom = Neo.isEmpty(value);
|
221
|
+
vdom.innerHTML = value;
|
222
|
+
NeoArray[value ? 'add' : 'remove'](vdom.cls, 'neo-toast-has-title');
|
223
|
+
}
|
224
|
+
|
232
225
|
/**
|
233
226
|
* Triggered before the position config gets changed
|
234
227
|
* @param {String} value
|
@@ -250,32 +243,36 @@ class Toast extends Base {
|
|
250
243
|
}
|
251
244
|
|
252
245
|
/**
|
253
|
-
*
|
254
|
-
* @returns {vdom}
|
246
|
+
*
|
255
247
|
*/
|
256
|
-
|
257
|
-
|
248
|
+
async destroy(...args) {
|
249
|
+
let me = this;
|
250
|
+
|
251
|
+
me.addDomListeners({
|
252
|
+
animationend: function () {
|
253
|
+
ToastManager.removeToast(me.id);
|
254
|
+
ToastManager.unregister(me);
|
255
|
+
me.destroy(true);
|
256
|
+
}
|
257
|
+
});
|
258
|
+
|
259
|
+
me.addCls('neo-toast-fade-out')
|
258
260
|
}
|
259
261
|
|
262
|
+
/**
|
263
|
+
* This is a dialog, so we have to add an item to be able to
|
264
|
+
* @returns {Object} vdom
|
265
|
+
*/
|
260
266
|
getTextRootVdom() {
|
261
267
|
return this.getVdomInner().cn[1];
|
262
268
|
}
|
263
269
|
|
264
270
|
/**
|
265
|
-
*
|
266
|
-
*
|
271
|
+
* This is a dialog, so we have to add an item to be able to
|
272
|
+
* @returns {Object} vdom
|
267
273
|
*/
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
me.addDomListeners({
|
272
|
-
animationend: function () {
|
273
|
-
ToastManager.removeToast(me.toastManagerId);
|
274
|
-
me.destroy(true);
|
275
|
-
}
|
276
|
-
})
|
277
|
-
|
278
|
-
me.addCls('neo-toast-fade-out');
|
274
|
+
getVdomInner() {
|
275
|
+
return this.vdom.cn[0];
|
279
276
|
}
|
280
277
|
}
|
281
278
|
|
@@ -102,9 +102,9 @@ class Select extends Picker {
|
|
102
102
|
* Showing the list via the down trigger can either show all list items or only show items which
|
103
103
|
* match the filter string inside the input field.
|
104
104
|
* Valid values: all, filtered
|
105
|
-
* @member {String} triggerAction_='
|
105
|
+
* @member {String} triggerAction_='all'
|
106
106
|
*/
|
107
|
-
triggerAction_: '
|
107
|
+
triggerAction_: 'all',
|
108
108
|
/**
|
109
109
|
* Display the first matching result while typing
|
110
110
|
* @member {Boolean} typeAhead_=true
|
@@ -150,7 +150,7 @@ class Select extends Picker {
|
|
150
150
|
scope : me
|
151
151
|
});
|
152
152
|
|
153
|
-
me.typeAhead && me.updateTypeAhead()
|
153
|
+
me.typeAhead && me.updateTypeAhead()
|
154
154
|
}
|
155
155
|
|
156
156
|
/**
|
@@ -173,7 +173,7 @@ class Select extends Picker {
|
|
173
173
|
value : value.get(me.value)?.[me.displayField] || me.value
|
174
174
|
});
|
175
175
|
|
176
|
-
value.filters = filters
|
176
|
+
value.filters = filters
|
177
177
|
}
|
178
178
|
}
|
179
179
|
|
@@ -184,14 +184,14 @@ class Select extends Picker {
|
|
184
184
|
* @protected
|
185
185
|
*/
|
186
186
|
afterSetTypeAhead(value, oldValue) {
|
187
|
-
this.rendered && this.updateTypeAhead()
|
187
|
+
this.rendered && this.updateTypeAhead()
|
188
188
|
}
|
189
189
|
|
190
190
|
/**
|
191
191
|
* Triggered after the value config got changed
|
192
192
|
* @param {Number|String|null} value
|
193
193
|
* @param {Number|String|null} oldValue
|
194
|
-
* @param {Boolean}
|
194
|
+
* @param {Boolean} preventFilter=false
|
195
195
|
* @protected
|
196
196
|
*/
|
197
197
|
afterSetValue(value, oldValue, preventFilter=false) {
|
@@ -201,7 +201,7 @@ class Select extends Picker {
|
|
201
201
|
!preventFilter && this.updateValue(true);
|
202
202
|
list && (list.silentVdomUpdate = false);
|
203
203
|
|
204
|
-
super.afterSetValue(value, oldValue)
|
204
|
+
super.afterSetValue(value, oldValue)
|
205
205
|
}
|
206
206
|
|
207
207
|
/**
|
@@ -213,7 +213,7 @@ class Select extends Picker {
|
|
213
213
|
*/
|
214
214
|
beforeSetListConfig(value, oldValue) {
|
215
215
|
value && this.parseItemConfigs(value);
|
216
|
-
return value
|
216
|
+
return value
|
217
217
|
}
|
218
218
|
|
219
219
|
/**
|
@@ -237,7 +237,7 @@ class Select extends Picker {
|
|
237
237
|
}
|
238
238
|
}
|
239
239
|
|
240
|
-
return ClassSystemUtil.beforeSetInstance(value, Store)
|
240
|
+
return ClassSystemUtil.beforeSetInstance(value, Store)
|
241
241
|
}
|
242
242
|
|
243
243
|
/**
|
@@ -247,7 +247,7 @@ class Select extends Picker {
|
|
247
247
|
* @protected
|
248
248
|
*/
|
249
249
|
beforeSetTriggerAction(value, oldValue) {
|
250
|
-
return this.beforeSetEnumValue(value, oldValue, 'triggerAction')
|
250
|
+
return this.beforeSetEnumValue(value, oldValue, 'triggerAction')
|
251
251
|
}
|
252
252
|
|
253
253
|
/**
|
@@ -277,14 +277,14 @@ class Select extends Picker {
|
|
277
277
|
|
278
278
|
me.record = store.find(displayField, value)[0] || null;
|
279
279
|
|
280
|
-
return value
|
280
|
+
return value
|
281
281
|
}
|
282
282
|
|
283
283
|
/**
|
284
284
|
* @returns {Neo.list.Base}
|
285
285
|
*/
|
286
286
|
createPickerComponent() {
|
287
|
-
return this.list
|
287
|
+
return this.list
|
288
288
|
}
|
289
289
|
|
290
290
|
/**
|
@@ -307,7 +307,7 @@ class Select extends Picker {
|
|
307
307
|
oldValue,
|
308
308
|
record,
|
309
309
|
value
|
310
|
-
})
|
310
|
+
})
|
311
311
|
}
|
312
312
|
}
|
313
313
|
|
@@ -322,18 +322,18 @@ class Select extends Picker {
|
|
322
322
|
me.value = lastManualInput;
|
323
323
|
|
324
324
|
Neo.main.DomAccess.focus({
|
325
|
-
|
325
|
+
appName: me.appName,
|
326
|
+
id : me.getInputElId()
|
326
327
|
}).then(() => {
|
327
|
-
callback?.apply(me)
|
328
|
-
})
|
328
|
+
callback?.apply(me)
|
329
|
+
})
|
329
330
|
}
|
330
331
|
|
331
332
|
/**
|
332
333
|
* @returns {Object}
|
333
334
|
*/
|
334
335
|
getInputHintEl() {
|
335
|
-
|
336
|
-
return el?.vdom;
|
336
|
+
return VDomUtil.findVdomChild(this.vdom, this.getInputHintId())?.vdom
|
337
337
|
}
|
338
338
|
|
339
339
|
/**
|
@@ -351,7 +351,7 @@ class Select extends Picker {
|
|
351
351
|
let list = this.list,
|
352
352
|
recordKey = list.selectionModel.getSelection()[0];
|
353
353
|
|
354
|
-
return recordKey && this.store.get(list.getItemRecordId(recordKey)) || null
|
354
|
+
return recordKey && this.store.get(list.getItemRecordId(recordKey)) || null
|
355
355
|
}
|
356
356
|
|
357
357
|
/**
|
@@ -360,7 +360,7 @@ class Select extends Picker {
|
|
360
360
|
getSubmitValue() {
|
361
361
|
let me = this;
|
362
362
|
|
363
|
-
return me.record?.[me.valueField] || me.value
|
363
|
+
return me.record?.[me.valueField] || me.value
|
364
364
|
}
|
365
365
|
|
366
366
|
/**
|
@@ -368,7 +368,7 @@ class Select extends Picker {
|
|
368
368
|
* @protected
|
369
369
|
*/
|
370
370
|
onContainerKeyDownEnter(data) {
|
371
|
-
this.hidePicker()
|
371
|
+
this.hidePicker()
|
372
372
|
}
|
373
373
|
|
374
374
|
/**
|
@@ -376,7 +376,7 @@ class Select extends Picker {
|
|
376
376
|
* @protected
|
377
377
|
*/
|
378
378
|
onContainerKeyDownEscape(data) {
|
379
|
-
this.focusInputEl(this.hidePicker)
|
379
|
+
this.focusInputEl(this.hidePicker)
|
380
380
|
}
|
381
381
|
|
382
382
|
/**
|
@@ -391,7 +391,7 @@ class Select extends Picker {
|
|
391
391
|
me.value = me.hintRecordId;
|
392
392
|
}
|
393
393
|
|
394
|
-
super.onFocusLeave(data)
|
394
|
+
super.onFocusLeave(data)
|
395
395
|
}
|
396
396
|
|
397
397
|
/**
|
@@ -400,7 +400,7 @@ class Select extends Picker {
|
|
400
400
|
*/
|
401
401
|
onInputValueChange(data) {
|
402
402
|
super.onInputValueChange(data);
|
403
|
-
this.lastManualInput = data.value
|
403
|
+
this.lastManualInput = data.value
|
404
404
|
}
|
405
405
|
|
406
406
|
/**
|
@@ -408,7 +408,7 @@ class Select extends Picker {
|
|
408
408
|
* @protected
|
409
409
|
*/
|
410
410
|
onKeyDownDown(data) {
|
411
|
-
this.onKeyDownEnter(data)
|
411
|
+
this.onKeyDownEnter(data)
|
412
412
|
}
|
413
413
|
|
414
414
|
/**
|
@@ -420,9 +420,9 @@ class Select extends Picker {
|
|
420
420
|
|
421
421
|
if (me.pickerIsMounted) {
|
422
422
|
me.selectListItem();
|
423
|
-
super.onKeyDownEnter(data)
|
423
|
+
super.onKeyDownEnter(data)
|
424
424
|
} else {
|
425
|
-
super.onKeyDownEnter(data, me.selectListItem)
|
425
|
+
super.onKeyDownEnter(data, me.selectListItem)
|
426
426
|
}
|
427
427
|
}
|
428
428
|
|
@@ -441,7 +441,7 @@ class Select extends Picker {
|
|
441
441
|
me.record = record;
|
442
442
|
me._value = record[me.displayField];
|
443
443
|
|
444
|
-
me.afterSetValue(me._value, oldValue)
|
444
|
+
me.afterSetValue(me._value, oldValue)
|
445
445
|
}
|
446
446
|
}
|
447
447
|
|
@@ -454,9 +454,9 @@ class Select extends Picker {
|
|
454
454
|
|
455
455
|
if (me.pickerIsMounted) {
|
456
456
|
me.selectLastListItem();
|
457
|
-
super.onKeyDownEnter(data)
|
457
|
+
super.onKeyDownEnter(data)
|
458
458
|
} else {
|
459
|
-
super.onKeyDownEnter(data, me.selectLastListItem)
|
459
|
+
super.onKeyDownEnter(data, me.selectLastListItem)
|
460
460
|
}
|
461
461
|
}
|
462
462
|
|
@@ -465,7 +465,32 @@ class Select extends Picker {
|
|
465
465
|
*/
|
466
466
|
onListCreateItems() {
|
467
467
|
let me = this;
|
468
|
-
me.typeAhead && me.picker?.mounted && me.updateTypeAheadValue()
|
468
|
+
me.typeAhead && me.picker?.mounted && me.updateTypeAheadValue()
|
469
|
+
}
|
470
|
+
|
471
|
+
/**
|
472
|
+
* @param {Object} record
|
473
|
+
* @protected
|
474
|
+
*/
|
475
|
+
onListItemChange(record) {
|
476
|
+
let me = this,
|
477
|
+
displayField = me.displayField,
|
478
|
+
oldValue = me.value,
|
479
|
+
value = record[displayField];
|
480
|
+
|
481
|
+
if (me.value !== value) {
|
482
|
+
me.hintRecordId = null;
|
483
|
+
me.record = record;
|
484
|
+
me._value = value;
|
485
|
+
me.getInputHintEl().value = null;
|
486
|
+
|
487
|
+
me.afterSetValue(value, oldValue, true); // prevent the list from getting filtered
|
488
|
+
|
489
|
+
me.fire('select', {
|
490
|
+
record,
|
491
|
+
value: record[displayField]
|
492
|
+
})
|
493
|
+
}
|
469
494
|
}
|
470
495
|
|
471
496
|
/**
|
@@ -474,7 +499,15 @@ class Select extends Picker {
|
|
474
499
|
*/
|
475
500
|
onListItemClick(record) {
|
476
501
|
this.onListItemChange(record);
|
477
|
-
this.hidePicker()
|
502
|
+
this.hidePicker()
|
503
|
+
}
|
504
|
+
|
505
|
+
/**
|
506
|
+
* @param {Object} record
|
507
|
+
* @protected
|
508
|
+
*/
|
509
|
+
onListItemNavigate(record) {
|
510
|
+
this.onListItemChange(record)
|
478
511
|
}
|
479
512
|
|
480
513
|
/**
|
@@ -493,7 +526,7 @@ class Select extends Picker {
|
|
493
526
|
}
|
494
527
|
}
|
495
528
|
|
496
|
-
super.onPickerTriggerClick()
|
529
|
+
super.onPickerTriggerClick()
|
497
530
|
}
|
498
531
|
|
499
532
|
/**
|
@@ -501,7 +534,7 @@ class Select extends Picker {
|
|
501
534
|
*/
|
502
535
|
onSelectPostLastItem() {
|
503
536
|
this.record = null;
|
504
|
-
this.focusInputEl()
|
537
|
+
this.focusInputEl()
|
505
538
|
}
|
506
539
|
|
507
540
|
/**
|
@@ -509,55 +542,21 @@ class Select extends Picker {
|
|
509
542
|
*/
|
510
543
|
onSelectPreFirstItem() {
|
511
544
|
this.record = null;
|
512
|
-
this.focusInputEl()
|
513
|
-
}
|
514
|
-
|
515
|
-
|
516
|
-
/**
|
517
|
-
* @param {Object} record
|
518
|
-
* @protected
|
519
|
-
*/
|
520
|
-
onListItemChange(record) {
|
521
|
-
let me = this,
|
522
|
-
displayField = me.displayField,
|
523
|
-
oldValue = me.value,
|
524
|
-
value = record[displayField];
|
525
|
-
|
526
|
-
if (me.value !== value) {
|
527
|
-
me.hintRecordId = null;
|
528
|
-
me.record = record;
|
529
|
-
me._value = value;
|
530
|
-
me.getInputHintEl().value = null;
|
531
|
-
|
532
|
-
me.afterSetValue(value, oldValue, true); // prevent the list from getting filtered
|
533
|
-
|
534
|
-
me.fire('select', {
|
535
|
-
record,
|
536
|
-
value: record[displayField]
|
537
|
-
});
|
538
|
-
}
|
539
|
-
}
|
540
|
-
|
541
|
-
/**
|
542
|
-
* @param {Object} record
|
543
|
-
* @protected
|
544
|
-
*/
|
545
|
-
onListItemNavigate(record) {
|
546
|
-
this.onListItemChange(record);
|
545
|
+
this.focusInputEl()
|
547
546
|
}
|
548
547
|
|
549
548
|
/**
|
550
549
|
*
|
551
550
|
*/
|
552
551
|
selectFirstListItem() {
|
553
|
-
this.selectListItem(0)
|
552
|
+
this.selectListItem(0)
|
554
553
|
}
|
555
554
|
|
556
555
|
/**
|
557
556
|
*
|
558
557
|
*/
|
559
558
|
selectLastListItem() {
|
560
|
-
this.selectListItem(this.store.getCount() -1)
|
559
|
+
this.selectListItem(this.store.getCount() -1)
|
561
560
|
}
|
562
561
|
|
563
562
|
/**
|
@@ -576,7 +575,7 @@ class Select extends Picker {
|
|
576
575
|
}
|
577
576
|
|
578
577
|
me.list.selectItem(index);
|
579
|
-
me.onListItemNavigate(me.store.getAt(index))
|
578
|
+
me.onListItemNavigate(me.store.getAt(index))
|
580
579
|
}
|
581
580
|
|
582
581
|
/**
|
@@ -605,7 +604,7 @@ class Select extends Picker {
|
|
605
604
|
VDomUtil.replaceVdomChild(vdom, inputEl.parentNode.id, inputEl.vdom);
|
606
605
|
}
|
607
606
|
|
608
|
-
|
607
|
+
!silent && me.update()
|
609
608
|
}
|
610
609
|
|
611
610
|
/**
|
@@ -619,7 +618,6 @@ class Select extends Picker {
|
|
619
618
|
store = me.store,
|
620
619
|
i = 0,
|
621
620
|
len = store.getCount(),
|
622
|
-
vdom = me.vdom,
|
623
621
|
inputHintEl = me.getInputHintEl(),
|
624
622
|
storeValue;
|
625
623
|
|
@@ -628,7 +626,6 @@ class Select extends Picker {
|
|
628
626
|
storeValue = store.items[i][me.displayField];
|
629
627
|
|
630
628
|
if (!Neo.isString(storeValue)) {
|
631
|
-
console.log(store);
|
632
629
|
return;
|
633
630
|
}
|
634
631
|
|
@@ -640,7 +637,7 @@ class Select extends Picker {
|
|
640
637
|
|
641
638
|
if (hasMatch && inputHintEl) {
|
642
639
|
inputHintEl.value = value + storeValue.substr(value.length);
|
643
|
-
me.hintRecordId = store.items[i][store.keyProperty || store.model.keyProperty]
|
640
|
+
me.hintRecordId = store.items[i][store.keyProperty || store.model.keyProperty]
|
644
641
|
}
|
645
642
|
}
|
646
643
|
|
@@ -649,11 +646,11 @@ class Select extends Picker {
|
|
649
646
|
me.hintRecordId = null;
|
650
647
|
}
|
651
648
|
|
652
|
-
|
649
|
+
!silent && me.update()
|
653
650
|
}
|
654
651
|
|
655
652
|
/**
|
656
|
-
* @param {Boolean}
|
653
|
+
* @param {Boolean} silent=false
|
657
654
|
* @protected
|
658
655
|
*/
|
659
656
|
updateValue(silent=false) {
|
@@ -661,19 +658,18 @@ class Select extends Picker {
|
|
661
658
|
displayField = me.displayField,
|
662
659
|
store = me.store,
|
663
660
|
value = me._value,
|
664
|
-
record = me.record,
|
665
661
|
filter;
|
666
662
|
|
667
663
|
if (store && !Neo.isEmpty(store.filters)) {
|
668
664
|
filter = store.getFilter(displayField);
|
669
665
|
|
670
666
|
if (filter) {
|
671
|
-
filter.value = record?.[displayField] || value;
|
667
|
+
filter.value = me.record?.[displayField] || value;
|
672
668
|
}
|
673
669
|
}
|
674
670
|
|
675
671
|
if (me.typeAhead && !me.picker?.containsFocus) {
|
676
|
-
me.updateTypeAheadValue(value, silent)
|
672
|
+
me.updateTypeAheadValue(value, silent)
|
677
673
|
}
|
678
674
|
}
|
679
675
|
}
|