@sankhyalabs/ezui 0.0.0-bugfix-dev-KB-77074.0 → 0.0.0-bugfix-dev-KB-75047.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 (262) hide show
  1. package/dist/cjs/DataBinder-3b083480.js +445 -0
  2. package/dist/cjs/FocusResolver-885f2173.js +35 -0
  3. package/dist/cjs/ez-actions-button.cjs.entry.js +1 -1
  4. package/dist/cjs/ez-alert-list.cjs.entry.js +1 -1
  5. package/dist/cjs/ez-alert.cjs.entry.js +1 -1
  6. package/dist/cjs/ez-application.cjs.entry.js +1 -1
  7. package/dist/cjs/ez-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/ez-breadcrumb.cjs.entry.js +1 -1
  9. package/dist/cjs/ez-button.cjs.entry.js +2 -2
  10. package/dist/cjs/ez-calendar.cjs.entry.js +1 -1
  11. package/dist/cjs/ez-card-item_3.cjs.entry.js +13 -20
  12. package/dist/cjs/ez-chart.cjs.entry.js +2 -2
  13. package/dist/cjs/ez-check.cjs.entry.js +1 -1
  14. package/dist/cjs/ez-chip.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-collapsible-box.cjs.entry.js +1 -1
  16. package/dist/cjs/ez-combo-box.cjs.entry.js +49 -13
  17. package/dist/cjs/ez-custom-form-input_2.cjs.entry.js +5 -4
  18. package/dist/cjs/ez-date-input.cjs.entry.js +9 -3
  19. package/dist/cjs/ez-date-time-input.cjs.entry.js +9 -3
  20. package/dist/cjs/ez-dialog.cjs.entry.js +10 -2
  21. package/dist/cjs/ez-dropdown_2.cjs.entry.js +1 -1
  22. package/dist/cjs/ez-file-item.cjs.entry.js +1 -1
  23. package/dist/cjs/ez-form-view.cjs.entry.js +3 -3
  24. package/dist/cjs/ez-form.cjs.entry.js +6 -326
  25. package/dist/cjs/ez-grid.cjs.entry.js +14615 -70501
  26. package/dist/cjs/ez-guide-navigator.cjs.entry.js +1 -1
  27. package/dist/cjs/ez-icon.cjs.entry.js +1 -1
  28. package/dist/cjs/ez-list.cjs.entry.js +152 -101
  29. package/dist/cjs/ez-loading-bar.cjs.entry.js +1 -1
  30. package/dist/cjs/ez-modal-container.cjs.entry.js +1 -1
  31. package/dist/cjs/ez-modal.cjs.entry.js +2 -2
  32. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
  33. package/dist/cjs/ez-number-input.cjs.entry.js +9 -2
  34. package/dist/cjs/ez-popover.cjs.entry.js +2 -2
  35. package/dist/cjs/ez-popup.cjs.entry.js +2 -2
  36. package/dist/cjs/ez-radio-button.cjs.entry.js +1 -1
  37. package/dist/cjs/ez-scroller_2.cjs.entry.js +1 -1
  38. package/dist/cjs/ez-search.cjs.entry.js +69 -20
  39. package/dist/cjs/ez-sidebar-navigator.cjs.entry.js +1 -1
  40. package/dist/cjs/ez-split-button.cjs.entry.js +2 -2
  41. package/dist/cjs/ez-split-item.cjs.entry.js +1 -1
  42. package/dist/cjs/ez-split-panel.cjs.entry.js +1 -1
  43. package/dist/cjs/ez-tabselector.cjs.entry.js +1 -1
  44. package/dist/cjs/ez-text-area.cjs.entry.js +67 -5
  45. package/dist/cjs/ez-text-input.cjs.entry.js +80 -8
  46. package/dist/cjs/ez-time-input.cjs.entry.js +7 -1
  47. package/dist/cjs/ez-toast.cjs.entry.js +1 -1
  48. package/dist/cjs/ez-tree.cjs.entry.js +1 -1
  49. package/dist/cjs/ez-upload.cjs.entry.js +1 -1
  50. package/dist/cjs/ez-view-stack.cjs.entry.js +1 -1
  51. package/dist/cjs/ezui.cjs.js +2 -2
  52. package/dist/cjs/filter-column.cjs.entry.js +1 -1
  53. package/dist/cjs/{index-a7b0c73d.js → index-9e5554cb.js} +3 -0
  54. package/dist/cjs/loader.cjs.js +2 -2
  55. package/dist/collection/collection-manifest.json +1 -1
  56. package/dist/collection/components/ez-button/ez-button.css +2 -2
  57. package/dist/collection/components/ez-card-item/ez-card-item.css +14 -5
  58. package/dist/collection/components/ez-combo-box/ez-combo-box.css +12 -0
  59. package/dist/collection/components/ez-combo-box/ez-combo-box.js +76 -15
  60. package/dist/collection/components/ez-date-input/ez-date-input.js +35 -4
  61. package/dist/collection/components/ez-date-time-input/ez-date-time-input.js +35 -4
  62. package/dist/collection/components/ez-dialog/ez-dialog.js +9 -1
  63. package/dist/collection/components/ez-filter-input/ez-filter-input.css +0 -11
  64. package/dist/collection/components/ez-filter-input/ez-filter-input.js +22 -52
  65. package/dist/collection/components/ez-form/ez-form.js +1 -0
  66. package/dist/collection/components/ez-form-view/custom-input/ez-custom-form-input.js +3 -2
  67. package/dist/collection/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.js +2 -2
  68. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +96 -27
  69. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +8 -0
  70. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +164 -46
  71. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.js +7 -0
  72. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/ComboBox.tpl.js +1 -0
  73. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/DateInput.tpl.js +1 -0
  74. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/NumberInput.tpl.js +1 -0
  75. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/Search.tpl.js +1 -0
  76. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/TextInput.tpl.js +4 -1
  77. package/dist/collection/components/ez-grid/ez-grid.js +90 -3
  78. package/dist/collection/components/ez-list/ez-list.css +5 -5
  79. package/dist/collection/components/ez-list/ez-list.js +152 -170
  80. package/dist/collection/components/ez-modal/ez-modal.css +4 -0
  81. package/dist/collection/components/ez-modal/ez-modal.js +2 -2
  82. package/dist/collection/components/ez-number-input/ez-number-input.css +8 -0
  83. package/dist/collection/components/ez-number-input/ez-number-input.js +25 -0
  84. package/dist/collection/components/ez-popover/ez-popover.css +3 -10
  85. package/dist/collection/components/ez-popup/ez-popup.js +1 -1
  86. package/dist/collection/components/ez-search/ez-search.css +1 -1
  87. package/dist/collection/components/ez-search/ez-search.js +95 -21
  88. package/dist/collection/components/ez-split-button/ez-split-button.css +2 -2
  89. package/dist/collection/components/ez-text-area/ez-text-area.css +49 -0
  90. package/dist/collection/components/ez-text-area/ez-text-area.js +102 -2
  91. package/dist/collection/components/ez-text-input/ez-text-input.css +33 -53
  92. package/dist/collection/components/ez-text-input/ez-text-input.js +88 -6
  93. package/dist/collection/components/ez-time-input/ez-time-input.js +24 -0
  94. package/dist/collection/utils/FocusResolver.js +31 -0
  95. package/dist/collection/utils/ResponsiveInputUtils.js +26 -0
  96. package/dist/collection/utils/form/DataBinder.js +18 -3
  97. package/dist/collection/utils/form/FormMetadata.js +1 -1
  98. package/dist/collection/utils/interfaces/AbstractFieldMetadata.js +1 -1
  99. package/dist/custom-elements/index.js +15360 -70903
  100. package/dist/esm/DataBinder-02fa9bb9.js +441 -0
  101. package/dist/esm/FocusResolver-1ccbf850.js +33 -0
  102. package/dist/esm/ez-actions-button.entry.js +1 -1
  103. package/dist/esm/ez-alert-list.entry.js +1 -1
  104. package/dist/esm/ez-alert.entry.js +1 -1
  105. package/dist/esm/ez-application.entry.js +1 -1
  106. package/dist/esm/ez-badge.entry.js +1 -1
  107. package/dist/esm/ez-breadcrumb.entry.js +1 -1
  108. package/dist/esm/ez-button.entry.js +2 -2
  109. package/dist/esm/ez-calendar.entry.js +1 -1
  110. package/dist/esm/ez-card-item_3.entry.js +13 -20
  111. package/dist/esm/ez-chart.entry.js +2 -2
  112. package/dist/esm/ez-check.entry.js +1 -1
  113. package/dist/esm/ez-chip.entry.js +1 -1
  114. package/dist/esm/ez-collapsible-box.entry.js +1 -1
  115. package/dist/esm/ez-combo-box.entry.js +50 -14
  116. package/dist/esm/ez-custom-form-input_2.entry.js +5 -4
  117. package/dist/esm/ez-date-input.entry.js +9 -3
  118. package/dist/esm/ez-date-time-input.entry.js +9 -3
  119. package/dist/esm/ez-dialog.entry.js +10 -2
  120. package/dist/esm/ez-dropdown_2.entry.js +1 -1
  121. package/dist/esm/ez-file-item.entry.js +1 -1
  122. package/dist/esm/ez-form-view.entry.js +3 -3
  123. package/dist/esm/ez-form.entry.js +5 -325
  124. package/dist/esm/ez-grid.entry.js +14585 -70471
  125. package/dist/esm/ez-guide-navigator.entry.js +1 -1
  126. package/dist/esm/ez-icon.entry.js +1 -1
  127. package/dist/esm/ez-list.entry.js +153 -102
  128. package/dist/esm/ez-loading-bar.entry.js +1 -1
  129. package/dist/esm/ez-modal-container.entry.js +1 -1
  130. package/dist/esm/ez-modal.entry.js +2 -2
  131. package/dist/esm/ez-multi-selection-list.entry.js +1 -1
  132. package/dist/esm/ez-number-input.entry.js +9 -2
  133. package/dist/esm/ez-popover.entry.js +2 -2
  134. package/dist/esm/ez-popup.entry.js +2 -2
  135. package/dist/esm/ez-radio-button.entry.js +1 -1
  136. package/dist/esm/ez-scroller_2.entry.js +1 -1
  137. package/dist/esm/ez-search.entry.js +69 -20
  138. package/dist/esm/ez-sidebar-navigator.entry.js +1 -1
  139. package/dist/esm/ez-split-button.entry.js +2 -2
  140. package/dist/esm/ez-split-item.entry.js +1 -1
  141. package/dist/esm/ez-split-panel.entry.js +1 -1
  142. package/dist/esm/ez-tabselector.entry.js +1 -1
  143. package/dist/esm/ez-text-area.entry.js +67 -5
  144. package/dist/esm/ez-text-input.entry.js +80 -8
  145. package/dist/esm/ez-time-input.entry.js +7 -1
  146. package/dist/esm/ez-toast.entry.js +1 -1
  147. package/dist/esm/ez-tree.entry.js +1 -1
  148. package/dist/esm/ez-upload.entry.js +1 -1
  149. package/dist/esm/ez-view-stack.entry.js +1 -1
  150. package/dist/esm/ezui.js +3 -3
  151. package/dist/esm/filter-column.entry.js +1 -1
  152. package/dist/esm/{index-baa5e267.js → index-5a720e56.js} +3 -1
  153. package/dist/esm/loader.js +3 -3
  154. package/dist/ezui/ezui.esm.js +1 -1
  155. package/dist/ezui/{p-44caad9a.entry.js → p-0378416a.entry.js} +1 -1
  156. package/dist/ezui/p-076e868b.entry.js +1 -0
  157. package/dist/ezui/p-0e1cc2d1.entry.js +1 -0
  158. package/dist/ezui/{p-1285c902.entry.js → p-11b09aa1.entry.js} +1 -1
  159. package/dist/ezui/{p-77a4bd35.entry.js → p-11bfeca3.entry.js} +1 -1
  160. package/dist/ezui/p-16e21a40.entry.js +1 -0
  161. package/dist/ezui/p-1af7fae4.entry.js +1 -0
  162. package/dist/ezui/{p-8888d9ed.entry.js → p-1b08bf3c.entry.js} +1 -1
  163. package/dist/ezui/{p-a2e5b8c3.entry.js → p-2f53435e.entry.js} +1 -1
  164. package/dist/ezui/{p-baf80b13.entry.js → p-30951bd7.entry.js} +1 -1
  165. package/dist/ezui/p-33675dae.entry.js +1 -0
  166. package/dist/ezui/p-3af64edd.entry.js +1 -0
  167. package/dist/ezui/p-3cc9b84a.entry.js +1 -0
  168. package/dist/ezui/p-3d38bfea.entry.js +1 -0
  169. package/dist/ezui/{p-7bc07c31.entry.js → p-3f8c33e0.entry.js} +1 -1
  170. package/dist/ezui/p-455e737c.js +1 -0
  171. package/dist/ezui/{p-6d79930d.entry.js → p-554522db.entry.js} +1 -1
  172. package/dist/ezui/{p-1f50fa05.entry.js → p-6b51c9cc.entry.js} +1 -1
  173. package/dist/ezui/p-6bda82d1.entry.js +1 -0
  174. package/dist/ezui/p-6d31c43c.entry.js +1 -0
  175. package/dist/ezui/p-6ec40dec.entry.js +1 -0
  176. package/dist/ezui/p-6f0422ff.entry.js +309 -0
  177. package/dist/ezui/{p-5ed81457.entry.js → p-6fc26622.entry.js} +1 -1
  178. package/dist/ezui/{p-f9e551de.entry.js → p-70f1c812.entry.js} +1 -1
  179. package/dist/ezui/{p-555c9018.entry.js → p-7567ccdd.entry.js} +1 -1
  180. package/dist/ezui/p-7de7baa3.entry.js +1 -0
  181. package/dist/ezui/p-7f5afb1f.entry.js +1 -0
  182. package/dist/ezui/{p-1e7a8633.entry.js → p-81461d2f.entry.js} +1 -1
  183. package/dist/ezui/{p-8df1ca33.entry.js → p-82fa4b09.entry.js} +1 -1
  184. package/dist/ezui/{p-bcb53f27.entry.js → p-868b56f7.entry.js} +1 -1
  185. package/dist/ezui/p-8f026744.entry.js +1 -0
  186. package/dist/ezui/{p-09de35a2.entry.js → p-91ccae0c.entry.js} +1 -1
  187. package/dist/ezui/{p-c0d9c4f8.entry.js → p-92748142.entry.js} +1 -1
  188. package/dist/ezui/{p-c4320a39.entry.js → p-a563df31.entry.js} +1 -1
  189. package/dist/ezui/{p-990b4318.entry.js → p-a921e3e7.entry.js} +1 -1
  190. package/dist/ezui/{p-17be134a.entry.js → p-b2f6bc0a.entry.js} +1 -1
  191. package/dist/ezui/{p-c3045972.entry.js → p-b858fc6e.entry.js} +1 -1
  192. package/dist/ezui/{p-e347df9c.entry.js → p-bef7daac.entry.js} +1 -1
  193. package/dist/ezui/p-bfc30e61.entry.js +1 -0
  194. package/dist/ezui/p-bfc59380.entry.js +1 -0
  195. package/dist/ezui/{p-9f5fa3f9.entry.js → p-c2b20f78.entry.js} +1 -1
  196. package/dist/ezui/p-d27b4b3e.entry.js +1 -0
  197. package/dist/ezui/p-d960a031.entry.js +1 -0
  198. package/dist/ezui/p-dc628ed3.js +1 -0
  199. package/dist/ezui/p-dfca5946.entry.js +1 -0
  200. package/dist/ezui/{p-7fdd479f.entry.js → p-e18d9e6a.entry.js} +1 -1
  201. package/dist/ezui/{p-23a36bb6.js → p-e4c7eb39.js} +2 -2
  202. package/dist/ezui/{p-0306dff7.entry.js → p-e6b38ade.entry.js} +1 -1
  203. package/dist/ezui/{p-90bcd2ba.entry.js → p-e7395eae.entry.js} +1 -1
  204. package/dist/ezui/p-e80dcf86.entry.js +1 -0
  205. package/dist/ezui/{p-650e4b6d.entry.js → p-f1c2c19e.entry.js} +1 -1
  206. package/dist/ezui/{p-6e429cff.entry.js → p-fc194825.entry.js} +1 -1
  207. package/dist/types/components/ez-combo-box/ez-combo-box.d.ts +7 -1
  208. package/dist/types/components/ez-date-input/ez-date-input.d.ts +6 -1
  209. package/dist/types/components/ez-date-time-input/ez-date-time-input.d.ts +6 -1
  210. package/dist/types/components/ez-dialog/ez-dialog.d.ts +2 -0
  211. package/dist/types/components/ez-filter-input/ez-filter-input.d.ts +4 -11
  212. package/dist/types/components/ez-form-view/fieldbuilder/templates/TextInput.tpl.d.ts +1 -1
  213. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +12 -0
  214. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +7 -2
  215. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +2 -1
  216. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +19 -7
  217. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.d.ts +3 -1
  218. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellRender.d.ts +1 -1
  219. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomHeader.d.ts +1 -1
  220. package/dist/types/components/ez-grid/controller/ag-grid/components/cellRendererStatus.d.ts +1 -1
  221. package/dist/types/components/ez-grid/controller/ag-grid/components/selectionHeader.d.ts +1 -1
  222. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellEditor.d.ts +1 -1
  223. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellRender.d.ts +1 -1
  224. package/dist/types/components/ez-grid/controller/ag-grid/editor/IUICellEditor.d.ts +1 -0
  225. package/dist/types/components/ez-grid/controller/ag-grid/mock/Server.d.ts +1 -1
  226. package/dist/types/components/ez-grid/ez-grid.d.ts +11 -1
  227. package/dist/types/components/ez-list/ez-list.d.ts +3 -26
  228. package/dist/types/components/ez-modal/ez-modal.d.ts +1 -1
  229. package/dist/types/components/ez-number-input/ez-number-input.d.ts +4 -0
  230. package/dist/types/components/ez-search/ez-search.d.ts +10 -2
  231. package/dist/types/components/ez-text-area/ez-text-area.d.ts +17 -0
  232. package/dist/types/components/ez-text-input/ez-text-input.d.ts +9 -0
  233. package/dist/types/components/ez-time-input/ez-time-input.d.ts +4 -0
  234. package/dist/types/components.d.ts +109 -44
  235. package/dist/types/utils/FocusResolver.d.ts +5 -0
  236. package/dist/types/utils/ResponsiveInputUtils.d.ts +6 -0
  237. package/dist/types/utils/form/DataBinder.d.ts +3 -0
  238. package/package.json +11 -4
  239. package/dist/cjs/RecordValidationProcessor-10846595.js +0 -108
  240. package/dist/esm/RecordValidationProcessor-9c6cc267.js +0 -105
  241. package/dist/ezui/p-10820c20.entry.js +0 -1
  242. package/dist/ezui/p-188f1c4c.entry.js +0 -1
  243. package/dist/ezui/p-49456b34.entry.js +0 -1
  244. package/dist/ezui/p-5a90d7d1.entry.js +0 -1
  245. package/dist/ezui/p-5b205c80.entry.js +0 -1
  246. package/dist/ezui/p-62732269.entry.js +0 -1
  247. package/dist/ezui/p-86b6aa01.entry.js +0 -1
  248. package/dist/ezui/p-9d9ecb7c.entry.js +0 -1
  249. package/dist/ezui/p-abce5219.entry.js +0 -1
  250. package/dist/ezui/p-b3b94f72.entry.js +0 -1
  251. package/dist/ezui/p-b95632e8.entry.js +0 -1
  252. package/dist/ezui/p-bc2f844e.entry.js +0 -1
  253. package/dist/ezui/p-bcd47eda.entry.js +0 -1
  254. package/dist/ezui/p-c3c3d640.entry.js +0 -304
  255. package/dist/ezui/p-cdc472cc.entry.js +0 -1
  256. package/dist/ezui/p-d2c06f38.entry.js +0 -1
  257. package/dist/ezui/p-d8f64bb7.entry.js +0 -1
  258. package/dist/ezui/p-dc4ada32.entry.js +0 -1
  259. package/dist/ezui/p-e85c48d7.entry.js +0 -1
  260. package/dist/ezui/p-f299c608.entry.js +0 -1
  261. package/dist/ezui/p-f42855b9.js +0 -1
  262. package/dist/ezui/p-f80ac647.entry.js +0 -1
