tabulator-tables 5.1.8 → 5.2.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 (100) hide show
  1. package/bower.json +1 -1
  2. package/dist/css/tabulator.css +59 -51
  3. package/dist/css/tabulator.css.map +1 -1
  4. package/dist/css/tabulator.min.css +1 -1
  5. package/dist/css/tabulator.min.css.map +1 -1
  6. package/dist/css/tabulator_bootstrap3.css +59 -51
  7. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  8. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  9. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  10. package/dist/css/tabulator_bootstrap4.css +59 -51
  11. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  12. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  13. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  14. package/dist/css/tabulator_bootstrap5.css +1575 -0
  15. package/dist/css/tabulator_bootstrap5.css.map +1 -0
  16. package/dist/css/tabulator_bootstrap5.min.css +2 -0
  17. package/dist/css/tabulator_bootstrap5.min.css.map +1 -0
  18. package/dist/css/tabulator_bulma.css +59 -51
  19. package/dist/css/tabulator_bulma.css.map +1 -1
  20. package/dist/css/tabulator_bulma.min.css +1 -1
  21. package/dist/css/tabulator_bulma.min.css.map +1 -1
  22. package/dist/css/tabulator_materialize.css +59 -51
  23. package/dist/css/tabulator_materialize.css.map +1 -1
  24. package/dist/css/tabulator_materialize.min.css +1 -1
  25. package/dist/css/tabulator_materialize.min.css.map +1 -1
  26. package/dist/css/tabulator_midnight.css +59 -51
  27. package/dist/css/tabulator_midnight.css.map +1 -1
  28. package/dist/css/tabulator_midnight.min.css +1 -1
  29. package/dist/css/tabulator_midnight.min.css.map +1 -1
  30. package/dist/css/tabulator_modern.css +59 -51
  31. package/dist/css/tabulator_modern.css.map +1 -1
  32. package/dist/css/tabulator_modern.min.css +1 -1
  33. package/dist/css/tabulator_modern.min.css.map +1 -1
  34. package/dist/css/tabulator_semanticui.css +59 -51
  35. package/dist/css/tabulator_semanticui.css.map +1 -1
  36. package/dist/css/tabulator_semanticui.min.css +1 -1
  37. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  38. package/dist/css/tabulator_simple.css +59 -51
  39. package/dist/css/tabulator_simple.css.map +1 -1
  40. package/dist/css/tabulator_simple.min.css +1 -1
  41. package/dist/css/tabulator_simple.min.css.map +1 -1
  42. package/dist/css/tabulator_site.css +59 -51
  43. package/dist/css/tabulator_site.css.map +1 -1
  44. package/dist/css/tabulator_site.min.css +1 -1
  45. package/dist/css/tabulator_site.min.css.map +1 -1
  46. package/dist/js/tabulator.js +2539 -1658
  47. package/dist/js/tabulator.js.map +1 -1
  48. package/dist/js/tabulator.min.js +2 -2
  49. package/dist/js/tabulator.min.js.map +1 -1
  50. package/dist/js/tabulator_esm.js +2742 -2066
  51. package/dist/js/tabulator_esm.js.map +1 -1
  52. package/dist/js/tabulator_esm.min.js +2 -2
  53. package/dist/js/tabulator_esm.min.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/js/core/FooterManager.js +6 -13
  56. package/src/js/core/Module.js +44 -2
  57. package/src/js/core/Tabulator.js +341 -289
  58. package/src/js/core/cell/Cell.js +9 -38
  59. package/src/js/core/column/Column.js +8 -44
  60. package/src/js/core/column/defaults/options.js +0 -2
  61. package/src/js/core/defaults/options.js +5 -2
  62. package/src/js/core/modules/optional.js +2 -0
  63. package/src/js/core/row/Row.js +127 -118
  64. package/src/js/core/tools/Alert.js +63 -0
  65. package/src/js/core/tools/DataLoader.js +12 -84
  66. package/src/js/core/tools/InteractionMonitor.js +1 -1
  67. package/src/js/core/tools/ModuleBinder.js +30 -23
  68. package/src/js/core/tools/Popup.js +251 -0
  69. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +2 -2
  70. package/src/js/modules/Edit/Edit.js +5 -25
  71. package/src/js/modules/Edit/List.js +997 -0
  72. package/src/js/modules/Edit/defaults/editors/autocomplete.js +6 -446
  73. package/src/js/modules/Edit/defaults/editors/input.js +4 -0
  74. package/src/js/modules/Edit/defaults/editors/list.js +7 -0
  75. package/src/js/modules/Edit/defaults/editors/number.js +4 -0
  76. package/src/js/modules/Edit/defaults/editors/select.js +5 -585
  77. package/src/js/modules/Edit/defaults/editors/textarea.js +4 -0
  78. package/src/js/modules/Edit/defaults/editors/tickCross.js +17 -5
  79. package/src/js/modules/Edit/defaults/editors.js +2 -0
  80. package/src/js/modules/Filter/Filter.js +7 -4
  81. package/src/js/modules/Format/defaults/formatters/datetime.js +9 -1
  82. package/src/js/modules/Format/defaults/formatters/datetimediff.js +10 -3
  83. package/src/js/modules/Format/defaults/formatters/link.js +12 -1
  84. package/src/js/modules/Format/defaults/formatters/money.js +5 -3
  85. package/src/js/modules/Format/defaults/formatters/tickCross.js +2 -1
  86. package/src/js/modules/FrozenColumns/FrozenColumns.js +30 -8
  87. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +5 -1
  88. package/src/js/modules/Menu/Menu.js +58 -158
  89. package/src/js/modules/Mutator/Mutator.js +20 -0
  90. package/src/js/modules/Page/Page.js +7 -3
  91. package/src/js/modules/Persistence/Persistence.js +1 -1
  92. package/src/js/modules/Popup/Popup.js +194 -0
  93. package/src/js/modules/ResizeColumns/ResizeColumns.js +138 -81
  94. package/src/js/modules/Sort/defaults/sorters/datetime.js +15 -2
  95. package/src/js/modules/Tooltip/Tooltip.js +132 -0
  96. package/src/js/modules/Validate/Validate.js +107 -71
  97. package/src/scss/tabulator.scss +349 -349
  98. package/src/scss/themes/bootstrap/functions5.scss +302 -0
  99. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +546 -0
  100. package/src/scss/themes/bootstrap/variables5.scss +1641 -0
