handsontable 15.1.0 → 15.2.0-next-8670a33-20250312

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 (161) hide show
  1. package/3rdparty/walkontable/src/selection/border/border.js +16 -3
  2. package/3rdparty/walkontable/src/selection/border/border.mjs +17 -4
  3. package/3rdparty/walkontable/src/selection/scanner.js +1 -1
  4. package/3rdparty/walkontable/src/selection/scanner.mjs +2 -2
  5. package/3rdparty/walkontable/src/table.js +3 -2
  6. package/3rdparty/walkontable/src/table.mjs +4 -3
  7. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.js +1 -0
  8. package/3rdparty/walkontable/src/utils/orderView/viewDiffer/viewOrder.mjs +1 -0
  9. package/3rdparty/walkontable/src/viewport.js +30 -3
  10. package/3rdparty/walkontable/src/viewport.mjs +30 -3
  11. package/CHANGELOG.md +40 -0
  12. package/base.js +2 -2
  13. package/base.mjs +2 -2
  14. package/core.js +2 -37
  15. package/core.mjs +2 -37
  16. package/dataMap/dataMap.js +4 -12
  17. package/dataMap/dataMap.mjs +4 -12
  18. package/dataMap/dataSource.js +2 -2
  19. package/dataMap/dataSource.mjs +2 -2
  20. package/dataMap/metaManager/metaSchema.js +2 -2
  21. package/dataMap/metaManager/metaSchema.mjs +2 -2
  22. package/dist/handsontable.css +2 -2
  23. package/dist/handsontable.full.css +2 -2
  24. package/dist/handsontable.full.js +494 -400
  25. package/dist/handsontable.full.min.css +2 -2
  26. package/dist/handsontable.full.min.js +73 -73
  27. package/dist/handsontable.js +494 -400
  28. package/dist/handsontable.min.css +2 -2
  29. package/dist/handsontable.min.js +43 -43
  30. package/dist/languages/all.js +139 -28
  31. package/dist/languages/all.min.js +1 -1
  32. package/dist/languages/fa-IR.js +167 -0
  33. package/dist/languages/fa-IR.min.js +1 -0
  34. package/dist/languages/it-IT.js +3 -0
  35. package/dist/languages/it-IT.min.js +1 -1
  36. package/dist/languages/sr-SP.js +3 -0
  37. package/dist/languages/sr-SP.min.js +1 -1
  38. package/editors/autocompleteEditor/autocompleteEditor.js +25 -20
  39. package/editors/autocompleteEditor/autocompleteEditor.mjs +25 -20
  40. package/editors/dateEditor/dateEditor.d.ts +0 -2
  41. package/editors/dateEditor/dateEditor.js +18 -7
  42. package/editors/dateEditor/dateEditor.mjs +17 -6
  43. package/focusManager.js +5 -3
  44. package/focusManager.mjs +6 -4
  45. package/helpers/dom/element.d.ts +1 -0
  46. package/helpers/dom/element.js +21 -2
  47. package/helpers/dom/element.mjs +20 -2
  48. package/helpers/dom/event.js +2 -1
  49. package/helpers/dom/event.mjs +2 -1
  50. package/helpers/mixed.js +2 -2
  51. package/helpers/mixed.mjs +2 -2
  52. package/helpers/number.js +1 -0
  53. package/helpers/number.mjs +1 -0
  54. package/i18n/languages/fa-IR.d.ts +5 -0
  55. package/i18n/languages/fa-IR.js +96 -0
  56. package/i18n/languages/fa-IR.mjs +90 -0
  57. package/i18n/languages/index.d.ts +2 -0
  58. package/i18n/languages/index.js +2 -0
  59. package/i18n/languages/index.mjs +2 -1
  60. package/i18n/languages/it-IT.js +3 -0
  61. package/i18n/languages/it-IT.mjs +3 -0
  62. package/i18n/languages/sr-SP.js +3 -0
  63. package/i18n/languages/sr-SP.mjs +3 -0
  64. package/i18n/phraseFormatters/substituteVariables.js +1 -0
  65. package/i18n/phraseFormatters/substituteVariables.mjs +1 -0
  66. package/languages/all.js +139 -28
  67. package/languages/fa-IR.js +167 -0
  68. package/languages/fa-IR.mjs +92 -0
  69. package/languages/index.js +139 -28
  70. package/languages/index.mjs +2 -1
  71. package/languages/it-IT.js +3 -0
  72. package/languages/it-IT.mjs +3 -0
  73. package/languages/sr-SP.js +3 -0
  74. package/languages/sr-SP.mjs +3 -0
  75. package/package.json +13 -2
  76. package/plugins/columnSorting/columnSorting.js +17 -1
  77. package/plugins/columnSorting/columnSorting.mjs +18 -2
  78. package/plugins/columnSorting/columnStatesManager.js +1 -0
  79. package/plugins/columnSorting/columnStatesManager.mjs +1 -0
  80. package/plugins/columnSorting/utils.js +14 -0
  81. package/plugins/columnSorting/utils.mjs +13 -0
  82. package/plugins/comments/comments.js +5 -2
  83. package/plugins/comments/comments.mjs +6 -3
  84. package/plugins/contextMenu/menu/menu.js +9 -3
  85. package/plugins/contextMenu/menu/menu.mjs +9 -3
  86. package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -8
  87. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -8
  88. package/plugins/contextMenu/predefinedItems/columnRight.js +2 -9
  89. package/plugins/contextMenu/predefinedItems/columnRight.mjs +2 -9
  90. package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -8
  91. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -8
  92. package/plugins/contextMenu/predefinedItems/rowBelow.js +2 -9
  93. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +2 -9
  94. package/plugins/copyPaste/copyPaste.js +3 -3
  95. package/plugins/copyPaste/copyPaste.mjs +4 -4
  96. package/plugins/exportFile/types/csv.js +1 -0
  97. package/plugins/exportFile/types/csv.mjs +1 -0
  98. package/plugins/filters/conditionCollection.js +0 -26
  99. package/plugins/filters/conditionCollection.mjs +0 -26
  100. package/plugins/filters/filters.d.ts +2 -0
  101. package/plugins/filters/filters.js +77 -8
  102. package/plugins/filters/filters.mjs +77 -8
  103. package/plugins/mergeCells/mergeCells.js +9 -6
  104. package/plugins/mergeCells/mergeCells.mjs +9 -6
  105. package/plugins/multiColumnSorting/multiColumnSorting.js +1 -21
  106. package/plugins/multiColumnSorting/multiColumnSorting.mjs +1 -21
  107. package/plugins/nestedHeaders/nestedHeaders.js +5 -3
  108. package/plugins/nestedHeaders/nestedHeaders.mjs +5 -3
  109. package/plugins/nestedHeaders/stateManager/index.js +1 -0
  110. package/plugins/nestedHeaders/stateManager/index.mjs +1 -0
  111. package/plugins/undoRedo/actions/_base.js +10 -0
  112. package/plugins/undoRedo/actions/_base.mjs +10 -0
  113. package/plugins/undoRedo/actions/cellAlignment.js +1 -1
  114. package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
  115. package/plugins/undoRedo/actions/columnMove.js +1 -1
  116. package/plugins/undoRedo/actions/columnMove.mjs +1 -1
  117. package/plugins/undoRedo/actions/columnSort.js +1 -1
  118. package/plugins/undoRedo/actions/columnSort.mjs +1 -1
  119. package/plugins/undoRedo/actions/createColumn.js +1 -1
  120. package/plugins/undoRedo/actions/createColumn.mjs +1 -1
  121. package/plugins/undoRedo/actions/createRow.js +1 -1
  122. package/plugins/undoRedo/actions/createRow.mjs +1 -1
  123. package/plugins/undoRedo/actions/dataChange.js +1 -1
  124. package/plugins/undoRedo/actions/dataChange.mjs +1 -1
  125. package/plugins/undoRedo/actions/filters.js +3 -3
  126. package/plugins/undoRedo/actions/filters.mjs +3 -3
  127. package/plugins/undoRedo/actions/mergeCells.js +4 -1
  128. package/plugins/undoRedo/actions/mergeCells.mjs +4 -1
  129. package/plugins/undoRedo/actions/removeColumn.js +4 -2
  130. package/plugins/undoRedo/actions/removeColumn.mjs +4 -2
  131. package/plugins/undoRedo/actions/removeRow.js +1 -1
  132. package/plugins/undoRedo/actions/removeRow.mjs +1 -1
  133. package/plugins/undoRedo/actions/rowMove.js +1 -1
  134. package/plugins/undoRedo/actions/rowMove.mjs +1 -1
  135. package/plugins/undoRedo/actions/unmergeCells.js +4 -1
  136. package/plugins/undoRedo/actions/unmergeCells.mjs +4 -1
  137. package/plugins/undoRedo/undoRedo.d.ts +48 -17
  138. package/renderers/checkboxRenderer/checkboxRenderer.js +1 -1
  139. package/renderers/checkboxRenderer/checkboxRenderer.mjs +2 -2
  140. package/renderers/numericRenderer/numericRenderer.js +10 -2
  141. package/renderers/numericRenderer/numericRenderer.mjs +10 -2
  142. package/renderers/textRenderer/textRenderer.js +3 -12
  143. package/renderers/textRenderer/textRenderer.mjs +4 -13
  144. package/shortcuts/utils.js +1 -0
  145. package/shortcuts/utils.mjs +1 -0
  146. package/styles/handsontable.css +83 -99
  147. package/styles/handsontable.min.css +3 -3
  148. package/styles/ht-theme-horizon.css +14 -2
  149. package/styles/ht-theme-horizon.min.css +3 -3
  150. package/styles/ht-theme-main.css +14 -2
  151. package/styles/ht-theme-main.min.css +3 -3
  152. package/tableView.js +9 -0
  153. package/tableView.mjs +9 -0
  154. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -0
  155. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -0
  156. package/translations/maps/utils/physicallyIndexed.js +1 -0
  157. package/translations/maps/utils/physicallyIndexed.mjs +1 -0
  158. package/utils/dataStructures/priorityMap.js +1 -0
  159. package/utils/dataStructures/priorityMap.mjs +1 -0
  160. package/plugins/multiColumnSorting/utils.js +0 -13
  161. package/plugins/multiColumnSorting/utils.mjs +0 -9
