neo.mjs 8.0.0 → 8.1.0

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 (89) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/view/about/Container.mjs +0 -2
  4. package/apps/portal/view/about/MemberContainer.mjs +1 -20
  5. package/apps/portal/view/home/FooterContainer.mjs +1 -5
  6. package/examples/ConfigurationViewport.mjs +37 -32
  7. package/examples/ServiceWorker.mjs +2 -2
  8. package/examples/grid/cellEditing/MainContainer.mjs +175 -0
  9. package/examples/grid/cellEditing/MainContainerStateProvider.mjs +62 -0
  10. package/examples/grid/cellEditing/MainModel.mjs +30 -0
  11. package/examples/grid/cellEditing/MainStore.mjs +54 -0
  12. package/examples/grid/cellEditing/app.mjs +6 -0
  13. package/examples/grid/cellEditing/index.html +11 -0
  14. package/examples/grid/cellEditing/neo-config.json +6 -0
  15. package/examples/grid/container/MainContainer.mjs +7 -6
  16. package/examples/grid/covid/GridContainer.mjs +36 -36
  17. package/examples/grid/covid/Util.mjs +1 -1
  18. package/examples/grid/covid/neo-config.json +6 -5
  19. package/examples/table/cellEditing/MainContainer.mjs +174 -0
  20. package/examples/table/cellEditing/MainContainerStateProvider.mjs +62 -0
  21. package/examples/table/cellEditing/MainModel.mjs +30 -0
  22. package/examples/table/cellEditing/MainStore.mjs +54 -0
  23. package/examples/table/cellEditing/app.mjs +6 -0
  24. package/examples/table/cellEditing/index.html +11 -0
  25. package/examples/table/cellEditing/neo-config.json +6 -0
  26. package/examples/table/nestedRecordFields/MainContainerStateProvider.mjs +2 -1
  27. package/package.json +8 -8
  28. package/resources/scss/src/apps/portal/home/FooterContainer.scss +11 -2
  29. package/resources/scss/src/examples/grid/covid/GridContainer.scss +1 -1
  30. package/resources/scss/src/grid/Container.scss +13 -23
  31. package/resources/scss/src/grid/View.scss +45 -19
  32. package/resources/scss/src/grid/header/Button.scss +2 -4
  33. package/resources/scss/src/grid/header/Toolbar.scss +1 -2
  34. package/resources/scss/src/grid/plugin/CellEditing.scss +11 -0
  35. package/resources/scss/src/table/plugin/CellEditing.scss +11 -0
  36. package/src/DefaultConfig.mjs +2 -2
  37. package/src/Xhr.mjs +1 -1
  38. package/src/button/Base.mjs +2 -2
  39. package/src/collection/Base.mjs +5 -5
  40. package/src/component/Base.mjs +3 -3
  41. package/src/component/DateSelector.mjs +15 -0
  42. package/src/container/Base.mjs +2 -2
  43. package/src/controller/Base.mjs +3 -3
  44. package/src/dialog/Base.mjs +2 -2
  45. package/src/form/field/Base.mjs +3 -6
  46. package/src/form/field/CheckBox.mjs +2 -2
  47. package/src/form/field/ComboBox.mjs +18 -2
  48. package/src/form/field/Date.mjs +10 -4
  49. package/src/form/field/FileUpload.mjs +4 -4
  50. package/src/form/field/Hidden.mjs +2 -2
  51. package/src/form/field/Text.mjs +2 -2
  52. package/src/grid/Container.mjs +340 -43
  53. package/src/grid/View.mjs +599 -124
  54. package/src/grid/header/Button.mjs +331 -36
  55. package/src/grid/header/Toolbar.mjs +111 -4
  56. package/src/grid/plugin/CellEditing.mjs +30 -0
  57. package/src/layout/Base.mjs +3 -3
  58. package/src/list/Base.mjs +2 -2
  59. package/src/list/Circle.mjs +2 -2
  60. package/src/list/Color.mjs +2 -2
  61. package/src/list/Component.mjs +2 -2
  62. package/src/main/DomEvents.mjs +12 -3
  63. package/src/manager/Base.mjs +3 -3
  64. package/src/manager/Component.mjs +20 -11
  65. package/src/manager/DomEvent.mjs +5 -6
  66. package/src/manager/Focus.mjs +2 -2
  67. package/src/manager/Instance.mjs +4 -4
  68. package/src/manager/Task.mjs +2 -2
  69. package/src/manager/Toast.mjs +3 -3
  70. package/src/plugin/Base.mjs +18 -4
  71. package/src/plugin/Popover.mjs +3 -3
  72. package/src/plugin/PrefixField.mjs +2 -2
  73. package/src/plugin/Resizable.mjs +3 -7
  74. package/src/plugin/Responsive.mjs +2 -2
  75. package/src/selection/Model.mjs +17 -2
  76. package/src/selection/grid/CellColumnModel.mjs +1 -1
  77. package/src/selection/grid/CellColumnRowModel.mjs +1 -1
  78. package/src/selection/grid/CellModel.mjs +1 -1
  79. package/src/selection/grid/ColumnModel.mjs +2 -2
  80. package/src/table/Container.mjs +32 -3
  81. package/src/table/View.mjs +9 -4
  82. package/src/table/header/Toolbar.mjs +15 -1
  83. package/src/table/plugin/CellEditing.mjs +330 -0
  84. package/src/toolbar/Base.mjs +2 -2
  85. package/src/toolbar/Breadcrumb.mjs +1 -1
  86. package/src/tooltip/Base.mjs +2 -2
  87. package/src/util/KeyNavigation.mjs +14 -8
  88. package/src/worker/Base.mjs +3 -3
  89. package/src/grid/README.md +0 -3