@@ -1,590 +1,10 @@
1
- import Helpers from '../../../../core/tools/Helpers.js';
1
+ import List from '../../List.js';
2
2
 
3
- //dropdown select editor
4
3
  export default function(cell, onRendered, success, cancel, editorParams){
5
- var self = this,
6
- cellEl = cell.getElement(),
7
- initialValue = cell.getValue(),
8
- vertNav = editorParams.verticalNavigation || "editor",
9
- initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? (Array.isArray(initialValue) ? initialValue : [initialValue]) : (typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : []),
10
- input = document.createElement("input"),
11
- listEl = document.createElement("div"),
12
- multiselect = editorParams.multiselect,
13
- dataItems = [],
14
- currentItem = {},
15
- displayItems = [],
16
- currentItems = [],
17
- blurable = true,
18
- blockListShow = false,
19
- searchWord = "",
20
- searchWordTimeout = null;
21
4
 
22
- if(Array.isArray(editorParams) || (!Array.isArray(editorParams) && typeof editorParams === "object" && !editorParams.values)){
23
- console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
24
- editorParams = {values:editorParams};
25
- }
5
+ console.warn("The select editor has been deprecated, please use the new list editor");
26
6
 
27
- function getUniqueColumnValues(field){
28
- var output = {},
29
- data = self.table.getData(),
30
- column;
7
+ var list = new List(this, cell, onRendered, success, cancel, editorParams);
31
8
 
32
- if(field){
33
- column = self.table.columnManager.getColumnByField(field);
34
- }else{
35
- column = cell.getColumn()._getSelf();
36
- }
37
-
38
- if(column){
39
- data.forEach(function(row){
40
- var val = column.getFieldValue(row);
41
-
42
- if(val !== null && typeof val !== "undefined" && val !== ""){
43
- output[val] = true;
44
- }
45
- });
46
- }else{
47
- console.warn("unable to find matching column to create select lookup list:", field);
48
- }
49
-
50
- return Object.keys(output);
51
- }
52
-
53
- function parseItems(inputValues, curentValues){
54
- var dataList = [];
55
- var displayList = [];
56
-
57
- function processComplexListItem(item){
58
- var item = {
59
- label:item.label,
60
- value:item.value,
61
- itemParams:item.itemParams,
62
- elementAttributes: item.elementAttributes,
63
- element:false,
64
- };
65
-
66
- // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
67
- // setCurrentItem(item);
68
- // }
69
-
70
- if(curentValues.indexOf(item.value) > -1){
71
- setItem(item);
72
- }
73
-
74
- dataList.push(item);
75
- displayList.push(item);
76
-
77
- return item;
78
- }
79
-
80
- if(typeof inputValues == "function"){
81
- inputValues = inputValues(cell);
82
- }
83
-
84
- if(Array.isArray(inputValues)){
85
- inputValues.forEach(function(value){
86
- var item;
87
-
88
- if(typeof value === "object"){
89
-
90
- if(value.options){
91
- item = {
92
- label:value.label,
93
- group:true,
94
- itemParams:value.itemParams,
95
- elementAttributes:value.elementAttributes,
96
- element:false,
97
- };
98
-
99
- displayList.push(item);
100
-
101
- value.options.forEach(function(item){
102
- processComplexListItem(item);
103
- });
104
- }else{
105
- processComplexListItem(value);
106
- }
107
-
108
- }else{
109
-
110
- item = {
111
- label:value,
112
- value:value,
113
- element:false,
114
- };
115
-
116
- // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
117
- // setCurrentItem(item);
118
- // }
119
-
120
- if(curentValues.indexOf(item.value) > -1){
121
- setItem(item);
122
- }
123
-
124
- dataList.push(item);
125
- displayList.push(item);
126
- }
127
- });
128
- }else{
129
- for(var key in inputValues){
130
- var item = {
131
- label:inputValues[key],
132
- value:key,
133
- element:false,
134
- };
135
-
136
- // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
137
- // setCurrentItem(item);
138
- // }
139
-
140
- if(curentValues.indexOf(item.value) > -1){
141
- setItem(item);
142
- }
143
-
144
- dataList.push(item);
145
- displayList.push(item);
146
- }
147
- }
148
-
149
- if(editorParams.sortValuesList){
150
- dataList.sort((a, b) => {
151
- return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);
152
- });
153
-
154
- displayList.sort((a, b) => {
155
- return a.label < b.label ? -1 : (a.label > b.label ? 1 : 0);
156
- });
157
-
158
- if(editorParams.sortValuesList !== "asc"){
159
- dataList.reverse();
160
- displayList.reverse();
161
- }
162
- }
163
-
164
- dataItems = dataList;
165
- displayItems = displayList;
166
-
167
- fillList();
168
- }
169
-
170
- function fillList(){
171
- while(listEl.firstChild) listEl.removeChild(listEl.firstChild);
172
-
173
- displayItems.forEach(function(item){
174
-
175
- var el = item.element;
176
-
177
- if(!el){
178
- el = document.createElement("div");
179
- item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;
180
- if(item.group){
181
- el.classList.add("tabulator-edit-select-list-group");
182
- el.tabIndex = 0;
183
- el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
184
- }else{
185
- el.classList.add("tabulator-edit-select-list-item");
186
- el.tabIndex = 0;
187
- el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
188
-
189
- el.addEventListener("click", function(){
190
- blockListShow = true;
191
-
192
- setTimeout(() => {
193
- blockListShow = false;
194
- }, 10);
195
-
196
- // setCurrentItem(item);
197
- // chooseItem();
198
- if(multiselect){
199
- toggleItem(item);
200
- input.focus();
201
- }else{
202
- chooseItem(item);
203
- }
204
-
205
- });
206
-
207
- // if(item === currentItem){
208
- // el.classList.add("active");
209
- // }
210
-
211
- if(currentItems.indexOf(item) > -1){
212
- el.classList.add("active");
213
- }
214
- }
215
-
216
- if(item.elementAttributes && typeof item.elementAttributes == "object"){
217
- for (let key in item.elementAttributes){
218
- if(key.charAt(0) == "+"){
219
- key = key.slice(1);
220
- el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]);
221
- }else{
222
- el.setAttribute(key, item.elementAttributes[key]);
223
- }
224
- }
225
- }
226
- el.addEventListener("mousedown", function(){
227
- blurable = false;
228
-
229
- setTimeout(function(){
230
- blurable = true;
231
- }, 10);
232
- });
233
-
234
- item.element = el;
235
-
236
-
237
- }
238
-
239
- listEl.appendChild(el);
240
- });
241
- }
242
-
243
-
244
- function setCurrentItem(item, active){
245
-
246
- if(!multiselect && currentItem && currentItem.element){
247
- currentItem.element.classList.remove("active");
248
- }
249
-
250
- if(currentItem && currentItem.element){
251
- currentItem.element.classList.remove("focused");
252
- }
253
-
254
- currentItem = item;
255
-
256
- if(item.element){
257
- item.element.classList.add("focused");
258
- if(active){
259
- item.element.classList.add("active");
260
- }
261
- }
262
-
263
- if(item && item.element && item.element.scrollIntoView){
264
- item.element.scrollIntoView({behavior: 'smooth', block: 'nearest', inline: 'start'});
265
- }
266
- }
267
-
268
-
269
- // function chooseItem(){
270
- // hideList();
271
-
272
- // if(initialValue !== currentItem.value){
273
- // initialValue = currentItem.value;
274
- // success(currentItem.value);
275
- // }else{
276
- // cancel();
277
- // }
278
- // }
279
-
280
- function setItem(item) {
281
- var index = currentItems.indexOf(item);
282
-
283
- if(index == -1){
284
- currentItems.push(item);
285
- setCurrentItem(item, true);
286
- }
287
-
288
- fillInput();
289
- }
290
-
291
- function unsetItem(index) {
292
- var item = currentItems[index];
293
-
294
- if(index > -1){
295
- currentItems.splice(index, 1);
296
- if(item.element){
297
- item.element.classList.remove("active");
298
- }
299
- }
300
- }
301
-
302
- function toggleItem(item) {
303
- if(!item){
304
- item = currentItem;
305
- }
306
-
307
- var index = currentItems.indexOf(item);
308
-
309
- if(index > -1){
310
- unsetItem(index);
311
- }else{
312
- if(multiselect !== true && currentItems.length >= multiselect){
313
- unsetItem(0);
314
- }
315
-
316
- setItem(item);
317
- }
318
-
319
- fillInput();
320
-
321
- }
322
-
323
- function chooseItem(item){
324
- hideList();
325
-
326
- if(!item){
327
- item = currentItem;
328
- }
329
-
330
- if(item){
331
- input.value = item.label;
332
- success(item.value);
333
- }
334
-
335
- initialDisplayValue = [item.value];
336
- }
337
-
338
-
339
- function chooseItems(silent){
340
- if(!silent){
341
- hideList();
342
- }
343
-
344
- var output = [];
345
-
346
- currentItems.forEach((item) => {
347
- output.push(item.value);
348
- });
349
-
350
- initialDisplayValue = output;
351
-
352
- success(output);
353
- }
354
-
355
- function fillInput(){
356
- var output = [];
357
-
358
- currentItems.forEach((item) => {
359
- output.push(item.label);
360
- });
361
-
362
- input.value = output.join(", ");
363
-
364
- if(self.currentCell === false){
365
- chooseItems(true);
366
- }
367
- }
368
-
369
-
370
- function unsetItems() {
371
-
372
- var len = currentItems.length;
373
-
374
- for(let i = 0; i < len; i++){
375
- unsetItem(0);
376
- }
377
- }
378
-
379
- function cancelItem(){
380
- hideList();
381
- cancel();
382
- }
383
-
384
- function showList(){
385
- currentItems = [];
386
-
387
- if(!listEl.parentNode){
388
- if(editorParams.values === true){
389
- parseItems(getUniqueColumnValues(), initialDisplayValue);
390
- }else if(typeof editorParams.values === "string"){
391
- parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
392
- }else{
393
- parseItems(editorParams.values || [], initialDisplayValue);
394
- }
395
-
396
-
397
- var offset = Helpers.elOffset(cellEl);
398
-
399
- listEl.style.minWidth = cellEl.offsetWidth + "px";
400
-
401
- listEl.style.top = (offset.top + cellEl.offsetHeight) + "px";
402
- listEl.style.left = offset.left + "px";
403
-
404
-
405
- listEl.addEventListener("mousedown", function(e){
406
- blurable = false;
407
-
408
- setTimeout(function(){
409
- blurable = true;
410
- }, 10);
411
- });
412
-
413
- document.body.appendChild(listEl);
414
- }
415
- }
416
-
417
- function hideList(){
418
- if(listEl.parentNode){
419
- listEl.parentNode.removeChild(listEl);
420
- }
421
-
422
- removeScrollListener();
423
- }
424
-
425
- function removeScrollListener() {
426
- self.table.rowManager.element.removeEventListener("scroll", cancelItem);
427
- }
428
-
429
- function scrollTovalue(char){
430
-
431
- clearTimeout(searchWordTimeout);
432
-
433
- var character = String.fromCharCode(event.keyCode).toLowerCase();
434
- searchWord += character.toLowerCase();
435
-
436
- var match = dataItems.find((item) => {
437
- return typeof item.label !== "undefined" && item.label.toLowerCase().startsWith(searchWord);
438
- });
439
-
440
- if(match){
441
- setCurrentItem(match, !multiselect);
442
- }
443
-
444
- searchWordTimeout = setTimeout(() => {
445
- searchWord = "";
446
- }, 800)
447
- }
448
-
449
- //style input
450
- input.setAttribute("type", "text");
451
-
452
- input.style.padding = "4px";
453
- input.style.width = "100%";
454
- input.style.boxSizing = "border-box";
455
- input.style.cursor = "default";
456
- input.readOnly = (this.currentCell != false);
457
-
458
- if(editorParams.elementAttributes && typeof editorParams.elementAttributes == "object"){
459
- for (let key in editorParams.elementAttributes){
460
- if(key.charAt(0) == "+"){
461
- key = key.slice(1);
462
- input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
463
- }else{
464
- input.setAttribute(key, editorParams.elementAttributes[key]);
465
- }
466
- }
467
- }
468
-
469
- input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
470
-
471
- // if(editorParams.values === true){
472
- // parseItems(getUniqueColumnValues(), initialValue);
473
- // }else if(typeof editorParams.values === "string"){
474
- // parseItems(getUniqueColumnValues(editorParams.values), initialValue);
475
- // }else{
476
- // parseItems(editorParams.values || [], initialValue);
477
- // }
478
-
479
- input.addEventListener("search", function(e){
480
- if(!input.value){
481
- unsetItems();
482
- chooseItems();
483
- showList();
484
- }
485
- });
486
-
487
- //allow key based navigation
488
- input.addEventListener("keydown", function(e){
489
- var index;
490
-
491
- switch(e.keyCode){
492
- case 38: //up arrow
493
- index = dataItems.indexOf(currentItem);
494
-
495
- if(vertNav == "editor" || (vertNav == "hybrid" && index)){
496
- e.stopImmediatePropagation();
497
- e.stopPropagation();
498
- e.preventDefault();
499
-
500
- if(index > 0){
501
- setCurrentItem(dataItems[index - 1], !multiselect);
502
- }
503
- }
504
- break;
505
-
506
- case 40: //down arrow
507
- index = dataItems.indexOf(currentItem);
508
-
509
- if(vertNav == "editor" || (vertNav == "hybrid" && index < dataItems.length - 1)){
510
- e.stopImmediatePropagation();
511
- e.stopPropagation();
512
- e.preventDefault();
513
-
514
- if(index < dataItems.length - 1){
515
- if(index == -1){
516
- setCurrentItem(dataItems[0], !multiselect);
517
- }else{
518
- setCurrentItem(dataItems[index + 1], !multiselect);
519
- }
520
- }
521
- }
522
- break;
523
-
524
- case 37: //left arrow
525
- case 39: //right arrow
526
- e.stopImmediatePropagation();
527
- e.stopPropagation();
528
- e.preventDefault();
529
- break;
530
-
531
- case 13: //enter
532
- // chooseItem();
533
-
534
- if(multiselect){
535
- toggleItem();
536
- }else{
537
- chooseItem();
538
- }
539
-
540
- break;
541
-
542
- case 27: //escape
543
- cancelItem();
544
- break;
545
-
546
- case 9: //tab
547
- break;
548
-
549
- default:
550
- if(self.currentCell === false){
551
- e.preventDefault();
552
- }
553
-
554
- if(e.keyCode >= 38 && e.keyCode <= 90){
555
- scrollTovalue(e.keyCode);
556
- }
557
- }
558
- });
559
-
560
- input.addEventListener("blur", function(e){
561
- if(blurable){
562
- if(multiselect){
563
- chooseItems();
564
- }else{
565
- cancelItem();
566
- }
567
- }
568
- });
569
-
570
- input.addEventListener("focus", function(e){
571
- if(!blockListShow){
572
- showList();
573
- }
574
- });
575
-
576
- //style list element
577
- listEl = document.createElement("div");
578
- listEl.classList.add("tabulator-edit-select-list");
579
-
580
- onRendered(function(){
581
- input.style.height = "100%";
582
- input.focus({preventScroll: true});
583
- });
584
-
585
- setTimeout(() => {
586
- this.table.rowManager.element.addEventListener("scroll", cancelItem);
587
- }, 10);
588
-
589
- return input;
590
- };
9
+ return list.input;
10
+ }
@@ -39,6 +39,10 @@ export default function(cell, onRendered, success, cancel, editorParams){
39
39
  input.scrollHeight;
40
40
  input.style.height = input.scrollHeight + "px";
41
41
  cell.getRow().normalizeHeight();
42
+
43
+ if(editorParams.selectContents){
44
+ input.select();
45
+ }
42
46
  });