@@ -628,6 +628,109 @@ var _default = exports["default"] = dictionary;
628
628
  "use strict";
629
629
 
630
630
 
631
+ var _interopRequireDefault = __webpack_require__(1);
632
+ exports.__esModule = true;
633
+ var _handsontable = _interopRequireDefault(__webpack_require__(2));
634
+ /**
635
+ * @preserve
636
+ * Authors: Ali Almasi
637
+ * Last updated: Jan 19, 2025
638
+ *
639
+ * Description: Definition file for Farsi - Iran language-country.
640
+ */
641
+
642
+ const C = _handsontable.default.languages.dictionaryKeys;
643
+ const dictionary = {
644
+ languageCode: 'fa-IR',
645
+ [C.CONTEXTMENU_ITEMS_NO_ITEMS]: 'هیچ گزینه ای در دسترس نیست',
646
+ [C.CONTEXTMENU_ITEMS_ROW_ABOVE]: 'درج ردیف در بالا',
647
+ [C.CONTEXTMENU_ITEMS_ROW_BELOW]: 'درج ردیف در پایین',
648
+ [C.CONTEXTMENU_ITEMS_INSERT_LEFT]: 'درج ستون در چپ',
649
+ [C.CONTEXTMENU_ITEMS_INSERT_RIGHT]: 'درج ستون در راست',
650
+ [C.CONTEXTMENU_ITEMS_REMOVE_ROW]: ['حذف ردیف', 'حذف ردیف ها'],
651
+ [C.CONTEXTMENU_ITEMS_REMOVE_COLUMN]: ['حذف ستون', 'حذف ستون ها'],
652
+ [C.CONTEXTMENU_ITEMS_UNDO]: 'واگرد',
653
+ [C.CONTEXTMENU_ITEMS_REDO]: 'بازگردانی',
654
+ [C.CONTEXTMENU_ITEMS_READ_ONLY]: 'فقط خواندنی',
655
+ [C.CONTEXTMENU_ITEMS_CLEAR_COLUMN]: 'پاک کردن ستون',
656
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT]: 'تراز',
657
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_LEFT]: 'چپ',
658
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_CENTER]: 'وسط',
659
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_RIGHT]: 'راست',
660
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_JUSTIFY]: 'میزان',
661
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_TOP]: 'بالا',
662
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_MIDDLE]: 'میانه',
663
+ [C.CONTEXTMENU_ITEMS_ALIGNMENT_BOTTOM]: 'پایین',
664
+ [C.CONTEXTMENU_ITEMS_FREEZE_COLUMN]: 'انجماد ستون',
665
+ [C.CONTEXTMENU_ITEMS_UNFREEZE_COLUMN]: 'باز کردن ستون',
666
+ [C.CONTEXTMENU_ITEMS_BORDERS]: 'مرز ها',
667
+ [C.CONTEXTMENU_ITEMS_BORDERS_TOP]: 'بالا',
668
+ [C.CONTEXTMENU_ITEMS_BORDERS_RIGHT]: 'راست',
669
+ [C.CONTEXTMENU_ITEMS_BORDERS_BOTTOM]: 'پایین',
670
+ [C.CONTEXTMENU_ITEMS_BORDERS_LEFT]: 'چپ',
671
+ [C.CONTEXTMENU_ITEMS_REMOVE_BORDERS]: 'حذف مرز (ها)',
672
+ [C.CONTEXTMENU_ITEMS_ADD_COMMENT]: 'افزودن کامنت',
673
+ [C.CONTEXTMENU_ITEMS_EDIT_COMMENT]: 'تغییر کامنت',
674
+ [C.CONTEXTMENU_ITEMS_REMOVE_COMMENT]: 'حذف کامنت',
675
+ [C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT]: 'فقط خواندنی کردن کامنت',
676
+ [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'ادغام سلول ها',
677
+ [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'جدا کردن سلول ها',
678
+ [C.CONTEXTMENU_ITEMS_COPY]: 'کپی',
679
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['کپی با سر ستون', 'کپی با سرستون ها'],
680
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: ['کپی با سرستون گروه', 'کپی با سرستون گروه ها'],
681
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['فقط کپی سرستون', 'فقط کپی سرستون ها'],
682
+ [C.CONTEXTMENU_ITEMS_CUT]: 'بریدن',
683
+ [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'درج زیر ردیف',
684
+ [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'جدا کردن از سرردیف',
685
+ [C.CONTEXTMENU_ITEMS_HIDE_COLUMN]: ['پنهان کردن ستون', 'پنهان کردن ستون ها'],
686
+ [C.CONTEXTMENU_ITEMS_SHOW_COLUMN]: ['نمایش ستون', 'نمایش ستون ها'],
687
+ [C.CONTEXTMENU_ITEMS_HIDE_ROW]: ['پنهان کردن ردیف', 'پنهان کردن ردیف ها'],
688
+ [C.CONTEXTMENU_ITEMS_SHOW_ROW]: ['نمایش ردیف', 'نمایش ردیف ها'],
689
+ [C.FILTERS_CONDITIONS_NONE]: 'هیچ',
690
+ [C.FILTERS_CONDITIONS_EMPTY]: 'خالی است',
691
+ [C.FILTERS_CONDITIONS_NOT_EMPTY]: 'خالی نیست',
692
+ [C.FILTERS_CONDITIONS_EQUAL]: 'برابر است با',
693
+ [C.FILTERS_CONDITIONS_NOT_EQUAL]: 'برابر نیست با',
694
+ [C.FILTERS_CONDITIONS_BEGINS_WITH]: 'شروع می شود با',
695
+ [C.FILTERS_CONDITIONS_ENDS_WITH]: 'پایان می یابد با',
696
+ [C.FILTERS_CONDITIONS_CONTAINS]: 'شامل می شود',
697
+ [C.FILTERS_CONDITIONS_NOT_CONTAIN]: 'شامل نمی شود',
698
+ [C.FILTERS_CONDITIONS_GREATER_THAN]: 'بزرگ تر',
699
+ [C.FILTERS_CONDITIONS_GREATER_THAN_OR_EQUAL]: 'بزرگتر مساوی',
700
+ [C.FILTERS_CONDITIONS_LESS_THAN]: 'کوچکتر',
701
+ [C.FILTERS_CONDITIONS_LESS_THAN_OR_EQUAL]: 'کوچکتر مساوی',
702
+ [C.FILTERS_CONDITIONS_BETWEEN]: 'در میان است',
703
+ [C.FILTERS_CONDITIONS_NOT_BETWEEN]: 'در میان نیست',
704
+ [C.FILTERS_CONDITIONS_AFTER]: 'بعد',
705
+ [C.FILTERS_CONDITIONS_BEFORE]: 'قبل',
706
+ [C.FILTERS_CONDITIONS_TODAY]: 'امروز',
707
+ [C.FILTERS_CONDITIONS_TOMORROW]: 'فردا',
708
+ [C.FILTERS_CONDITIONS_YESTERDAY]: 'دیروز',
709
+ [C.FILTERS_VALUES_BLANK_CELLS]: 'سلول های خالی',
710
+ [C.FILTERS_DIVS_FILTER_BY_CONDITION]: 'فیلتر بر اساس شرایط',
711
+ [C.FILTERS_DIVS_FILTER_BY_VALUE]: 'فیلتر بر اساس مقدار',
712
+ [C.FILTERS_LABELS_CONJUNCTION]: 'و',
713
+ [C.FILTERS_LABELS_DISJUNCTION]: 'یا',
714
+ [C.FILTERS_BUTTONS_SELECT_ALL]: 'انتخاب همه',
715
+ [C.FILTERS_BUTTONS_CLEAR]: 'پاک کردن',
716
+ [C.FILTERS_BUTTONS_OK]: 'تایید',
717
+ [C.FILTERS_BUTTONS_CANCEL]: 'لغو',
718
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SEARCH]: 'جستجو',
719
+ [C.FILTERS_BUTTONS_PLACEHOLDER_VALUE]: 'مقدار',
720
+ [C.FILTERS_BUTTONS_PLACEHOLDER_SECOND_VALUE]: 'مقدار دوم',
721
+ [C.CHECKBOX_CHECKED]: 'چک شده',
722
+ [C.CHECKBOX_UNCHECKED]: 'چک نشده'
723
+ };
724
+ _handsontable.default.languages.registerLanguageDictionary(dictionary);
725
+ var _default = exports["default"] = dictionary;
726
+
727
+ /***/ }),
728
+ /* 9 */
729
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
730
+
731
+ "use strict";
732
+
733
+
631
734
  var _interopRequireDefault = __webpack_require__(1);
