angular-slickgrid 8.14.1 → 9.0.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 (419) hide show
  1. package/.gitbook.yaml +5 -0
  2. package/CHANGELOG.md +1691 -0
  3. package/CONTRIBUTING.md +17 -0
  4. package/README.md +13 -50
  5. package/angular.json +133 -0
  6. package/coverage/base.css +224 -0
  7. package/coverage/block-navigation.js +87 -0
  8. package/coverage/clover.xml +1620 -0
  9. package/coverage/coverage-final.json +9 -0
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +176 -0
  12. package/coverage/library/components/angular-slickgrid.component.ts.html +5074 -0
  13. package/coverage/library/components/index.html +116 -0
  14. package/coverage/library/constants.ts.html +397 -0
  15. package/coverage/library/extensions/index.html +116 -0
  16. package/coverage/library/extensions/slickRowDetailView.ts.html +1261 -0
  17. package/coverage/library/index.html +116 -0
  18. package/coverage/library/modules/angular-slickgrid.module.ts.html +166 -0
  19. package/coverage/library/modules/index.html +116 -0
  20. package/coverage/library/services/angularUtil.service.ts.html +445 -0
  21. package/coverage/library/services/container.service.ts.html +163 -0
  22. package/coverage/library/services/index.html +161 -0
  23. package/coverage/library/services/translater.service.ts.html +199 -0
  24. package/coverage/library/services/utilities.ts.html +142 -0
  25. package/coverage/prettify.css +1 -0
  26. package/coverage/prettify.js +2 -0
  27. package/coverage/sort-arrow-sprite.png +0 -0
  28. package/coverage/sorter.js +196 -0
  29. package/dist/LICENSE +21 -0
  30. package/dist/README.md +142 -0
  31. package/{fesm2022 → dist/fesm2022}/angular-slickgrid.mjs +168 -194
  32. package/dist/fesm2022/angular-slickgrid.mjs.map +1 -0
  33. package/{i18n → dist/i18n}/en.json +2 -1
  34. package/{i18n → dist/i18n}/fr.json +2 -1
  35. package/{app/modules/angular-slickgrid → dist/library}/components/angular-slickgrid.component.d.ts +9 -9
  36. package/{app/modules/angular-slickgrid → dist/library}/extensions/slickRowDetailView.d.ts +4 -4
  37. package/{app/modules/angular-slickgrid → dist/library}/models/angularGridInstance.interface.d.ts +0 -2
  38. package/dist/library/models/index.d.ts +5 -0
  39. package/{app/modules/angular-slickgrid → dist/library}/models/rowDetailView.interface.d.ts +1 -1
  40. package/{app/modules/angular-slickgrid → dist/library}/modules/angular-slickgrid.module.d.ts +1 -1
  41. package/dist/public_api.d.ts +1 -0
  42. package/docs/README.md +5 -0
  43. package/docs/TOC.md +105 -0
  44. package/docs/backend-services/Custom-Backend-Service.md +50 -0
  45. package/docs/backend-services/GraphQL.md +276 -0
  46. package/docs/backend-services/OData.md +245 -0
  47. package/docs/backend-services/graphql/GraphQL-Filtering.md +156 -0
  48. package/docs/backend-services/graphql/GraphQL-JSON-Result.md +85 -0
  49. package/docs/backend-services/graphql/GraphQL-Pagination.md +77 -0
  50. package/docs/backend-services/graphql/GraphQL-Sorting.md +78 -0
  51. package/docs/column-functionalities/cell-menu.md +212 -0
  52. package/docs/column-functionalities/editors/autocomplete-editor.md +466 -0
  53. package/docs/column-functionalities/editors/date-editor-flatpickr.md +71 -0
  54. package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +91 -0
  55. package/docs/column-functionalities/editors/longtext-editor-textarea.md +80 -0
  56. package/docs/column-functionalities/editors/select-dropdown-editor.md +227 -0
  57. package/docs/column-functionalities/editors.md +604 -0
  58. package/docs/column-functionalities/filters/autocomplete-filter.md +183 -0
  59. package/docs/column-functionalities/filters/compound-filters.md +234 -0
  60. package/docs/column-functionalities/filters/custom-filter.md +117 -0
  61. package/docs/column-functionalities/filters/filter-intro.md +81 -0
  62. package/docs/column-functionalities/filters/input-filter.md +260 -0
  63. package/docs/column-functionalities/filters/range-filters.md +188 -0
  64. package/docs/column-functionalities/filters/select-filter.md +695 -0
  65. package/docs/column-functionalities/filters/single-search-filter.md +77 -0
  66. package/docs/column-functionalities/filters/styling-filled-filters.md +45 -0
  67. package/docs/column-functionalities/formatters.md +325 -0
  68. package/docs/column-functionalities/sorting.md +200 -0
  69. package/docs/developer-guides/csp-compliance.md +64 -0
  70. package/docs/events/Available-Events.md +223 -0
  71. package/docs/events/Grid-&-DataView-Events.md +211 -0
  72. package/docs/getting-started/quick-start.md +230 -0
  73. package/docs/getting-started/troubleshooting.md +80 -0
  74. package/docs/grid-functionalities/Column-Picker.md +22 -0
  75. package/docs/grid-functionalities/Composite-Editor-Modal.md +627 -0
  76. package/docs/grid-functionalities/Context-Menu.md +226 -0
  77. package/docs/grid-functionalities/Custom-Footer.md +80 -0
  78. package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +258 -0
  79. package/docs/grid-functionalities/Export-to-Excel.md +457 -0
  80. package/docs/grid-functionalities/Export-to-Text-File.md +165 -0
  81. package/docs/grid-functionalities/FAQ.md +53 -0
  82. package/docs/grid-functionalities/Global-Options.md +29 -0
  83. package/docs/grid-functionalities/Grid-Auto-Resize.md +218 -0
  84. package/docs/grid-functionalities/Grid-Menu.md +134 -0
  85. package/docs/grid-functionalities/Grid-State-&-Preset.md +245 -0
  86. package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +125 -0
  87. package/docs/grid-functionalities/Resize-by-Cell-Content.md +138 -0
  88. package/docs/grid-functionalities/Row-Selection.md +247 -0
  89. package/docs/grid-functionalities/Row-based-edit.md +71 -0
  90. package/docs/grid-functionalities/add-update-highlight.md +258 -0
  91. package/docs/grid-functionalities/column-row-spanning.md +74 -0
  92. package/docs/grid-functionalities/dynamic-item-metadata.md +124 -0
  93. package/docs/grid-functionalities/excel-copy-buffer.md +145 -0
  94. package/docs/grid-functionalities/frozen-columns-rows.md +164 -0
  95. package/docs/grid-functionalities/grouping-and-aggregators.md +269 -0
  96. package/docs/grid-functionalities/header-footer-slots.md +22 -0
  97. package/docs/grid-functionalities/infinite-scroll.md +150 -0
  98. package/docs/grid-functionalities/providing-grid-data.md +61 -0
  99. package/docs/grid-functionalities/row-detail.md +530 -0
  100. package/docs/grid-functionalities/tree-data-grid.md +391 -0
  101. package/docs/localization/Localization---Component-Sample.md +87 -0
  102. package/docs/localization/Localization-with-Custom-Locales.md +66 -0
  103. package/docs/localization/Localization-with-ngx-translate.md +148 -0
  104. package/docs/migrations/migration-to-2.x.md +304 -0
  105. package/docs/migrations/migration-to-3.x.md +295 -0
  106. package/docs/migrations/migration-to-4.x.md +83 -0
  107. package/docs/migrations/migration-to-5.x.md +160 -0
  108. package/docs/migrations/migration-to-6.x.md +128 -0
  109. package/docs/migrations/migration-to-7.x.md +294 -0
  110. package/docs/migrations/migration-to-8.x.md +316 -0
  111. package/docs/migrations/migration-to-9.x.md +219 -0
  112. package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +79 -0
  113. package/docs/styling/dark-mode.md +100 -0
  114. package/docs/styling/styling.md +250 -0
  115. package/docs/testing/testing-patterns.md +73 -0
  116. package/eslint.config.mjs +60 -0
  117. package/ng-package.json +10 -0
  118. package/package.json +24 -48
  119. package/src/assets/angular-logo.png +0 -0
  120. package/src/assets/angular-logo2.png +0 -0
  121. package/src/assets/data/collection_100_numbers.json +12 -0
  122. package/src/assets/data/collection_500_numbers.json +52 -0
  123. package/src/assets/data/countries.json +245 -0
  124. package/src/assets/data/country_names.json +245 -0
  125. package/src/assets/data/customers_100.json +102 -0
  126. package/src/assets/data/users.csv +5 -0
  127. package/src/assets/i18n/en.json +102 -0
  128. package/src/assets/i18n/fr.json +103 -0
  129. package/src/demos/app-routing.module.ts +108 -0
  130. package/src/demos/app.component.html +187 -0
  131. package/src/demos/app.component.scss +79 -0
  132. package/src/demos/app.component.ts +11 -0
  133. package/src/demos/app.module.ts +196 -0
  134. package/src/demos/environments/environment.dev.ts +3 -0
  135. package/src/demos/environments/environment.prod.ts +3 -0
  136. package/src/demos/environments/environment.ts +8 -0
  137. package/src/demos/examples/custom-angularComponentEditor.ts +187 -0
  138. package/src/demos/examples/custom-angularComponentFilter.ts +123 -0
  139. package/src/demos/examples/custom-buttonFormatter.component.ts +13 -0
  140. package/src/demos/examples/custom-inputEditor.ts +132 -0
  141. package/src/demos/examples/custom-inputFilter.ts +134 -0
  142. package/src/demos/examples/custom-titleFormatter.component.ts +9 -0
  143. package/src/demos/examples/data/collection_100_numbers.json +12 -0
  144. package/src/demos/examples/data/collection_500_numbers.json +52 -0
  145. package/src/demos/examples/data/countries.json +245 -0
  146. package/src/demos/examples/data/country_names.json +245 -0
  147. package/src/demos/examples/data/customers_100.json +102 -0
  148. package/src/demos/examples/data/users.csv +5 -0
  149. package/src/demos/examples/editor-ng-select.component.ts +38 -0
  150. package/src/demos/examples/example01.component.html +48 -0
  151. package/src/demos/examples/example01.component.ts +109 -0
  152. package/src/demos/examples/example02.component.html +45 -0
  153. package/src/demos/examples/example02.component.ts +218 -0
  154. package/src/demos/examples/example03.component.html +118 -0
  155. package/src/demos/examples/example03.component.ts +694 -0
  156. package/src/demos/examples/example04.component.html +87 -0
  157. package/src/demos/examples/example04.component.ts +326 -0
  158. package/src/demos/examples/example05.component.html +151 -0
  159. package/src/demos/examples/example05.component.ts +474 -0
  160. package/src/demos/examples/example06.component.html +163 -0
  161. package/src/demos/examples/example06.component.ts +446 -0
  162. package/src/demos/examples/example07.component.html +56 -0
  163. package/src/demos/examples/example07.component.scss +10 -0
  164. package/src/demos/examples/example07.component.ts +216 -0
  165. package/src/demos/examples/example08.component.html +51 -0
  166. package/src/demos/examples/example08.component.scss +23 -0
  167. package/src/demos/examples/example08.component.ts +195 -0
  168. package/src/demos/examples/example09.component.html +55 -0
  169. package/src/demos/examples/example09.component.scss +22 -0
  170. package/src/demos/examples/example09.component.ts +302 -0
  171. package/src/demos/examples/example10.component.html +103 -0
  172. package/src/demos/examples/example10.component.ts +309 -0
  173. package/src/demos/examples/example11.component.html +91 -0
  174. package/src/demos/examples/example11.component.ts +276 -0
  175. package/src/demos/examples/example12.component.html +98 -0
  176. package/src/demos/examples/example12.component.ts +317 -0
  177. package/src/demos/examples/example13.component.html +96 -0
  178. package/src/demos/examples/example13.component.ts +370 -0
  179. package/src/demos/examples/example14.component.html +50 -0
  180. package/src/demos/examples/example14.component.scss +11 -0
  181. package/src/demos/examples/example14.component.ts +156 -0
  182. package/src/demos/examples/example15.component.html +56 -0
  183. package/src/demos/examples/example15.component.ts +304 -0
  184. package/src/demos/examples/example16.component.html +77 -0
  185. package/src/demos/examples/example16.component.ts +277 -0
  186. package/src/demos/examples/example17.component.html +50 -0
  187. package/src/demos/examples/example17.component.ts +109 -0
  188. package/src/demos/examples/example18.component.html +132 -0
  189. package/src/demos/examples/example18.component.ts +445 -0
  190. package/src/demos/examples/example19-rowdetail.component.html +40 -0
  191. package/src/demos/examples/example19-rowdetail.component.ts +54 -0
  192. package/src/demos/examples/example19.component.html +79 -0
  193. package/src/demos/examples/example19.component.ts +316 -0
  194. package/src/demos/examples/example20.component.html +76 -0
  195. package/src/demos/examples/example20.component.scss +11 -0
  196. package/src/demos/examples/example20.component.ts +341 -0
  197. package/src/demos/examples/example21.component.html +86 -0
  198. package/src/demos/examples/example21.component.scss +16 -0
  199. package/src/demos/examples/example21.component.ts +140 -0
  200. package/src/demos/examples/example22.component.html +41 -0
  201. package/src/demos/examples/example22.component.ts +117 -0
  202. package/src/demos/examples/example23.component.html +111 -0
  203. package/src/demos/examples/example23.component.ts +323 -0
  204. package/src/demos/examples/example24.component.html +120 -0
  205. package/src/demos/examples/example24.component.scss +62 -0
  206. package/src/demos/examples/example24.component.ts +641 -0
  207. package/src/demos/examples/example25.component.html +60 -0
  208. package/src/demos/examples/example25.component.scss +8 -0
  209. package/src/demos/examples/example25.component.ts +255 -0
  210. package/src/demos/examples/example26.component.html +98 -0
  211. package/src/demos/examples/example26.component.scss +42 -0
  212. package/src/demos/examples/example26.component.ts +383 -0
  213. package/src/demos/examples/example27.component.html +138 -0
  214. package/src/demos/examples/example27.component.scss +10 -0
  215. package/src/demos/examples/example27.component.ts +369 -0
  216. package/src/demos/examples/example28.component.html +143 -0
  217. package/src/demos/examples/example28.component.scss +54 -0
  218. package/src/demos/examples/example28.component.ts +453 -0
  219. package/src/demos/examples/example29.component.html +30 -0
  220. package/src/demos/examples/example29.component.ts +70 -0
  221. package/src/demos/examples/example30.component.html +116 -0
  222. package/src/demos/examples/example30.component.scss +20 -0
  223. package/src/demos/examples/example30.component.ts +1070 -0
  224. package/src/demos/examples/example32.component.html +77 -0
  225. package/src/demos/examples/example32.component.scss +8 -0
  226. package/src/demos/examples/example32.component.ts +905 -0
  227. package/src/demos/examples/example33.component.html +50 -0
  228. package/src/demos/examples/example33.component.scss +46 -0
  229. package/src/demos/examples/example33.component.ts +571 -0
  230. package/src/demos/examples/example34.component.html +82 -0
  231. package/src/demos/examples/example34.component.scss +77 -0
  232. package/src/demos/examples/example34.component.ts +434 -0
  233. package/src/demos/examples/example35.component.html +77 -0
  234. package/src/demos/examples/example35.component.scss +18 -0
  235. package/src/demos/examples/example35.component.ts +264 -0
  236. package/src/demos/examples/example36.component.html +56 -0
  237. package/src/demos/examples/example36.component.scss +26 -0
  238. package/src/demos/examples/example36.component.ts +504 -0
  239. package/src/demos/examples/example37.component.html +30 -0
  240. package/src/demos/examples/example37.component.ts +123 -0
  241. package/src/demos/examples/example38.component.html +104 -0
  242. package/src/demos/examples/example38.component.scss +8 -0
  243. package/src/demos/examples/example38.component.ts +420 -0
  244. package/src/demos/examples/example39.component.html +112 -0
  245. package/src/demos/examples/example39.component.scss +8 -0
  246. package/src/demos/examples/example39.component.ts +371 -0
  247. package/src/demos/examples/example40.component.html +76 -0
  248. package/src/demos/examples/example40.component.ts +226 -0
  249. package/src/demos/examples/example41.component.html +50 -0
  250. package/src/demos/examples/example41.component.scss +42 -0
  251. package/src/demos/examples/example41.component.ts +229 -0
  252. package/src/demos/examples/example42.component.html +47 -0
  253. package/src/demos/examples/example42.component.ts +203 -0
  254. package/src/demos/examples/example43.component.html +94 -0
  255. package/src/demos/examples/example43.component.scss +30 -0
  256. package/src/demos/examples/example43.component.ts +449 -0
  257. package/src/demos/examples/example44.component.html +78 -0
  258. package/src/demos/examples/example44.component.scss +50 -0
  259. package/src/demos/examples/example44.component.ts +375 -0
  260. package/src/demos/examples/example45-detail.component.html +15 -0
  261. package/src/demos/examples/example45-detail.component.ts +97 -0
  262. package/src/demos/examples/example45.component.html +110 -0
  263. package/src/demos/examples/example45.component.scss +50 -0
  264. package/src/demos/examples/example45.component.ts +243 -0
  265. package/src/demos/examples/filter-ng-select.component.ts +33 -0
  266. package/src/demos/examples/grid-custom-pager.component.html +60 -0
  267. package/src/demos/examples/grid-custom-pager.component.scss +57 -0
  268. package/src/demos/examples/grid-custom-pager.component.ts +107 -0
  269. package/src/demos/examples/grid-remote.component.html +44 -0
  270. package/src/demos/examples/grid-remote.component.ts +164 -0
  271. package/src/demos/examples/home.component.html +39 -0
  272. package/src/demos/examples/home.component.ts +10 -0
  273. package/src/demos/examples/jsonp.ts +89 -0
  274. package/src/demos/examples/rowdetail-preload.component.ts +10 -0
  275. package/src/demos/examples/swt-common-grid-pagination.component.ts +160 -0
  276. package/src/demos/examples/swt-common-grid-test.component.html +37 -0
  277. package/src/demos/examples/swt-common-grid-test.component.ts +214 -0
  278. package/src/demos/examples/swt-common-grid.component.ts +436 -0
  279. package/src/demos/examples/swt-logger.service.ts +173 -0
  280. package/src/demos/examples/utilities.ts +9 -0
  281. package/src/favicon.ico +0 -0
  282. package/src/index.html +17 -0
  283. package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +2638 -0
  284. package/src/library/components/angular-slickgrid.component.html +5 -0
  285. package/src/library/components/angular-slickgrid.component.ts +1662 -0
  286. package/src/library/constants.ts +105 -0
  287. package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +751 -0
  288. package/src/library/extensions/index.ts +1 -0
  289. package/src/library/extensions/slickRowDetailView.ts +395 -0
  290. package/src/library/global-grid-options.ts +273 -0
  291. package/src/library/index.ts +11 -0
  292. package/src/library/models/angularComponentOutput.interface.ts +6 -0
  293. package/src/library/models/angularGridInstance.interface.ts +76 -0
  294. package/src/library/models/externalTestingDependencies.interface.ts +37 -0
  295. package/src/library/models/gridOption.interface.ts +15 -0
  296. package/src/library/models/index.ts +5 -0
  297. package/src/library/models/rowDetailView.interface.ts +16 -0
  298. package/src/library/modules/angular-slickgrid.module.spec.ts +25 -0
  299. package/src/library/modules/angular-slickgrid.module.ts +27 -0
  300. package/src/library/services/__tests__/angularUtilService.spec.ts +156 -0
  301. package/src/library/services/__tests__/container.service.spec.ts +25 -0
  302. package/src/library/services/__tests__/translater.service.spec.ts +43 -0
  303. package/src/library/services/__tests__/utilities.spec.ts +22 -0
  304. package/src/library/services/angularUtil.service.ts +120 -0
  305. package/src/library/services/container.service.ts +26 -0
  306. package/src/library/services/index.ts +4 -0
  307. package/src/library/services/translater.service.ts +38 -0
  308. package/src/library/services/utilities.ts +19 -0
  309. package/src/library/slickgrid-config.ts +10 -0
  310. package/src/main.ts +13 -0
  311. package/src/public_api.ts +1 -0
  312. package/src/styles.scss +178 -0
  313. package/test/cypress/e2e/example01.cy.ts +367 -0
  314. package/test/cypress/e2e/example02.cy.ts +60 -0
  315. package/test/cypress/e2e/example03.cy.ts +268 -0
  316. package/test/cypress/e2e/example04.cy.ts +254 -0
  317. package/test/cypress/e2e/example05.cy.ts +804 -0
  318. package/test/cypress/e2e/example06.cy.ts +890 -0
  319. package/test/cypress/e2e/example07.cy.ts +384 -0
  320. package/test/cypress/e2e/example08.cy.ts +190 -0
  321. package/test/cypress/e2e/example09.cy.ts +392 -0
  322. package/test/cypress/e2e/example10.cy.ts +650 -0
  323. package/test/cypress/e2e/example11.cy.ts +86 -0
  324. package/test/cypress/e2e/example12.cy.ts +269 -0
  325. package/test/cypress/e2e/example13.cy.ts +246 -0
  326. package/test/cypress/e2e/example14.cy.ts +122 -0
  327. package/test/cypress/e2e/example15.cy.ts +598 -0
  328. package/test/cypress/e2e/example16.cy.ts +427 -0
  329. package/test/cypress/e2e/example17.cy.ts +83 -0
  330. package/test/cypress/e2e/example18.cy.ts +431 -0
  331. package/test/cypress/e2e/example19.cy.ts +263 -0
  332. package/test/cypress/e2e/example20.cy.ts +264 -0
  333. package/test/cypress/e2e/example21.cy.ts +77 -0
  334. package/test/cypress/e2e/example22.cy.ts +94 -0
  335. package/test/cypress/e2e/example23.cy.ts +259 -0
  336. package/test/cypress/e2e/example24.cy.ts +707 -0
  337. package/test/cypress/e2e/example25.cy.ts +193 -0
  338. package/test/cypress/e2e/example26.cy.ts +111 -0
  339. package/test/cypress/e2e/example27.cy.ts +261 -0
  340. package/test/cypress/e2e/example28.cy.ts +740 -0
  341. package/test/cypress/e2e/example29.cy.ts +30 -0
  342. package/test/cypress/e2e/example30.cy.ts +757 -0
  343. package/test/cypress/e2e/example31.cy.ts +69 -0
  344. package/test/cypress/e2e/example32.cy.ts +272 -0
  345. package/test/cypress/e2e/example33.cy.ts +278 -0
  346. package/test/cypress/e2e/example34.cy.ts +84 -0
  347. package/test/cypress/e2e/example35.cy.ts +178 -0
  348. package/test/cypress/e2e/example36.cy.ts +219 -0
  349. package/test/cypress/e2e/example37.cy.ts +52 -0
  350. package/test/cypress/e2e/example38.cy.ts +160 -0
  351. package/test/cypress/e2e/example39.cy.ts +150 -0
  352. package/test/cypress/e2e/example40.cy.ts +126 -0
  353. package/test/cypress/e2e/example41.cy.ts +90 -0
  354. package/test/cypress/e2e/example42.cy.ts +82 -0
  355. package/test/cypress/e2e/example43.cy.ts +482 -0
  356. package/test/cypress/e2e/example44.cy.ts +458 -0
  357. package/test/cypress/e2e/example45.cy.ts +455 -0
  358. package/test/cypress/e2e/home.cy.ts +7 -0
  359. package/test/cypress/fixtures/example.json +5 -0
  360. package/test/cypress/plugins/index.ts +17 -0
  361. package/test/cypress/plugins/utilities.ts +28 -0
  362. package/test/cypress/support/commands.ts +88 -0
  363. package/test/cypress/support/common.ts +47 -0
  364. package/test/cypress/support/drag.ts +101 -0
  365. package/test/cypress/support/index.ts +20 -0
  366. package/test/cypress/tsconfig.json +9 -0
  367. package/test/cypress.config.ts +34 -0
  368. package/test/mockSlickEvent.ts +77 -0
  369. package/test/rxjsResourceStub.ts +69 -0
  370. package/test/test-setup.ts +6 -0
  371. package/test/translateServiceStub.ts +230 -0
  372. package/test/translaterServiceStub.ts +239 -0
  373. package/test/tsconfig.json +17 -0
  374. package/test/vitest-global-mocks.ts +41 -0
  375. package/test/vitest-global-setup.ts +3 -0
  376. package/test/vitest-pretest.ts +5 -0
  377. package/tsconfig.app.json +14 -0
  378. package/tsconfig.json +31 -0
  379. package/tsconfig.spec.json +11 -0
  380. package/types/sortablejs.d.ts +4 -0
  381. package/vite.config.mts +51 -0
  382. package/app/modules/angular-slickgrid/models/index.d.ts +0 -5
  383. package/esm2022/angular-slickgrid.mjs +0 -5
  384. package/esm2022/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1407
  385. package/esm2022/app/modules/angular-slickgrid/constants.mjs +0 -96
  386. package/esm2022/app/modules/angular-slickgrid/extensions/index.mjs +0 -2
  387. package/esm2022/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -304
  388. package/esm2022/app/modules/angular-slickgrid/global-grid-options.mjs +0 -263
  389. package/esm2022/app/modules/angular-slickgrid/index.mjs +0 -8
  390. package/esm2022/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +0 -2
  391. package/esm2022/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -2
  392. package/esm2022/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -2
  393. package/esm2022/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -2
  394. package/esm2022/app/modules/angular-slickgrid/models/index.mjs +0 -6
  395. package/esm2022/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -2
  396. package/esm2022/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -32
  397. package/esm2022/app/modules/angular-slickgrid/services/angularUtil.service.mjs +0 -88
  398. package/esm2022/app/modules/angular-slickgrid/services/container.service.mjs +0 -27
  399. package/esm2022/app/modules/angular-slickgrid/services/index.mjs +0 -5
  400. package/esm2022/app/modules/angular-slickgrid/services/translater.service.mjs +0 -45
  401. package/esm2022/app/modules/angular-slickgrid/services/utilities.mjs +0 -19
  402. package/esm2022/app/modules/angular-slickgrid/slickgrid-config.mjs +0 -8
  403. package/esm2022/public_api.mjs +0 -2
  404. package/fesm2022/angular-slickgrid.mjs.map +0 -1
  405. package/public_api.d.ts +0 -1
  406. /package/{index.d.ts → dist/index.d.ts} +0 -0
  407. /package/{app/modules/angular-slickgrid → dist/library}/constants.d.ts +0 -0
  408. /package/{app/modules/angular-slickgrid → dist/library}/extensions/index.d.ts +0 -0
  409. /package/{app/modules/angular-slickgrid → dist/library}/global-grid-options.d.ts +0 -0
  410. /package/{app/modules/angular-slickgrid → dist/library}/index.d.ts +0 -0
  411. /package/{app/modules/angular-slickgrid → dist/library}/models/angularComponentOutput.interface.d.ts +0 -0
  412. /package/{app/modules/angular-slickgrid → dist/library}/models/externalTestingDependencies.interface.d.ts +0 -0
  413. /package/{app/modules/angular-slickgrid → dist/library}/models/gridOption.interface.d.ts +0 -0
  414. /package/{app/modules/angular-slickgrid → dist/library}/services/angularUtil.service.d.ts +0 -0
  415. /package/{app/modules/angular-slickgrid → dist/library}/services/container.service.d.ts +0 -0
  416. /package/{app/modules/angular-slickgrid → dist/library}/services/index.d.ts +0 -0
  417. /package/{app/modules/angular-slickgrid → dist/library}/services/translater.service.d.ts +0 -0
  418. /package/{app/modules/angular-slickgrid → dist/library}/services/utilities.d.ts +0 -0
  419. /package/{app/modules/angular-slickgrid → dist/library}/slickgrid-config.d.ts +0 -0
