jsxgrid 2.2.0 → 2.3.1

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 (77) hide show
  1. package/README.md +15 -0
  2. package/dist/fields/jsgrid.field.XDateTimeField.min.js +2 -2
  3. package/dist/fields/jsgrid.field.XRowSelectField.min.js +2 -2
  4. package/dist/fields/jsgrid.field.Xcheckbox.min.js +2 -2
  5. package/dist/fields/jsgrid.field.Xcontrol.min.js +2 -2
  6. package/dist/fields/jsgrid.field.XimgField.min.js +2 -2
  7. package/dist/fields/jsgrid.field.Xjsoneditor.min.js +2 -2
  8. package/dist/fields/jsgrid.field.Xnumber.min.js +2 -2
  9. package/dist/fields/jsgrid.field.Xselect.min.js +2 -2
  10. package/dist/fields/jsgrid.field.Xtext.min.js +2 -2
  11. package/dist/fields/jsgrid.field.Xtextarea.min.js +2 -2
  12. package/dist/fields/lib/jsGridSummaryPlugin.min.js +1 -1
  13. package/dist/fields/lib/jsgrid.popup.basic.min.js +1 -1
  14. package/dist/i18n/jsgrid-Ko.js +10 -2
  15. package/dist/i18n/jsgrid-cs.js +10 -2
  16. package/dist/i18n/jsgrid-de.js +10 -2
  17. package/dist/i18n/jsgrid-el.js +10 -2
  18. package/dist/i18n/jsgrid-es.js +10 -2
  19. package/dist/i18n/jsgrid-fa.js +10 -2
  20. package/dist/i18n/jsgrid-fr.js +10 -2
  21. package/dist/i18n/jsgrid-he.js +10 -2
  22. package/dist/i18n/jsgrid-it.js +10 -2
  23. package/dist/i18n/jsgrid-ja.js +10 -2
  24. package/dist/i18n/jsgrid-ka.js +10 -2
  25. package/dist/i18n/jsgrid-lt.js +10 -2
  26. package/dist/i18n/jsgrid-pl.js +10 -2
  27. package/dist/i18n/jsgrid-pt-br.js +10 -2
  28. package/dist/i18n/jsgrid-pt.js +10 -2
  29. package/dist/i18n/jsgrid-ru.js +10 -2
  30. package/dist/i18n/jsgrid-tr.js +10 -2
  31. package/dist/i18n/jsgrid-zh-cn.js +10 -2
  32. package/dist/i18n/jsgrid-zh-tw.js +10 -2
  33. package/dist/jsxgrid-fields.js +61 -13
  34. package/dist/jsxgrid-fields.min.js +2 -2
  35. package/dist/jsxgrid-theme.css +1 -1
  36. package/dist/jsxgrid-xfields.js +98 -18
  37. package/dist/jsxgrid-xfields.min.js +2 -2
  38. package/dist/jsxgrid.css +1 -1
  39. package/dist/jsxgrid.js +25 -14
  40. package/dist/jsxgrid.min.js +2 -2
  41. package/package.json +1 -1
  42. package/src/fields/jsgrid.field.XDateTimeField.js +10 -2
  43. package/src/fields/jsgrid.field.XRowSelectField.js +10 -2
  44. package/src/fields/jsgrid.field.Xcheckbox.js +10 -2
  45. package/src/fields/jsgrid.field.Xcontrol.js +9 -1
  46. package/src/fields/jsgrid.field.XimgField.js +10 -2
  47. package/src/fields/jsgrid.field.Xjsoneditor.js +10 -2
  48. package/src/fields/jsgrid.field.Xnumber.js +9 -1
  49. package/src/fields/jsgrid.field.Xselect.js +10 -2
  50. package/src/fields/jsgrid.field.Xtext.js +9 -1
  51. package/src/fields/jsgrid.field.Xtextarea.js +10 -2
  52. package/src/fields/jsgrid.field.checkbox.js +10 -2
  53. package/src/fields/jsgrid.field.control.js +10 -2
  54. package/src/fields/jsgrid.field.number.js +10 -2
  55. package/src/fields/jsgrid.field.select.js +10 -2
  56. package/src/fields/jsgrid.field.text.js +10 -2
  57. package/src/fields/jsgrid.field.textarea.js +10 -2
  58. package/src/i18n/Ko.js +10 -2
  59. package/src/i18n/cs.js +10 -2
  60. package/src/i18n/de.js +10 -2
  61. package/src/i18n/el.js +10 -2
  62. package/src/i18n/es.js +10 -2
  63. package/src/i18n/fa.js +10 -2
  64. package/src/i18n/fr.js +10 -2
  65. package/src/i18n/he.js +10 -2
  66. package/src/i18n/it.js +10 -2
  67. package/src/i18n/ja.js +10 -2
  68. package/src/i18n/ka.js +10 -2
  69. package/src/i18n/lt.js +10 -2
  70. package/src/i18n/pl.js +10 -2
  71. package/src/i18n/pt-br.js +10 -2
  72. package/src/i18n/pt.js +10 -2
  73. package/src/i18n/ru.js +10 -2
  74. package/src/i18n/tr.js +10 -2
  75. package/src/i18n/zh-cn.js +10 -2
  76. package/src/i18n/zh-tw.js +10 -2
  77. package/src/jsgrid.core.js +23 -12
package/README.md CHANGED
@@ -60,6 +60,13 @@ The build is split into independent pieces - include only what you actually use:
60
60
 
61
61
  Individual fields (native or extra) can also be loaded one at a time from `dist/fields/` instead of pulling in a whole bundle.
62
62
 