632
735
  exports.__esModule = true;
633
736
  var _handsontable = _interopRequireDefault(__webpack_require__(2));
@@ -719,7 +822,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
719
822
  var _default = exports["default"] = dictionary;
720
823
 
721
824
  /***/ }),
722
- /* 9 */
825
+ /* 10 */
723
826
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
724
827
 
725
828
  "use strict";
@@ -822,8 +925,8 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
822
925
  var _default = exports["default"] = dictionary;
823
926
 
824
927
  /***/ }),
825
- /* 10 */,
826
- /* 11 */
928
+ /* 11 */,
929
+ /* 12 */
827
930
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
828
931
 
829
932
  "use strict";
@@ -876,6 +979,9 @@ const dictionary = {
876
979
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Unisci celle',
877
980
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Separa celle',
878
981
  [C.CONTEXTMENU_ITEMS_COPY]: 'Copia',
982
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Copia con intestazione', 'Copia con intestazioni'],
983
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: 'Copia con intestazione completa',
984
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Copia solo intestazione', 'Copia solo intestazioni'],
879
985
  [C.CONTEXTMENU_ITEMS_CUT]: 'Taglia',
880
986
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Inserisci riga figlia',
881
987
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Scollega da riga madre',
@@ -920,7 +1026,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
920
1026
  var _default = exports["default"] = dictionary;
921
1027
 
922
1028
  /***/ }),