@@ -1,4 +1,4 @@
1
- import { unsubscribeAll, createDomElement, SlickRowSelectionModel, SlickEventData, castObservableToPromise, addToArrayWhenNotExists, FileType, DelimiterType, EventNamingStyle, OperatorType, Filters, SlickEventHandler, SlickgridConfig as SlickgridConfig$1, BackendUtilityService, GridEventService, SharedService, CollectionService, ExtensionUtility, FilterFactory, FilterService, ResizerService, SortService, TreeDataService, PaginationService, ExtensionService, GridStateService, GridService, HeaderGroupingService, emptyElement, SlickGroupItemMetadataProvider, SlickDataView, autoAddEditorFormatterToColumnsWithEditor, SlickGrid, GridStateType, ExtensionName, isColumnDateType } from '@slickgrid-universal/common';
1
+ import { unsubscribeAll, createDomElement, SlickRowSelectionModel, SlickEventData, castObservableToPromise, addToArrayWhenNotExists, DelimiterType, EventNamingStyle, Filters, SlickEventHandler, SlickgridConfig as SlickgridConfig$1, BackendUtilityService, GridEventService, SharedService, CollectionService, ExtensionUtility, FilterFactory, FilterService, ResizerService, SortService, TreeDataService, PaginationService, ExtensionService, GridStateService, GridService, HeaderGroupingService, emptyElement, SlickGroupItemMetadataProvider, SlickDataView, autoAddEditorFormatterToColumnsWithEditor, SlickGrid, ExtensionName, isColumnDateType } from '@slickgrid-universal/common';
2
2
  export * from '@slickgrid-universal/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, Optional, EventEmitter, ContentChild, Input, Output, Inject, Component, NgModule } from '@angular/core';