63
+ `dist/jsxgrid.js` must load before any field file or locale file (`dist/i18n/jsgrid-*.js`) - they all register
64
+ themselves onto the `jsGrid` global. Getting the order wrong doesn't throw an uncaught error: each of those
65
+ files logs a specific `console.error` naming itself and returns without doing anything, and a grid that ends
66
+ up using an unregistered field type logs a `console.warn` and silently falls back to the plain base field
67
+ (no filter/insert/edit UI for that column) instead of failing to render. Check the console first if a field
68
+ or a locale seems to have no effect.
69
+
63
70
 
64
71
  ## Basic Usage
65
72
 
@@ -366,6 +373,14 @@ An integer value specifying the amount of items on the page. Applied only when `
366
373
  ### pageButtonCount (default `15`)
367
374
  An integer value specifying the maximum amount of page buttons to be displayed in the pager.
368
375
 
376
+ **jsxgrid extension, not in upstream jsGrid**: the visible window of page buttons is centered on
377
+ the current page (e.g. with `pageButtonCount: 5` on page 8, the pager shows `6 7 8 9 10`) and
378
+ re-centers on every page change, clamped to the actual page range at either end. Upstream jsGrid
379
+ only shifts the window once the current page falls outside it, so the last button in the window was
380
+ never clickable through to the next page without clicking the `...` nav link first - this fixes
381
+ that. The `...` nav links (`showPrevPages`/`showNextPages`) still work as before, jumping the
382
+ visible window by a full `pageButtonCount` without changing the current page.
383
+
369
384
  ### pagerFormat
370
385
  A string specifying pager format.
371
386
  The default value is `"Pages: {first} {prev} {pages} {next} {last}    {pageIndex} of {pageCount}"`
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,n)=>{function e(e){t.Field.call(this,e)}e.prototype=new t.Field({css:"date-field",align:"center",datePickerType:"datetime-local",dateRange:!1,defaultSelected:null,sorter:function(e,t){return new Date(e)-new Date(t)},filterTemplate:function(){var t,e,i,r,a;return this.filtering?(t=this._grid,e=n(),this.dateRange?(a=n("<div class='jsgrid-date-range-wrapper'>"),i=n("<input>",{class:"jsgrid-date-picker jsgrid-date-start",type:this.datePickerType,title:"Period date start"}),r=n("<input>",{class:"jsgrid-date-picker jsgrid-date-end",type:this.datePickerType,title:"Period date end"}),a.val=function(){return{from:i.val(),to:r.val()}},e=this.filterControl=a.append(i).append(r),null!==this.defaultSelected&&(a=this.defaultSelected||{},i.val(a.from||""),r.val(a.to||""),this.defaultSelected=null),this.autosearch&&e.on("change",".jsgrid-date-picker",function(e){t.search()})):(e=this.filterControl=this._createPicker(),null!==this.defaultSelected&&(e.val(this.defaultSelected),this.defaultSelected=null),this.autosearch&&e.on("change",function(e){t.search()})),e):""},filterValue:function(){return this.filterControl.val()},itemTemplate:function(e){var t;return e?(t=this.options||{weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"},new Date(e.replace(" ","T")).toLocaleDateString(void 0,t)):""},insertTemplate:function(){return this._insertPicker=this._createPicker()},editTemplate:function(e){return this._editPicker=this._createPicker().val(e)},insertValue:function(){return this._insertPicker.val()},editValue:function(){return this._editPicker.val()},_createPicker:function(){return n("<input class='date-picker'>").attr("type",this.datePickerType)}}),t.fields.XDateTimeField=e})(jsGrid,jQuery);
6
+ ((t,a)=>{var e;t?((e=function(e){t.Field.call(this,e)}).prototype=new t.Field({css:"date-field",align:"center",datePickerType:"datetime-local",dateRange:!1,defaultSelected:null,sorter:function(e,t){return new Date(e)-new Date(t)},filterTemplate:function(){var t,e,i,r,n;return this.filtering?(t=this._grid,e=a(),this.dateRange?(n=a("<div class='jsgrid-date-range-wrapper'>"),i=a("<input>",{class:"jsgrid-date-picker jsgrid-date-start",type:this.datePickerType,title:"Period date start"}),r=a("<input>",{class:"jsgrid-date-picker jsgrid-date-end",type:this.datePickerType,title:"Period date end"}),n.val=function(){return{from:i.val(),to:r.val()}},e=this.filterControl=n.append(i).append(r),null!==this.defaultSelected&&(n=this.defaultSelected||{},i.val(n.from||""),r.val(n.to||""),this.defaultSelected=null),this.autosearch&&e.on("change",".jsgrid-date-picker",function(e){t.search()})):(e=this.filterControl=this._createPicker(),null!==this.defaultSelected&&(e.val(this.defaultSelected),this.defaultSelected=null),this.autosearch&&e.on("change",function(e){t.search()})),e):""},filterValue:function(){return this.filterControl.val()},itemTemplate:function(e){var t;return e?(t=this.options||{weekday:"short",year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"},new Date(e.replace(" ","T")).toLocaleDateString(void 0,t)):""},insertTemplate:function(){return this._insertPicker=this._createPicker()},editTemplate:function(e){return this._editPicker=this._createPicker().val(e)},insertValue:function(){return this._insertPicker.val()},editValue:function(){return this._editPicker.val()},_createPicker:function(){return a("<input class='date-picker'>").attr("type",this.datePickerType)}}),t.fields.XDateTimeField=e):window.console&&console.error("[jsxgrid] jsgrid.field.XDateTimeField.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((e,i)=>{function t(t){this.selectedItems=[],this.uid=Date.now().toString(36)+Math.random().toString(36).substring(2),e.Field.call(this,t)}t.prototype=new e.Field({filtering:!1,deleteItemByItem:!1,buttonText:"",selectedItemsAction:function(t){},unselectAll:function(){this.selectedItems=[],this._grid._container.find("[data-uid='"+this.uid+"'] ").prop("checked",!1)},headerTemplate:function(){var e;return this.buttonText?(e=this,i("<button>").attr("type","button").text(e.buttonText).on("click",function(t){e.selectedItemsAction(e.selectedItems),t.stopPropagation()})):""},itemTemplate:function(t,e){var n=this;return i("<input data-uid='"+n.uid+"' type='checkbox'>").prop("checked",-1<i.inArray(e,n.selectedItems)).on("change",function(){i(this).is(":checked")?n.selectItem(e):n.unselectItem(e)}).click(function(t){t.stopPropagation()})},editTemplate:function(){return""},align:"center",selectItem:function(t){this.selectedItems.push(t)},unselectItem:function(e){this.selectedItems=i.grep(this.selectedItems,function(t){return t!==e})}}),e.fields.XRowSelectField=t})(jsGrid,jQuery);
6
+ ((t,n)=>{var e;t?((e=function(e){this.selectedItems=[],this.uid=Date.now().toString(36)+Math.random().toString(36).substring(2),t.Field.call(this,e)}).prototype=new t.Field({filtering:!1,deleteItemByItem:!1,buttonText:"",selectedItemsAction:function(e){},unselectAll:function(){this.selectedItems=[],this._grid._container.find("[data-uid='"+this.uid+"'] ").prop("checked",!1)},headerTemplate:function(){var t;return this.buttonText?(t=this,n("<button>").attr("type","button").text(t.buttonText).on("click",function(e){t.selectedItemsAction(t.selectedItems),e.stopPropagation()})):""},itemTemplate:function(e,t){var i=this;return n("<input data-uid='"+i.uid+"' type='checkbox'>").prop("checked",-1<n.inArray(t,i.selectedItems)).on("change",function(){n(this).is(":checked")?i.selectItem(t):i.unselectItem(t)}).click(function(e){e.stopPropagation()})},editTemplate:function(){return""},align:"center",selectItem:function(e){this.selectedItems.push(e)},unselectItem:function(t){this.selectedItems=n.grep(this.selectedItems,function(e){return e!==t})}}),t.fields.XRowSelectField=e):window.console&&console.error("[jsxgrid] jsgrid.field.XRowSelectField.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((e,i)=>{function t(e){r.call(this,e)}var r=e.Field;t.prototype=new r({sorter:"number",align:"center",autosearch:!0,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,(t=this.filterControl=this._createCheckbox()).prop({readOnly:!0,indeterminate:!0}),t.on("click",function(){var e=i(this);e.prop("readOnly")?e.prop({checked:!1,readOnly:!1}):e.prop("checked")||e.prop({readOnly:!0,indeterminate:!0})}),this.autosearch&&t.on("click",function(){e.search()}),null!==this.defaultSelected&&(t.prop({checked:!!this.defaultSelected,indeterminate:!1,readOnly:!1}),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.get(0).indeterminate?void 0:this.filterControl.is(":checked")?1:0},insertTemplate:function(){return this.inserting?this.insertControl=this._createCheckbox():""},insertValue:function(){return+this.insertControl.is(":checked")},editValue:function(){return+this.editControl.is(":checked")},itemTemplate:function(e){return this._createCheckbox().prop({checked:+e,disabled:!0})},editTemplate:function(e){var t;return this.editing?((t=this.editControl=this._createCheckbox()).prop("checked",+e),t):this.itemTemplate.apply(this,arguments)},_createCheckbox:function(){return i("<input>").attr("type","checkbox")}}),e.fields.Xcheckbox=t})(jsGrid,jQuery);
6
+ ((e,i)=>{var t,r;e?(t=e.Field,(r=function(e){t.call(this,e)}).prototype=new t({sorter:"number",align:"center",autosearch:!0,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,(t=this.filterControl=this._createCheckbox()).prop({readOnly:!0,indeterminate:!0}),t.on("click",function(){var e=i(this);e.prop("readOnly")?e.prop({checked:!1,readOnly:!1}):e.prop("checked")||e.prop({readOnly:!0,indeterminate:!0})}),this.autosearch&&t.on("click",function(){e.search()}),null!==this.defaultSelected&&(t.prop({checked:!!this.defaultSelected,indeterminate:!1,readOnly:!1}),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.get(0).indeterminate?void 0:this.filterControl.is(":checked")?1:0},insertTemplate:function(){return this.inserting?this.insertControl=this._createCheckbox():""},insertValue:function(){return+this.insertControl.is(":checked")},editValue:function(){return+this.editControl.is(":checked")},itemTemplate:function(e){return this._createCheckbox().prop({checked:+e,disabled:!0})},editTemplate:function(e){var t;return this.editing?((t=this.editControl=this._createCheckbox()).prop("checked",+e),t):this.itemTemplate.apply(this,arguments)},_createCheckbox:function(){return i("<input>").attr("type","checkbox")}}),e.fields.Xcheckbox=r):window.console&&console.error("[jsxgrid] jsgrid.field.Xcheckbox.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,r)=>{var e=t.Field;function i(t){e.call(this,t),this.includeInDataExport=!1,this._configInitialized=!1}i.prototype=new e({css:"jsgrid-control-field",align:"center",width:50,filtering:!1,inserting:!1,editing:!1,sorting:!1,buttonClass:"jsgrid-button",modeButtonClass:"jsgrid-mode-button",modeOnButtonClass:"jsgrid-mode-on-button",searchModeButtonClass:"jsgrid-search-mode-button",insertModeButtonClass:"jsgrid-insert-mode-button",editButtonClass:"jsgrid-edit-button",deleteButtonClass:"jsgrid-delete-button",searchButtonClass:"jsgrid-search-button",clearFilterButtonClass:"jsgrid-clear-filter-button",insertButtonClass:"jsgrid-insert-button",updateButtonClass:"jsgrid-update-button",cancelEditButtonClass:"jsgrid-cancel-edit-button",searchModeButtonTooltip:"Switch to searching",insertModeButtonTooltip:"Switch to inserting",editButtonTooltip:"Edit",deleteButtonTooltip:"Delete",searchButtonTooltip:"Search",clearFilterButtonTooltip:"Clear filter",insertButtonTooltip:"Insert",updateButtonTooltip:"Update",cancelEditButtonTooltip:"Cancel edit",editButton:!0,deleteButton:!0,clearFilterButton:!0,modeSwitchButton:!0,_initConfig:function(){this._hasFiltering=this._grid.filtering,this._hasInserting=this._grid.inserting,this._hasInserting&&this.modeSwitchButton&&(this._grid.inserting=!1),this._configInitialized=!0},headerTemplate:function(){this._configInitialized||this._initConfig();var t=this._hasFiltering,e=this._hasInserting;return this.modeSwitchButton&&(t||e)?t&&!e?this._createFilterSwitchButton():e&&!t?this._createInsertSwitchButton():this._createModeSwitchButton():""},itemTemplate:function(t,e){var i=r([]);return this.editButton&&(i=i.add(this._createEditButton(e))),i=this.deleteButton?i.add(this._createDeleteButton(e)):i},filterTemplate:function(){var t=this._createSearchButton();return this.clearFilterButton?t.add(this._createClearFilterButton()):t},insertTemplate:function(){return this._createInsertButton()},editTemplate:function(){return this._createUpdateButton().add(this._createCancelEditButton())},_createFilterSwitchButton:function(){return this._createOnOffSwitchButton("filtering",this.searchModeButtonClass,!0)},_createInsertSwitchButton:function(){return this._createOnOffSwitchButton("inserting",this.insertModeButtonClass,!1)},_createOnOffSwitchButton:function(e,t,i){var n=i,o=r.proxy(function(){s.toggleClass(this.modeOnButtonClass,n)},this),s=this._createGridButton(this.modeButtonClass+" "+t,"",function(t){n=!n,t.option(e,n),o()});return o(),s},_createModeSwitchButton:function(){var e=!1,i=r.proxy(function(){t.attr("title",e?this.searchModeButtonTooltip:this.insertModeButtonTooltip).toggleClass(this.insertModeButtonClass,!e).toggleClass(this.searchModeButtonClass,e)},this),t=this._createGridButton(this.modeButtonClass,"",function(t){e=!e,t.option("inserting",e),t.option("filtering",!e),i()});return i(),t},_createEditButton:function(i){return this._createGridButton(this.editButtonClass,this.editButtonTooltip,function(t,e){t.editItem(i),e.stopPropagation()})},_createDeleteButton:function(i){return this._createGridButton(this.deleteButtonClass,this.deleteButtonTooltip,function(t,e){t.deleteItem(i),e.stopPropagation()})},_createSearchButton:function(){return this._createGridButton(this.searchButtonClass,this.searchButtonTooltip,function(t){t.search()})},_createClearFilterButton:function(){return this._createGridButton(this.clearFilterButtonClass,this.clearFilterButtonTooltip,function(t){t.clearFilter()})},_createInsertButton:function(){return this._createGridButton(this.insertButtonClass,this.insertButtonTooltip,function(t){t.insertItem().done(function(){t.clearInsert()})})},_createUpdateButton:function(){return this._createGridButton(this.updateButtonClass,this.updateButtonTooltip,function(t,e){t.updateItem(),e.stopPropagation()})},_createCancelEditButton:function(){return this._createGridButton(this.cancelEditButtonClass,this.cancelEditButtonTooltip,function(t,e){t.cancelEdit(),e.stopPropagation()})},_createGridButton:function(t,e,i){var n=this._grid;return r("<input>").addClass(this.buttonClass).addClass(t).attr({type:"button",title:e}).on("click",function(t){i(n,t)})},editValue:function(){return""}}),t.fields.Xcontrol=i})(jsGrid,jQuery);
6
+ ((t,r)=>{var e;function i(t){e.call(this,t),this.includeInDataExport=!1,this._configInitialized=!1}t?(e=t.Field,i.prototype=new e({css:"jsgrid-control-field",align:"center",width:50,filtering:!1,inserting:!1,editing:!1,sorting:!1,buttonClass:"jsgrid-button",modeButtonClass:"jsgrid-mode-button",modeOnButtonClass:"jsgrid-mode-on-button",searchModeButtonClass:"jsgrid-search-mode-button",insertModeButtonClass:"jsgrid-insert-mode-button",editButtonClass:"jsgrid-edit-button",deleteButtonClass:"jsgrid-delete-button",searchButtonClass:"jsgrid-search-button",clearFilterButtonClass:"jsgrid-clear-filter-button",insertButtonClass:"jsgrid-insert-button",updateButtonClass:"jsgrid-update-button",cancelEditButtonClass:"jsgrid-cancel-edit-button",searchModeButtonTooltip:"Switch to searching",insertModeButtonTooltip:"Switch to inserting",editButtonTooltip:"Edit",deleteButtonTooltip:"Delete",searchButtonTooltip:"Search",clearFilterButtonTooltip:"Clear filter",insertButtonTooltip:"Insert",updateButtonTooltip:"Update",cancelEditButtonTooltip:"Cancel edit",editButton:!0,deleteButton:!0,clearFilterButton:!0,modeSwitchButton:!0,_initConfig:function(){this._hasFiltering=this._grid.filtering,this._hasInserting=this._grid.inserting,this._hasInserting&&this.modeSwitchButton&&(this._grid.inserting=!1),this._configInitialized=!0},headerTemplate:function(){this._configInitialized||this._initConfig();var t=this._hasFiltering,e=this._hasInserting;return this.modeSwitchButton&&(t||e)?t&&!e?this._createFilterSwitchButton():e&&!t?this._createInsertSwitchButton():this._createModeSwitchButton():""},itemTemplate:function(t,e){var i=r([]);return this.editButton&&(i=i.add(this._createEditButton(e))),i=this.deleteButton?i.add(this._createDeleteButton(e)):i},filterTemplate:function(){var t=this._createSearchButton();return this.clearFilterButton?t.add(this._createClearFilterButton()):t},insertTemplate:function(){return this._createInsertButton()},editTemplate:function(){return this._createUpdateButton().add(this._createCancelEditButton())},_createFilterSwitchButton:function(){return this._createOnOffSwitchButton("filtering",this.searchModeButtonClass,!0)},_createInsertSwitchButton:function(){return this._createOnOffSwitchButton("inserting",this.insertModeButtonClass,!1)},_createOnOffSwitchButton:function(e,t,i){var n=i,o=r.proxy(function(){s.toggleClass(this.modeOnButtonClass,n)},this),s=this._createGridButton(this.modeButtonClass+" "+t,"",function(t){n=!n,t.option(e,n),o()});return o(),s},_createModeSwitchButton:function(){var e=!1,i=r.proxy(function(){t.attr("title",e?this.searchModeButtonTooltip:this.insertModeButtonTooltip).toggleClass(this.insertModeButtonClass,!e).toggleClass(this.searchModeButtonClass,e)},this),t=this._createGridButton(this.modeButtonClass,"",function(t){e=!e,t.option("inserting",e),t.option("filtering",!e),i()});return i(),t},_createEditButton:function(i){return this._createGridButton(this.editButtonClass,this.editButtonTooltip,function(t,e){t.editItem(i),e.stopPropagation()})},_createDeleteButton:function(i){return this._createGridButton(this.deleteButtonClass,this.deleteButtonTooltip,function(t,e){t.deleteItem(i),e.stopPropagation()})},_createSearchButton:function(){return this._createGridButton(this.searchButtonClass,this.searchButtonTooltip,function(t){t.search()})},_createClearFilterButton:function(){return this._createGridButton(this.clearFilterButtonClass,this.clearFilterButtonTooltip,function(t){t.clearFilter()})},_createInsertButton:function(){return this._createGridButton(this.insertButtonClass,this.insertButtonTooltip,function(t){t.insertItem().done(function(){t.clearInsert()})})},_createUpdateButton:function(){return this._createGridButton(this.updateButtonClass,this.updateButtonTooltip,function(t,e){t.updateItem(),e.stopPropagation()})},_createCancelEditButton:function(){return this._createGridButton(this.cancelEditButtonClass,this.cancelEditButtonTooltip,function(t,e){t.cancelEdit(),e.stopPropagation()})},_createGridButton:function(t,e,i){var n=this._grid;return r("<input>").addClass(this.buttonClass).addClass(t).attr({type:"button",title:e}).on("click",function(t){i(n,t)})},editValue:function(){return""}}),t.fields.Xcontrol=i):window.console&&console.error("[jsxgrid] jsgrid.field.Xcontrol.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,n)=>{function e(t){i.call(this,t)}var i=t.Field;e.prototype=new i({autosearch:!0,readOnly:!1,fm_callback:null,editButtonText:"Open FM",defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.val()},itemTemplate:function(t){var e=n('<img class="jsgrid-img" src="">');return e.attr("src",t||""),e.css("max-height","50px"),e.css("max-width","50px"),e},editTemplate:function(t){var e,i;return this.editing?(e=this.fm_callback,i=this.editControl=n('<input type="text">').val(t||""),e?n('<button class="jsgrid-imgField-button">'+this.editButtonText+"</button>").click(function(){e(i)}):i):this.itemTemplate.apply(this,arguments)},insertTemplate:function(){var t,e;return this.inserting?(t=this.fm_callback,e=this.insertControl=n('<input type="text">'),"function"==typeof t?n('<button class="jsgrid-imgField-button">'+this.editButtonText+"</button>").click(function(){t(e)}):e):""},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return n("<input>").attr("type","text").prop("readonly",!!this.readOnly)}}),t.fields.XimgField=e})(jsGrid,jQuery);
6
+ ((t,n)=>{var e,i;t?(e=t.Field,(i=function(t){e.call(this,t)}).prototype=new e({autosearch:!0,readOnly:!1,fm_callback:null,editButtonText:"Open FM",defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.val()},itemTemplate:function(t){var e=n('<img class="jsgrid-img" src="">');return e.attr("src",t||""),e.css("max-height","50px"),e.css("max-width","50px"),e},editTemplate:function(t){var e,i;return this.editing?(e=this.fm_callback,i=this.editControl=n('<input type="text">').val(t||""),e?n('<button class="jsgrid-imgField-button">'+this.editButtonText+"</button>").click(function(){e(i)}):i):this.itemTemplate.apply(this,arguments)},insertTemplate:function(){var t,e;return this.inserting?(t=this.fm_callback,e=this.insertControl=n('<input type="text">'),"function"==typeof t?n('<button class="jsgrid-imgField-button">'+this.editButtonText+"</button>").click(function(){t(e)}):e):""},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return n("<input>").attr("type","text").prop("readonly",!!this.readOnly)}}),t.fields.XimgField=i):window.console&&console.error("[jsxgrid] jsgrid.field.XimgField.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((n,o)=>{function t(t){e.call(this,t)}var e=n.Field;t.prototype=new e({autosearch:!0,readOnly:!1,templates:[],closeText:"Save",editText:"Editor",defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.val()},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return o("<input>").attr("type","text").prop("readonly",!!this.readOnly)},_doModal:function(t,e,r){return n.popup(t,e)},_createJsonEditor:function(t,e){if("undefined"==typeof JSONEditor)throw new Error("Xjsoneditor requires the 'jsoneditor' package to be loaded on the page.");"object"!=typeof(t=t||{})&&(t=JSON.parse(t));var r=o('<div style="height: 500px;">'),e=(o("body").append(r),r=r[0],{templates:this.templates,modes:["code","text","tree"],onError:function(t){alert(t.toString())},mode:e||"view"});return new JSONEditor(r,e,t)},itemTemplate:function(e,t){var r=this;return o("<button>"+r.editText+"</button>").click(function(){var t=r._createJsonEditor(e);return r._doModal(t.container,{onClose:function(){o(t.container).remove(),t.destroy()}}),!1})},insertTemplate:function(){var t;return this.inserting?(t=this).insertControl=o("<textarea>").click(function(){var e=t._createJsonEditor({},"tree"),r=o(this);return t._doModal(e.container,{closeText:t.closeText,onClose:function(){var t=e.get();o.isEmptyObject(t)?r.val({}):r.val(JSON.stringify(t)),e.destroy()}}),!1}):""},editTemplate:function(t){var n;return this.editing?(n=this).editControl=o("<textarea>").val(t).click(function(){var e=o(this),r=n._createJsonEditor(e.val(),"tree");return n._doModal(r.container,{closeText:n.closeText,onClose:function(){var t=r.get();o.isEmptyObject(t)?e.val({}):e.val(JSON.stringify(t)),r.destroy()}}),!1}):this.itemTemplate.apply(this,arguments)}}),n.fields.Xjsoneditor=t})(jsGrid,jQuery);
6
+ ((n,o)=>{var t,e;n?(t=n.Field,(e=function(e){t.call(this,e)}).prototype=new t({autosearch:!0,readOnly:!1,templates:[],closeText:"Save",editText:"Editor",defaultSelected:null,filterTemplate:function(){var t,e;return this.filtering?(t=this._grid,e=this.filterControl=this._createTextBox(),this.autosearch&&e.on("keypress",function(e){13===e.which&&(t.search(),e.preventDefault())}),null!==this.defaultSelected&&(e.val(this.defaultSelected),this.defaultSelected=null),e):""},filterValue:function(){return this.filterControl.val()},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return o("<input>").attr("type","text").prop("readonly",!!this.readOnly)},_doModal:function(e,t,r){return n.popup(e,t)},_createJsonEditor:function(e,t){if("undefined"==typeof JSONEditor)throw new Error("Xjsoneditor requires the 'jsoneditor' package to be loaded on the page.");"object"!=typeof(e=e||{})&&(e=JSON.parse(e));var r=o('<div style="height: 500px;">'),t=(o("body").append(r),r=r[0],{templates:this.templates,modes:["code","text","tree"],onError:function(e){alert(e.toString())},mode:t||"view"});return new JSONEditor(r,t,e)},itemTemplate:function(t,e){var r=this;return o("<button>"+r.editText+"</button>").click(function(){var e=r._createJsonEditor(t);return r._doModal(e.container,{onClose:function(){o(e.container).remove(),e.destroy()}}),!1})},insertTemplate:function(){var e;return this.inserting?(e=this).insertControl=o("<textarea>").click(function(){var t=e._createJsonEditor({},"tree"),r=o(this);return e._doModal(t.container,{closeText:e.closeText,onClose:function(){var e=t.get();o.isEmptyObject(e)?r.val({}):r.val(JSON.stringify(e)),t.destroy()}}),!1}):""},editTemplate:function(e){var n;return this.editing?(n=this).editControl=o("<textarea>").val(e).click(function(){var t=o(this),r=n._createJsonEditor(t.val(),"tree");return n._doModal(r.container,{closeText:n.closeText,onClose:function(){var e=r.get();o.isEmptyObject(e)?t.val({}):t.val(JSON.stringify(e)),r.destroy()}}),!1}):this.itemTemplate.apply(this,arguments)}}),n.fields.Xjsoneditor=e):window.console&&console.error("[jsxgrid] jsgrid.field.Xjsoneditor.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,e,r)=>{function i(t){n.call(this,t)}var n=t.Field;i.prototype=new n({sorter:"number",align:"right",autosearch:!0,readOnly:!1,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextBox():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextBox()).val(t),e):this.itemTemplate.apply(this,arguments)},filterValue:function(){return this.filterControl.val()?parseInt(this.filterControl.val()||0,10):r},insertValue:function(){return this.insertControl.val()?parseInt(this.insertControl.val()||0,10):r},editValue:function(){return this.editControl.val()?parseInt(this.editControl.val()||0,10):r},_createTextBox:function(){return e("<input>").attr("type","number").prop("readonly",!!this.readOnly)}}),t.fields.Xnumber=i})(jsGrid,jQuery);
6
+ ((t,e,i)=>{var r,n;t?(r=t.Field,(n=function(t){r.call(this,t)}).prototype=new r({sorter:"number",align:"right",autosearch:!0,readOnly:!1,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextBox():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextBox()).val(t),e):this.itemTemplate.apply(this,arguments)},filterValue:function(){return this.filterControl.val()?parseInt(this.filterControl.val()||0,10):i},insertValue:function(){return this.insertControl.val()?parseInt(this.insertControl.val()||0,10):i},editValue:function(){return this.editControl.val()?parseInt(this.editControl.val()||0,10):i},_createTextBox:function(){return e("<input>").attr("type","number").prop("readonly",!!this.readOnly)}}),t.fields.Xnumber=n):window.console&&console.error("[jsxgrid] jsgrid.field.Xnumber.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((e,a,l)=>{function t(e){var t;this.items=[],this.selectedIndex=-1,this.valueField="",this.textField="",e.valueField&&e.items&&e.items.length&&(t=e.items[0][e.valueField],this.valueType=typeof t==s?s:"string"),this.sorter=this.valueType,i.call(this,e)}var i=e.Field,s="number";t.prototype=new i({align:"center",autosearch:!0,valueType:s,pseudoElement:null,select2:null,defaultSelected:null,itemTemplate:function(t){var e=this.items,i=this.valueField,s=this.textField,e=i?"object"==typeof t?t:a.grep(e,function(e){return e[i]===t})[0]||{}:e[t],s=s?e[s]:e;return s===l||null===s?"":s},insertTemplate:function(){return this.inserting?this.insertControl=this._createSelect():""},editTemplate:function(e){var t,i;return this.editing?(t=this.editControl=this._createSelect(),(i="object"==typeof(i=e)?e[this.valueField]:e)!==l&&t.val(i),t):this.itemTemplate.apply(this,arguments)},insertValue:function(){var e=this.insertControl.val();return this.valueType===s?parseInt(e||0,10):e},editValue:function(){var e=this.editControl.val();return this.valueType===s?parseInt(e||0,10):e},filterTemplate:function(){var e,i,s,l,t,n;return this.filtering?(Array.isArray(this.items)?(e=this.items.slice(0),this.pseudoElement?e.unshift(this.pseudoElement):((n={})[this.textField]="",n[this.valueField]=null,e.unshift(n))):"object"==typeof this.items&&(e=Object.assign({},this.items),e="object"==typeof this.pseudoElement&&this.pseudoElement?Object.assign({},e,this.pseudoElement):Object.assign({},{"":null},e)),null!==this.defaultSelected&&(i=this.valueField,s=this.defaultSelected,l=-1,a.each(e,function(e,t){if((i?t[i]:e)==s)return l=e,!1}),-1!==l&&(this.selectedIndex=l),this.defaultSelected=null),t=this._grid,n=this.filterControl=this._createSelect(e),this.autosearch&&n.on("change",function(e){t.search()}),n):""},filterValue:function(){var e=this.filterControl.val();return this.valueType===s?parseInt(e||0,10):e},_createSelect:function(e){var t,s=a("<select>"),l=this.valueField,n=this.textField,r=this.selectedIndex;return a.each(e||this.items,function(e,t){var i=l?t[l]:e,t=n?t[n]:t;a("<option>").attr("value",i).text(t).appendTo(s).prop("selected",r===e)}),s.prop("disabled",!!this.readOnly),this.select2&&(t=Object.assign({},this.select2,{width:"100%"}),setTimeout(function(){s.select2(t)},0)),s}}),e.fields.Xselect=t})(jsGrid,jQuery);
6
+ ((e,a,l)=>{var i,s,t;e?(i=e.Field,(t=function(e){var t;this.items=[],this.selectedIndex=-1,this.valueField="",this.textField="",e.valueField&&e.items&&e.items.length&&(t=e.items[0][e.valueField],this.valueType=typeof t==s?s:"string"),this.sorter=this.valueType,i.call(this,e)}).prototype=new i({align:"center",autosearch:!0,valueType:s="number",pseudoElement:null,select2:null,defaultSelected:null,itemTemplate:function(t){var e=this.items,i=this.valueField,s=this.textField,e=i?"object"==typeof t?t:a.grep(e,function(e){return e[i]===t})[0]||{}:e[t],s=s?e[s]:e;return s===l||null===s?"":s},insertTemplate:function(){return this.inserting?this.insertControl=this._createSelect():""},editTemplate:function(e){var t,i;return this.editing?(t=this.editControl=this._createSelect(),(i="object"==typeof(i=e)?e[this.valueField]:e)!==l&&t.val(i),t):this.itemTemplate.apply(this,arguments)},insertValue:function(){var e=this.insertControl.val();return this.valueType===s?parseInt(e||0,10):e},editValue:function(){var e=this.editControl.val();return this.valueType===s?parseInt(e||0,10):e},filterTemplate:function(){var e,i,s,l,t,n;return this.filtering?(Array.isArray(this.items)?(e=this.items.slice(0),this.pseudoElement?e.unshift(this.pseudoElement):((n={})[this.textField]="",n[this.valueField]=null,e.unshift(n))):"object"==typeof this.items&&(e=Object.assign({},this.items),e="object"==typeof this.pseudoElement&&this.pseudoElement?Object.assign({},e,this.pseudoElement):Object.assign({},{"":null},e)),null!==this.defaultSelected&&(i=this.valueField,s=this.defaultSelected,l=-1,a.each(e,function(e,t){if((i?t[i]:e)==s)return l=e,!1}),-1!==l&&(this.selectedIndex=l),this.defaultSelected=null),t=this._grid,n=this.filterControl=this._createSelect(e),this.autosearch&&n.on("change",function(e){t.search()}),n):""},filterValue:function(){var e=this.filterControl.val();return this.valueType===s?parseInt(e||0,10):e},_createSelect:function(e){var t,s=a("<select>"),l=this.valueField,n=this.textField,r=this.selectedIndex;return a.each(e||this.items,function(e,t){var i=l?t[l]:e,t=n?t[n]:t;a("<option>").attr("value",i).text(t).appendTo(s).prop("selected",r===e)}),s.prop("disabled",!!this.readOnly),this.select2&&(t=Object.assign({},this.select2,{width:"100%"}),setTimeout(function(){s.select2(t)},0)),s}}),e.fields.Xselect=t):window.console&&console.error("[jsxgrid] jsgrid.field.Xselect.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,e)=>{function i(t){r.call(this,t)}var r=t.Field;i.prototype=new r({autosearch:!0,readOnly:!1,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextBox():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextBox()).val(t),e):this.itemTemplate.apply(this,arguments)},filterValue:function(){return this.filterControl.val()},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return e("<input>").attr("type","text").prop("readonly",!!this.readOnly)}}),t.fields.Xtext=i})(jsGrid,jQuery);
6
+ ((t,e)=>{var i,r;t?(i=t.Field,(r=function(t){i.call(this,t)}).prototype=new i({autosearch:!0,readOnly:!1,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextBox():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextBox()).val(t),e):this.itemTemplate.apply(this,arguments)},filterValue:function(){return this.filterControl.val()},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return e("<input>").attr("type","text").prop("readonly",!!this.readOnly)}}),t.fields.Xtext=r):window.console&&console.error("[jsxgrid] jsgrid.field.Xtext.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
6
- ((t,n)=>{function e(t){r.call(this,t)}var r=t.Field;e.prototype=new r({autosearch:!0,readOnly:!1,maxShowSymbols:50,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.val()},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextArea():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextArea()).val(t),e):this.itemTemplate.apply(this,arguments)},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return n("<input>").attr("type","text").prop("readonly",!!this.readOnly)},_createTextArea:function(){return n("<textarea>").prop("readonly",!!this.readOnly)},itemTemplate:function(t,e){var r,i;return(t=null==t?"":String(t)).length<=this.maxShowSymbols?n("<div>").text(t):(r=t.slice(0,this.maxShowSymbols),i=n("<div>").text(r+" ...").one("click",function(){return i.text(t),!1}))}}),t.fields.Xtextarea=e})(jsGrid,jQuery);
6
+ ((t,n)=>{var e,i;t?(e=t.Field,(i=function(t){e.call(this,t)}).prototype=new e({autosearch:!0,readOnly:!1,maxShowSymbols:50,defaultSelected:null,filterTemplate:function(){var e,t;return this.filtering?(e=this._grid,t=this.filterControl=this._createTextBox(),this.autosearch&&t.on("keypress",function(t){13===t.which&&(e.search(),t.preventDefault())}),null!==this.defaultSelected&&(t.val(this.defaultSelected),this.defaultSelected=null),t):""},filterValue:function(){return this.filterControl.val()},insertTemplate:function(){return this.inserting?this.insertControl=this._createTextArea():""},editTemplate:function(t){var e;return this.editing?((e=this.editControl=this._createTextArea()).val(t),e):this.itemTemplate.apply(this,arguments)},insertValue:function(){return this.insertControl.val()},editValue:function(){return this.editControl.val()},_createTextBox:function(){return n("<input>").attr("type","text").prop("readonly",!!this.readOnly)},_createTextArea:function(){return n("<textarea>").prop("readonly",!!this.readOnly)},itemTemplate:function(t,e){var i,r;return(t=null==t?"":String(t)).length<=this.maxShowSymbols?n("<div>").text(t):(i=t.slice(0,this.maxShowSymbols),r=n("<div>").text(i+" ...").one("click",function(){return r.text(t),!1}))}}),t.fields.Xtextarea=i):window.console&&console.error("[jsxgrid] jsgrid.field.Xtextarea.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.")})(window.jsGrid,window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*
2
- * jsxgrid v2.2.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.1 (https://github.com/rok9ru/jsxgrid#readme)
3
3
  * (c) 2026 Mikhail Kremza
4
4
  * Licensed under MIT
5
5
  */
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] Ko.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.ko = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] cs.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.cs = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] de.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.de = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] el.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.el = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] es.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.es = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] fa.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.fa = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] fr.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.fr = {
4
12
  grid: {
@@ -61,5 +69,5 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
65
73
 
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] he.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.he = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] it.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.it = {
4
12
  grid: {
@@ -61,5 +69,5 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
65
73
 
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] ja.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.ja = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] ka.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.ka = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] lt.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.lt = {
4
12
  grid: {
@@ -61,5 +69,5 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
65
73
 
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] pl.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.pl = {
4
12
  grid: {
@@ -77,4 +85,4 @@
77
85
  }
78
86
  };
79
87
 
80
- }(jsGrid, jQuery));
88
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] pt-br.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales["pt-br"] = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] pt.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.pt = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] ru.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.ru = {
4
12
  grid: {
@@ -61,5 +69,5 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
65
73
 
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] tr.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales.tr = {
4
12
  grid: {
@@ -61,5 +69,5 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
65
73
 
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] zh-cn.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales["zh-cn"] = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
@@ -1,4 +1,12 @@
1
- (function(jsGrid) {
1
+ (function(jsGrid) {
2
+
3
+ if (!jsGrid) {
4
+ if (window.console) {
5
+ console.error("[jsxgrid] zh-tw.js was loaded before the jsxgrid engine (jsxgrid.js) - include the engine first.");
6
+ }
7
+ return;
8
+ }
9
+
2
10
 
3
11
  jsGrid.locales["zh-tw"] = {
4
12
  grid: {
@@ -61,4 +69,4 @@
61
69
  }
62
70
  };
63
71
 
64
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));