923
- /* 12 */
1029
+ /* 13 */
924
1030
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
925
1031
 
926
1032
  "use strict";
@@ -1020,7 +1126,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1020
1126
  var _default = exports["default"] = dictionary;
1021
1127
 
1022
1128
  /***/ }),
1023
- /* 13 */
1129
+ /* 14 */
1024
1130
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1025
1131
 
1026
1132
  "use strict";
@@ -1117,7 +1223,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1117
1223
  var _default = exports["default"] = dictionary;
1118
1224
 
1119
1225
  /***/ }),
1120
- /* 14 */
1226
+ /* 15 */
1121
1227
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1122
1228
 
1123
1229
  "use strict";
@@ -1218,7 +1324,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1218
1324
  var _default = exports["default"] = dictionary;
1219
1325
 
1220
1326
  /***/ }),
1221
- /* 15 */
1327
+ /* 16 */
1222
1328
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1223
1329
 
1224
1330
  "use strict";
@@ -1315,7 +1421,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1315
1421
  var _default = exports["default"] = dictionary;
1316
1422
 
1317
1423
  /***/ }),
1318
- /* 16 */
1424
+ /* 17 */
1319
1425
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1320
1426
 
1321
1427
  "use strict";
@@ -1415,7 +1521,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1415
1521
  var _default = exports["default"] = dictionary;
1416
1522
 
1417
1523
  /***/ }),
1418
- /* 17 */
1524
+ /* 18 */
1419
1525
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1420
1526
 
1421
1527
  "use strict";
@@ -1518,7 +1624,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1518
1624
  var _default = exports["default"] = dictionary;
1519
1625
 
1520
1626
  /***/ }),
1521
- /* 18 */
1627
+ /* 19 */
1522
1628
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1523
1629
 
1524
1630
  "use strict";
@@ -1615,7 +1721,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1615
1721
  var _default = exports["default"] = dictionary;
1616
1722
 
1617
1723
  /***/ }),
1618
- /* 19 */
1724
+ /* 20 */
1619
1725
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1620
1726
 
1621
1727
  "use strict";
@@ -1712,7 +1818,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1712
1818
  var _default = exports["default"] = dictionary;
1713
1819
 
1714
1820
  /***/ }),
1715
- /* 20 */
1821
+ /* 21 */
1716
1822
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1717
1823
 
1718
1824
  "use strict";
@@ -1766,6 +1872,9 @@ const dictionary = {
1766
1872
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Spoji ćelije',
1767
1873
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Odvoji ćelije',
1768
1874
  [C.CONTEXTMENU_ITEMS_COPY]: 'Kopiraj',
1875
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Kopiraj sa zaglavljem', 'Kopiraj sa zaglavljima'],
1876
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: ['Kopiraj sa zaglavljem grupe', 'Kopiraj sa zaglavljima grupe'],
1877
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Kopiraj samo zaglavlje', 'Kopiraj samo zaglavlja'],
1769
1878
  [C.CONTEXTMENU_ITEMS_CUT]: 'Iseci',
1770
1879
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Unesi ugnježdeni red',
1771
1880
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Odvoji ugnježdeni red',
@@ -1810,7 +1919,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1810
1919
  var _default = exports["default"] = dictionary;
1811
1920
 
1812
1921
  /***/ }),
1813
- /* 21 */
1922
+ /* 22 */
1814
1923
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1815
1924
 
1816
1925
  "use strict";
@@ -1910,7 +2019,7 @@ _handsontable.default.languages.registerLanguageDictionary(dictionary);
1910
2019
  var _default = exports["default"] = dictionary;
1911
2020
 
1912
2021
  /***/ }),
1913
- /* 22 */
2022
+ /* 23 */
1914
2023
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1915
2024
 
1916
2025
  "use strict";
@@ -2055,33 +2164,35 @@ var _enUS = _interopRequireDefault(__webpack_require__(6));
2055
2164
  exports.enUS = _enUS.default;
2056
2165
  var _esMX = _interopRequireDefault(__webpack_require__(7));
2057
2166
  exports.esMX = _esMX.default;
2058
- var _frFR = _interopRequireDefault(__webpack_require__(8));
2167
+ var _faIR = _interopRequireDefault(__webpack_require__(8));
2168
+ exports.faIR = _faIR.default;
2169
+ var _frFR = _interopRequireDefault(__webpack_require__(9));
2059
2170
  exports.frFR = _frFR.default;