@@ -68,9 +68,7 @@ class AngularUtilService {
68
68
  // when user provides the DOM element target, we will read the new Component html and use it to replace the target html
69
69
  if (targetElement && domElem) {
70
70
  targetElement.innerHTML =
71
- typeof createCompOptions?.sanitizer === 'function'
72
- ? createCompOptions.sanitizer(domElem.innerHTML || '')
73
- : domElem.innerHTML;
71
+ typeof createCompOptions?.sanitizer === 'function' ? createCompOptions.sanitizer(domElem.innerHTML || '') : domElem.innerHTML;
74
72
  }
75
73
  }
76
74
  return { componentRef, domElement: domElem };
@@ -95,10 +93,10 @@ class AngularUtilService {
95
93
  }
96
94
  return componentOutput;
97
95
  }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Injectable });
99
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularUtilService });
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Injectable });
97
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService });
100
98
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularUtilService, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService, decorators: [{
102
100
  type: Injectable
103
101
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
104
102
 
@@ -120,10 +118,10 @@ class ContainerService {
120
118
  this.dependencies.push({ key, instance });
121
119
  }
122
120
  }
123
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
124
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContainerService });
121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
122
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService });
125
123
  }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContainerService, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService, decorators: [{
127
125
  type: Injectable
128
126
  }] });
129
127
 
