jsxgrid 2.1.0 → 2.3.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 (78) hide show
  1. package/README.md +43 -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 +28 -2
  15. package/dist/i18n/jsgrid-cs.js +28 -2
  16. package/dist/i18n/jsgrid-de.js +28 -2
  17. package/dist/i18n/jsgrid-el.js +28 -2
  18. package/dist/i18n/jsgrid-es.js +28 -2
  19. package/dist/i18n/jsgrid-fa.js +28 -2
  20. package/dist/i18n/jsgrid-fr.js +28 -2
  21. package/dist/i18n/jsgrid-he.js +28 -2
  22. package/dist/i18n/jsgrid-it.js +28 -2
  23. package/dist/i18n/jsgrid-ja.js +28 -2
  24. package/dist/i18n/jsgrid-ka.js +28 -2
  25. package/dist/i18n/jsgrid-lt.js +28 -2
  26. package/dist/i18n/jsgrid-pl.js +28 -2
  27. package/dist/i18n/jsgrid-pt-br.js +28 -2
  28. package/dist/i18n/jsgrid-pt.js +28 -2
  29. package/dist/i18n/jsgrid-ru.js +28 -2
  30. package/dist/i18n/jsgrid-tr.js +28 -2
  31. package/dist/i18n/jsgrid-zh-cn.js +28 -2
  32. package/dist/i18n/jsgrid-zh-tw.js +28 -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 +59 -5
  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 +28 -2
  59. package/src/i18n/cs.js +28 -2
  60. package/src/i18n/de.js +28 -2
  61. package/src/i18n/el.js +28 -2
  62. package/src/i18n/es.js +28 -2
  63. package/src/i18n/fa.js +28 -2
  64. package/src/i18n/fr.js +28 -2
  65. package/src/i18n/he.js +28 -2
  66. package/src/i18n/it.js +28 -2
  67. package/src/i18n/ja.js +28 -2
  68. package/src/i18n/ka.js +28 -2
  69. package/src/i18n/lt.js +28 -2
  70. package/src/i18n/pl.js +28 -2
  71. package/src/i18n/pt-br.js +28 -2
  72. package/src/i18n/pt.js +28 -2
  73. package/src/i18n/ru.js +28 -2
  74. package/src/i18n/tr.js +28 -2
  75. package/src/i18n/zh-cn.js +28 -2
  76. package/src/i18n/zh-tw.js +28 -2
  77. package/src/jsgrid.core.js +51 -2
  78. package/src/jsgrid.validation.js +6 -1
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
 