2060
- var _hrHR = _interopRequireDefault(__webpack_require__(9));
2171
+ var _hrHR = _interopRequireDefault(__webpack_require__(10));
2061
2172
  exports.hrHR = _hrHR.default;
2062
- var _itIT = _interopRequireDefault(__webpack_require__(11));
2173
+ var _itIT = _interopRequireDefault(__webpack_require__(12));
2063
2174
  exports.itIT = _itIT.default;
2064
- var _jaJP = _interopRequireDefault(__webpack_require__(12));
2175
+ var _jaJP = _interopRequireDefault(__webpack_require__(13));
2065
2176
  exports.jaJP = _jaJP.default;
2066
- var _koKR = _interopRequireDefault(__webpack_require__(13));
2177
+ var _koKR = _interopRequireDefault(__webpack_require__(14));
2067
2178
  exports.koKR = _koKR.default;
2068
- var _lvLV = _interopRequireDefault(__webpack_require__(14));
2179
+ var _lvLV = _interopRequireDefault(__webpack_require__(15));
2069
2180
  exports.lvLV = _lvLV.default;
2070
- var _nbNO = _interopRequireDefault(__webpack_require__(15));
2181
+ var _nbNO = _interopRequireDefault(__webpack_require__(16));
2071
2182
  exports.nbNO = _nbNO.default;
2072
- var _nlNL = _interopRequireDefault(__webpack_require__(16));
2183
+ var _nlNL = _interopRequireDefault(__webpack_require__(17));
2073
2184
  exports.nlNL = _nlNL.default;
2074
- var _plPL = _interopRequireDefault(__webpack_require__(17));
2185
+ var _plPL = _interopRequireDefault(__webpack_require__(18));
2075
2186
  exports.plPL = _plPL.default;
2076
- var _ptBR = _interopRequireDefault(__webpack_require__(18));
2187
+ var _ptBR = _interopRequireDefault(__webpack_require__(19));
2077
2188
  exports.ptBR = _ptBR.default;
2078
- var _ruRU = _interopRequireDefault(__webpack_require__(19));
2189
+ var _ruRU = _interopRequireDefault(__webpack_require__(20));
2079
2190
  exports.ruRU = _ruRU.default;
2080
- var _srSP = _interopRequireDefault(__webpack_require__(20));
2191
+ var _srSP = _interopRequireDefault(__webpack_require__(21));
2081
2192
  exports.srSP = _srSP.default;
2082
- var _zhCN = _interopRequireDefault(__webpack_require__(21));
2193
+ var _zhCN = _interopRequireDefault(__webpack_require__(22));
2083
2194
  exports.zhCN = _zhCN.default;
2084
- var _zhTW = _interopRequireDefault(__webpack_require__(22));
2195
+ var _zhTW = _interopRequireDefault(__webpack_require__(23));
2085
2196
  exports.zhTW = _zhTW.default;
2086
2197
  })();
2087
2198
 
@@ -4,6 +4,7 @@ import deCH from "./de-CH.mjs";
4
4
  import deDE from "./de-DE.mjs";
5
5
  import enUS from "./en-US.mjs";
6
6
  import esMX from "./es-MX.mjs";
7
+ import faIR from "./fa-IR.mjs";
7
8
  import frFR from "./fr-FR.mjs";
8
9
  import hrHR from "./hr-HR.mjs";
9
10
  import itIT from "./it-IT.mjs";
@@ -18,4 +19,4 @@ import ruRU from "./ru-RU.mjs";
18
19
  import srSP from "./sr-SP.mjs";
19
20
  import zhCN from "./zh-CN.mjs";
20
21
  import zhTW from "./zh-TW.mjs";
21
- export { arAR, csCZ, deCH, deDE, enUS, esMX, frFR, hrHR, itIT, jaJP, koKR, lvLV, nbNO, nlNL, plPL, ptBR, ruRU, srSP, zhCN, zhTW };
22
+ export { arAR, csCZ, deCH, deDE, enUS, esMX, faIR, frFR, hrHR, itIT, jaJP, koKR, lvLV, nbNO, nlNL, plPL, ptBR, ruRU, srSP, zhCN, zhTW };
@@ -110,6 +110,9 @@ const dictionary = {
110
110
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Unisci celle',
111
111
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Separa celle',
112
112
  [C.CONTEXTMENU_ITEMS_COPY]: 'Copia',
113
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Copia con intestazione', 'Copia con intestazioni'],
114
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: 'Copia con intestazione completa',
115
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Copia solo intestazione', 'Copia solo intestazioni'],
113
116
  [C.CONTEXTMENU_ITEMS_CUT]: 'Taglia',
114
117
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Inserisci riga figlia',
115
118
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Scollega da riga madre',
@@ -42,6 +42,9 @@ const dictionary = {
42
42
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Unisci celle',
43
43
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Separa celle',
44
44
  [C.CONTEXTMENU_ITEMS_COPY]: 'Copia',
45
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Copia con intestazione', 'Copia con intestazioni'],
46
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: 'Copia con intestazione completa',
47
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Copia solo intestazione', 'Copia solo intestazioni'],
45
48
  [C.CONTEXTMENU_ITEMS_CUT]: 'Taglia',
46
49
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Inserisci riga figlia',
47
50
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Scollega da riga madre',
@@ -111,6 +111,9 @@ const dictionary = {
111
111
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Spoji ćelije',
112
112
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Odvoji ćelije',
113
113
  [C.CONTEXTMENU_ITEMS_COPY]: 'Kopiraj',
114
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Kopiraj sa zaglavljem', 'Kopiraj sa zaglavljima'],
115
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: ['Kopiraj sa zaglavljem grupe', 'Kopiraj sa zaglavljima grupe'],
116
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Kopiraj samo zaglavlje', 'Kopiraj samo zaglavlja'],
114
117
  [C.CONTEXTMENU_ITEMS_CUT]: 'Iseci',
115
118
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Unesi ugnježdeni red',
116
119
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Odvoji ugnježdeni red',
@@ -43,6 +43,9 @@ const dictionary = {
43
43
  [C.CONTEXTMENU_ITEMS_MERGE_CELLS]: 'Spoji ćelije',
44
44
  [C.CONTEXTMENU_ITEMS_UNMERGE_CELLS]: 'Odvoji ćelije',
45
45
  [C.CONTEXTMENU_ITEMS_COPY]: 'Kopiraj',
46
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_HEADERS]: ['Kopiraj sa zaglavljem', 'Kopiraj sa zaglavljima'],
47
+ [C.CONTEXTMENU_ITEMS_COPY_WITH_COLUMN_GROUP_HEADERS]: ['Kopiraj sa zaglavljem grupe', 'Kopiraj sa zaglavljima grupe'],
48
+ [C.CONTEXTMENU_ITEMS_COPY_COLUMN_HEADERS_ONLY]: ['Kopiraj samo zaglavlje', 'Kopiraj samo zaglavlja'],
46
49
  [C.CONTEXTMENU_ITEMS_CUT]: 'Iseci',
47
50
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_INSERT_CHILD]: 'Unesi ugnježdeni red',
48
51
  [C.CONTEXTMENU_ITEMS_NESTED_ROWS_DETACH_CHILD]: 'Odvoji ugnježdeni red',
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/handsontable/handsontable/issues"
11
11
  },
12
12
  "author": "Handsoncode <hello@handsontable.com>",
13
- "version": "15.1.0",
13
+ "version": "15.2.0-next-8670a33-20250312",
14
14
  "main": "index",
15
15
  "module": "index.mjs",
16
16
  "jsnext:main": "index.mjs",
@@ -83,7 +83,7 @@
83
83
  "lodash": "^4.17.20",
84
84
  "mini-css-extract-plugin": "^2.7.6",
85
85
  "minimatch": "^3.0.4",
86
- "puppeteer": "^19.2.2",
86
+ "puppeteer": "^24.2.1",
87
87
  "replace-in-file": "^6.1.0",
88
88
  "rimraf": "^3.0.2",
89
89
  "sass": "^1.58.0",
@@ -192,6 +192,10 @@
192
192
  "require": "./languages/es-MX.js",
193
193
  "import": "./languages/es-MX.mjs"
194
194
  },