43
47
 
44
48
  function onChange(e){
@@ -4,7 +4,9 @@ export default function(cell, onRendered, success, cancel, editorParams){
4
4
  input = document.createElement("input"),
5
5
  tristate = editorParams.tristate,
6
6
  indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
7
- indetermState = false;
7
+ indetermState = false,
8
+ trueValueSet = Object.keys(editorParams).includes("trueValue"),
9
+ falseValueSet = Object.keys(editorParams).includes("falseValue");
8
10
 
9
11
  input.setAttribute("type", "checkbox");
10
12
  input.style.marginTop = "5px";
@@ -34,13 +36,23 @@ export default function(cell, onRendered, success, cancel, editorParams){
34
36
  });
35
37
  }
36
38
 
37
- input.checked = value === true || value === "true" || value === "True" || value === 1;
39
+ input.checked = trueValueSet ? value === editorParams.trueValue : (value === true || value === "true" || value === "True" || value === 1);
38
40
 
39
41
  onRendered(function(){
40
42
  input.focus();
41
43
  });
42
44
 
43
45
  function setValue(blur){
46
+ var checkedValue = input.checked;
47
+
48
+ if(trueValueSet && checkedValue){
49
+ checkedValue = editorParams.trueValue;
50
+ }else if(falseValueSet && !checkedValue){
51
+ checkedValue = editorParams.falseValue;
52
+ }else{
53
+ checkedValue = checkedValue;
54
+ }
55
+
44
56
  if(tristate){
45
57
  if(!blur){
46
58
  if(input.checked && !indetermState){
@@ -50,17 +62,17 @@ export default function(cell, onRendered, success, cancel, editorParams){
50
62
  return indetermValue;
51
63
  }else{
52
64
  indetermState = false;
53
- return input.checked;
65
+ return checkedValue;
54
66
  }
55
67
  }else{
56
68
  if(indetermState){
57
69
  return indetermValue;
58
70
  }else{
59
- return input.checked;
71
+ return checkedValue;
60
72
  }
61
73
  }
62
74
  }else{
63
- return input.checked;
75
+ return checkedValue;
64
76
  }
65
77
  }
66
78
 
@@ -3,6 +3,7 @@ import textarea from './editors/textarea.js';
3
3
  import number from './editors/number.js';
4
4
  import range from './editors/range.js';
5
5
  import select from './editors/select.js';
6
+ import list from './editors/list.js';
6
7
  import autocomplete from './editors/autocomplete.js';
7
8
  import star from './editors/star.js';
8
9
  import progress from './editors/progress.js';
@@ -14,6 +15,7 @@ export default {
14
15
  number:number,
15
16
  range:range,
16
17
  select:select,
18
+ list:list,
17
19
  autocomplete:autocomplete,
18
20
  star:star,
19
21
  progress:progress,