@@ -1,6 +1,6 @@
1
- import { ApplicationContext, DataType, MaskFormatter, NumberUtils, SortMode, StringUtils, UserInterface, } from '@sankhyalabs/core';
2
- import { Grid, } from 'ag-grid-community';
3
- import { Grid as EnterpriseGrid, LicenseManager } from 'ag-grid-enterprise';
1
+ import { ApplicationContext, DataType, LockManager, MaskFormatter, NumberUtils, SortMode, StringUtils, UserInterface, } from '@sankhyalabs/core';
2
+ import { Grid } from "@ag-grid-community/core";
3
+ import { LicenseManager } from '@ag-grid-enterprise/core';
4
4
  import DataSource from './DataSource';
5
5
  import { EzGridCustomHeader } from './components/EzGridCustomHeader';
6
6
  import { CellRendererStatus } from './components/cellRendererStatus';
@@ -8,6 +8,12 @@ import SelectionHeader from './components/selectionHeader';
8
8
  import gridTerms from './i18n/pt-BR';
9
9
  import { DISTINCT_FILTER_NAME_PREFIX, EZ_GRID_LOADING_SOURCE } from '../../../../utils/constants';
10
10
  import GridEditionManager from './GridEditionManager';
11
+ import { ModuleRegistry } from '@ag-grid-community/core';
12
+ import { EnterpriseCoreModule } from '@ag-grid-enterprise/core';
13
+ import { RangeSelectionModule } from '@ag-grid-enterprise/range-selection';
14
+ import { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';
15
+ import { ClipboardModule } from '@ag-grid-enterprise/clipboard';
16
+ import { MenuModule } from '@ag-grid-enterprise/menu';
11
17
  export default class AgGridController {
12
18
  configFilterColumn(filterColumn) {
13
19
  this._filterColumn = filterColumn;
@@ -27,7 +33,7 @@ export default class AgGridController {
27
33
  var _a;
28
34
  (_a = this._filterColumn) === null || _a === void 0 ? void 0 : _a.show(configs);
29
35
  }
30
- constructor(enterprise) {
36
+ constructor(_enterprise) {
31
37
  this.DEFAULT_ROW_HEIGHT = 30;
32
38
  this.DEFAULT_HEADER_ROW_HEIGHT = 32;
33
39
  this.CHECK_BOX_COL_ID = 'checkBoxColumn';
@@ -43,7 +49,13 @@ export default class AgGridController {
43
49
  this._customFormatters = new Map();
44
50
  this._gridShowDom = false;
45
51
  this.peddingExecutionsOnGridShow = [];
46
- this._enterprise = enterprise;
52
+ ModuleRegistry.registerModules([
53
+ EnterpriseCoreModule,
54
+ RangeSelectionModule,
55
+ ServerSideRowModelModule,
56
+ ClipboardModule,
57
+ MenuModule
58
+ ]);
47
59
  }
48
60
  getGridConfig() {
49
61
  return this._gridConfig;
@@ -121,6 +133,7 @@ export default class AgGridController {
121
133
  var _a;
122
134
  this._options = options;
123
135
  this._container = container;
136
+ const lockerId = options.enableLockManger ? LockManager.addLockManagerCtxId(this._container) : null;
124
137
  if (this._grid === undefined) {
125
138
  LicenseManager.setLicenseKey(ApplicationContext.getContextValue('__EZUI__GRID_LICENSE__'));
126
139
  this._columnStateChangeCallback = options.onColumnStateChange;
@@ -128,7 +141,7 @@ export default class AgGridController {
128
141
  this._doubleClickCallBack = options.onDoubleClick;
129
142
  this._multipleSelection = options.allowMultipleSelection;
130
143
  this._dataUnit = options.dataUnit;
131
- this._editionManager = new GridEditionManager(this._dataUnit, options.useEnterLikeTab, options.recordsValidator, options.editionIsDisabled, options.customEditors || this._customEditors, options.customRenders || this._customRenders, options.enableContinuousInsert, options.enableGridInsert);
144
+ this._editionManager = new GridEditionManager(this._dataUnit, options.useEnterLikeTab, options.recordsValidator, options.editionIsDisabled, options.customEditors || this._customEditors, options.customRenders || this._customRenders, options.enableContinuousInsert, options.enableGridInsert, lockerId);
132
145
  this._statusResolver = options.statusResolver;
133
146
  if (this._dataUnit) {
134
147
  this._dataUnit.sortingProvider = this;
@@ -175,12 +188,7 @@ export default class AgGridController {
175
188
  this.setOptionsEvents(this._gridOptions);
176
189
  this.setOptionsSupress(this._gridOptions);
177
190
  this._gridOptions = this._editionManager.configureGrid(this._gridOptions);
178
- if (this._enterprise) {
179
- this._grid = new EnterpriseGrid(container, this._gridOptions);
180
- }
181
- else {
182
- this._grid = new Grid(container, this._gridOptions);
183
- }
191
+ this._grid = new Grid(container, this._gridOptions);
184
192
  const selection = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.getSelectionInfo();
185
193
  if (selection === null || selection === void 0 ? void 0 : selection.isAllRecords()) {
186
194
  this.selectAll(true);
@@ -340,7 +348,7 @@ export default class AgGridController {
340
348
  defineRowModelType(opt, sourceOptions) {
341
349
  if (this._dataUnit != undefined) {
342
350
  opt.rowModelType = 'serverSide';
343
- opt.serverSideDatasource = new DataSource(this._dataUnit, this, sourceOptions);
351
+ opt.serverSideDatasource = this._dataSource = new DataSource(this._dataUnit, this, sourceOptions);
344
352
  opt.serverSideSortOnServer = true;
345
353
  opt.columnDefs = this._colDefs;
346
354
  }
@@ -491,7 +499,7 @@ export default class AgGridController {
491
499
  r.setData(data);
492
500
  });
493
501
  this._gridOptions.api.refreshCells({ force: true });
494
- const invalidCell = this._editionManager.getInvalidCell();
502
+ const invalidCell = this._editionManager.getNextInvalidCell();
495
503
  if (invalidCell) {
496
504
  const rowNode = this._gridOptions.api.getRowNode(invalidCell.recordId);
497
505
  if (rowNode && invalidCell.field) {
@@ -511,6 +519,7 @@ export default class AgGridController {
511
519
  if (this._grid === undefined) {
512
520
  throw new Error('Erro interno: Grid ainda não inicializado.');
513
521
  }
522
+ this._gridOptions.api.clearRangeSelection();
514
523
  this._gridOptions.api.refreshServerSide({ purge: true });
515
524
  this._options.onRefresh();
516
525
  if (scrollToSelectedRow)
@@ -533,12 +542,15 @@ export default class AgGridController {
533
542
  }
534
543
  setFocus() {
535
544
  var _a, _b;
536
- if ((_b = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b.length) {
537
- this.setFocusFirstRow();
538
- }
539
- else {
545
+ if (!((_b = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b.length)) {
540
546
  this.focusOnGridContainer();
547
+ return;
541
548
  }
549
+ if (!this._dataUnit.getSelectedRecord()) {
550
+ this.setFocusFirstRow();
551
+ return;
552
+ }
553
+ this.syncSelectWithDataUnit();
542
554
  }
543
555
  setAutoFocus(autoFocus) {
544
556
  var _a;
@@ -582,6 +594,23 @@ export default class AgGridController {
582
594
  this.startEditionOnRowByIndex(newRowIndex);
583
595
  }
584
596
  }
597
+ syncSelectWithDataUnit() {
598
+ const rowNode = this._gridOptions.api.getRowNode(this._dataUnit.getSelectedRecord().__record__id__);
599
+ if ((rowNode === null || rowNode === void 0 ? void 0 : rowNode.rowIndex) < 0)
600
+ return;
601
+ const rowRange = this._gridOptions.api.getCellRanges().find(row => row.startRow.rowIndex === rowNode.rowIndex);
602
+ if ((rowRange === null || rowRange === void 0 ? void 0 : rowRange.columns.length) > 0) {
603
+ if (this._dataUnit.hasNewRecord()) {
604
+ this.startEdition(rowNode.rowIndex, rowRange.columns[0]);
605
+ return;
606
+ }
607
+ this.focusByCollAndRow(rowRange.columns[0], rowNode.rowIndex);
608
+ this._gridOptions.api.addCellRange({ rowStartIndex: rowNode.rowIndex, rowEndIndex: rowNode.rowIndex, columns: rowRange.columns });
609
+ return;
610
+ }
611
+ this._gridOptions.api.clearRangeSelection();
612
+ this.setFocusOnRow(rowNode.rowIndex);
613
+ }
585
614
  startEdition(rowIndex, firstCol) {
586
615
  this._gridOptions.api.clearRangeSelection();
587
616
  this._gridOptions.api.addCellRange({ rowStartIndex: rowIndex, rowEndIndex: rowIndex, columns: [firstCol] });
@@ -612,6 +641,7 @@ export default class AgGridController {
612
641
  let displayedColumns = this._gridOptions.columnApi.getAllDisplayedColumns();
613
642
  let firstColl = displayedColumns.find(column => column.getColDef().headerName !== '');
614
643
  this.focusByCollAndRow(firstColl, rowIndex);
644
+ this._gridOptions.api.addCellRange({ rowStartIndex: rowIndex, rowEndIndex: rowIndex, columns: [firstColl] });
615
645
  }
616
646
  focusByCollAndRow(firstCell, rowIndex) {
617
647
  this._gridOptions.api.ensureColumnVisible(firstCell);
@@ -651,6 +681,14 @@ export default class AgGridController {
651
681
  this._gridOptions.api.setColumnDefs(this._colDefs);
652
682
  }
653
683
  }
684
+ hideSelectionColumn() {
685
+ var _a, _b;
686
+ (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.columnApi) === null || _b === void 0 ? void 0 : _b.setColumnVisible(this.CHECK_BOX_COL_ID, false);
687
+ }
688
+ showSelectionColumn() {
689
+ var _a, _b;
690
+ (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.columnApi) === null || _b === void 0 ? void 0 : _b.setColumnVisible(this.CHECK_BOX_COL_ID, true);
691
+ }
654
692
  getColumnsDef() {
655
693
  if (this._grid === undefined) {
656
694
  throw new Error('Erro interno: Grid ainda não inicializado.');
@@ -935,18 +973,24 @@ export default class AgGridController {
935
973
  return false;
936
974
  }
937
975
  onSelectionChange(event) {
976
+ var _a, _b;
977
+ const selectedRowId = (_b = (_a = event.api.getSelectedNodes()) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id;
978
+ const isNewRecord = this._dataUnit.isNewRecord(selectedRowId);
938
979
  if (!this._selectionChangeCallback)
939
980
  return;
940
981
  clearTimeout(this._selectionChangeDeboucing);
941
- this._selectionChangeDeboucing = window.setTimeout(() => {
942
- this.handleExecuteProceedAutosave();
982
+ this._selectionChangeDeboucing = window.setTimeout(async () => {
983
+ const saveSuccess = (!isNewRecord && selectedRowId) ? await this.handleExecuteProceedAutosave() : true;
984
+ if (!saveSuccess)
985
+ return;
943
986
  this.processBuildSelectionChangeCallback(event);
944
987
  }, 0);
945
988
  }
946
- handleExecuteProceedAutosave() {
989
+ async handleExecuteProceedAutosave() {
947
990
  if (this._gridShowDom) {
948
- this._editionManager.proceedAutoSave();
991
+ return await this._editionManager.proceedAutoSave();
949
992
  }
993
+ return true;
950
994
  }
951
995
  processBuildSelectionChangeCallback(event) {
952
996
  if (this._dataUnit) {
@@ -971,7 +1015,12 @@ export default class AgGridController {
971
1015
  });
972
1016
  }
973
1017
  onRowDoubleClick(evt) {
974
- if (this._doubleClickCallBack) {
1018
+ var _a, _b;
1019
+ if (this._doubleClickCallBack && (!this._options.enableGridInsert || !this._dataUnit.hasNewRecord())) {
1020
+ /**
1021
+ * Evita mudança de view e a grade permanecer no modo de edição.
1022
+ */
1023
+ (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.stopEditing();
975
1024
  this._doubleClickCallBack(evt.data);
976
1025
  }
977
1026
  }
@@ -987,22 +1036,29 @@ export default class AgGridController {
987
1036
  }
988
1037
  }
989
1038
  setCellEditors(customEditors) {
990
- var _a;
1039
+ var _a, _b, _c, _d, _e;
991
1040
  if (!this._editionManager) {
992
1041
  this._customEditors = customEditors;
993
1042
  return;
994
1043
  }
1044
+ const currentEditingCells = (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.getEditingCells();
995
1045
  this._editionManager.setCellEditors(customEditors);
996
- (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api.redrawRows();
1046
+ if ((currentEditingCells === null || currentEditingCells === void 0 ? void 0 : currentEditingCells.length) > 0) {
1047
+ this._gridOptions.api.startEditingCell({ colKey: (_d = (_c = currentEditingCells[0]) === null || _c === void 0 ? void 0 : _c.column) === null || _d === void 0 ? void 0 : _d.getColId(), rowIndex: (_e = currentEditingCells[0]) === null || _e === void 0 ? void 0 : _e.rowIndex });
1048
+ }
997
1049
  }
998
1050
  setCellRenders(customRenders) {
999
- var _a;
1051
+ var _a, _b, _c, _d, _e, _f;
1000
1052
  if (!this._editionManager) {
1001
1053
  this._customRenders = customRenders;
1002
1054
  return;
1003
1055
  }
1004
1056
  this._editionManager.setCellRenders(customRenders);
1005
- (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api.redrawRows();
1057
+ const currentEditingCells = (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.getEditingCells();
1058
+ (_c = this._gridOptions) === null || _c === void 0 ? void 0 : _c.api.redrawRows();
1059
+ if ((currentEditingCells === null || currentEditingCells === void 0 ? void 0 : currentEditingCells.length) > 0) {
1060
+ this._gridOptions.api.startEditingCell({ colKey: (_e = (_d = currentEditingCells[0]) === null || _d === void 0 ? void 0 : _d.column) === null || _e === void 0 ? void 0 : _e.getColId(), rowIndex: (_f = currentEditingCells[0]) === null || _f === void 0 ? void 0 : _f.rowIndex });
1061
+ }
1006
1062
  }
1007
1063
  clearInvalidCells(stopEdition) {
1008
1064
  if (!this._editionManager)
@@ -1014,6 +1070,19 @@ export default class AgGridController {
1014
1070
  this._editionManager.processContinuousInsert();
1015
1071
  }
1016
1072
  destroy() {
1073
+ var _a;
1017
1074
  this.observer.disconnect();
1075
+ (_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.destroy();
1076
+ }
1077
+ registryListeners() {
1078
+ var _a;
1079
+ (_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.registryListeners();
1080
+ }
1081
+ resetPaginationState() {
1082
+ var _a, _b;
1083
+ (_b = (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api) === null || _b === void 0 ? void 0 : _b.clearRangeSelection();
1084
+ }
1085
+ stopEdit() {
1086
+ this._gridOptions.api.stopEditing();
1018
1087
  }
1019
1088
  }
@@ -6,12 +6,14 @@ export default class DataSource {
6
6
  this._controller.clearInvalidCells();
7
7
  this.handleRefreshOrReload(action);
8
8
  this._controller.processContinuousInsert();
9
+ this._controller.showSelectionColumn();
9
10
  }
10
11
  handleEditionCanceled(action) {
11
12
  if (this._options.enableGridInsert) {
12
13
  this._controller.processEditionCanceled();
13
14
  }
14
15
  this.handleRefreshOrReload(action);
16
+ this._controller.showSelectionColumn();
15
17
  }
16
18
  handleSavingCanceled(action) {
17
19
  var _a, _b, _c, _d;
@@ -66,6 +68,7 @@ export default class DataSource {
66
68
  }
67
69
  handleRecordsAdded() {
68
70
  if (this._options.enableGridInsert) {
71
+ this._controller.hideSelectionColumn();
69
72
  this._controller.refresh();
70
73
  this.focusOnNewRecord();
71
74
  }
@@ -213,6 +216,11 @@ export default class DataSource {
213
216
  destroy() {
214
217
  this._dataUnit.unsubscribe(this.duObserver);
215
218
  }
219
+ registryListeners() {
220
+ var _a, _b;
221
+ (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.unsubscribe(this.duObserver);
222
+ (_b = this._dataUnit) === null || _b === void 0 ? void 0 : _b.subscribe(this.duObserver);
223
+ }
216
224
  buildColumnDefs() {
217
225
  const gridConfig = this._controller.getGridConfig() || [];
218
226
  const columnDefs = [];
@@ -1,15 +1,16 @@
1
- import { UserInterface } from '@sankhyalabs/core';
2
- import { KeyCode, } from 'ag-grid-community';
1
+ import { LockManager, LockManagerOperation, UserInterface } from '@sankhyalabs/core';
2
+ import { KeyCode, } from "@ag-grid-community/core";
3
3
  import { RecordValidationProcessor } from '../../../../utils/validators/recordvalidator/RecordValidationProcessor';
4
4
  import EzCellEditor from './editor/EzCellEditor';
5
5
  import EzGridCustomCellEditor from './components/EzGridCustomCellEditor';
6
6
  import EzGridCustomCellRender from './components/EzGridCustomCellRender';
7
+ import { DataBinder } from '../../../../utils';
7
8
  export default class GridEditionManager {
8
- constructor(dataUnit, useEnterLikeTab, recordsValidator, editionIsDisabled, customEditors, customRenders, enableContinuousInsert, enableGridInsert) {
9
+ constructor(dataUnit, useEnterLikeTab, recordsValidator, editionIsDisabled, customEditors, customRenders, enableContinuousInsert, enableGridInsert, lockerId) {
9
10
  this._dataUnit = dataUnit;
10
11
  this._recordValidationProcessor = new RecordValidationProcessor(this._dataUnit, {
11
12
  getRequiredFields: () => this.getRequiredFields(),
12
- markAsInvalid: (invalidField, recordId) => { this.setInvalidCell(invalidField, recordId); },
13
+ markAsInvalid: (invalidField, recordId) => { this.pushInvalidCell(invalidField, recordId); },
13
14
  getMessageForField: () => null,
14
15
  }, recordsValidator);
15
16
  this._useEnterLikeTab = useEnterLikeTab;
@@ -18,16 +19,34 @@ export default class GridEditionManager {
18
19
  this._enableGridInsert = enableGridInsert;
19
20
  this._customEditors = customEditors;
20
21
  this._customRenders = customRenders;
22
+ this._lockerId = lockerId;
21
23
  }
22
24
  configureGrid(options) {
23
25
  this._gridOptions = options;
24
26
  options.readOnlyEdit = true;
25
27
  options.onCellEditRequest = evt => this.onCellEditRequest(evt);
28
+ options.onCellEditingStarted = async (evt) => {
29
+ var _a;
30
+ if (this._dataUnit.hasNewRecord()) {
31
+ this.handleCellEditingStartedRowAdd(evt);
32
+ }
33
+ else {
34
+ this._lastCellOpened = this._lastCellEdited = { rowIndex: evt.rowIndex, column: evt.column, rowPinned: undefined };
35
+ }
36
+ (_a = this._currentEditLock) === null || _a === void 0 ? void 0 : _a.call(this);
37
+ this._currentEditLock = LockManager.lock(this._lockerId, LockManagerOperation.TASKBAR_CLICK);
38
+ };
39
+ options.onCellEditingStopped = () => {
40
+ var _a;
41
+ (_a = this._currentEditLock) === null || _a === void 0 ? void 0 : _a.call(this);
42
+ };
26
43
  options.onCellKeyDown = evt => {
27
44
  if (evt.event && evt["column"]) {
28
45
  this.onCellKeyDown(evt);
29
46
  }
30
47
  };
48
+ options.isRowSelectable = (node) => this.isSelectableRow(node);
49
+ options.onCellFocused = () => this.lockFocusWhenAddRow();
31
50
  return options;
32
51
  }
33
52
  updateCurrentEditorGuiValue(updatedRowValue) {
@@ -40,37 +59,82 @@ export default class GridEditionManager {
40
59
  const value = updatedRowValue[fieldName];
41
60
  currentEditor.setGuiValue(value);
42
61
  }
62
+ lockFocusWhenAddRow() {
63
+ var _a, _b, _c, _d;
64
+ const api = this._gridOptions.api;
65
+ const newFocusCell = api.getFocusedCell();
66
+ const rowIndex = newFocusCell === null || newFocusCell === void 0 ? void 0 : newFocusCell.rowIndex;
67
+ const recordId = (_b = (_a = this._dataUnit.getAddedRecords()) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.__record__id__;
68
+ const rowNode = api.getRowNode(recordId);
69
+ if (!this._dataUnit.hasNewRecord() || rowIndex == (rowNode === null || rowNode === void 0 ? void 0 : rowNode.rowIndex)) {
70
+ return;
71
+ }
72
+ const lastCell = (_d = (_c = this._lastCellOpened) !== null && _c !== void 0 ? _c : this._lastCellEdited) !== null && _d !== void 0 ? _d : this._lastCellClicked;
73
+ if ((lastCell === null || lastCell === void 0 ? void 0 : lastCell.rowIndex) < (rowNode === null || rowNode === void 0 ? void 0 : rowNode.rowIndex)) {
74
+ return;
75
+ }
76
+ api.clearFocusedCell();
77
+ if (!lastCell || (rowNode === null || rowNode === void 0 ? void 0 : rowNode.rowIndex) == undefined) {
78
+ return;
79
+ }
80
+ lastCell.rowIndex = rowNode === null || rowNode === void 0 ? void 0 : rowNode.rowIndex;
81
+ this.focusOnCell(lastCell);
82
+ }
83
+ handleCellEditingStartedRowAdd(evt) {
84
+ var _a, _b, _c, _d, _e;
85
+ const nodeId = (_a = evt.node) === null || _a === void 0 ? void 0 : _a.id;
86
+ const addedRecordId = (_c = (_b = this._dataUnit.getAddedRecords()) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.__record__id__;
87
+ if (nodeId == addedRecordId) {
88
+ this._lastCellOpened = this._lastCellEdited = { rowIndex: evt.rowIndex, column: evt === null || evt === void 0 ? void 0 : evt.column, rowPinned: undefined };
89
+ return;
90
+ }
91
+ evt.api.stopEditing();
92
+ const rowIndex = (_d = evt.api.getRowNode(addedRecordId)) === null || _d === void 0 ? void 0 : _d.rowIndex;
93
+ this._lastCellOpened = this._lastCellEdited = { rowIndex: rowIndex, column: (_e = this._lastCellEdited) === null || _e === void 0 ? void 0 : _e.column, rowPinned: undefined };
94
+ }
95
+ isSelectableRow(node) {
96
+ if (!this._dataUnit.hasNewRecord()) {
97
+ return true;
98
+ }
99
+ if (!this._dataUnit.isNewRecord(node.id)) {
100
+ return false;
101
+ }
102
+ return true;
103
+ }
43
104
  canContinuousInsert() {
44
105
  var _a;
45
106
  return this._enableContinuousInsert && (this._dataUnit.records.length - 1) === ((_a = this._lastCellEdited) === null || _a === void 0 ? void 0 : _a.rowIndex);
46
107
  }
47
- proceedAutoSave() {
108
+ async proceedAutoSave() {
48
109
  if (!this._dataUnit.isDirty()) {
49
110
  this.saveSuccess();
50
- return;
111
+ return true;
51
112
  }
52
- if (!this._isGridEdition) {
53
- return;
113
+ const currentRecord = this._dataUnit.getSelectedRecord();
114
+ if (currentRecord == undefined) {
115
+ return true;
54
116
  }
55
- const currentRercord = this._dataUnit.getSelectedRecord();
56
- if (currentRercord == undefined) {
57
- return;
117
+ this.clearInvalidCells(false);
118
+ try {
119
+ await this._recordValidationProcessor.validate(true);
120
+ await this.saveDataUnit();
121
+ this.saveSuccess();
122
+ return true;
58
123
  }
59
- this._invalidCell = undefined;
60
- this._recordValidationProcessor
61
- .validate(true)
62
- .then(() => {
63
- this._dataUnit.saveData()
64
- .then(() => this.saveSuccess())
65
- .catch(reason => this.saveFail(reason));
66
- })
67
- .catch(reason => this.saveFail(reason));
124
+ catch (reason) {
125
+ this.saveFail(reason);
126
+ return false;
127
+ }
128
+ }
129
+ async saveDataUnit() {
130
+ await this._dataUnit.saveData();
131
+ return true;
68
132
  }
69
133
  async recordValidate() {
70
134
  if (!this._dataUnit.isDirty())
71
135
  return;
72
136
  try {
73
- this._invalidCell = undefined;
137
+ this.clearInvalidCells(false);
74
138
  await this._recordValidationProcessor.validate(false);
75
139
  }
76
140
  catch (error) { }
@@ -98,6 +162,13 @@ export default class GridEditionManager {
98
162
  return { ezCellEditor: EzCellEditor };
99
163
  }
100
164
  verifyClickToEdition(api, cellClicked) {
165
+ var _a, _b;
166
+ const selectedRecordID = (_a = this._dataUnit.getSelectedRecord()) === null || _a === void 0 ? void 0 : _a.__record__id__;
167
+ if (this._dataUnit.hasNewRecord() && selectedRecordID) {
168
+ const dataUnitRecordIndex = (_b = api.getRowNode(selectedRecordID)) === null || _b === void 0 ? void 0 : _b.rowIndex;
169
+ if (dataUnitRecordIndex != cellClicked.rowIndex)
170
+ return;
171
+ }
101
172
  if (this.isSecondClick(cellClicked)) {
102
173
  api.startEditingCell({ rowIndex: cellClicked.rowIndex, colKey: cellClicked.column.getColId() });
103
174
  }
@@ -107,6 +178,9 @@ export default class GridEditionManager {
107
178
  col.cellEditor = 'ezCellEditor';
108
179
  col.editable = params => this.canEdit(params);
109
180
  col.suppressKeyboardEvent = (params) => {
181
+ if (params.event.key === KeyCode.ESCAPE && params.editing) {
182
+ return this._dataUnit.isDirty();
183
+ }
110
184
  return params.event.key === KeyCode.ENTER;
111
185
  };
112
186
  col.cellEditorSelector = (params) => {
@@ -136,10 +210,21 @@ export default class GridEditionManager {
136
210
  return col;
137
211
  }
138
212
  getRequiredFields() {
139
- return this._gridOptions.columnApi.getAllDisplayedColumns().filter(c => {
140
- const fieldDefinition = this._dataUnit.getField(c.getColId());
141
- return fieldDefinition && fieldDefinition.required;
142
- }).map(c => c.getColId());
213
+ const formRequiredFields = this.getFormRequiredFields();
214
+ return this._gridOptions.columnApi.getAllDisplayedColumns()
215
+ .filter(column => {
216
+ const fieldDefinition = this._dataUnit.getField(column.getColId());
217
+ return (fieldDefinition && fieldDefinition.required) || formRequiredFields.includes(column.getColId());
218
+ })
219
+ .map(column => column.getColId());
220
+ }
221
+ getFormRequiredFields() {
222
+ const formRequiredFields = [];
223
+ const dataBinders = DataBinder.getDataBindersByDataUnit(this._dataUnit);
224
+ dataBinders.forEach(dataBinder => {
225
+ formRequiredFields.push(...dataBinder.getFormRequiredFields());
226
+ });
227
+ return formRequiredFields;
143
228
  }
144
229
  saveSuccess() {
145
230
  var _a;
@@ -152,10 +237,11 @@ export default class GridEditionManager {
152
237
  this._isGridEdition = false;
153
238
  }
154
239
  saveFail(reason) {
155
- this.focusOnCell(this._lastCellEdited);
240
+ var _a;
241
+ this.focusOnCell((_a = this._lastCellOpened) !== null && _a !== void 0 ? _a : this._lastCellEdited);
156
242
  this._isGridEdition = false;
157
243
  if (reason) {
158
- Promise.reject(reason);
244
+ throw reason;
159
245
  }
160
246
  }
161
247
  focusOnCell(cell) {
@@ -220,6 +306,9 @@ export default class GridEditionManager {
220
306
  this.moveEditionVertically(api, 1);
221
307
  }
222
308
  moveEditionVertically(api, offset) {
309
+ if (this._dataUnit.hasNewRecord() && this._isGridEdition) {
310
+ return;
311
+ }
223
312
  const editionCell = api.getEditingCells()[0];
224
313
  if (!editionCell) {
225
314
  return;
@@ -264,41 +353,63 @@ export default class GridEditionManager {
264
353
  return true;
265
354
  }
266
355
  onCellEditRequest(event) {
267
- const fieldName = event.colDef.field;
356
+ var _a;
268
357
  const value = event.newValue;
269
- if (event.oldValue != value) {
270
- if (value instanceof Promise) {
271
- const fieldDescriptor = this._dataUnit.getField(event.colDef.colId);
272
- event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: (fieldDescriptor === null || fieldDescriptor === void 0 ? void 0 : fieldDescriptor.userInterface) === UserInterface.SEARCH ? value : event.oldValue }));
273
- value.then(resolved => event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: resolved })));
274
- }
275
- else {
276
- event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: value }));
277
- }
358
+ if (event.oldValue == value) {
359
+ (_a = this._currentEditLock) === null || _a === void 0 ? void 0 : _a.call(this);
360
+ return;
361
+ }
362
+ if (value instanceof Promise) {
363
+ this.handlePromiseValue(event, value);
364
+ return;
365
+ }
366
+ this.updateCellValue(event, value);
367
+ }
368
+ async handlePromiseValue(event, value) {
369
+ const fieldName = event.colDef.field;
370
+ const fieldDescriptor = this._dataUnit.getField(event.colDef.colId);
371
+ const initialValue = (fieldDescriptor === null || fieldDescriptor === void 0 ? void 0 : fieldDescriptor.userInterface) === UserInterface.SEARCH ? value : event.oldValue;
372
+ event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: initialValue }));
373
+ const resolved = await value;
374
+ return this.updateCellValue(event, resolved);
375
+ }
376
+ updateCellValue(event, newValue) {
377
+ var _a;
378
+ const fieldName = event.colDef.field;
379
+ event.node.setData(Object.assign(Object.assign({}, event.data), { [fieldName]: newValue }));
380
+ (_a = this._currentEditLock) === null || _a === void 0 ? void 0 : _a.call(this);
381
+ if (event.oldValue !== newValue) {
278
382
  this._isGridEdition = true;
279
- this._dataUnit.setFieldValue(fieldName, value, [event.data.__record__id__], { suppressCreateNewRecord: true });
383
+ this._dataUnit.setFieldValue(fieldName, newValue, [event.data.__record__id__], { suppressCreateNewRecord: true });
280
384
  this._lastCellEdited = { rowIndex: event.rowIndex, column: event.column, rowPinned: undefined };
281
385
  }
282
386
  }
283
387
  setCellEditors(customEditors) {
388
+ var _a;
284
389
  this._customEditors = customEditors;
390
+ (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api.stopEditing();
285
391
  }
286
392
  setCellRenders(customRenders) {
287
393
  this._customRenders = customRenders;
288
394
  }
289
- setInvalidCell(invalidCell, recordId) {
290
- this._invalidCell = { field: invalidCell, recordId };
395
+ pushInvalidCell(invalidField, recordId) {
396
+ this._invalidCells.push({ field: invalidField, recordId });
397
+ this._nextInvalidCell = this._invalidCells[0];
398
+ }
399
+ getInvalidCells() {
400
+ return this._invalidCells;
291
401
  }
292
- getInvalidCell() {
293
- return this._invalidCell;
402
+ getNextInvalidCell() {
403
+ return this._nextInvalidCell;
294
404
  }
295
- processContinuousInsert() {
405
+ async processContinuousInsert() {
296
406
  if (!this.canContinuousInsert())
297
407
  return;
298
408
  this._dataUnit.addRecord();
299
409
  }
300
410
  clearInvalidCells(stopEdition) {
301
- this._invalidCell = undefined;
411
+ this._invalidCells = [];
412
+ this._nextInvalidCell = undefined;
302
413
  if (stopEdition) {
303
414
  this._isGridEdition = false;
304
415
  }
@@ -309,10 +420,17 @@ export default class GridEditionManager {
309
420
  hasInvalidField(fieldName, recordId) {
310
421
  if (!this.hasInvalidCell())
311
422
  return false;
312
- return this._invalidCell.field.name === fieldName && this._invalidCell.recordId === recordId;
423
+ this._nextInvalidCell = this._invalidCells[0];
424
+ const containsFieldName = this._nextInvalidCell.field.name === fieldName;
425
+ const containsRecordId = this._nextInvalidCell.recordId === recordId;
426
+ return containsFieldName && containsRecordId;
313
427
  }
314
428
  hasInvalidCell() {
315
- if (!this._invalidCell || !this._invalidCell.field || !this._invalidCell.recordId)
429
+ var _a, _b, _c;
430
+ const hasInvalidCell = ((_a = this._invalidCells) === null || _a === void 0 ? void 0 : _a.length) > 0;
431
+ const hasField = (_b = this._invalidCells) === null || _b === void 0 ? void 0 : _b.filter(invalidCell => { invalidCell.field; });
432
+ const hasRecordId = (_c = this._invalidCells) === null || _c === void 0 ? void 0 : _c.filter(invalidCell => { invalidCell.recordId; });
433
+ if (!hasInvalidCell || !hasField || !hasRecordId)
316
434
  return false;
317
435
  return true;
318
436
  }
@@ -2,6 +2,7 @@ import { HTMLBuilder } from "@sankhyalabs/core";
2
2
  import { CustomEditorSource } from "../../../../../utils/customEditor/interfaces/ICustomEditor";
3
3
  import EzCellEditor from "../editor/EzCellEditor";
4
4
  import { getViewPortHeight } from "../editor/GridEditorUtils";
5
+ import FocusResolver from "../../../../../utils/FocusResolver";
5
6
  export default class EzGridCustomCellEditor extends EzCellEditor {
6
7
  init(params) {
7
8
  var _a, _b;
@@ -65,4 +66,10 @@ export default class EzGridCustomCellEditor extends EzCellEditor {
65
66
  return this._customGui.value;
66
67
  return this._value;
67
68
  }
69
+ afterGuiAttached() {
70
+ this.focusIn();
71
+ }
72
+ focusIn() {
73
+ FocusResolver.resolveFocus(this._customGui);
74
+ }
68
75
  }
@@ -19,6 +19,7 @@ export const buildComboBox = ({ required, props, eGridCell }) => {
19
19
  combo.options = options;
20
20
  combo.stopPropagateEnterKeyEvent = true;
21
21
  combo.listOptionsPosition = { verticalPosition: 29, bottomLimit: getViewPortHeight(eGridCell), hardPosition: true };
22
+ combo.autoFocus = true;
22
23
  return combo;
23
24
  };
24
25
  export const buildSwitch = (fieldMetadata) => {
@@ -7,6 +7,7 @@ export const buildDate = () => {
7
7
  data-is-fixed="true"
8
8
  />`);
9
9
  dateInput.valueGetter = () => dateInput.getValueAsync();
10
+ dateInput.autoFocus = true;
10
11
  return dateInput;
11
12
  };
12
13
  export const buildTime = ({ readOnly }) => {
@@ -17,5 +17,6 @@ function buildNumeric(readOnly, precision, prettyPrecision) {
17
17
  mode="slim"
18
18
  />`);
19
19
  input.valueGetter = () => input.getValueAsync();
20
+ input.autoFocus = true;
20
21
  return input;
21
22
  }