195
+ "./languages/fa-IR": {
196
+ "require": "./languages/fa-IR.js",
197
+ "import": "./languages/fa-IR.mjs"
198
+ },
195
199
  "./languages/fr-FR": {
196
200
  "require": "./languages/fr-FR.js",
197
201
  "import": "./languages/fr-FR.mjs"
@@ -648,6 +652,11 @@
648
652
  "require": "./i18n/languages/es-MX.js",
649
653
  "import": "./i18n/languages/es-MX.mjs"
650
654
  },
655
+ "./i18n/languages/fa-IR": {
656
+ "types": "./i18n/languages/fa-IR.d.ts",
657
+ "require": "./i18n/languages/fa-IR.js",
658
+ "import": "./i18n/languages/fa-IR.mjs"
659
+ },
651
660
  "./i18n/languages/fr-FR": {
652
661
  "types": "./i18n/languages/fr-FR.d.ts",
653
662
  "require": "./i18n/languages/fr-FR.js",
@@ -745,6 +754,8 @@
745
754
  "./dist/languages/en-US.min.js": "./dist/languages/en-US.min.js",
746
755
  "./dist/languages/es-MX.js": "./dist/languages/es-MX.js",
747
756
  "./dist/languages/es-MX.min.js": "./dist/languages/es-MX.min.js",
757
+ "./dist/languages/fa-IR.js": "./dist/languages/fa-IR.js",
758
+ "./dist/languages/fa-IR.min.js": "./dist/languages/fa-IR.min.js",
748
759
  "./dist/languages/fr-FR.js": "./dist/languages/fr-FR.js",
749
760
  "./dist/languages/fr-FR.min.js": "./dist/languages/fr-FR.min.js",
750
761
  "./dist/languages/hr-HR.js": "./dist/languages/hr-HR.js",
@@ -35,6 +35,13 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
35
35
  _hooks.Hooks.getSingleton().register('beforeColumnSort');
36
36
  _hooks.Hooks.getSingleton().register('afterColumnSort');
37
37
 
38
+ /**
39
+ * Tracks the conflicts between `columnSorting` and `multiColumnSorting` options.
40
+ * Only one plugin can be enabled for Handsontable instance. Once one of them is enabled,
41
+ * the other should remain disabled even if it's set to `true`.
42
+ */
43
+ const pluginConflictsState = new WeakMap();
44
+
38
45
  // DIFF - MultiColumnSorting & ColumnSorting: changed configuration documentation.
39
46
  /**
40
47
  * @plugin ColumnSorting
@@ -143,9 +150,17 @@ class ColumnSorting extends _base.BasePlugin {
143
150
  */
144
151
  enablePlugin() {
145
152
  var _this = this;
153
+ if (pluginConflictsState.has(this.hot) && pluginConflictsState.get(this.hot) !== this.pluginKey) {
154
+ this.hot.updateSettings({
155
+ [this.pluginKey]: false
156
+ });
157
+ (0, _utils.warnAboutPluginsConflict)(pluginConflictsState.get(this.hot), this.pluginKey);
158
+ return;
159
+ }
146
160
  if (this.enabled) {
147
161
  return;
148
162
  }
163
+ pluginConflictsState.set(this.hot, this.pluginKey);
149
164
  this.columnStatesManager = new _columnStatesManager.ColumnStatesManager(this.hot, `${this.pluginKey}.sortingStates`);
150
165
  this.columnMetaCache = new _translations.PhysicalIndexToValueMap(physicalIndex => {
151
166
  let visualIndex = this.hot.toVisualColumn(physicalIndex);
@@ -190,6 +205,7 @@ class ColumnSorting extends _base.BasePlugin {
190
205
  }
191
206
  this.updateHeaderClasses(headerSpanElement);
192
207
  };
208
+ pluginConflictsState.delete(this.hot);
193
209
 
194
210
  // Changing header width and removing indicator.
195
211
  this.hot.addHook('afterGetColHeader', clearColHeader);
@@ -667,7 +683,7 @@ class ColumnSorting extends _base.BasePlugin {
667
683
  * @param {object} newSettings New settings object.
668
684
  */
669
685
  onUpdateSettings(newSettings) {
670
- super.onUpdateSettings();
686
+ super.onUpdateSettings(newSettings);
671
687
  if (this.columnMetaCache !== null) {
672
688
  // Column meta cache base on settings, thus we should re-init the map.
673
689
  this.columnMetaCache.init(this.hot.columnIndexMapper.getNumberOfIndexes());
@@ -18,7 +18,7 @@ import { IndexesSequence, PhysicalIndexToValueMap as IndexToValueMap } from "../
18
18
  import { Hooks } from "../../core/hooks/index.mjs";
19
19
  import { ColumnStatesManager } from "./columnStatesManager.mjs";
20
20
  import { EDITOR_EDIT_GROUP as SHORTCUTS_GROUP_EDITOR } from "../../shortcutContexts/index.mjs";
21
- import { HEADER_SPAN_CLASS, getNextSortOrder, areValidSortStates, getHeaderSpanElement, isFirstLevelColumnHeader, wasHeaderClickedProperly } from "./utils.mjs";
21
+ import { HEADER_SPAN_CLASS, getNextSortOrder, areValidSortStates, getHeaderSpanElement, isFirstLevelColumnHeader, wasHeaderClickedProperly, warnAboutPluginsConflict } from "./utils.mjs";
22
22
  import { getClassesToRemove, getClassesToAdd } from "./domHelpers.mjs";
23
23
  import { rootComparator } from "./rootComparator.mjs";
24
24
  import { registerRootComparator, sort } from "./sortService/index.mjs";
@@ -32,6 +32,13 @@ registerRootComparator(PLUGIN_KEY, rootComparator);
32
32
  Hooks.getSingleton().register('beforeColumnSort');
33
33
  Hooks.getSingleton().register('afterColumnSort');
34
34
 
35
+ /**
36
+ * Tracks the conflicts between `columnSorting` and `multiColumnSorting` options.
37
+ * Only one plugin can be enabled for Handsontable instance. Once one of them is enabled,
38
+ * the other should remain disabled even if it's set to `true`.
39
+ */
40
+ const pluginConflictsState = new WeakMap();
41
+
35
42
  // DIFF - MultiColumnSorting & ColumnSorting: changed configuration documentation.
36
43
  /**
37
44
  * @plugin ColumnSorting
@@ -140,9 +147,17 @@ export class ColumnSorting extends BasePlugin {
140
147
  */
141
148
  enablePlugin() {
142
149
  var _this = this;
150
+ if (pluginConflictsState.has(this.hot) && pluginConflictsState.get(this.hot) !== this.pluginKey) {
151
+ this.hot.updateSettings({
152
+ [this.pluginKey]: false
153
+ });
154
+ warnAboutPluginsConflict(pluginConflictsState.get(this.hot), this.pluginKey);
155
+ return;
156
+ }
143
157
  if (this.enabled) {
144
158
  return;
145
159
  }
160
+ pluginConflictsState.set(this.hot, this.pluginKey);
146
161
  this.columnStatesManager = new ColumnStatesManager(this.hot, `${this.pluginKey}.sortingStates`);
147
162
  this.columnMetaCache = new IndexToValueMap(physicalIndex => {
148
163
  let visualIndex = this.hot.toVisualColumn(physicalIndex);
@@ -187,6 +202,7 @@ export class ColumnSorting extends BasePlugin {
187
202
  }
188
203
  this.updateHeaderClasses(headerSpanElement);
189
204
  };
205
+ pluginConflictsState.delete(this.hot);
190
206
 
191
207
  // Changing header width and removing indicator.
192
208
  this.hot.addHook('afterGetColHeader', clearColHeader);
@@ -664,7 +680,7 @@ export class ColumnSorting extends BasePlugin {
664
680
  * @param {object} newSettings New settings object.
665
681
  */
666
682
  onUpdateSettings(newSettings) {
667
- super.onUpdateSettings();
683
+ super.onUpdateSettings(newSettings);
668
684
  if (this.columnMetaCache !== null) {
669
685
  // Column meta cache base on settings, thus we should re-init the map.
670
686
  this.columnMetaCache.init(this.hot.columnIndexMapper.getNumberOfIndexes());
@@ -2,6 +2,7 @@
2
2
 
3
3
  exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/esnext.iterator.constructor.js");
5
6
  require("core-js/modules/esnext.iterator.map.js");
6
7
  var _object = require("../../helpers/object");
7
8
  var _translations = require("../../translations");
@@ -1,4 +1,5 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/esnext.iterator.constructor.js";
2
3
  import "core-js/modules/esnext.iterator.map.js";
3
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
4
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -6,6 +6,7 @@ exports.createDateTimeCompareFunction = createDateTimeCompareFunction;
6
6
  exports.getHeaderSpanElement = getHeaderSpanElement;
7
7
  exports.getNextSortOrder = getNextSortOrder;
8
8
  exports.isFirstLevelColumnHeader = isFirstLevelColumnHeader;
9
+ exports.warnAboutPluginsConflict = warnAboutPluginsConflict;
9
10
  exports.wasHeaderClickedProperly = wasHeaderClickedProperly;
10
11
  require("core-js/modules/es.set.difference.v2.js");
11
12
  require("core-js/modules/es.set.intersection.v2.js");
@@ -22,6 +23,8 @@ var _object = require("../../helpers/object");
22
23
  var _event = require("../../helpers/dom/event");
23
24
  var _mixed = require("../../helpers/mixed");
24
25
  var _sortService = require("./sortService");
26
+ var _console = require("../../helpers/console");
27
+ var _templateLiteralTag = require("../../helpers/templateLiteralTag");
25
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
26
29
  const ASC_SORT_STATE = exports.ASC_SORT_STATE = 'asc';
27
30
  const DESC_SORT_STATE = exports.DESC_SORT_STATE = 'desc';
@@ -173,4 +176,15 @@ function createDateTimeCompareFunction(sortOrder, format, columnPluginSettings)
173
176
  }
174
177
  return _sortService.DO_NOT_SWAP;
175
178
  };
179
+ }
180
+
181
+ /**
182
+ * Warn users about problems when using `columnSorting` and `multiColumnSorting` plugins simultaneously.
183
+ *
184
+ * @param {string} workingPlugin The plugin that will work.
185
+ * @param {string} disabledPlugin The plugin that will remain disabled.
186
+ */
187
+ function warnAboutPluginsConflict(workingPlugin, disabledPlugin) {
188
+ (0, _console.warn)((0, _templateLiteralTag.toSingleLine)`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.\x20
189
+ Only \`${workingPlugin}\` will work. The \`${disabledPlugin}\` plugin will remain disabled.`);
176
190
  }
@@ -13,6 +13,8 @@ import { isObject } from "../../helpers/object.mjs";
13
13
  import { isRightClick } from "../../helpers/dom/event.mjs";
14
14
  import { isEmpty } from "../../helpers/mixed.mjs";
15
15
  import { DO_NOT_SWAP, FIRST_BEFORE_SECOND, FIRST_AFTER_SECOND } from "./sortService/index.mjs";
16
+ import { warn } from "../../helpers/console.mjs";
17
+ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
16
18
  export const ASC_SORT_STATE = 'asc';
17
19
  export const DESC_SORT_STATE = 'desc';
18
20
  export const HEADER_SPAN_CLASS = 'colHeader';
@@ -163,4 +165,15 @@ export function createDateTimeCompareFunction(sortOrder, format, columnPluginSet
163
165
  }
164
166
  return DO_NOT_SWAP;
165
167
  };
168
+ }
169
+
170
+ /**
171
+ * Warn users about problems when using `columnSorting` and `multiColumnSorting` plugins simultaneously.
172
+ *
173
+ * @param {string} workingPlugin The plugin that will work.
174
+ * @param {string} disabledPlugin The plugin that will remain disabled.
175
+ */
176
+ export function warnAboutPluginsConflict(workingPlugin, disabledPlugin) {
177
+ warn(toSingleLine`Plugins \`columnSorting\` and \`multiColumnSorting\` should not be enabled simultaneously.\x20
178
+ Only \`${workingPlugin}\` will work. The \`${disabledPlugin}\` plugin will remain disabled.`);
166
179
  }
@@ -608,6 +608,9 @@ class Comments extends _base.BasePlugin {
608
608
  innerHeight
609
609
  } = this.hot.rootWindow;
610
610
  const documentElement = this.hot.rootDocument.documentElement;
611
+ const scrollbarWidth = (0, _element.getScrollbarWidth)(this.hot.rootDocument);
612
+ const verticalScrollbarWidth = (0, _element.hasVerticalScrollbar)(this.hot.rootWindow) ? scrollbarWidth : 0;
613
+ const horizontalScrollbarWidth = (0, _element.hasHorizontalScrollbar)(this.hot.rootWindow) ? scrollbarWidth : 0;
611
614
  let x = left + rootWindow.scrollX + lastColWidth;
612
615
  let y = top + rootWindow.scrollY + lastRowHeight;
613
616
  if (this.hot.isRtl()) {
@@ -615,12 +618,12 @@ class Comments extends _base.BasePlugin {
615
618
  }
616
619
 
617
620
  // flip to the right or left the comments editor position when it goes out of browser viewport
618
- if (this.hot.isLtr() && left + cellWidth + editorWidth > innerWidth) {
621
+ if (this.hot.isLtr() && left + cellWidth + editorWidth > innerWidth - verticalScrollbarWidth) {
619
622
  x = left + rootWindow.scrollX - editorWidth - 1;
620
623
  } else if (this.hot.isRtl() && x < -(documentElement.scrollWidth - documentElement.clientWidth)) {
621
624
  x = left + rootWindow.scrollX + lastColWidth + 1;
622
625
  }
623
- if (top + editorHeight > innerHeight) {
626
+ if (top + editorHeight > innerHeight - horizontalScrollbarWidth) {
624
627
  y -= editorHeight - cellHeight + 1;
625
628
  }
626
629
  _classPrivateFieldGet(_editor, this).setPosition(x, y);
@@ -9,7 +9,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
9
9
  function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
10
10
  function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
11
11
  function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
12
- import { addClass, removeClass, closest, isChildOf, hasClass, outerHeight } from "../../helpers/dom/element.mjs";
12
+ import { addClass, closest, getScrollbarWidth, hasClass, hasVerticalScrollbar, hasHorizontalScrollbar, isChildOf, outerHeight, removeClass } from "../../helpers/dom/element.mjs";
13
13
  import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
14
14
  import { deepClone, deepExtend } from "../../helpers/object.mjs";
15
15
  import { BasePlugin } from "../base/index.mjs";
@@ -604,6 +604,9 @@ export class Comments extends BasePlugin {
604
604
  innerHeight
605
605
  } = this.hot.rootWindow;
606
606
  const documentElement = this.hot.rootDocument.documentElement;
607
+ const scrollbarWidth = getScrollbarWidth(this.hot.rootDocument);
608
+ const verticalScrollbarWidth = hasVerticalScrollbar(this.hot.rootWindow) ? scrollbarWidth : 0;
609
+ const horizontalScrollbarWidth = hasHorizontalScrollbar(this.hot.rootWindow) ? scrollbarWidth : 0;
607
610
  let x = left + rootWindow.scrollX + lastColWidth;
608
611
  let y = top + rootWindow.scrollY + lastRowHeight;
609
612
  if (this.hot.isRtl()) {
@@ -611,12 +614,12 @@ export class Comments extends BasePlugin {
611
614
  }
612
615
 
613
616
  // flip to the right or left the comments editor position when it goes out of browser viewport
614
- if (this.hot.isLtr() && left + cellWidth + editorWidth > innerWidth) {
617
+ if (this.hot.isLtr() && left + cellWidth + editorWidth > innerWidth - verticalScrollbarWidth) {
615
618
  x = left + rootWindow.scrollX - editorWidth - 1;
616
619
  } else if (this.hot.isRtl() && x < -(documentElement.scrollWidth - documentElement.clientWidth)) {
617
620
  x = left + rootWindow.scrollX + lastColWidth + 1;
618
621
  }
619
- if (top + editorHeight > innerHeight) {
622
+ if (top + editorHeight > innerHeight - horizontalScrollbarWidth) {
620
623
  y -= editorHeight - cellHeight + 1;
621
624
  }
622
625
  _classPrivateFieldGet(_editor, this).setPosition(x, y);