@@ -104,6 +111,7 @@ The config object may contain following options (default values are specified be
104
111
  {
105
112
  fields: [],
106
113
  data: [],
114
+ locale: null, // per-instance locale, see Localization section
107
115
 
108
116
  autoload: false,
109
117
  controller: {
@@ -2087,6 +2095,41 @@ Here is how localization config looks like for Spanish [i18n/es.js](src/i18n/es.
2087
2095
 
2088
2096
  Find all available locales [here](src/i18n).
2089
2097
 
2098
+ ### Per-instance locale (jsxgrid extension, not in upstream jsGrid)
2099
+
2100
+ `jsGrid.locale()` is global — it patches the shared `Grid`/field prototypes, so it affects every grid on the
2101
+ page at once. If you need different grids on the same page in different languages simultaneously, pass a
2102
+ `locale` option directly in the grid config instead:
2103
+
2104
+ ```javascript
2105
+
2106
+ $("#grid").jsGrid({
2107
+ locale: "ru", // a key from jsGrid.locales, or an inline {grid, fields} config object
2108
+ ...
2109
+ });
2110
+
2111
+ ```
2112
+
2113
+ This only affects that one grid instance (and its fields) — it's applied as instance-level properties, not
2114
+ prototype patches, so it never touches other grids. An explicit option in the grid/field config still wins
2115
+ over the locale (e.g. `{ type: "Xcontrol", deleteButtonTooltip: "Custom" }` keeps `"Custom"` even under a
2116
+ `ru` locale). The `grid` and `fields` sections of a locale are read this way, which already covers the load
2117
+ indicator message too - `Grid` always builds it from the grid's own `loadMessage` option (part of the
2118
+ `grid` section), never from `LoadIndicator.prototype.message` directly.
2119
+
2120
+ `validators` messages follow the grid's own `locale` as well: each grid has its own `Validation` instance
2121
+ (`this._validation`, built once at construction), which is handed the locale's `validators` section as
2122
+ `validatorsLocale` and checks it before falling back to the shared `jsGrid.validators[name].message`
2123
+ default. Precedence, same as fields: an explicit `message` on the validation rule itself still wins over
2124
+ the locale, which still wins over the built-in English default.
2125
+
2126
+ **Interaction with `jsGrid.locale()`**: since a grid's own `locale` option sets instance properties (which
2127
+ always shadow prototype properties) while `jsGrid.locale()` only ever patches prototypes, a grid constructed
2128
+ with an explicit `locale` is permanently pinned to it — a later `jsGrid.locale()` call (e.g. a
2129
+ single-page-app switching the UI language at runtime, no full reload) never overrides it, while grids
2130
+ without their own `locale` keep following the global switch as before. This is guaranteed behavior, not an
2131
+ implementation detail to rely on carefully.
2132
+
2090
2133
 
2091
2134
  ## Sorting Strategies
2092
2135
 
@@ -1,6 +1,6 @@
1
1
  /*
2
- * jsxgrid v2.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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.1.0 (https://github.com/rok9ru/jsxgrid#readme)
2
+ * jsxgrid v2.3.0 (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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "등록",
29
37
  updateButtonTooltip: "업데이트",
30
38
  cancelEditButtonTooltip: "변경 취소"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "검색 모드",
42
+ insertModeButtonTooltip: "등록 모드",
43
+ editButtonTooltip: "수정",
44
+ deleteButtonTooltip: "삭제",
45
+ searchButtonTooltip: "검색",
46
+ clearFilterButtonTooltip: "초기화",
47
+ insertButtonTooltip: "등록",
48
+ updateButtonTooltip: "업데이트",
49
+ cancelEditButtonTooltip: "변경 취소"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "파일 관리자 열기"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "편집기",
56
+ closeText: "저장"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "Vložit",
29
37
  updateButtonTooltip: "Upravit",
30
38
  cancelEditButtonTooltip: "Zrušit editaci"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "Přepnout na hledání",
42
+ insertModeButtonTooltip: "Přepnout na vlkádání",
43
+ editButtonTooltip: "Upravit",
44
+ deleteButtonTooltip: "Smazat",
45
+ searchButtonTooltip: "Hledat",
46
+ clearFilterButtonTooltip: "Smazat filtr",
47
+ insertButtonTooltip: "Vložit",
48
+ updateButtonTooltip: "Upravit",
49
+ cancelEditButtonTooltip: "Zrušit editaci"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "Otevřít správce souborů"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "Editor",
56
+ closeText: "Uložit"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "Hinzufügen",
29
37
  updateButtonTooltip: "Speichern",
30
38
  cancelEditButtonTooltip: "Abbrechen"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "Suche",
42
+ insertModeButtonTooltip: "Eintrag hinzufügen",
43
+ editButtonTooltip: "Bearbeiten",
44
+ deleteButtonTooltip: "Löschen",
45
+ searchButtonTooltip: "Eintrag finden",
46
+ clearFilterButtonTooltip: "Filter zurücksetzen",
47
+ insertButtonTooltip: "Hinzufügen",
48
+ updateButtonTooltip: "Speichern",
49
+ cancelEditButtonTooltip: "Abbrechen"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "Dateimanager öffnen"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "Editor",
56
+ closeText: "Speichern"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "Εισαγωγή",
29
37
  updateButtonTooltip: "Αποθήκευση",
30
38
  cancelEditButtonTooltip: "Ακύρωση"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "Αναζήτηση",
42
+ insertModeButtonTooltip: "Εισάγετε φίλτρο",
43
+ editButtonTooltip: "Επεξεργασία",
44
+ deleteButtonTooltip: "Διαγραφή",
45
+ searchButtonTooltip: "Εύρεση",
46
+ clearFilterButtonTooltip: "Αφαίρεση φίλτρου",
47
+ insertButtonTooltip: "Εισαγωγή",
48
+ updateButtonTooltip: "Αποθήκευση",
49
+ cancelEditButtonTooltip: "Ακύρωση"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "Άνοιγμα διαχειριστή αρχείων"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "Επεξεργαστής",
56
+ closeText: "Αποθήκευση"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "Insertar",
29
37
  updateButtonTooltip: "Actualizar",
30
38
  cancelEditButtonTooltip: "Cancelar edición"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "Cambiar a búsqueda",
42
+ insertModeButtonTooltip: "Cambiar a inserción",
43
+ editButtonTooltip: "Editar",
44
+ deleteButtonTooltip: "Suprimir",
45
+ searchButtonTooltip: "Buscar",
46
+ clearFilterButtonTooltip: "Borrar filtro",
47
+ insertButtonTooltip: "Insertar",
48
+ updateButtonTooltip: "Actualizar",
49
+ cancelEditButtonTooltip: "Cancelar edición"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "Abrir gestor de archivos"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "Editor",
56
+ closeText: "Guardar"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "درج",
29
37
  updateButtonTooltip: "به روز رسانی",
30
38
  cancelEditButtonTooltip: "لغو ویرایش"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "تغییر به حالت جستجو",
42
+ insertModeButtonTooltip: "تغییر به حالت درج",
43
+ editButtonTooltip: "تغییر به حالت ویرایش",
44
+ deleteButtonTooltip: "حذف",
45
+ searchButtonTooltip: "جستجو",
46
+ clearFilterButtonTooltip: "پاک کردن فیلترها",
47
+ insertButtonTooltip: "درج",
48
+ updateButtonTooltip: "به روز رسانی",
49
+ cancelEditButtonTooltip: "لغو ویرایش"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "باز کردن مدیر فایل"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "ویرایشگر",
56
+ closeText: "ذخیره"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "Ajouter",
29
37
  updateButtonTooltip: "Sauvegarder",
30
38
  cancelEditButtonTooltip: "Annuler"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "Recherche",
42
+ insertModeButtonTooltip: "Ajouter une entrée",
43
+ editButtonTooltip: "Changer",
44
+ deleteButtonTooltip: "Effacer",
45
+ searchButtonTooltip: "Trouve",
46
+ clearFilterButtonTooltip: "Effacer",
47
+ insertButtonTooltip: "Ajouter",
48
+ updateButtonTooltip: "Sauvegarder",
49
+ cancelEditButtonTooltip: "Annuler"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "Ouvrir le gestionnaire de fichiers"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "Éditeur",
56
+ closeText: "Enregistrer"
31
57
  }
32
58
  },
33
59
 
@@ -43,5 +69,5 @@
43
69
  }
44
70
  };
45
71
 
46
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));
47
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: {
@@ -28,6 +36,24 @@
28
36
  insertButtonTooltip: "הכנסה",
29
37
  updateButtonTooltip: "עדכון",
30
38
  cancelEditButtonTooltip: "ביטול עריכה"
39
+ },
40
+ Xcontrol: {
41
+ searchModeButtonTooltip: "ביצוע חיפוש",
42
+ insertModeButtonTooltip: "ביצוע עריכת שורה",
43
+ editButtonTooltip: "עריכה",
44
+ deleteButtonTooltip: "מחיקה",
45
+ searchButtonTooltip: "חיפוש",
46
+ clearFilterButtonTooltip: "ניקוי מסנן",
47
+ insertButtonTooltip: "הכנסה",
48
+ updateButtonTooltip: "עדכון",
49
+ cancelEditButtonTooltip: "ביטול עריכה"
50
+ },
51
+ XimgField: {
52
+ editButtonText: "פתח מנהל קבצים"
53
+ },
54
+ Xjsoneditor: {
55
+ editText: "עורך",
56
+ closeText: "שמור"
31
57
  }
32
58
  },
33
59
 
@@ -43,4 +69,4 @@
43
69
  }
44
70
  };
45
71
 
46
- }(jsGrid, jQuery));
72
+ }(window.jsGrid, window.jQuery));