@@ -1,5 +1,7 @@
1
- import BaseButton from '../../button/Base.mjs';
2
- import NeoArray from '../../util/Array.mjs';
1
+ import BaseButton from '../../button/Base.mjs';
2
+ import NeoArray from '../../util/Array.mjs';
3
+ import TextField from '../../form/field/Text.mjs';
4
+ import {resolveCallback} from '../../util/Function.mjs';
3
5
 
4
6
  /**
5
7
  * @class Neo.grid.header.Button
@@ -8,7 +10,7 @@ import NeoArray from '../../util/Array.mjs';
8
10
  class Button extends BaseButton {
9
11
  /**
10
12
  * Valid values for align
11
- * @member {String[]} cellAlignValues: ['left', 'center', 'right']
13
+ * @member {String[]} cellAlignValues: ['left','center','right']
12
14
  * @protected
13
15
  * @static
14
16
  */
@@ -30,10 +32,36 @@ class Button extends BaseButton {
30
32
  */
31
33
  baseCls: ['neo-grid-header-button'],
32
34
  /**
33
- * Alignment of the matching table cells. Valid values are left, center, right
35
+ * Alignment of the matching grid cells. Valid values are left, center, right
34
36
  * @member {String} cellAlign_='left'
35
37
  */
36
38
  cellAlign_: 'left',
39
+ /**
40
+ * @member {String|null} dataField=null
41
+ */
42
+ dataField: null,
43
+ /**
44
+ * Sort direction when clicking on an unsorted button
45
+ * @member {String} defaultSortDirection='ASC'
46
+ */
47
+ defaultSortDirection: 'ASC',
48
+ /**
49
+ * @member {Boolean} draggable_=true
50
+ */
51
+ draggable_: true,
52
+ /**
53
+ * @member {Object} editorConfig=null
54
+ */
55
+ editorConfig: null,
56
+ /**
57
+ * @member {Object} filterConfig=null
58
+ */
59
+ filterConfig: null,
60
+ /**
61
+ * @member {Neo.form.field.Base|null} filterField=null
62
+ * @protected
63
+ */
64
+ filterField: null,
37
65
  /**
38
66
  * @member {String} iconCls='fa fa-arrow-circle-up'
39
67
  */
@@ -47,19 +75,31 @@ class Button extends BaseButton {
47
75
  * @member {String|null} isSorted_=null
48
76
  * @protected
49
77
  */
50
- isSorted_: null
78
+ isSorted_: null,
79
+ /**
80
+ * @member {Function|String|null} renderer_='cellRenderer'
81
+ */
82
+ renderer_: 'cellRenderer',
83
+ /**
84
+ * Scope to execute the column renderer.
85
+ * Defaults to the matching grid.Container
86
+ * @member {Neo.core.Base|null} rendererScope=null
87
+ */
88
+ rendererScope: null,
89
+ /**
90
+ * @member {String} role='columnheader'
91
+ */
92
+ role: 'columnheader',
93
+ /**
94
+ * @member {Boolean} showHeaderFilter_=false
95
+ */
96
+ showHeaderFilter_: false,
97
+ /**
98
+ * @member {Boolean} sortable_=true
99
+ */
100
+ sortable_: true
51
101
  }
52
102
 
53
- /**
54
- * Sort direction when clicking on an unsorted button
55
- * @member {String} defaultSortDirection='ASC'
56
- */
57
- defaultSortDirection = 'ASC'
58
- /**
59
- * @member {String|null} field=null
60
- */
61
- field = null
62
-
63
103
  /**
64
104
  * @param {Object} config
65
105
  */
@@ -68,46 +108,146 @@ class Button extends BaseButton {
68
108
 
69
109
  let me = this;
70
110
 
71
- me.addDomListeners({
72
- click: me.onButtonClick,
73
- scope: me
111
+ me.draggable && me.addDomListeners({
112
+ dragend : me.onDragEnd,
113
+ dragenter: me.onDragEnter,
114
+ dragleave: me.onDragLeave,
115
+ dragover : me.onDragOver,
116
+ dragstart: me.onDragStart,
117
+ drop : me.onDrop,
118
+ scope : me
74
119
  })
75
120
  }
76
121
 
77
122
  /**
78
- * Triggered after the isSorted config got changed
123
+ * Triggered after the draggable config got changed
79
124
  * @param {Boolean} value
80
125
  * @param {Boolean} oldValue
81
126
  * @protected
82
127
  */
128
+ afterSetDraggable(value, oldValue) {
129
+ let me = this;
130
+
131
+ if (value === true) {
132
+ me.getVdomRoot().draggable = true
133
+ } else {
134
+ delete me.getVdomRoot().draggable
135
+ }
136
+
137
+ me.update()
138
+ }
139
+
140
+ /**
141
+ * Triggered after the isSorted config got changed
142
+ * @param {String|null} value
143
+ * @param {String|null} oldValue
144
+ * @protected
145
+ */
83
146
  afterSetIsSorted(value, oldValue) {
84
- let me = this,
85
- {cls} = me;
147
+ let me = this,
148
+ {cls} = me,
149
+ container = me.up('grid-container');
86
150
 
87
151
  switch(value) {
88
152
  case null:
89
153
  NeoArray.add(cls, 'neo-sort-hidden');
90
- break;
154
+ break
91
155
  case 'ASC':
92
156
  NeoArray.remove(cls, 'neo-sort-desc');
93
157
  NeoArray.remove(cls, 'neo-sort-hidden');
94
158
  NeoArray.add(cls, 'neo-sort-asc');
95
- break;
159
+ break
96
160
  case 'DESC':
97
161
  NeoArray.remove(cls, 'neo-sort-asc');
98
162
  NeoArray.remove(cls, 'neo-sort-hidden');
99
163
  NeoArray.add(cls, 'neo-sort-desc');
100
- break;
164
+ break
101
165
  }
102
166
 
103
167
  me.cls = cls;
104
168
 
169
+ // testing check until all example grids have a store
170
+ if (!container || !container.store) {
171
+ return
172
+ }
173
+
105
174
  me.mounted && me.fire('sort', {
106
175
  direction: value,
107
- property : me.field
176
+ property : me.dataField
108
177
  })
109
178
  }
110
179
 
180
+ /**
181
+ * Triggered after the showHeaderFilter config got changed
182
+ * @param {Boolean} value
183
+ * @param {Boolean} oldValue
184
+ * @protected
185
+ */
186
+ afterSetShowHeaderFilter(value, oldValue) {
187
+ let me = this;
188
+
189
+ if (value) {
190
+ if (!me.filterField) {
191
+ me.filterField = Neo.create({
192
+ module : TextField,
193
+ appName : me.appName,
194
+ flag : 'filter-field',
195
+ hideLabel: true,
196
+ parentId : me.id,
197
+ style : {marginLeft: '.5em', marginRight: '.5em'},
198
+ windowId : me.windowId,
199
+
200
+ listeners: {
201
+ change : me.changeFilterValue,
202
+ operatorChange: me.changeFilterOperator,
203
+ scope : me
204
+ },
205
+
206
+ ...me.editorConfig
207
+ });
208
+
209
+ me.vdom.cn.push(me.filterField.createVdomReference())
210
+ } else {
211
+ delete me.filterField.vdom.removeDom
212
+ }
213
+ } else if (me.filterField) {
214
+ me.filterField.vdom.removeDom = true
215
+ }
216
+
217
+ me.updateDepth = 2;
218
+ me.update()
219
+ }
220
+
221
+ /**
222
+ * Triggered after the sortable config got changed
223
+ * @param {Boolean} value
224
+ * @param {Boolean} oldValue
225
+ * @protected
226
+ */
227
+ afterSetSortable(value, oldValue) {
228
+ let me = this,
229
+ {cls} = me;
230
+
231
+ if (value === true) {
232
+ NeoArray.remove(cls, 'neo-sort-hidden');
233
+
234
+ me.addDomListeners({
235
+ click: me.onButtonClick,
236
+ scope: me
237
+ })
238
+ } else {
239
+ NeoArray.add(cls, 'neo-sort-hidden');
240
+
241
+ me.removeDomListeners({
242
+ click: me.onButtonClick,
243
+ scope: me
244
+ })
245
+ }
246
+
247
+ me.cls = cls;
248
+ me.update()
249
+ }
250
+
111
251
  /**
112
252
  * Triggered before the cellAlign config gets changed
113
253
  * @param {String} value
@@ -118,6 +258,39 @@ class Button extends BaseButton {
118
258
  return this.beforeSetEnumValue(value, oldValue, 'cellAlign', 'cellAlignValues')
119
259
  }
120
260
 
261
+ /**
262
+ * Triggered before the renderer config gets changed
263
+ * @param {Function|String|null} value
264
+ * @param {Function|String|null} oldValue
265
+ * @protected
266
+ */
267
+ beforeSetRenderer(value, oldValue) {
268
+ return resolveCallback(value, this).fn
269
+ }
270
+
271
+ /**
272
+ * @param {Object} data
273
+ * @param {Neo.button.Base} data.column
274
+ * @param {String} data.dataField
275
+ * @param {Neo.grid.Container} data.gridContainer
276
+ * @param {Number} data.index
277
+ * @param {Object} data.record
278
+ * @param {Number|String} data.value
279
+ * @returns {*}
280
+ */
281
+ cellRenderer(data) {
282
+ return data.value
283
+ }
284
+
285
+ /**
286
+ *
287
+ */
288
+ destroy(...args) {
289
+ this.filterField?.destroy();
290
+
291
+ super.destroy(...args)
292
+ }
293
+
121
294
  /**
122
295
  * @protected
123
296
  */
@@ -145,26 +318,148 @@ class Button extends BaseButton {
145
318
  /**
146
319
  * @protected
147
320
  */
148
- removeSortingCss() {
321
+ onDragEnd() {
322
+ let me = this,
323
+ {style} = me;
324
+
325
+ delete style.opacity;
326
+ me.style = style
327
+ }
328
+
329
+ /**
330
+ * @protected
331
+ */
332
+ onDragEnter() {
149
333
  let me = this,
150
334
  {cls} = me;
151
335
 
152
- NeoArray.add(cls, 'neo-sort-hidden');
336
+ NeoArray.add(cls, 'neo-drag-over');
337
+ me.cls = cls
338
+ }
153
339
 
154
- me.cls = cls;
155
- me._isSorted = null
340
+ /**
341
+ * @protected
342
+ */
343
+ onDragLeave() {
344
+ let me = this,
345
+ {cls} = me;
346
+
347
+ NeoArray.remove(cls, 'neo-drag-over');
348
+ me.cls = cls
349
+ }
350
+
351
+ /**
352
+ * @param {Object} event
353
+ */
354
+ onDragOver(event) {
355
+ //console.log('onDragOver', event);
356
+ }
357
+
358
+ /**
359
+ * @protected
360
+ */
361
+ onDragStart() {
362
+ let me = this,
363
+ {style} = me;
364
+
365
+ style.opacity = 0.4;
366
+ me.style = style
156
367
  }
157
368
 
158
369
  /**
159
370
  * @param {Object} data
160
- * @param {String} data.field
161
- * @param {Number} data.index
162
- * @param {Object} data.record
163
- * @param {Number|String} data.value
164
- * @returns {*}
165
371
  */
166
- renderer(data) {
167
- return data.value
372
+ onDrop(data) {
373
+ let me = this,
374
+ headerToolbar = me.parent,
375
+ {style} = me,
376
+ gridContainer = headerToolbar.parent;
377
+
378
+ me.onDragLeave();
379
+ headerToolbar.switchItems(me.id, data.srcId);
380
+ gridContainer.createViewData(gridContainer.store.data);
381
+
382
+ style.opacity = 1;
383
+ me.style = style
384
+ }
385
+
386
+ /**
387
+ * @param {Object} data
388
+ */
389
+ changeFilterOperator(data) {
390
+ let me = this,
391
+ gridContainer = me.up('grid-container'),
392
+ store = gridContainer?.store,
393
+ operator = data.value,
394
+ filter, filters;
395
+
396
+ if (store) {
397
+ filter = store.getFilter(me.dataField);
398
+
399
+ if (!filter) {
400
+ filters = store.filters;
401
+
402
+ filters.push({
403
+ property: me.dataField,
404
+ operator,
405
+ value : null,
406
+ ...me.filterConfig
407
+ });
408
+
409
+ store.filters = filters
410
+ } else {
411
+ filter.operator = operator
412
+ }
413
+ }
414
+ }
415
+
416
+ /**
417
+ * @param {Object} data
418
+ */
419
+ changeFilterValue(data) {
420
+ let me = this,
421
+ gridContainer = me.up('grid-container'),
422
+ store = gridContainer?.store,
423
+ {value} = data,
424
+ field, filter, filters, model;
425
+
426
+ if (store) {
427
+ filter = store.getFilter(me.dataField);
428
+ model = store.model;
429
+ field = model && model.getField(me.dataField);
430
+
431
+ if (value && field.type.toLowerCase() === 'date') {
432
+ value = new Date(value)
433
+ }
434
+
435
+ if (!filter) {
436
+ filters = store.filters;
437
+
438
+ filters.push({
439
+ property: me.dataField,
440
+ operator: 'like',
441
+ value,
442
+ ...me.filterConfig
443
+ });
444
+
445
+ store.filters = filters
446
+ } else {
447
+ filter.value = value
448
+ }
449
+ }
450
+ }
451
+
452
+ /**
453
+ * @protected
454
+ */
455
+ removeSortingCss() {
456
+ let me = this,
457
+ {cls} = me;
458
+
459
+ NeoArray.add(cls, 'neo-sort-hidden');
460
+
461
+ me.cls = cls;
462
+ me._isSorted = null
168
463
  }
169
464
  }
170
465
 
@@ -1,4 +1,5 @@
1
1
  import BaseToolbar from '../../toolbar/Base.mjs';
2
+ import NeoArray from '../../util/Array.mjs';
2
3
 
3
4
  /**
4
5
  * @class Neo.grid.header.Toolbar
@@ -21,11 +22,83 @@ class Toolbar extends BaseToolbar {
21
22
  */
22
23
  baseCls: ['neo-grid-header-toolbar', 'neo-toolbar'],
23
24
  /**
24
- * @member {Object} itemDefaults={ntype:'grid-header-button'}
25
- * @protected
25
+ * @member {Neo.grid.Container|null} gridContainer=null
26
+ */
27
+ gridContainer: null,
28
+ /**
29
+ * @member {Object} itemDefaults={ntype: 'grid-header-button'}
26
30
  */
27
31
  itemDefaults: {
28
32
  ntype: 'grid-header-button'
33
+ },
34
+ /**
35
+ * @member {String} role='row'
36
+ */
37
+ role: 'row',
38
+ /**
39
+ * @member {Boolean} showHeaderFilters_=false
40
+ */
41
+ showHeaderFilters_: false,
42
+ /**
43
+ * @member {Boolean} sortable=true
44
+ */
45
+ sortable: true,
46
+ /**
47
+ * @member {Object} _vdom
48
+ */
49
+ _vdom:
50
+ {'aria-rowindex': 1, cn: [{cn: []}]}
51
+ }
52
+
53
+ /**
54
+ * Triggered after the mounted config got changed
55
+ * @param {Boolean} value
56
+ * @param {Boolean} oldValue
57
+ * @protected
58
+ */
59
+ afterSetMounted(value, oldValue) {
60
+ super.afterSetMounted(value, oldValue);
61
+ value && this.passSizeToView()
62
+ }
63
+
64
+ /**
65
+ * Triggered after the showHeaderFilters config got changed
66
+ * @param {Boolean} value
67
+ * @param {Boolean} oldValue
68
+ * @protected
69
+ */
70
+ afterSetShowHeaderFilters(value, oldValue) {
71
+ if (oldValue !== undefined) {
72
+ let me = this;
73
+
74
+ me.items.forEach(item => {
75
+ item.setSilent({
76
+ showHeaderFilter: value
77
+ })
78
+ });
79
+
80
+ me.updateDepth = -1; // filters can be deeply nested
81
+ me.update()
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Triggered after the sortable config got changed
87
+ * @param {Boolean} value
88
+ * @param {Boolean} oldValue
89
+ * @protected
90
+ */
91
+ afterSetSortable(value, oldValue) {
92
+ if (oldValue !== undefined) {
93
+ let me = this;
94
+
95
+ me.items.forEach(item => {
96
+ item.setSilent({
97
+ sortable: value
98
+ })
99
+ });
100
+
101
+ me.update()
29
102
  }
30
103
  }
31
104
 
@@ -41,11 +114,13 @@ class Toolbar extends BaseToolbar {
41
114
 
42
115
  let dockLeftWidth = 0,
43
116
  dockRightWidth = 0,
44
- items = me.items,
117
+ {items} = me,
45
118
  len = items.length,
46
119
  style;
47
120
 
48
121
  items.forEach((item, index) => {
122
+ item.vdom['aria-colindex'] = index + 1; // 1 based
123
+
49
124
  style = item.wrapperStyle;
50
125
 
51
126
  // todo: only add px if number
@@ -54,7 +129,7 @@ class Toolbar extends BaseToolbar {
54
129
  if (item.width) {style.width = item.width + 'px'}
55
130
 
56
131
  if (item.dock) {
57
- item.vdom.cls.push('neo-locked');
132
+ NeoArray.add(item.vdom.cls, 'neo-locked');
58
133
 
59
134
  if (item.dock === 'left') {
60
135
  style.left = dockLeftWidth + 'px'
@@ -63,6 +138,7 @@ class Toolbar extends BaseToolbar {
63
138
  dockLeftWidth += (item.width + 1) // todo: borders fix
64
139
  }
65
140
 
141
+ item.sortable = me.sortable;
66
142
  item.wrapperStyle = style;
67
143
 
68
144
  // inverse loop direction
@@ -80,6 +156,37 @@ class Toolbar extends BaseToolbar {
80
156
 
81
157
  me.update()
82
158
  }
159
+
160
+ /**
161
+ * @param {String} dataField
162
+ * @returns {Neo.button.Base|null}
163
+ */
164
+ getColumn(dataField) {
165
+ for (const item of this.items) {
166
+ if (item.dataField === dataField) {
167
+ return item
168
+ }
169
+ }
170
+
171
+ return null
172
+ }
173
+
174
+
175
+
176
+ /**
177
+ * @param {Boolean} silent=false
178
+ * @returns {Promise<void>}
179
+ */
180
+ async passSizeToView(silent=false) {
181
+ let me = this,
182
+ rects = await me.getDomRect(me.items.map(item => item.id)),
183
+ lastItem = rects[rects.length - 1];
184
+
185
+ me.gridContainer.view[silent ? 'setSilent' : 'set']({
186
+ availableWidth : lastItem.x + lastItem.width - rects[0].x,
187
+ columnPositions: rects.map(item => ({width: item.width, x: item.x - rects[0].x}))
188
+ })
189
+ }
83
190
  }
84
191
 
85
192
  export default Neo.setupClass(Toolbar);
@@ -0,0 +1,30 @@
1
+ import BaseCellEditing from '../../table/plugin/CellEditing.mjs';
2
+
3
+ /**
4
+ * @class Neo.grid.plugin.CellEditing
5
+ * @extends Neo.table.plugin.CellEditing
6
+ */
7
+ class CellEditing extends BaseCellEditing {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Neo.grid.plugin.CellEditing'
11
+ * @protected
12
+ */
13
+ className: 'Neo.grid.plugin.CellEditing',
14
+ /**
15
+ * @member {String} ntype='plugin-grid-cell-editing'
16
+ * @protected
17
+ */
18
+ ntype: 'plugin-grid-cell-editing',
19
+ /**
20
+ * @member {String} cellCls='neo-grid-cell'
21
+ */
22
+ cellCls: 'neo-grid-cell',
23
+ /**
24
+ * @member {String[]} editorCls=['neo-grid-editor']
25
+ */
26
+ editorCls: ['neo-grid-editor']
27
+ }
28
+ }
29
+
30
+ export default Neo.setupClass(CellEditing);
@@ -1,4 +1,4 @@
1
- import CoreBase from '../core/Base.mjs';
1
+ import Base from '../core/Base.mjs';
2
2
  import NeoArray from '../util/Array.mjs';
3
3
 
4
4
  /**
@@ -7,7 +7,7 @@ import NeoArray from '../util/Array.mjs';
7
7
  * @class Neo.layout.Base
8
8
  * @extends Neo.core.Base
9
9
  */
10
- class Base extends CoreBase {
10
+ class Layout extends Base {
11
11
  static config = {
12
12
  /**
13
13
  * @member {String} className='Neo.layout.Base'
@@ -156,4 +156,4 @@ class Base extends CoreBase {
156
156
  }
157
157
  }
158
158
 
159
- export default Neo.setupClass(Base);
159
+ export default Neo.setupClass(Layout);
package/src/list/Base.mjs CHANGED
@@ -8,7 +8,7 @@ import Store from '../data/Store.mjs';
8
8
  * @class Neo.list.Base
9
9
  * @extends Neo.component.Base
10
10
  */
11
- class Base extends Component {
11
+ class List extends Component {
12
12
  static config = {
13
13
  /**
14
14
  * @member {String} className='Neo.list.Base'
@@ -848,4 +848,4 @@ class Base extends Component {
848
848
  }
849
849
  }
850
850
 
851
- export default Neo.setupClass(Base);
851
+ export default Neo.setupClass(List);
@@ -1,11 +1,11 @@
1
1
  import CircleComponent from '../component/Circle.mjs';
2
- import Component from './Component.mjs';
2
+ import ComponentList from './Component.mjs';
3
3
 
4
4
  /**
5
5
  * @class Neo.list.Circle
6
6
  * @extends Neo.list.Component
7
7
  */
8
- class Circle extends Component {
8
+ class Circle extends ComponentList {
9
9
  static config = {
10
10
  /**
11
11
  * @member {String} className='Neo.list.Circle'
@@ -1,10 +1,10 @@
1
- import Base from './Base.mjs';
1
+ import List from './Base.mjs';
2
2
 
3
3
  /**
4
4
  * @class Neo.list.Color
5
5
  * @extends Neo.list.Base
6
6
  */
7
- class Color extends Base {
7
+ class Color extends List {
8
8
  static config = {
9
9
  /**
10
10
  * @member {String} className='Neo.list.Color'