@@ -159,10 +157,10 @@ class TranslaterService {
159
157
  translate(translationKey) {
160
158
  return this.translateService?.instant?.(translationKey || ' ');
161
159
  }
162
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
163
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslaterService });
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
161
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService });
164
162
  }
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslaterService, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService, decorators: [{
166
164
  type: Injectable
167
165
  }], ctorParameters: () => [{ type: i1.TranslateService, decorators: [{
168
166
  type: Optional
@@ -387,7 +385,7 @@ class SlickRowDetailView extends SlickRowDetailView$1 {
387
385
  addon: this,
388
386
  grid: this._grid,
389
387
  dataView: this.dataView,
390
- parent: this.rowDetailViewOptions?.parent,
388
+ parentRef: this.rowDetailViewOptions?.parentRef,
391
389
  }, {
392
390
  sanitizer: this._grid.sanitizeHtmlString,
393
391
  });
@@ -431,7 +429,7 @@ class SlickRowDetailView extends SlickRowDetailView$1 {
431
429
  * @param item
432
430
  */
433
431
  notifyTemplate(item) {
434
- this.onAsyncResponse.notify({ item, itemDetail: item }, new SlickEventData(), this);
432
+ this.onAsyncResponse.notify({ item }, new SlickEventData(), this);
435
433
  }
436
434
  /**
437
435
  * On Processing, we will notify the plugin with the new item detail once backend server call completes
@@ -575,7 +573,7 @@ const GlobalGridOptions = {
575
573
  defaultBackendServiceFilterTypingDebounce: 500,
576
574
  defaultColumnSortFieldId: 'id',
577
575
  defaultFilterPlaceholder: '🔎︎',
578
- defaultFilterRangeOperator: OperatorType.rangeInclusive,
576
+ defaultFilterRangeOperator: 'RangeInclusive',
579
577
  editable: false,
580
578
  enableAutoResize: true,
581
579
  enableAutoSizeColumns: true,
@@ -610,7 +608,7 @@ const GlobalGridOptions = {
610
608
  addGroupIndentation: true,
611
609
  exportWithFormatter: false,
612
610
  filename: 'export',
613
- format: FileType.xlsx,
611
+ format: 'xlsx',
614
612
  groupingColumnHeaderTitle: 'Group By',
615
613
  groupCollapsedSymbol: '⮞',
616
614
  groupExpandedSymbol: '⮟',
@@ -621,7 +619,7 @@ const GlobalGridOptions = {
621
619
  delimiter: DelimiterType.comma,
622
620
  exportWithFormatter: false,
623
621
  filename: 'export',
624
- format: FileType.csv,
622
+ format: 'csv',
625
623
  groupingColumnHeaderTitle: 'Group By',
626
624
  groupingAggregatorRowText: '',
627
625
  sanitizeDataExport: false,
@@ -727,6 +725,7 @@ const GlobalGridOptions = {
727
725
  maxItemToInspectSingleColumnWidthByContent: 5000,
728
726
  widthToRemoveFromExceededWidthReadjustment: 50,
729
727
  },
728
+ rowTopOffsetRenderType: 'transform',
730
729
  treeDataOptions: {
731
730
  exportIndentMarginLeft: 5,
732
731
  exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·',
@@ -805,6 +804,7 @@ class Constants {
805
804
  TEXT_LAST_UPDATE: 'Last Update',
806
805
  TEXT_LESS_THAN: 'Less than',
807
806
  TEXT_LESS_THAN_OR_EQUAL_TO: 'Less than or equal to',
807
+ TEXT_LOADING: 'Loading...',
808
808
  TEXT_NO_ELEMENTS_FOUND: 'Aucun élément trouvé',
809
809
  TEXT_NOT_CONTAINS: 'Not contains',
810
810
  TEXT_NOT_EQUAL_TO: 'Not equal to',
@@ -917,35 +917,35 @@ class AngularSlickgridComponent {
917
917
  treeDataService;
918
918
  customDataView;
919
919
  gridId = '';
920
- gridOptions = {};
920
+ options = {};
921
921
  get paginationOptions() {
922
922
  return this._paginationOptions;
923
923
  }
924
924
  set paginationOptions(newPaginationOptions) {
925
925
  if (newPaginationOptions && this._paginationOptions) {
926
- this._paginationOptions = { ...this.gridOptions.pagination, ...this._paginationOptions, ...newPaginationOptions };
926
+ this._paginationOptions = { ...this.options.pagination, ...this._paginationOptions, ...newPaginationOptions };
927
927
  }
928
928
  else {
929
929
  this._paginationOptions = newPaginationOptions;
930
930
  }
931
- this.gridOptions.pagination = this._paginationOptions ?? this.gridOptions.pagination;
932
- this.paginationService.updateTotalItems(this.gridOptions.pagination?.totalItems ?? 0, true);
931
+ this.options.pagination = this._paginationOptions ?? this.options.pagination;
932
+ this.paginationService.updateTotalItems(this.options.pagination?.totalItems ?? 0, true);
933
933
  }
934
- get columnDefinitions() {
934
+ get columns() {
935
935
  return this._columnDefinitions;
936
936
  }
937
- set columnDefinitions(columnDefinitions) {
938
- this._columnDefinitions = columnDefinitions;
937
+ set columns(columns) {
938
+ this._columnDefinitions = columns;
939
939
  if (this._isGridInitialized) {
940
- this.updateColumnDefinitionsList(columnDefinitions);
940
+ this.updateColumnDefinitionsList(columns);
941
941
  }
942
- if (columnDefinitions.length > 0) {
943
- this.copyColumnWidthsReference(columnDefinitions);
942
+ if (columns.length > 0) {
943
+ this.copyColumnWidthsReference(columns);
944
944
  }
945
945
  }
946
946
  // make the columnDefinitions a 2-way binding so that plugin adding cols
947
947
  // are synched on user's side as well (RowMove, RowDetail, RowSelections)
948
- columnDefinitionsChange = new EventEmitter(true);
948
+ columnsChange = new EventEmitter(true);
949
949
  get dataset() {
950
950
  return (this.customDataView ? this.slickGrid?.getData?.() : this.dataView?.getItems()) || [];
951
951
  }
@@ -955,7 +955,7 @@ class AngularSlickgridComponent {
955
955
  let data = newDataset;
956
956
  // when Tree Data is enabled and we don't yet have the hierarchical dataset filled, we can force a convert+sort of the array
957
957
  if (this.slickGrid &&
958
- this.gridOptions?.enableTreeData &&
958
+ this.options?.enableTreeData &&
959
959
  Array.isArray(newDataset) &&
960
960
  (newDataset.length > 0 || newDataset.length !== prevDatasetLn || !isDatasetEqual)) {
961
961
  this._isDatasetHierarchicalInitialized = false;
@@ -966,7 +966,7 @@ class AngularSlickgridComponent {
966
966
  this._currentDatasetLength = (newDataset || []).length;
967
967
  // expand/autofit columns on first page load
968
968
  // we can assume that if the prevDataset was empty then we are on first load
969
- if (this.slickGrid && this.gridOptions?.autoFitColumnsOnFirstLoad && prevDatasetLn === 0 && !this._isAutosizeColsCalled) {
969
+ if (this.slickGrid && this.options?.autoFitColumnsOnFirstLoad && prevDatasetLn === 0 && !this._isAutosizeColsCalled) {
970
970
  this.slickGrid.autosizeColumns();
971
971
  this._isAutosizeColsCalled = true;
972
972
  }
@@ -979,7 +979,7 @@ class AngularSlickgridComponent {
979
979
  const isDatasetEqual = dequal(newHierarchicalDataset, this.sharedService?.hierarchicalDataset ?? []);
980
980
  const prevFlatDatasetLn = this._currentDatasetLength;
981
981
  this.sharedService.hierarchicalDataset = newHierarchicalDataset;
982
- if (newHierarchicalDataset && this.columnDefinitions && this.filterService?.clearFilters) {
982
+ if (newHierarchicalDataset && this.columns && this.filterService?.clearFilters) {
983
983
  this.filterService.clearFilters();
984
984
  }
985
985
  // when a hierarchical dataset is set afterward, we can reset the flat dataset and call a tree data sort that will overwrite the flat dataset
@@ -1000,13 +1000,13 @@ class AngularSlickgridComponent {
1000
1000
  return this.elm;
1001
1001
  }
1002
1002
  get backendService() {
1003
- return this.gridOptions?.backendServiceApi?.service;
1003
+ return this.options?.backendServiceApi?.service;
1004
1004
  }
1005
1005
  get eventHandler() {
1006
1006
  return this._eventHandler;
1007
1007
  }
1008
1008
  get gridContainerElement() {
1009
- return document.querySelector(`#${this.gridOptions.gridContainerId || ''}`);
1009
+ return document.querySelector(`#${this.options.gridContainerId || ''}`);
1010
1010
  }
1011
1011
  /** GETTER to know if dataset was initialized or not */
1012
1012
  get isDatasetInitialized() {
@@ -1095,18 +1095,18 @@ class AngularSlickgridComponent {
1095
1095
  this.containerService.registerInstance('TreeDataService', this.treeDataService);
1096
1096
  }
1097
1097
  ngAfterViewInit() {
1098
- if (!this.columnDefinitions) {
1099
- throw new Error('Using `<angular-slickgrid>` requires [columnDefinitions], it seems that you might have forgot to provide the missing bindable input.');
1098
+ if (!this.columns) {
1099
+ throw new Error('Using `<angular-slickgrid>` requires [columns], it seems that you might have forgot to provide the missing bindable input.');
1100
1100
  }
1101
1101
  this.initialization(this._eventHandler);
1102
1102
  this._isGridInitialized = true;
1103
1103
  // recheck the empty warning message after grid is shown so that it works in every use case
1104
- if (this.gridOptions?.enableEmptyDataWarningMessage && Array.isArray(this.dataset)) {
1104
+ if (this.options?.enableEmptyDataWarningMessage && Array.isArray(this.dataset)) {
1105
1105
  const finalTotalCount = this.dataset.length;
1106
1106
  this.displayEmptyDataWarning(finalTotalCount < 1);
1107
1107
  }
1108
1108
  // add dark mode CSS class when enabled
1109
- if (this.gridOptions.darkMode) {
1109
+ if (this.options.darkMode) {
1110
1110
  this.setDarkMode(true);
1111
1111
  }
1112
1112
  this.suggestDateParsingWhenHelpful();
@@ -1149,9 +1149,9 @@ class AngularSlickgridComponent {
1149
1149
  }
1150
1150
  this.backendServiceApi = undefined;
1151
1151
  }
1152
- if (this.columnDefinitions) {
1153
- for (const prop of Object.keys(this.columnDefinitions)) {
1154
- this.columnDefinitions[prop] = null;
1152
+ if (this.columns) {
1153
+ for (const prop of Object.keys(this.columns)) {
1154
+ this.columns[prop] = null;
1155
1155
  }
1156
1156
  }
1157
1157
  for (const prop of Object.keys(this.sharedService)) {
@@ -1181,7 +1181,7 @@ class AngularSlickgridComponent {
1181
1181
  this._registeredResources = [];
1182
1182
  }
1183
1183
  emptyGridContainerElm() {
1184
- const gridContainerId = this.gridOptions?.gridContainerId || 'grid1';
1184
+ const gridContainerId = this.options?.gridContainerId || 'grid1';
1185
1185
  const gridContainerElm = document.querySelector(`#${gridContainerId}`);
1186
1186
  emptyElement(gridContainerElm);
1187
1187
  }
@@ -1213,33 +1213,33 @@ class AngularSlickgridComponent {
1213
1213
  }
1214
1214
  }
1215
1215
  initialization(eventHandler) {
1216
- this.gridOptions.translater = this.translaterService;
1216
+ this.options.translater = this.translaterService;
1217
1217
  this._eventHandler = eventHandler;
1218
1218
  this._isAutosizeColsCalled = false;
1219
1219
  // when detecting a frozen grid, we'll automatically enable the mousewheel scroll handler so that we can scroll from both left/right frozen containers
1220
- if (this.gridOptions &&
1221
- ((this.gridOptions.frozenRow !== undefined && this.gridOptions.frozenRow >= 0) ||
1222
- (this.gridOptions.frozenColumn !== undefined && this.gridOptions.frozenColumn >= 0)) &&
1223
- this.gridOptions.enableMouseWheelScrollHandler === undefined) {
1224
- this.gridOptions.enableMouseWheelScrollHandler = true;
1220
+ if (this.options &&
1221
+ ((this.options.frozenRow !== undefined && this.options.frozenRow >= 0) ||
1222
+ (this.options.frozenColumn !== undefined && this.options.frozenColumn >= 0)) &&
1223
+ this.options.enableMouseWheelScrollHandler === undefined) {
1224
+ this.options.enableMouseWheelScrollHandler = true;
1225
1225
  }
1226
- this._eventPubSubService.eventNamingStyle = this.gridOptions?.eventNamingStyle ?? EventNamingStyle.camelCase;
1226
+ this._eventPubSubService.eventNamingStyle = this.options?.eventNamingStyle ?? EventNamingStyle.camelCase;
1227
1227
  this._eventPubSubService.publish('onBeforeGridCreate', true);
1228
1228
  // make sure the dataset is initialized (if not it will throw an error that it cannot getLength of null)
1229
1229
  this._dataset ||= [];
1230
- this.gridOptions = this.mergeGridOptions(this.gridOptions);
1231
- this._paginationOptions = this.gridOptions?.pagination;
1232
- this.locales = this.gridOptions?.locales ?? Constants.locales;
1233
- this.backendServiceApi = this.gridOptions?.backendServiceApi;
1230
+ this.options = this.mergeGridOptions(this.options);
1231
+ this._paginationOptions = this.options?.pagination;
1232
+ this.locales = this.options?.locales ?? Constants.locales;
1233
+ this.backendServiceApi = this.options?.backendServiceApi;
1234
1234
  this._isLocalGrid = !this.backendServiceApi; // considered a local grid if it doesn't have a backend service set
1235
1235
  // unless specified, we'll create an internal postProcess callback (currently only available for GraphQL)
1236
- if (this.gridOptions.backendServiceApi && !this.gridOptions.backendServiceApi?.disableInternalPostProcess) {
1237
- this.createBackendApiInternalPostProcessCallback(this.gridOptions);
1236
+ if (this.options.backendServiceApi && !this.options.backendServiceApi?.disableInternalPostProcess) {
1237
+ this.createBackendApiInternalPostProcessCallback(this.options);
1238
1238
  }
1239
1239
  if (!this.customDataView) {
1240
- const dataviewInlineFilters = this.gridOptions?.dataView?.inlineFilters ?? false;
1241
- let dataViewOptions = { ...this.gridOptions.dataView, inlineFilters: dataviewInlineFilters };
1242
- if (this.gridOptions.draggableGrouping || this.gridOptions.enableGrouping) {
1240
+ const dataviewInlineFilters = this.options?.dataView?.inlineFilters ?? false;
1241
+ let dataViewOptions = { ...this.options.dataView, inlineFilters: dataviewInlineFilters };
1242
+ if (this.options.draggableGrouping || this.options.enableGrouping) {
1243
1243
  this.groupItemMetadataProvider = new SlickGroupItemMetadataProvider();
1244
1244
  this.sharedService.groupItemMetadataProvider = this.groupItemMetadataProvider;
1245
1245
  dataViewOptions = { ...dataViewOptions, groupItemMetadataProvider: this.groupItemMetadataProvider };
@@ -1253,8 +1253,8 @@ class AngularSlickgridComponent {
1253
1253
  // prepare and load all SlickGrid editors, if an async editor is found then we'll also execute it.
1254
1254
  this._columnDefinitions = this.loadSlickGridEditors(this._columnDefinitions || []);
1255
1255
  // if the user wants to automatically add a Custom Editor Formatter, we need to call the auto add function again
1256
- if (this.gridOptions.autoAddCustomEditorFormatter) {
1257
- autoAddEditorFormatterToColumnsWithEditor(this._columnDefinitions, this.gridOptions.autoAddCustomEditorFormatter);
1256
+ if (this.options.autoAddCustomEditorFormatter) {
1257
+ autoAddEditorFormatterToColumnsWithEditor(this._columnDefinitions, this.options.autoAddCustomEditorFormatter);
1258
1258
  }
1259
1259
  // save reference for all columns before they optionally become hidden/visible
1260
1260
  this.sharedService.allColumns = this._columnDefinitions;
@@ -1263,17 +1263,17 @@ class AngularSlickgridComponent {
1263
1263
  // we'll subscribe to the event and push back the change to the user so they always use full column defs array including extra cols
1264
1264
  this.subscriptions.push(this._eventPubSubService.subscribe('onPluginColumnsChanged', (data) => {
1265
1265
  this._columnDefinitions = data.columns;
1266
- this.columnDefinitionsChange.emit(this._columnDefinitions);
1266
+ this.columnsChange.emit(this._columnDefinitions);
1267
1267
  }));
1268
1268
  // after subscribing to potential columns changed, we are ready to create these optional extensions
1269
1269
  // when we did find some to create (RowMove, RowDetail, RowSelections), it will automatically modify column definitions (by previous subscribe)
1270
- this.extensionService.createExtensionsBeforeGridCreation(this._columnDefinitions, this.gridOptions);
1270
+ this.extensionService.createExtensionsBeforeGridCreation(this._columnDefinitions, this.options);
1271
1271
  // if user entered some Pinning/Frozen "presets", we need to apply them in the grid options
1272
- if (this.gridOptions.presets?.pinning) {
1273
- this.gridOptions = { ...this.gridOptions, ...this.gridOptions.presets.pinning };
1272
+ if (this.options.presets?.pinning) {
1273
+ this.options = { ...this.options, ...this.options.presets.pinning };
1274
1274
  }
1275
1275
  // build SlickGrid Grid, also user might optionally pass a custom dataview (e.g. remote model)
1276
- this.slickGrid = new SlickGrid(`#${this.gridId}`, this.customDataView || this.dataView, this._columnDefinitions, this.gridOptions, this._eventPubSubService);
1276
+ this.slickGrid = new SlickGrid(`#${this.gridId}`, this.customDataView || this.dataView, this._columnDefinitions, this.options, this._eventPubSubService);
1277
1277
  this.sharedService.dataView = this.dataView;
1278
1278
  this.sharedService.slickGrid = this.slickGrid;
1279
1279
  this.sharedService.gridContainerElement = this.elm.nativeElement;
@@ -1281,9 +1281,9 @@ class AngularSlickgridComponent {
1281
1281
  this.slickGrid.registerPlugin(this.groupItemMetadataProvider); // register GroupItemMetadataProvider when Grouping is enabled
1282
1282
  }
1283
1283
  this.extensionService.bindDifferentExtensions();
1284
- this.bindDifferentHooks(this.slickGrid, this.gridOptions, this.dataView);
1284
+ this.bindDifferentHooks(this.slickGrid, this.options, this.dataView);
1285
1285
  // when it's a frozen grid, we need to keep the frozen column id for reference if we ever show/hide column from ColumnPicker/GridMenu afterward
1286
- const frozenColumnIndex = this.gridOptions.frozenColumn !== undefined ? this.gridOptions.frozenColumn : -1;
1286
+ const frozenColumnIndex = this.options.frozenColumn !== undefined ? this.options.frozenColumn : -1;
1287
1287
  if (frozenColumnIndex >= 0 && frozenColumnIndex <= this._columnDefinitions.length) {
1288
1288
  this.sharedService.frozenVisibleColumnId = this._columnDefinitions[frozenColumnIndex].id || '';
1289
1289
  }
@@ -1297,29 +1297,26 @@ class AngularSlickgridComponent {
1297
1297
  this.resizerService.init(this.slickGrid, this.gridContainerElement);
1298
1298
  }
1299
1299
  // user could show a custom footer with the data metrics (dataset length and last updated timestamp)
1300
- if (!this.gridOptions.enablePagination &&
1301
- this.gridOptions.showCustomFooter &&
1302
- this.gridOptions.customFooterOptions &&
1303
- this.gridContainerElement) {
1304
- this.slickFooter = new SlickFooterComponent(this.slickGrid, this.gridOptions.customFooterOptions, this._eventPubSubService, this.translaterService);
1300
+ if (!this.options.enablePagination && this.options.showCustomFooter && this.options.customFooterOptions && this.gridContainerElement) {
1301
+ this.slickFooter = new SlickFooterComponent(this.slickGrid, this.options.customFooterOptions, this._eventPubSubService, this.translaterService);
1305
1302
  this.slickFooter.renderFooter(this.gridContainerElement);
1306
1303
  }
1307
1304
  if (!this.customDataView && this.dataView) {
1308
1305
  // load the data in the DataView (unless it's a hierarchical dataset, if so it will be loaded after the initial tree sort)
1309
- const initialDataset = this.gridOptions?.enableTreeData ? this.sortTreeDataset(this._dataset) : this._dataset;
1306
+ const initialDataset = this.options?.enableTreeData ? this.sortTreeDataset(this._dataset) : this._dataset;
1310
1307
  this.dataView.beginUpdate();
1311
- this.dataView.setItems(initialDataset || [], this.gridOptions.datasetIdPropertyName ?? 'id');
1308
+ this.dataView.setItems(initialDataset || [], this.options.datasetIdPropertyName ?? 'id');
1312
1309
  this.dataView.endUpdate();
1313
1310
  // if you don't want the items that are not visible (due to being filtered out or being on a different page)
1314
1311
  // to stay selected, pass 'false' to the second arg
1315
- if (this.slickGrid?.getSelectionModel() && this.gridOptions?.dataView && 'syncGridSelection' in this.gridOptions.dataView) {
1312
+ if (this.slickGrid?.getSelectionModel() && this.options?.dataView && 'syncGridSelection' in this.options.dataView) {
1316
1313
  // if we are using a Backend Service, we will do an extra flag check, the reason is because it might have some unintended behaviors
1317
1314
  // with the BackendServiceApi because technically the data in the page changes the DataView on every page change.
1318
1315
  let preservedRowSelectionWithBackend = false;
1319
- if (this.gridOptions.backendServiceApi && 'syncGridSelectionWithBackendService' in this.gridOptions.dataView) {
1320
- preservedRowSelectionWithBackend = this.gridOptions.dataView.syncGridSelectionWithBackendService;
1316
+ if (this.options.backendServiceApi && 'syncGridSelectionWithBackendService' in this.options.dataView) {
1317
+ preservedRowSelectionWithBackend = this.options.dataView.syncGridSelectionWithBackendService;
1321
1318
  }
1322
- const syncGridSelection = this.gridOptions.dataView.syncGridSelection;
1319
+ const syncGridSelection = this.options.dataView.syncGridSelection;
1323
1320
  if (typeof syncGridSelection === 'boolean') {
1324
1321
  let preservedRowSelection = syncGridSelection;
1325
1322
  if (!this._isLocalGrid) {
@@ -1334,7 +1331,7 @@ class AngularSlickgridComponent {
1334
1331
  }
1335
1332
  const datasetLn = this.dataView.getLength() || this._dataset?.length || 0;
1336
1333
  if (datasetLn > 0) {
1337
- if (!this._isDatasetInitialized && (this.gridOptions.enableCheckboxSelector || this.gridOptions.enableRowSelection)) {
1334
+ if (!this._isDatasetInitialized && (this.options.enableCheckboxSelector || this.options.enableRowSelection)) {
1338
1335
  this.loadRowSelectionPresetWhenExists();
1339
1336
  }
1340
1337
  this.loadFilterPresetsWhenDatasetInitialized();
@@ -1351,19 +1348,19 @@ class AngularSlickgridComponent {
1351
1348
  this._eventPubSubService.publish('onGridCreated', this.slickGrid);
1352
1349
  // after the DataView is created & updated execute some processes
1353
1350
  if (!this.customDataView) {
1354
- this.executeAfterDataviewCreated(this.slickGrid, this.gridOptions);
1351
+ this.executeAfterDataviewCreated(this.slickGrid, this.options);
1355
1352
  }
1356
1353
  // bind resize ONLY after the dataView is ready
1357
- this.bindResizeHook(this.slickGrid, this.gridOptions);
1354
+ this.bindResizeHook(this.slickGrid, this.options);
1358
1355
  // bind the Backend Service API callback functions only after the grid is initialized
1359
1356
  // because the preProcess() and onInit() might get triggered
1360
- if (this.gridOptions?.backendServiceApi) {
1361
- this.bindBackendCallbackFunctions(this.gridOptions);
1357
+ if (this.options?.backendServiceApi) {
1358
+ this.bindBackendCallbackFunctions(this.options);
1362
1359
  }
1363
1360
  // local grid, check if we need to show the Pagination
1364
1361
  // if so then also check if there's any presets and finally initialize the PaginationService
1365
1362
  // a local grid with Pagination presets will potentially have a different total of items, we'll need to get it from the DataView and update our total
1366
- if (this.gridOptions?.enablePagination && this._isLocalGrid) {
1363
+ if (this.options?.enablePagination && this._isLocalGrid) {
1367
1364
  this.showPagination = true;
1368
1365
  this.loadLocalGridPagination(this.dataset);
1369
1366
  }
@@ -1381,7 +1378,6 @@ class AngularSlickgridComponent {
1381
1378
  gridEventService: this.gridEventService,
1382
1379
  gridStateService: this.gridStateService,
1383
1380
  gridService: this.gridService,
1384
- groupingService: this.headerGroupingService,
1385
1381
  headerGroupingService: this.headerGroupingService,
1386
1382
  extensionService: this.extensionService,
1387
1383
  paginationComponent: this.slickPagination,
@@ -1401,8 +1397,8 @@ class AngularSlickgridComponent {
1401
1397
  const isSyncGridSelectionEnabled = this.gridStateService?.needToPreserveRowSelection() ?? false;
1402
1398
  if (this.slickGrid &&
1403
1399
  !isSyncGridSelectionEnabled &&
1404
- this.gridOptions?.backendServiceApi &&
1405
- (this.gridOptions.enableRowSelection || this.gridOptions.enableCheckboxSelector)) {
1400
+ this.options?.backendServiceApi &&
1401
+ (this.options.enableRowSelection || this.options.enableCheckboxSelector)) {
1406
1402
  this.slickGrid.setSelectedRows([]);
1407
1403
  }
1408
1404
  const { pageNumber, pageSize } = pagination;
@@ -1412,7 +1408,7 @@ class AngularSlickgridComponent {
1412
1408
  }
1413
1409
  }
1414
1410
  this._eventPubSubService.publish('onGridStateChanged', {
1415
- change: { newValues: { pageNumber, pageSize }, type: GridStateType.pagination },
1411
+ change: { newValues: { pageNumber, pageSize }, type: 'pagination' },
1416
1412
  gridState: this.gridStateService.getCurrentGridState(),
1417
1413
  });
1418
1414
  this.cd.markForCheck();
@@ -1422,19 +1418,19 @@ class AngularSlickgridComponent {
1422
1418
  * @param dataset
1423
1419
  */
1424
1420
  refreshGridData(dataset, totalCount) {
1425
- if (this.gridOptions?.enableEmptyDataWarningMessage && Array.isArray(dataset)) {
1421
+ if (this.options?.enableEmptyDataWarningMessage && Array.isArray(dataset)) {
1426
1422
  const finalTotalCount = totalCount || dataset.length;
1427
1423
  this.displayEmptyDataWarning(finalTotalCount < 1);
1428
1424
  }
1429
1425
  if (Array.isArray(dataset) && this.slickGrid && this.dataView?.setItems) {
1430
- this.dataView.setItems(dataset, this.gridOptions.datasetIdPropertyName ?? 'id');
1431
- if (!this.gridOptions.backendServiceApi && !this.gridOptions.enableTreeData) {
1426
+ this.dataView.setItems(dataset, this.options.datasetIdPropertyName ?? 'id');
1427
+ if (!this.options.backendServiceApi && !this.options.enableTreeData) {
1432
1428
  this.dataView.reSort();
1433
1429
  }
1434
1430
  if (dataset.length > 0) {
1435
1431
  if (!this._isDatasetInitialized) {
1436
1432
  this.loadFilterPresetsWhenDatasetInitialized();
1437
- if (this.gridOptions.enableCheckboxSelector) {
1433
+ if (this.options.enableCheckboxSelector) {
1438
1434
  this.loadRowSelectionPresetWhenExists();
1439
1435
  }
1440
1436
  }
@@ -1444,14 +1440,13 @@ class AngularSlickgridComponent {
1444
1440
  this.slickGrid.invalidate();
1445
1441
  }
1446
1442
  // display the Pagination component only after calling this refresh data first, we call it here so that if we preset pagination page number it will be shown correctly
1447
- this.showPagination = !!(this.gridOptions &&
1448
- (this.gridOptions.enablePagination ||
1449
- (this.gridOptions.backendServiceApi && this.gridOptions.enablePagination === undefined)));
1450
- if (this._paginationOptions && this.gridOptions?.pagination && this.gridOptions?.backendServiceApi) {
1451
- const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.gridOptions, this._paginationOptions);
1443
+ this.showPagination = !!(this.options &&
1444
+ (this.options.enablePagination || (this.options.backendServiceApi && this.options.enablePagination === undefined)));
1445
+ if (this._paginationOptions && this.options?.pagination && this.options?.backendServiceApi) {
1446
+ const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.options, this._paginationOptions);
1452
1447
  // when we have a totalCount use it, else we'll take it from the pagination object
1453
1448
  // only update the total items if it's different to avoid refreshing the UI
1454
- const totalRecords = totalCount !== undefined ? totalCount : this.gridOptions?.pagination?.totalItems;
1449
+ const totalRecords = totalCount !== undefined ? totalCount : this.options?.pagination?.totalItems;
1455
1450
  if (totalRecords !== undefined && totalRecords !== this.totalItems) {
1456
1451
  this.totalItems = +totalRecords;
1457
1452
  }
@@ -1465,8 +1460,8 @@ class AngularSlickgridComponent {
1465
1460
  }
1466
1461
  }
1467
1462
  // resize the grid inside a slight timeout, in case other DOM element changed prior to the resize (like a filter/pagination changed)
1468
- if (this.slickGrid && this.gridOptions.enableAutoResize) {
1469
- const delay = this.gridOptions.autoResize && this.gridOptions.autoResize.delay;
1463
+ if (this.slickGrid && this.options.enableAutoResize) {
1464
+ const delay = this.options.autoResize && this.options.autoResize.delay;
1470
1465
  this.resizerService.resizeGrid(delay || 10);
1471
1466
  }
1472
1467
  }
@@ -1507,19 +1502,19 @@ class AngularSlickgridComponent {
1507
1502
  * We will re-render the grid so that the new header and data shows up correctly.
1508
1503
  * If using i18n, we also need to trigger a re-translate of the column headers
1509
1504
  */
1510
- updateColumnDefinitionsList(newColumnDefinitions) {
1505
+ updateColumnDefinitionsList(newColumns) {
1511
1506
  // map the Editor model to editorClass and load editor collectionAsync
1512
- newColumnDefinitions = this.loadSlickGridEditors(newColumnDefinitions);
1513
- if (this.gridOptions.enableTranslate) {
1514
- this.extensionService.translateColumnHeaders(undefined, newColumnDefinitions);
1507
+ newColumns = this.loadSlickGridEditors(newColumns);
1508
+ if (this.options.enableTranslate) {
1509
+ this.extensionService.translateColumnHeaders(undefined, newColumns);
1515
1510
  }
1516
1511
  else {
1517
- this.extensionService.renderColumnHeaders(newColumnDefinitions, true);
1512
+ this.extensionService.renderColumnHeaders(newColumns, true);
1518
1513
  }
1519
- if (this.gridOptions?.enableAutoSizeColumns) {
1514
+ if (this.options?.enableAutoSizeColumns) {
1520
1515
  this.slickGrid.autosizeColumns();
1521
1516
  }
1522
- else if (this.gridOptions?.enableAutoResizeColumnsByCellContent && this.resizerService?.resizeColumnsByCellContent) {
1517
+ else if (this.options?.enableAutoResizeColumnsByCellContent && this.resizerService?.resizeColumnsByCellContent) {
1523
1518
  this.resizerService.resizeColumnsByCellContent();
1524
1519
  }
1525
1520
  }
@@ -1530,7 +1525,7 @@ class AngularSlickgridComponent {
1530
1525
  showHeaderRow(showing = true) {
1531
1526
  this.slickGrid.setHeaderRowVisibility(showing);
1532
1527
  if (showing === true && this._isGridInitialized) {
1533
- this.slickGrid.setColumns(this.columnDefinitions);
1528
+ this.slickGrid.setColumns(this.columns);
1534
1529
  }
1535
1530
  return showing;
1536
1531
  }
@@ -1548,8 +1543,8 @@ class AngularSlickgridComponent {
1548
1543
  * Loop through all column definitions and copy the original optional `width` properties optionally provided by the user.
1549
1544
  * We will use this when doing a resize by cell content, if user provided a `width` it won't override it.
1550
1545
  */
1551
- copyColumnWidthsReference(columnDefinitions) {
1552
- columnDefinitions.forEach((col) => (col.originalWidth = col.width));
1546
+ copyColumnWidthsReference(columns) {
1547
+ columns.forEach((col) => (col.originalWidth = col.width));
1553
1548
  }
1554
1549
  bindDifferentHooks(grid, gridOptions, dataView) {
1555
1550
  // on locale change, we have to manually translate the Headers, GridMenu
@@ -1632,8 +1627,8 @@ class AngularSlickgridComponent {
1632
1627
  this.handleOnItemCountChanged(dataView.getFilteredItemCount() || 0, args.itemCount);
1633
1628
  // when user has resize by content enabled, we'll force a full width calculation since we change our entire dataset
1634
1629
  if (args.itemCount > 0 &&
1635
- (this.gridOptions.autosizeColumnsByCellContentOnFirstLoad || this.gridOptions.enableAutoResizeColumnsByCellContent)) {
1636
- this.resizerService.resizeColumnsByCellContent(!this.gridOptions?.resizeByContentOnlyOnFirstLoad);
1630
+ (this.options.autosizeColumnsByCellContentOnFirstLoad || this.options.enableAutoResizeColumnsByCellContent)) {
1631
+ this.resizerService.resizeColumnsByCellContent(!this.options?.resizeByContentOnlyOnFirstLoad);
1637
1632
  }
1638
1633
  });
1639
1634
  if (gridOptions?.enableFiltering && !gridOptions.enableRowDetailView) {
@@ -1649,17 +1644,6 @@ class AngularSlickgridComponent {
1649
1644
  });
1650
1645
  }
1651
1646
  }
1652
- // @deprecated @user `dataview.globalItemMetadataProvider.getRowMetadata`
1653
- // did the user add a colspan callback? If so, hook it into the DataView getItemMetadata
1654
- if (gridOptions?.colspanCallback && dataView && dataView.getItem && dataView.getItemMetadata) {
1655
- dataView.getItemMetadata = (rowNumber) => {
1656
- let callbackResult = null;
1657
- if (gridOptions.colspanCallback) {
1658
- callbackResult = gridOptions.colspanCallback(dataView.getItem(rowNumber));
1659
- }
1660
- return callbackResult;
1661
- };
1662
- }
1663
1647
  }
1664
1648
  bindBackendCallbackFunctions(gridOptions) {
1665
1649
  const backendApi = gridOptions.backendServiceApi;
@@ -1672,19 +1656,13 @@ class AngularSlickgridComponent {
1672
1656
  // if user entered some any "presets", we need to reflect them all in the grid
1673
1657
  if (gridOptions?.presets) {
1674
1658
  // Filters "presets"
1675
- if (backendApiService.updateFilters &&
1676
- Array.isArray(gridOptions.presets.filters) &&
1677
- gridOptions.presets.filters.length > 0) {
1659
+ if (backendApiService.updateFilters && Array.isArray(gridOptions.presets.filters) && gridOptions.presets.filters.length > 0) {
1678
1660
  backendApiService.updateFilters(gridOptions.presets.filters, true);
1679
1661
  }
1680
1662
  // Sorters "presets"
1681
- if (backendApiService.updateSorters &&
1682
- Array.isArray(gridOptions.presets.sorters) &&
1683
- gridOptions.presets.sorters.length > 0) {
1663
+ if (backendApiService.updateSorters && Array.isArray(gridOptions.presets.sorters) && gridOptions.presets.sorters.length > 0) {
1684
1664
  // when using multi-column sort, we can have multiple but on single sort then only grab the first sort provided
1685
- const sortColumns = this.gridOptions.multiColumnSort
1686
- ? gridOptions.presets.sorters
1687
- : gridOptions.presets.sorters.slice(0, 1);
1665
+ const sortColumns = this.options.multiColumnSort ? gridOptions.presets.sorters : gridOptions.presets.sorters.slice(0, 1);
1688
1666
  backendApiService.updateSorters(undefined, sortColumns);
1689
1667
  }
1690
1668
  // Pagination "presets"
@@ -1714,7 +1692,7 @@ class AngularSlickgridComponent {
1714
1692
  backendApi.preProcess();
1715
1693
  }
1716
1694
  // the processes can be a Promise (like Http)
1717
- const totalItems = this.gridOptions?.pagination?.totalItems ?? 0;
1695
+ const totalItems = this.options?.pagination?.totalItems ?? 0;
1718
1696
  if (process instanceof Promise) {
1719
1697
  process
1720
1698
  .then((processResult) => backendUtilityService.executeBackendProcessesCallback(startTime, processResult, backendApi, totalItems))
@@ -1736,9 +1714,9 @@ class AngularSlickgridComponent {
1736
1714
  }
1737
1715
  addBackendInfiniteScrollCallback() {
1738
1716
  if (this.slickGrid &&
1739
- this.gridOptions.backendServiceApi &&
1717
+ this.options.backendServiceApi &&
1740
1718
  this.hasBackendInfiniteScroll() &&
1741
- !this.gridOptions.backendServiceApi?.onScrollEnd) {
1719
+ !this.options.backendServiceApi?.onScrollEnd) {
1742
1720
  const onScrollEnd = () => {
1743
1721
  this.backendUtilityService.setInfiniteScrollBottomHit(true);
1744
1722
  // even if we're not showing pagination, we still use pagination service behind the scene
@@ -1750,7 +1728,7 @@ class AngularSlickgridComponent {
1750
1728
  }
1751
1729
  });
1752
1730
  };
1753
- this.gridOptions.backendServiceApi.onScrollEnd = onScrollEnd;
1731
+ this.options.backendServiceApi.onScrollEnd = onScrollEnd;
1754
1732
  // subscribe to SlickGrid onScroll to determine when reaching the end of the scroll bottom position
1755
1733
  // run onScrollEnd() method when that happens
1756
1734
  this._eventHandler.subscribe(this.slickGrid.onScroll, (_e, args) => {
@@ -1767,8 +1745,8 @@ class AngularSlickgridComponent {
1767
1745
  });
1768
1746
  // use postProcess to identify when scrollEnd process is finished to avoid calling the scrollEnd multiple times
1769
1747
  // we also need to keep a ref of the user's postProcess and call it after our own postProcess
1770
- const orgPostProcess = this.gridOptions.backendServiceApi.postProcess;
1771
- this.gridOptions.backendServiceApi.postProcess = (processResult) => {
1748
+ const orgPostProcess = this.options.backendServiceApi.postProcess;
1749
+ this.options.backendServiceApi.postProcess = (processResult) => {
1772
1750
  this._scrollEndCalled = false;
1773
1751
  if (orgPostProcess) {
1774
1752
  orgPostProcess(processResult);
@@ -1802,9 +1780,7 @@ class AngularSlickgridComponent {
1802
1780
  // if user entered some Sort "presets", we need to reflect them all in the DOM
1803
1781
  if (gridOptions.enableSorting && Array.isArray(gridOptions.presets?.sorters)) {
1804
1782
  // when using multi-column sort, we can have multiple but on single sort then only grab the first sort provided
1805
- const sortColumns = this.gridOptions.multiColumnSort
1806
- ? gridOptions.presets.sorters
1807
- : gridOptions.presets.sorters.slice(0, 1);
1783
+ const sortColumns = this.options.multiColumnSort ? gridOptions.presets.sorters : gridOptions.presets.sorters.slice(0, 1);
1808
1784
  this.sortService.loadGridSorters(sortColumns);
1809
1785
  }
1810
1786
  }
@@ -1822,18 +1798,18 @@ class AngularSlickgridComponent {
1822
1798
  this.slickFooter.metrics = this.metrics;
1823
1799
  }
1824
1800
  // when using local (in-memory) dataset, we'll display a warning message when filtered data is empty
1825
- if (this._isLocalGrid && this.gridOptions?.enableEmptyDataWarningMessage) {
1801
+ if (this._isLocalGrid && this.options?.enableEmptyDataWarningMessage) {
1826
1802
  this.displayEmptyDataWarning(currentPageRowItemCount === 0);
1827
1803
  }
1828
1804
  // when autoResize.autoHeight is enabled, we'll want to call a resize
1829
- if (this.gridOptions.enableAutoResize && this.resizerService.isAutoHeightEnabled && currentPageRowItemCount > 0) {
1805
+ if (this.options.enableAutoResize && this.resizerService.isAutoHeightEnabled && currentPageRowItemCount > 0) {
1830
1806
  this.resizerService.resizeGrid();
1831
1807
  }
1832
1808
  }
1833
1809
  initializePaginationService(paginationOptions) {
1834
- if (this.gridOptions) {
1810
+ if (this.options) {
1835
1811
  this.paginationData = {
1836
- gridOptions: this.gridOptions,
1812
+ gridOptions: this.options,
1837
1813
  paginationService: this.paginationService,
1838
1814
  };
1839
1815
  this.paginationService.totalItems = this.totalItems;
@@ -1842,8 +1818,8 @@ class AngularSlickgridComponent {
1842
1818
  this.paginationChanged(paginationChanges);
1843
1819
  }), this._eventPubSubService.subscribe('onPaginationVisibilityChanged', (visibility) => {
1844
1820
  this.showPagination = visibility?.visible ?? false;
1845
- if (this.gridOptions?.backendServiceApi) {
1846
- this.backendUtilityService?.refreshBackendDataset(this.gridOptions);
1821
+ if (this.options?.backendServiceApi) {
1822
+ this.backendUtilityService?.refreshBackendDataset(this.options);
1847
1823
  }
1848
1824
  this.renderPagination(this.showPagination);
1849
1825
  }));
@@ -1886,20 +1862,20 @@ class AngularSlickgridComponent {
1886
1862
  /** Load any possible Columns Grid Presets */
1887
1863
  loadColumnPresetsWhenDatasetInitialized() {
1888
1864
  // if user entered some Columns "presets", we need to reflect them all in the grid
1889
- if (Array.isArray(this.gridOptions.presets?.columns) && this.gridOptions.presets.columns.length > 0) {
1890
- const gridPresetColumns = this.gridStateService.getAssociatedGridColumns(this.slickGrid, this.gridOptions.presets.columns);
1865
+ if (Array.isArray(this.options.presets?.columns) && this.options.presets.columns.length > 0) {
1866
+ const gridPresetColumns = this.gridStateService.getAssociatedGridColumns(this.slickGrid, this.options.presets.columns);
1891
1867
  if (Array.isArray(gridPresetColumns) && gridPresetColumns.length > 0 && Array.isArray(this._columnDefinitions)) {
1892
1868
  // make sure that the dynamic columns are included in presets (1.Row Move, 2. Row Selection, 3. Row Detail)
1893
- if (this.gridOptions.enableRowMoveManager) {
1894
- const rmmColId = this.gridOptions?.rowMoveManager?.columnId ?? '_move';
1869
+ if (this.options.enableRowMoveManager) {
1870
+ const rmmColId = this.options?.rowMoveManager?.columnId ?? '_move';
1895
1871
  this.insertDynamicPresetColumns(rmmColId, gridPresetColumns);
1896
1872
  }
1897
- if (this.gridOptions.enableCheckboxSelector) {
1898
- const chkColId = this.gridOptions?.checkboxSelector?.columnId ?? '_checkbox_selector';
1873
+ if (this.options.enableCheckboxSelector) {
1874
+ const chkColId = this.options?.checkboxSelector?.columnId ?? '_checkbox_selector';
1899
1875
  this.insertDynamicPresetColumns(chkColId, gridPresetColumns);
1900
1876
  }
1901
- if (this.gridOptions.enableRowDetailView) {
1902
- const rdvColId = this.gridOptions?.rowDetailView?.columnId ?? '_detail_selector';
1877
+ if (this.options.enableRowDetailView) {
1878
+ const rdvColId = this.options?.rowDetailView?.columnId ?? '_detail_selector';
1903
1879
  this.insertDynamicPresetColumns(rdvColId, gridPresetColumns);
1904
1880
  }
1905
1881
  // keep copy the original optional `width` properties optionally provided by the user.
@@ -1913,12 +1889,12 @@ class AngularSlickgridComponent {
1913
1889
  }
1914
1890
  /** Load any possible Filters Grid Presets */
1915
1891
  loadFilterPresetsWhenDatasetInitialized() {
1916
- if (this.gridOptions && !this.customDataView) {
1892
+ if (this.options && !this.customDataView) {
1917
1893
  // if user entered some Filter "presets", we need to reflect them all in the DOM
1918
1894
  // also note that a presets of Tree Data Toggling will also call this method because Tree Data toggling does work with data filtering
1919
1895
  // (collapsing a parent will basically use Filter for hidding (aka collapsing) away the child underneat it)
1920
- if (Array.isArray(this.gridOptions.presets?.filters) || Array.isArray(this.gridOptions.presets?.treeData?.toggledItems)) {
1921
- this.filterService.populateColumnFilterSearchTermPresets(this.gridOptions.presets?.filters || []);
1896
+ if (Array.isArray(this.options.presets?.filters) || Array.isArray(this.options.presets?.treeData?.toggledItems)) {
1897
+ this.filterService.populateColumnFilterSearchTermPresets(this.options.presets?.filters || []);
1922
1898
  }
1923
1899
  }
1924
1900
  }
@@ -1928,26 +1904,24 @@ class AngularSlickgridComponent {
1928
1904
  * a local grid with Pagination presets will potentially have a different total of items, we'll need to get it from the DataView and update our total
1929
1905
  */
1930
1906
  loadLocalGridPagination(dataset) {
1931
- if (this.gridOptions && this._paginationOptions) {
1907
+ if (this.options && this._paginationOptions) {
1932
1908
  this.totalItems = Array.isArray(dataset) ? dataset.length : 0;
1933
1909
  if (this._paginationOptions && this.dataView?.getPagingInfo) {
1934
1910
  const slickPagingInfo = this.dataView.getPagingInfo();
1935
- if (slickPagingInfo &&
1936
- 'totalRows' in slickPagingInfo &&
1937
- this._paginationOptions.totalItems !== slickPagingInfo.totalRows) {
1911
+ if (slickPagingInfo && 'totalRows' in slickPagingInfo && this._paginationOptions.totalItems !== slickPagingInfo.totalRows) {
1938
1912
  this.totalItems = slickPagingInfo.totalRows || 0;
1939
1913
  }
1940
1914
  }
1941
1915
  this._paginationOptions.totalItems = this.totalItems;
1942
- const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.gridOptions, this._paginationOptions);
1916
+ const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.options, this._paginationOptions);
1943
1917
  this.initializePaginationService(paginationOptions);
1944
1918
  }
1945
1919
  }
1946
1920
  /** Load any Row Selections into the DataView that were presets by the user */
1947
1921
  loadRowSelectionPresetWhenExists() {
1948
1922
  // if user entered some Row Selections "presets"
1949
- const presets = this.gridOptions?.presets;
1950
- const enableRowSelection = this.gridOptions && (this.gridOptions.enableCheckboxSelector || this.gridOptions.enableRowSelection);
1923
+ const presets = this.options?.presets;
1924
+ const enableRowSelection = this.options && (this.options.enableCheckboxSelector || this.options.enableRowSelection);
1951
1925
  if (enableRowSelection &&
1952
1926
  this.slickGrid?.getSelectionModel() &&
1953
1927
  presets?.rowSelection &&
@@ -1973,7 +1947,7 @@ class AngularSlickgridComponent {
1973
1947
  }
1974
1948
  }
1975
1949
  hasBackendInfiniteScroll(gridOptions) {
1976
- return !!(gridOptions || this.gridOptions).backendServiceApi?.service.options?.infiniteScroll;
1950
+ return !!(gridOptions || this.options).backendServiceApi?.service.options?.infiniteScroll;
1977
1951
  }
1978
1952
  mergeGridOptions(gridOptions) {
1979
1953
  gridOptions.gridId = this.gridId;
@@ -2027,12 +2001,12 @@ class AngularSlickgridComponent {
2027
2001
  }
2028
2002
  /** Pre-Register any Resource that don't require SlickGrid to be instantiated (for example RxJS Resource & RowDetail) */
2029
2003
  preRegisterResources() {
2030
- this._registeredResources = this.gridOptions?.externalResources || [];
2004
+ this._registeredResources = this.options?.externalResources || [];
2031
2005
  // Angular-Slickgrid requires RxJS, so we'll register it as the first resource
2032
2006
  this.registerRxJsResource(new RxJsResource());
2033
- if (this.gridOptions.enableRowDetailView) {
2007
+ if (this.options.enableRowDetailView) {
2034
2008
  this.slickRowDetailView = new SlickRowDetailView(this.angularUtilService, this.appRef, this._eventPubSubService, this.elm.nativeElement, this.rxjs);
2035
- this.slickRowDetailView.create(this.columnDefinitions, this.gridOptions);
2009
+ this.slickRowDetailView.create(this.columns, this.options);
2036
2010
  this.extensionService.addExtensionToList(ExtensionName.rowDetailView, {
2037
2011
  name: ExtensionName.rowDetailView,
2038
2012
  instance: this.slickRowDetailView,
@@ -2056,16 +2030,16 @@ class AngularSlickgridComponent {
2056
2030
  // push all other Services that we want to be registered
2057
2031
  this._registeredResources.push(this.gridService, this.gridStateService);
2058
2032
  // when using Grouping/DraggableGrouping/Colspan register its Service
2059
- if ((this.gridOptions.createPreHeaderPanel && this.gridOptions.createTopHeaderPanel) ||
2060
- (this.gridOptions.createPreHeaderPanel && !this.gridOptions.enableDraggableGrouping)) {
2033
+ if ((this.options.createPreHeaderPanel && this.options.createTopHeaderPanel) ||
2034
+ (this.options.createPreHeaderPanel && !this.options.enableDraggableGrouping)) {
2061
2035
  this._registeredResources.push(this.headerGroupingService);
2062
2036
  }
2063
2037
  // when using Tree Data View, register its Service
2064
- if (this.gridOptions.enableTreeData) {
2038
+ if (this.options.enableTreeData) {
2065
2039
  this._registeredResources.push(this.treeDataService);
2066
2040
  }
2067
2041
  // when user enables translation, we need to translate Headers on first pass & subsequently in the bindDifferentHooks
2068
- if (this.gridOptions.enableTranslate) {
2042
+ if (this.options.enableTranslate) {
2069
2043
  this.extensionService.translateColumnHeaders();
2070
2044
  }
2071
2045
  // also initialize (render) the empty warning component
@@ -2076,7 +2050,7 @@ class AngularSlickgridComponent {
2076
2050
  this.initializeExternalResources(this._registeredResources);
2077
2051
  // initialize RowDetail separately since we already added it to the ExtensionList via `addExtensionToList()` but not in external resources,
2078
2052
  // because we don't want to dispose the extension/resource more than once (because externalResources/extensionList are both looping through their list to dispose of them)
2079
- if (this.gridOptions.enableRowDetailView && this.slickRowDetailView) {
2053
+ if (this.options.enableRowDetailView && this.slickRowDetailView) {
2080
2054
  this.slickRowDetailView.init(this.slickGrid);
2081
2055
  }
2082
2056
  }
@@ -2097,9 +2071,9 @@ class AngularSlickgridComponent {
2097
2071
  * @param {Boolean} shouldDisposePaginationService - when disposing the Pagination, do we also want to dispose of the Pagination Service? (defaults to True)
2098
2072
  */
2099
2073
  renderPagination(showPagination = true) {
2100
- if (this.slickGrid && this.gridOptions?.enablePagination && !this._isPaginationInitialized && showPagination) {
2101
- if (this.gridOptions.customPaginationComponent) {
2102
- const paginationComp = this.angularUtilService.createAngularComponent(this.gridOptions.customPaginationComponent);
2074
+ if (this.slickGrid && this.options?.enablePagination && !this._isPaginationInitialized && showPagination) {
2075
+ if (this.options.customPaginationComponent) {
2076
+ const paginationComp = this.angularUtilService.createAngularComponent(this.options.customPaginationComponent);
2103
2077
  this.slickPagination = paginationComp.componentRef.instance;
2104
2078
  }
2105
2079
  else {
@@ -2134,7 +2108,7 @@ class AngularSlickgridComponent {
2134
2108
  else if (Array.isArray(flatDatasetInput) && flatDatasetInput.length > 0) {
2135
2109
  // we need to first convert the flat dataset to a hierarchical dataset and then sort it
2136
2110
  // we'll also add props, by mutation, required by the TreeDataService on the flat array like `__hasChildren`, `parentId` and anything else to work properly
2137
- sortedDatasetResult = this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(flatDatasetInput, this._columnDefinitions, this.gridOptions);
2111
+ sortedDatasetResult = this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(flatDatasetInput, this._columnDefinitions, this.options);
2138
2112
  this.sharedService.hierarchicalDataset = sortedDatasetResult.hierarchical;
2139
2113
  flatDatasetOutput = sortedDatasetResult.flat;
2140
2114
  }
@@ -2145,11 +2119,11 @@ class AngularSlickgridComponent {
2145
2119
  return flatDatasetOutput;
2146
2120
  }
2147
2121
  /** Prepare and load all SlickGrid editors, if an async editor is found then we'll also execute it. */
2148
- loadSlickGridEditors(columnDefinitions) {
2149
- if (columnDefinitions.some((col) => `${col.id}`.includes('.'))) {
2122
+ loadSlickGridEditors(columns) {
2123
+ if (columns.some((col) => `${col.id}`.includes('.'))) {
2150
2124
  console.error('[Angular-Slickgrid] Make sure that none of your Column Definition "id" property includes a dot in its name because that will cause some problems with the Editors. For example if your column definition "field" property is "user.firstName" then use "firstName" as the column "id".');
2151
2125
  }
2152
- return columnDefinitions.map((column) => {
2126
+ return columns.map((column) => {
2153
2127
  // on every Editor that have a "collectionAsync", resolve the data and assign it to the "collection" property
2154
2128
  if (column?.editor?.collectionAsync) {
2155
2129
  this.loadEditorCollectionAsync(column);
@@ -2159,8 +2133,8 @@ class AngularSlickgridComponent {
2159
2133
  }
2160
2134
  suggestDateParsingWhenHelpful() {
2161
2135
  if (this.dataView?.getItemCount() > WARN_NO_PREPARSE_DATE_SIZE &&
2162
- !this.gridOptions.silenceWarnings &&
2163
- !this.gridOptions.preParseDateColumns &&
2136
+ !this.options.silenceWarnings &&
2137
+ !this.options.preParseDateColumns &&
2164
2138
  this.slickGrid.getColumns().some((c) => isColumnDateType(c.type))) {
2165
2139
  console.warn('[Slickgrid-Universal] For getting better perf, we suggest you enable the `preParseDateColumns` grid option, ' +
2166
2140
  'for more info visit => https://ghiscoding.gitbook.io/angular-slickgrid/column-functionalities/sorting#pre-parse-date-columns-for-better-perf');
@@ -2183,20 +2157,20 @@ class AngularSlickgridComponent {
2183
2157
  }
2184
2158
  }
2185
2159
  }
2186
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
2187
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AngularSlickgridComponent, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", gridOptions: "gridOptions", paginationOptions: "paginationOptions", columnDefinitions: "columnDefinitions", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, outputs: { columnDefinitionsChange: "columnDefinitionsChange" }, providers: [
2160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
2161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AngularSlickgridComponent, isStandalone: false, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", options: "options", paginationOptions: "paginationOptions", columns: "columns", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, outputs: { columnsChange: "columnsChange" }, providers: [
2188
2162
  // make everything transient (non-singleton)
2189
2163
  AngularUtilService,
2190
2164
  TranslaterService,
2191
2165
  ], queries: [{ propertyName: "slickgridHeader", first: true, predicate: ["slickgridHeader"], descendants: true, static: true }, { propertyName: "slickgridFooter", first: true, predicate: ["slickgridFooter"], descendants: true, static: true }], ngImport: i0, template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], preserveWhitespaces: true });
2192
2166
  }
2193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
2167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
2194
2168
  type: Component,
2195
2169
  args: [{ selector: 'angular-slickgrid', providers: [
2196
2170
  // make everything transient (non-singleton)
2197
2171
  AngularUtilService,
2198
2172
  TranslaterService,
2199
- ], template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n" }]
2173
+ ], standalone: false, template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n" }]
2200
2174
  }], ctorParameters: () => [{ type: AngularUtilService }, { type: i0.ApplicationRef }, { type: i0.ChangeDetectorRef }, { type: ContainerService }, { type: i0.ElementRef }, { type: i1.TranslateService, decorators: [{
2201
2175
  type: Optional
2202
2176
  }] }, { type: TranslaterService, decorators: [{
@@ -2211,13 +2185,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2211
2185
  type: Input
2212
2186
  }], gridId: [{
2213
2187
  type: Input
2214
- }], gridOptions: [{
2188
+ }], options: [{
2215
2189
  type: Input
2216
2190
  }], paginationOptions: [{
2217
2191
  type: Input
2218
- }], columnDefinitions: [{
2192
+ }], columns: [{
2219
2193
  type: Input
2220
- }], columnDefinitionsChange: [{
2194
+ }], columnsChange: [{
2221
2195
  type: Output
2222
2196
  }], dataset: [{
2223
2197
  type: Input
@@ -2243,11 +2217,11 @@ class AngularSlickgridModule {
2243
2217
  ],
2244
2218
  };
2245
2219
  }
2246
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2247
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule, TranslateModule], exports: [AngularSlickgridComponent] });
2248
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule, TranslateModule] });
2220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2221
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule, TranslateModule], exports: [AngularSlickgridComponent] });
2222
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule, TranslateModule] });
2249
2223
  }
2250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, decorators: [{
2251
2225
  type: NgModule,
2252
2226
  args: [{
2253
2227
  imports: [CommonModule, TranslateModule],