angular-slickgrid 9.0.0 → 9.0.2

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 (395) hide show
  1. package/LICENSE +1 -1
  2. package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs +16 -16
  3. package/package.json +27 -14
  4. package/.gitbook.yaml +0 -5
  5. package/CHANGELOG.md +0 -1691
  6. package/CONTRIBUTING.md +0 -17
  7. package/angular.json +0 -133
  8. package/coverage/base.css +0 -224
  9. package/coverage/block-navigation.js +0 -87
  10. package/coverage/clover.xml +0 -1620
  11. package/coverage/coverage-final.json +0 -9
  12. package/coverage/favicon.png +0 -0
  13. package/coverage/index.html +0 -176
  14. package/coverage/library/components/angular-slickgrid.component.ts.html +0 -5074
  15. package/coverage/library/components/index.html +0 -116
  16. package/coverage/library/constants.ts.html +0 -397
  17. package/coverage/library/extensions/index.html +0 -116
  18. package/coverage/library/extensions/slickRowDetailView.ts.html +0 -1261
  19. package/coverage/library/index.html +0 -116
  20. package/coverage/library/modules/angular-slickgrid.module.ts.html +0 -166
  21. package/coverage/library/modules/index.html +0 -116
  22. package/coverage/library/services/angularUtil.service.ts.html +0 -445
  23. package/coverage/library/services/container.service.ts.html +0 -163
  24. package/coverage/library/services/index.html +0 -161
  25. package/coverage/library/services/translater.service.ts.html +0 -199
  26. package/coverage/library/services/utilities.ts.html +0 -142
  27. package/coverage/prettify.css +0 -1
  28. package/coverage/prettify.js +0 -2
  29. package/coverage/sort-arrow-sprite.png +0 -0
  30. package/coverage/sorter.js +0 -196
  31. package/dist/LICENSE +0 -21
  32. package/dist/README.md +0 -142
  33. package/docs/README.md +0 -5
  34. package/docs/TOC.md +0 -105
  35. package/docs/backend-services/Custom-Backend-Service.md +0 -50
  36. package/docs/backend-services/GraphQL.md +0 -276
  37. package/docs/backend-services/OData.md +0 -245
  38. package/docs/backend-services/graphql/GraphQL-Filtering.md +0 -156
  39. package/docs/backend-services/graphql/GraphQL-JSON-Result.md +0 -85
  40. package/docs/backend-services/graphql/GraphQL-Pagination.md +0 -77
  41. package/docs/backend-services/graphql/GraphQL-Sorting.md +0 -78
  42. package/docs/column-functionalities/cell-menu.md +0 -212
  43. package/docs/column-functionalities/editors/autocomplete-editor.md +0 -466
  44. package/docs/column-functionalities/editors/date-editor-flatpickr.md +0 -71
  45. package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +0 -91
  46. package/docs/column-functionalities/editors/longtext-editor-textarea.md +0 -80
  47. package/docs/column-functionalities/editors/select-dropdown-editor.md +0 -227
  48. package/docs/column-functionalities/editors.md +0 -604
  49. package/docs/column-functionalities/filters/autocomplete-filter.md +0 -183
  50. package/docs/column-functionalities/filters/compound-filters.md +0 -234
  51. package/docs/column-functionalities/filters/custom-filter.md +0 -117
  52. package/docs/column-functionalities/filters/filter-intro.md +0 -81
  53. package/docs/column-functionalities/filters/input-filter.md +0 -260
  54. package/docs/column-functionalities/filters/range-filters.md +0 -188
  55. package/docs/column-functionalities/filters/select-filter.md +0 -695
  56. package/docs/column-functionalities/filters/single-search-filter.md +0 -77
  57. package/docs/column-functionalities/filters/styling-filled-filters.md +0 -45
  58. package/docs/column-functionalities/formatters.md +0 -325
  59. package/docs/column-functionalities/sorting.md +0 -200
  60. package/docs/developer-guides/csp-compliance.md +0 -64
  61. package/docs/events/Available-Events.md +0 -223
  62. package/docs/events/Grid-&-DataView-Events.md +0 -211
  63. package/docs/getting-started/quick-start.md +0 -230
  64. package/docs/getting-started/troubleshooting.md +0 -80
  65. package/docs/grid-functionalities/Column-Picker.md +0 -22
  66. package/docs/grid-functionalities/Composite-Editor-Modal.md +0 -627
  67. package/docs/grid-functionalities/Context-Menu.md +0 -226
  68. package/docs/grid-functionalities/Custom-Footer.md +0 -80
  69. package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +0 -258
  70. package/docs/grid-functionalities/Export-to-Excel.md +0 -457
  71. package/docs/grid-functionalities/Export-to-Text-File.md +0 -165
  72. package/docs/grid-functionalities/FAQ.md +0 -53
  73. package/docs/grid-functionalities/Global-Options.md +0 -29
  74. package/docs/grid-functionalities/Grid-Auto-Resize.md +0 -218
  75. package/docs/grid-functionalities/Grid-Menu.md +0 -134
  76. package/docs/grid-functionalities/Grid-State-&-Preset.md +0 -245
  77. package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +0 -125
  78. package/docs/grid-functionalities/Resize-by-Cell-Content.md +0 -138
  79. package/docs/grid-functionalities/Row-Selection.md +0 -247
  80. package/docs/grid-functionalities/Row-based-edit.md +0 -71
  81. package/docs/grid-functionalities/add-update-highlight.md +0 -258
  82. package/docs/grid-functionalities/column-row-spanning.md +0 -74
  83. package/docs/grid-functionalities/dynamic-item-metadata.md +0 -124
  84. package/docs/grid-functionalities/excel-copy-buffer.md +0 -145
  85. package/docs/grid-functionalities/frozen-columns-rows.md +0 -164
  86. package/docs/grid-functionalities/grouping-and-aggregators.md +0 -269
  87. package/docs/grid-functionalities/header-footer-slots.md +0 -22
  88. package/docs/grid-functionalities/infinite-scroll.md +0 -150
  89. package/docs/grid-functionalities/providing-grid-data.md +0 -61
  90. package/docs/grid-functionalities/row-detail.md +0 -530
  91. package/docs/grid-functionalities/tree-data-grid.md +0 -391
  92. package/docs/localization/Localization---Component-Sample.md +0 -87
  93. package/docs/localization/Localization-with-Custom-Locales.md +0 -66
  94. package/docs/localization/Localization-with-ngx-translate.md +0 -148
  95. package/docs/migrations/migration-to-2.x.md +0 -304
  96. package/docs/migrations/migration-to-3.x.md +0 -295
  97. package/docs/migrations/migration-to-4.x.md +0 -83
  98. package/docs/migrations/migration-to-5.x.md +0 -160
  99. package/docs/migrations/migration-to-6.x.md +0 -128
  100. package/docs/migrations/migration-to-7.x.md +0 -294
  101. package/docs/migrations/migration-to-8.x.md +0 -316
  102. package/docs/migrations/migration-to-9.x.md +0 -219
  103. package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +0 -79
  104. package/docs/styling/dark-mode.md +0 -100
  105. package/docs/styling/styling.md +0 -250
  106. package/docs/testing/testing-patterns.md +0 -73
  107. package/eslint.config.mjs +0 -60
  108. package/ng-package.json +0 -10
  109. package/src/assets/angular-logo.png +0 -0
  110. package/src/assets/angular-logo2.png +0 -0
  111. package/src/assets/data/collection_100_numbers.json +0 -12
  112. package/src/assets/data/collection_500_numbers.json +0 -52
  113. package/src/assets/data/countries.json +0 -245
  114. package/src/assets/data/country_names.json +0 -245
  115. package/src/assets/data/customers_100.json +0 -102
  116. package/src/assets/data/users.csv +0 -5
  117. package/src/assets/i18n/en.json +0 -102
  118. package/src/assets/i18n/fr.json +0 -103
  119. package/src/demos/app-routing.module.ts +0 -108
  120. package/src/demos/app.component.html +0 -187
  121. package/src/demos/app.component.scss +0 -79
  122. package/src/demos/app.component.ts +0 -11
  123. package/src/demos/app.module.ts +0 -196
  124. package/src/demos/environments/environment.dev.ts +0 -3
  125. package/src/demos/environments/environment.prod.ts +0 -3
  126. package/src/demos/environments/environment.ts +0 -8
  127. package/src/demos/examples/custom-angularComponentEditor.ts +0 -187
  128. package/src/demos/examples/custom-angularComponentFilter.ts +0 -123
  129. package/src/demos/examples/custom-buttonFormatter.component.ts +0 -13
  130. package/src/demos/examples/custom-inputEditor.ts +0 -132
  131. package/src/demos/examples/custom-inputFilter.ts +0 -134
  132. package/src/demos/examples/custom-titleFormatter.component.ts +0 -9
  133. package/src/demos/examples/data/collection_100_numbers.json +0 -12
  134. package/src/demos/examples/data/collection_500_numbers.json +0 -52
  135. package/src/demos/examples/data/countries.json +0 -245
  136. package/src/demos/examples/data/country_names.json +0 -245
  137. package/src/demos/examples/data/customers_100.json +0 -102
  138. package/src/demos/examples/data/users.csv +0 -5
  139. package/src/demos/examples/editor-ng-select.component.ts +0 -38
  140. package/src/demos/examples/example01.component.html +0 -48
  141. package/src/demos/examples/example01.component.ts +0 -109
  142. package/src/demos/examples/example02.component.html +0 -45
  143. package/src/demos/examples/example02.component.ts +0 -218
  144. package/src/demos/examples/example03.component.html +0 -118
  145. package/src/demos/examples/example03.component.ts +0 -694
  146. package/src/demos/examples/example04.component.html +0 -87
  147. package/src/demos/examples/example04.component.ts +0 -326
  148. package/src/demos/examples/example05.component.html +0 -151
  149. package/src/demos/examples/example05.component.ts +0 -474
  150. package/src/demos/examples/example06.component.html +0 -163
  151. package/src/demos/examples/example06.component.ts +0 -446
  152. package/src/demos/examples/example07.component.html +0 -56
  153. package/src/demos/examples/example07.component.scss +0 -10
  154. package/src/demos/examples/example07.component.ts +0 -216
  155. package/src/demos/examples/example08.component.html +0 -51
  156. package/src/demos/examples/example08.component.scss +0 -23
  157. package/src/demos/examples/example08.component.ts +0 -195
  158. package/src/demos/examples/example09.component.html +0 -55
  159. package/src/demos/examples/example09.component.scss +0 -22
  160. package/src/demos/examples/example09.component.ts +0 -302
  161. package/src/demos/examples/example10.component.html +0 -103
  162. package/src/demos/examples/example10.component.ts +0 -309
  163. package/src/demos/examples/example11.component.html +0 -91
  164. package/src/demos/examples/example11.component.ts +0 -276
  165. package/src/demos/examples/example12.component.html +0 -98
  166. package/src/demos/examples/example12.component.ts +0 -317
  167. package/src/demos/examples/example13.component.html +0 -96
  168. package/src/demos/examples/example13.component.ts +0 -370
  169. package/src/demos/examples/example14.component.html +0 -50
  170. package/src/demos/examples/example14.component.scss +0 -11
  171. package/src/demos/examples/example14.component.ts +0 -156
  172. package/src/demos/examples/example15.component.html +0 -56
  173. package/src/demos/examples/example15.component.ts +0 -304
  174. package/src/demos/examples/example16.component.html +0 -77
  175. package/src/demos/examples/example16.component.ts +0 -277
  176. package/src/demos/examples/example17.component.html +0 -50
  177. package/src/demos/examples/example17.component.ts +0 -109
  178. package/src/demos/examples/example18.component.html +0 -132
  179. package/src/demos/examples/example18.component.ts +0 -445
  180. package/src/demos/examples/example19-rowdetail.component.html +0 -40
  181. package/src/demos/examples/example19-rowdetail.component.ts +0 -54
  182. package/src/demos/examples/example19.component.html +0 -79
  183. package/src/demos/examples/example19.component.ts +0 -316
  184. package/src/demos/examples/example20.component.html +0 -76
  185. package/src/demos/examples/example20.component.scss +0 -11
  186. package/src/demos/examples/example20.component.ts +0 -341
  187. package/src/demos/examples/example21.component.html +0 -86
  188. package/src/demos/examples/example21.component.scss +0 -16
  189. package/src/demos/examples/example21.component.ts +0 -140
  190. package/src/demos/examples/example22.component.html +0 -41
  191. package/src/demos/examples/example22.component.ts +0 -117
  192. package/src/demos/examples/example23.component.html +0 -111
  193. package/src/demos/examples/example23.component.ts +0 -323
  194. package/src/demos/examples/example24.component.html +0 -120
  195. package/src/demos/examples/example24.component.scss +0 -62
  196. package/src/demos/examples/example24.component.ts +0 -641
  197. package/src/demos/examples/example25.component.html +0 -60
  198. package/src/demos/examples/example25.component.scss +0 -8
  199. package/src/demos/examples/example25.component.ts +0 -255
  200. package/src/demos/examples/example26.component.html +0 -98
  201. package/src/demos/examples/example26.component.scss +0 -42
  202. package/src/demos/examples/example26.component.ts +0 -383
  203. package/src/demos/examples/example27.component.html +0 -138
  204. package/src/demos/examples/example27.component.scss +0 -10
  205. package/src/demos/examples/example27.component.ts +0 -369
  206. package/src/demos/examples/example28.component.html +0 -143
  207. package/src/demos/examples/example28.component.scss +0 -54
  208. package/src/demos/examples/example28.component.ts +0 -453
  209. package/src/demos/examples/example29.component.html +0 -30
  210. package/src/demos/examples/example29.component.ts +0 -70
  211. package/src/demos/examples/example30.component.html +0 -116
  212. package/src/demos/examples/example30.component.scss +0 -20
  213. package/src/demos/examples/example30.component.ts +0 -1070
  214. package/src/demos/examples/example32.component.html +0 -77
  215. package/src/demos/examples/example32.component.scss +0 -8
  216. package/src/demos/examples/example32.component.ts +0 -905
  217. package/src/demos/examples/example33.component.html +0 -50
  218. package/src/demos/examples/example33.component.scss +0 -46
  219. package/src/demos/examples/example33.component.ts +0 -571
  220. package/src/demos/examples/example34.component.html +0 -82
  221. package/src/demos/examples/example34.component.scss +0 -77
  222. package/src/demos/examples/example34.component.ts +0 -434
  223. package/src/demos/examples/example35.component.html +0 -77
  224. package/src/demos/examples/example35.component.scss +0 -18
  225. package/src/demos/examples/example35.component.ts +0 -264
  226. package/src/demos/examples/example36.component.html +0 -56
  227. package/src/demos/examples/example36.component.scss +0 -26
  228. package/src/demos/examples/example36.component.ts +0 -504
  229. package/src/demos/examples/example37.component.html +0 -30
  230. package/src/demos/examples/example37.component.ts +0 -123
  231. package/src/demos/examples/example38.component.html +0 -104
  232. package/src/demos/examples/example38.component.scss +0 -8
  233. package/src/demos/examples/example38.component.ts +0 -420
  234. package/src/demos/examples/example39.component.html +0 -112
  235. package/src/demos/examples/example39.component.scss +0 -8
  236. package/src/demos/examples/example39.component.ts +0 -371
  237. package/src/demos/examples/example40.component.html +0 -76
  238. package/src/demos/examples/example40.component.ts +0 -226
  239. package/src/demos/examples/example41.component.html +0 -50
  240. package/src/demos/examples/example41.component.scss +0 -42
  241. package/src/demos/examples/example41.component.ts +0 -229
  242. package/src/demos/examples/example42.component.html +0 -47
  243. package/src/demos/examples/example42.component.ts +0 -203
  244. package/src/demos/examples/example43.component.html +0 -94
  245. package/src/demos/examples/example43.component.scss +0 -30
  246. package/src/demos/examples/example43.component.ts +0 -449
  247. package/src/demos/examples/example44.component.html +0 -78
  248. package/src/demos/examples/example44.component.scss +0 -50
  249. package/src/demos/examples/example44.component.ts +0 -375
  250. package/src/demos/examples/example45-detail.component.html +0 -15
  251. package/src/demos/examples/example45-detail.component.ts +0 -97
  252. package/src/demos/examples/example45.component.html +0 -110
  253. package/src/demos/examples/example45.component.scss +0 -50
  254. package/src/demos/examples/example45.component.ts +0 -243
  255. package/src/demos/examples/filter-ng-select.component.ts +0 -33
  256. package/src/demos/examples/grid-custom-pager.component.html +0 -60
  257. package/src/demos/examples/grid-custom-pager.component.scss +0 -57
  258. package/src/demos/examples/grid-custom-pager.component.ts +0 -107
  259. package/src/demos/examples/grid-remote.component.html +0 -44
  260. package/src/demos/examples/grid-remote.component.ts +0 -164
  261. package/src/demos/examples/home.component.html +0 -39
  262. package/src/demos/examples/home.component.ts +0 -10
  263. package/src/demos/examples/jsonp.ts +0 -89
  264. package/src/demos/examples/rowdetail-preload.component.ts +0 -10
  265. package/src/demos/examples/swt-common-grid-pagination.component.ts +0 -160
  266. package/src/demos/examples/swt-common-grid-test.component.html +0 -37
  267. package/src/demos/examples/swt-common-grid-test.component.ts +0 -214
  268. package/src/demos/examples/swt-common-grid.component.ts +0 -436
  269. package/src/demos/examples/swt-logger.service.ts +0 -173
  270. package/src/demos/examples/utilities.ts +0 -9
  271. package/src/favicon.ico +0 -0
  272. package/src/index.html +0 -17
  273. package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +0 -2638
  274. package/src/library/components/angular-slickgrid.component.html +0 -5
  275. package/src/library/components/angular-slickgrid.component.ts +0 -1662
  276. package/src/library/constants.ts +0 -105
  277. package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +0 -751
  278. package/src/library/extensions/index.ts +0 -1
  279. package/src/library/extensions/slickRowDetailView.ts +0 -395
  280. package/src/library/global-grid-options.ts +0 -273
  281. package/src/library/index.ts +0 -11
  282. package/src/library/models/angularComponentOutput.interface.ts +0 -6
  283. package/src/library/models/angularGridInstance.interface.ts +0 -76
  284. package/src/library/models/externalTestingDependencies.interface.ts +0 -37
  285. package/src/library/models/gridOption.interface.ts +0 -15
  286. package/src/library/models/index.ts +0 -5
  287. package/src/library/models/rowDetailView.interface.ts +0 -16
  288. package/src/library/modules/angular-slickgrid.module.spec.ts +0 -25
  289. package/src/library/modules/angular-slickgrid.module.ts +0 -27
  290. package/src/library/services/__tests__/angularUtilService.spec.ts +0 -156
  291. package/src/library/services/__tests__/container.service.spec.ts +0 -25
  292. package/src/library/services/__tests__/translater.service.spec.ts +0 -43
  293. package/src/library/services/__tests__/utilities.spec.ts +0 -22
  294. package/src/library/services/angularUtil.service.ts +0 -120
  295. package/src/library/services/container.service.ts +0 -26
  296. package/src/library/services/index.ts +0 -4
  297. package/src/library/services/translater.service.ts +0 -38
  298. package/src/library/services/utilities.ts +0 -19
  299. package/src/library/slickgrid-config.ts +0 -10
  300. package/src/main.ts +0 -13
  301. package/src/public_api.ts +0 -1
  302. package/src/styles.scss +0 -178
  303. package/test/cypress/e2e/example01.cy.ts +0 -367
  304. package/test/cypress/e2e/example02.cy.ts +0 -60
  305. package/test/cypress/e2e/example03.cy.ts +0 -268
  306. package/test/cypress/e2e/example04.cy.ts +0 -254
  307. package/test/cypress/e2e/example05.cy.ts +0 -804
  308. package/test/cypress/e2e/example06.cy.ts +0 -890
  309. package/test/cypress/e2e/example07.cy.ts +0 -384
  310. package/test/cypress/e2e/example08.cy.ts +0 -190
  311. package/test/cypress/e2e/example09.cy.ts +0 -392
  312. package/test/cypress/e2e/example10.cy.ts +0 -650
  313. package/test/cypress/e2e/example11.cy.ts +0 -86
  314. package/test/cypress/e2e/example12.cy.ts +0 -269
  315. package/test/cypress/e2e/example13.cy.ts +0 -246
  316. package/test/cypress/e2e/example14.cy.ts +0 -122
  317. package/test/cypress/e2e/example15.cy.ts +0 -598
  318. package/test/cypress/e2e/example16.cy.ts +0 -427
  319. package/test/cypress/e2e/example17.cy.ts +0 -83
  320. package/test/cypress/e2e/example18.cy.ts +0 -431
  321. package/test/cypress/e2e/example19.cy.ts +0 -263
  322. package/test/cypress/e2e/example20.cy.ts +0 -264
  323. package/test/cypress/e2e/example21.cy.ts +0 -77
  324. package/test/cypress/e2e/example22.cy.ts +0 -94
  325. package/test/cypress/e2e/example23.cy.ts +0 -259
  326. package/test/cypress/e2e/example24.cy.ts +0 -707
  327. package/test/cypress/e2e/example25.cy.ts +0 -193
  328. package/test/cypress/e2e/example26.cy.ts +0 -111
  329. package/test/cypress/e2e/example27.cy.ts +0 -261
  330. package/test/cypress/e2e/example28.cy.ts +0 -740
  331. package/test/cypress/e2e/example29.cy.ts +0 -30
  332. package/test/cypress/e2e/example30.cy.ts +0 -757
  333. package/test/cypress/e2e/example31.cy.ts +0 -69
  334. package/test/cypress/e2e/example32.cy.ts +0 -272
  335. package/test/cypress/e2e/example33.cy.ts +0 -278
  336. package/test/cypress/e2e/example34.cy.ts +0 -84
  337. package/test/cypress/e2e/example35.cy.ts +0 -178
  338. package/test/cypress/e2e/example36.cy.ts +0 -219
  339. package/test/cypress/e2e/example37.cy.ts +0 -52
  340. package/test/cypress/e2e/example38.cy.ts +0 -160
  341. package/test/cypress/e2e/example39.cy.ts +0 -150
  342. package/test/cypress/e2e/example40.cy.ts +0 -126
  343. package/test/cypress/e2e/example41.cy.ts +0 -90
  344. package/test/cypress/e2e/example42.cy.ts +0 -82
  345. package/test/cypress/e2e/example43.cy.ts +0 -482
  346. package/test/cypress/e2e/example44.cy.ts +0 -458
  347. package/test/cypress/e2e/example45.cy.ts +0 -455
  348. package/test/cypress/e2e/home.cy.ts +0 -7
  349. package/test/cypress/fixtures/example.json +0 -5
  350. package/test/cypress/plugins/index.ts +0 -17
  351. package/test/cypress/plugins/utilities.ts +0 -28
  352. package/test/cypress/support/commands.ts +0 -88
  353. package/test/cypress/support/common.ts +0 -47
  354. package/test/cypress/support/drag.ts +0 -101
  355. package/test/cypress/support/index.ts +0 -20
  356. package/test/cypress/tsconfig.json +0 -9
  357. package/test/cypress.config.ts +0 -34
  358. package/test/mockSlickEvent.ts +0 -77
  359. package/test/rxjsResourceStub.ts +0 -69
  360. package/test/test-setup.ts +0 -6
  361. package/test/translateServiceStub.ts +0 -230
  362. package/test/translaterServiceStub.ts +0 -239
  363. package/test/tsconfig.json +0 -17
  364. package/test/vitest-global-mocks.ts +0 -41
  365. package/test/vitest-global-setup.ts +0 -3
  366. package/test/vitest-pretest.ts +0 -5
  367. package/tsconfig.app.json +0 -14
  368. package/tsconfig.json +0 -31
  369. package/tsconfig.spec.json +0 -11
  370. package/types/sortablejs.d.ts +0 -4
  371. package/vite.config.mts +0 -51
  372. /package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs.map +0 -0
  373. /package/{dist/i18n → i18n}/en.json +0 -0
  374. /package/{dist/i18n → i18n}/fr.json +0 -0
  375. /package/{dist/index.d.ts → index.d.ts} +0 -0
  376. /package/{dist/library → library}/components/angular-slickgrid.component.d.ts +0 -0
  377. /package/{dist/library → library}/constants.d.ts +0 -0
  378. /package/{dist/library → library}/extensions/index.d.ts +0 -0
  379. /package/{dist/library → library}/extensions/slickRowDetailView.d.ts +0 -0
  380. /package/{dist/library → library}/global-grid-options.d.ts +0 -0
  381. /package/{dist/library → library}/index.d.ts +0 -0
  382. /package/{dist/library → library}/models/angularComponentOutput.interface.d.ts +0 -0
  383. /package/{dist/library → library}/models/angularGridInstance.interface.d.ts +0 -0
  384. /package/{dist/library → library}/models/externalTestingDependencies.interface.d.ts +0 -0
  385. /package/{dist/library → library}/models/gridOption.interface.d.ts +0 -0
  386. /package/{dist/library → library}/models/index.d.ts +0 -0
  387. /package/{dist/library → library}/models/rowDetailView.interface.d.ts +0 -0
  388. /package/{dist/library → library}/modules/angular-slickgrid.module.d.ts +0 -0
  389. /package/{dist/library → library}/services/angularUtil.service.d.ts +0 -0
  390. /package/{dist/library → library}/services/container.service.d.ts +0 -0
  391. /package/{dist/library → library}/services/index.d.ts +0 -0
  392. /package/{dist/library → library}/services/translater.service.d.ts +0 -0
  393. /package/{dist/library → library}/services/utilities.d.ts +0 -0
  394. /package/{dist/library → library}/slickgrid-config.d.ts +0 -0
  395. /package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
@@ -1,694 +0,0 @@
1
- import { Component, OnInit } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { TranslateService } from '@ngx-translate/core';
4
- import {
5
- AngularGridInstance,
6
- AutocompleterOption,
7
- Column,
8
- Editors,
9
- EditorArguments,
10
- EditorValidator,
11
- Filters,
12
- Formatter,
13
- Formatters,
14
- GridOption,
15
- LongTextEditorOption,
16
- type MultipleSelectOption,
17
- OnEventArgs,
18
- OperatorType,
19
- SortComparers,
20
- SlickGlobalEditorLock,
21
- type SliderOption,
22
- type VanillaCalendarOption,
23
- } from '../../library';
24
- import { Subject } from 'rxjs';
25
-
26
- import { CustomInputEditor } from './custom-inputEditor';
27
- import { CustomInputFilter } from './custom-inputFilter';
28
- import fetchJsonp from './jsonp';
29
-
30
- const NB_ITEMS = 100;
31
- const URL_SAMPLE_COLLECTION_DATA = 'assets/data/collection_100_numbers.json';
32
- const URL_COUNTRIES_COLLECTION = 'assets/data/countries.json';
33
- const URL_COUNTRY_NAMES = 'assets/data/country_names.json';
34
-
35
- // you can create custom validator to pass to an inline editor
36
- const myCustomTitleValidator: EditorValidator = (value: any, _args?: EditorArguments) => {
37
- // you can get the Editor Args which can be helpful, e.g. we can get the Translate Service from it
38
- /*
39
- const grid = args && args.grid;
40
- const gridOptions = (grid?.getOptions() ?? {}) as GridOption;
41
- const translate = gridOptions.i18n;
42
- const columnEditor = args?.column?.editor;
43
- */
44
- if (value === null || value === undefined || !value.length) {
45
- return { valid: false, msg: 'This is a required field' };
46
- } else if (!/^Task\s\d+$/.test(value)) {
47
- return { valid: false, msg: 'Your title is invalid, it must start with "Task" followed by a number' };
48
- // OR use the Translate Service with your custom message
49
- // return { valid: false, msg: translate.instant('YOUR_ERROR', { x: value }) };
50
- }
51
- return { valid: true, msg: '' };
52
- };
53
-
54
- // create a custom Formatter to show the Task + value
55
- const taskFormatter: Formatter = (_row, _cell, value) => {
56
- if (value && Array.isArray(value)) {
57
- const taskValues = value.map((val) => `Task ${val}`);
58
- const values = taskValues.join(', ');
59
- return `<span title="${values}">${values}</span>`;
60
- }
61
- return '';
62
- };
63
- @Component({
64
- templateUrl: './example03.component.html',
65
- standalone: false,
66
- })
67
- export class Example3Component implements OnInit {
68
- private _commandQueue: any = [];
69
- angularGrid!: AngularGridInstance;
70
- columnDefinitions!: Column[];
71
- gridOptions!: GridOption;
72
- dataset!: any[];
73
- gridObj: any;
74
- isAutoEdit = true;
75
- alertWarning: any;
76
- updatedObject: any;
77
- selectedLanguage = 'en';
78
- duplicateTitleHeaderCount = 1;
79
-
80
- constructor(
81
- private http: HttpClient,
82
- private translate: TranslateService
83
- ) {}
84
-
85
- ngOnInit() {
86
- this.prepareGrid();
87
- }
88
-
89
- angularGridReady(angularGrid: AngularGridInstance) {
90
- this.angularGrid = angularGrid;
91
- this.gridObj = angularGrid.slickGrid;
92
- }
93
-
94
- prepareGrid() {
95
- this.columnDefinitions = [
96
- {
97
- id: 'edit',
98
- field: 'id',
99
- excludeFromColumnPicker: true,
100
- excludeFromGridMenu: true,
101
- excludeFromHeaderMenu: true,
102
- formatter: Formatters.icon,
103
- params: { iconCssClass: 'mdi mdi-pencil pointer' },
104
- minWidth: 30,
105
- maxWidth: 30,
106
- // use onCellClick OR grid.onClick.subscribe which you can see down below
107
- onCellClick: (e: Event, args: OnEventArgs) => {
108
- console.log(args);
109
- this.alertWarning = `Editing: ${args.dataContext.title}`;
110
- this.angularGrid.gridService.highlightRow(args.row, 1500);
111
- this.angularGrid.gridService.setSelectedRow(args.row);
112
- },
113
- },
114
- {
115
- id: 'delete',
116
- field: 'id',
117
- excludeFromColumnPicker: true,
118
- excludeFromGridMenu: true,
119
- excludeFromHeaderMenu: true,
120
- formatter: Formatters.icon,
121
- params: { iconCssClass: 'mdi mdi-trash-can pointer' },
122
- minWidth: 30,
123
- maxWidth: 30,
124
- // use onCellClick OR grid.onClick.subscribe which you can see down below
125
- /*
126
- onCellClick: (e: Event, args: OnEventArgs) => {
127
- console.log(args);
128
- this.alertWarning = `Deleting: ${args.dataContext.title}`;
129
- }
130
- */
131
- },
132
- {
133
- id: 'title',
134
- name: 'Title',
135
- field: 'title',
136
- minWidth: 100,
137
- filterable: true,
138
- sortable: true,
139
- editor: {
140
- model: Editors.longText,
141
- required: true,
142
- maxLength: 12,
143
- options: {
144
- // you can change textarea cols,rows (defaults to 40,4)
145
- cols: 42,
146
- rows: 5,
147
- buttonTexts: {
148
- /* you can change button texts (defaults to "Cancel", "Save") */
149
- // cancel: 'Close',
150
- // save: 'Done'
151
- /* or with translations (defaults to "CANCEL", "SAVE") */
152
- // cancelKey: 'CANCEL',
153
- // saveKey: 'SAVE'
154
- },
155
- } as LongTextEditorOption,
156
- validator: myCustomTitleValidator,
157
- },
158
- onCellChange: (e: Event, args: OnEventArgs) => {
159
- console.log(args);
160
- this.alertWarning = `Updated Title: ${args.dataContext.title}`;
161
- },
162
- },
163
- {
164
- id: 'title2',
165
- name: 'Title, Custom Editor',
166
- field: 'title',
167
- minWidth: 70,
168
- filterable: true,
169
- sortable: true,
170
- editor: {
171
- model: CustomInputEditor,
172
- // model: Editors.text,
173
- placeholder: 'custom',
174
- validator: myCustomTitleValidator, // use a custom validator
175
- },
176
- filter: {
177
- model: CustomInputFilter,
178
- placeholder: '🔎︎ custom',
179
- },
180
- },
181
- {
182
- id: 'duration',
183
- name: 'Duration (days)',
184
- field: 'duration',
185
- minWidth: 100,
186
- filterable: true,
187
- sortable: true,
188
- formatter: Formatters.complexObject,
189
- type: 'number',
190
- exportWithFormatter: true,
191
- filter: {
192
- model: Filters.slider,
193
- options: { hideSliderNumber: false } as SliderOption,
194
- },
195
- editor: {
196
- model: Editors.slider,
197
- minValue: 0,
198
- maxValue: 100,
199
- // options: { hideSliderNumber: true },
200
- },
201
- /*
202
- editor: {
203
- // default is 0 decimals, if no decimals is passed it will accept 0 or more decimals
204
- // however if you pass the "decimalPlaces", it will validate with that maximum
205
- alwaysSaveOnEnterKey: true, // defaults to False, when set to true and user presses ENTER it will always call a Save even if value is empty
206
- model: Editors.float,
207
- placeholder: 'enter number',
208
- title: 'Your number must be bigger than 5',
209
- minValue: 5,
210
- maxValue: 365,
211
- // the default validation error message is in English but you can override it by using "errorMessage"
212
- // errorMessage: this.i18n.tr('INVALID_FLOAT', { maxDecimal: 2 }),
213
- params: { decimalPlaces: 2 },
214
- },
215
- */
216
- },
217
- {
218
- id: 'complete',
219
- name: '% Complete',
220
- field: 'percentComplete',
221
- minWidth: 100,
222
- filterable: true,
223
- formatter: Formatters.multiple,
224
- type: 'number',
225
- editor: {
226
- model: Editors.singleSelect,
227
-
228
- // We can also add HTML text to be rendered (any bad script will be sanitized) but we have to opt-in, else it will be sanitized
229
- enableRenderHtml: true,
230
- collection: Array.from(Array(101).keys()).map((k) => ({
231
- value: k,
232
- label: k,
233
- symbol: '<i class="mdi mdi-percent-outline" style="color:cadetblue"></i>',
234
- })),
235
- customStructure: {
236
- value: 'value',
237
- label: 'label',
238
- labelSuffix: 'symbol',
239
- },
240
-
241
- // collection: Array.from(Array(101).keys()).map(k => ({ value: k, label: k, labelSuffix: '%' })),
242
- collectionSortBy: {
243
- property: 'label',
244
- sortDesc: true,
245
- },
246
- collectionFilterBy: {
247
- property: 'value',
248
- value: 0,
249
- operator: OperatorType.notEqual,
250
- },
251
- // you could also provide a collection override to filter/sort based on the item dataContext or whatever else
252
- // collectionOverride: (updatedCollection, args) => {
253
- // console.log(args);
254
- // return updatedCollection.filter((col) => args.dataContext.id % 2 ? col.value < 50 : col.value >= 50);
255
- // },
256
- options: { maxHeight: 400 } as MultipleSelectOption,
257
- },
258
- params: {
259
- formatters: [Formatters.collectionEditor, Formatters.percentCompleteBar],
260
- },
261
- // validator: (value, args) => {
262
- // if (value < 50) {
263
- // return { valid: false, msg: 'Please use at least 50%' };
264
- // }
265
- // return { valid: true, msg: '' };
266
- // }
267
- },
268
- {
269
- id: 'start',
270
- name: 'Start',
271
- field: 'start',
272
- minWidth: 100,
273
- filterable: true,
274
- filter: { model: Filters.compoundDate },
275
- formatter: Formatters.multiple,
276
- params: {
277
- formatters: [Formatters.complexObject, Formatters.dateIso],
278
- },
279
- exportWithFormatter: true,
280
- sortable: true,
281
- type: 'date',
282
- editor: {
283
- model: Editors.date,
284
- },
285
- },
286
- {
287
- id: 'finish',
288
- name: 'Finish',
289
- field: 'finish',
290
- minWidth: 100,
291
- filterable: true,
292
- sortable: true,
293
- filter: { model: Filters.compoundDate },
294
- formatter: Formatters.dateIso,
295
- exportWithFormatter: true,
296
- type: 'date', // dataset cell input format
297
- // outputType: 'dateUs', // date picker format
298
- saveOutputType: 'dateUtc', // save output date formattype: 'date',
299
- editor: {
300
- model: Editors.date,
301
- // override any of the calendar picker options through "options"
302
- // please note that there's no TSlint on this property since it's generic for any filter, so make sure you entered the correct filter option(s)
303
- options: {
304
- displayDateMin: 'today',
305
-
306
- // if we want to preload the date picker with a different date,
307
- // we could do it by assigning `selectedDates: []`
308
- // NOTE: vanilla-calendar doesn't automatically focus the picker to the year/month and you need to do it yourself
309
- // selectedDates: ['2021-06-04'],
310
- // selectedMonth: 6 - 1, // Note: JS Date month (only) is zero index based, so June is 6-1 => 5
311
- // selectedYear: 2021
312
- } as VanillaCalendarOption,
313
- },
314
- },
315
- {
316
- id: 'cityOfOrigin',
317
- name: 'City of Origin',
318
- field: 'cityOfOrigin',
319
- filterable: true,
320
- minWidth: 100,
321
- editor: {
322
- model: Editors.autocompleter,
323
- placeholder: '🔎︎ search city',
324
-
325
- // We can use the autocomplete through 3 ways "collection", "collectionAsync" or with your own autocomplete options
326
- // use your own autocomplete options, instead of fetch-jsonp, use http
327
- // here we use fetch-jsonp just because I'm not sure how to configure http with JSONP and CORS
328
- options: {
329
- forceUserInput: true,
330
- minLength: 3,
331
- fetch: (searchText: string, updateCallback: (items: false | any[]) => void) => {
332
- /** with Angular Http, note this demo won't work because of CORS */
333
- // this.http.get(`http://gd.geobytes.com/AutoCompleteCity?q=${searchText}`).subscribe(data => updateCallback(data));
334
-
335
- /** with JSONP will work locally but not on the GitHub demo because of CORS */
336
- fetchJsonp<string[]>(`http://gd.geobytes.com/AutoCompleteCity?q=${searchText}`)
337
- .then((response) => response.json())
338
- .then((json) => updateCallback(json))
339
- .catch((ex) => console.log('invalid JSONP response', ex));
340
- },
341
- } as AutocompleterOption,
342
- },
343
- filter: {
344
- model: Filters.autocompleter,
345
- // placeholder: '🔎︎ search city',
346
-
347
- // We can use the autocomplete through 3 ways "collection", "collectionAsync" or with your own autocomplete options
348
- // collectionAsync: this.http.get(URL_COUNTRIES_COLLECTION),
349
-
350
- // OR use the autocomplete through 3 ways "collection", "collectionAsync" or with your own autocomplete options
351
- // use your own autocomplete options, instead of fetch-jsonp, use HttpClient or FetchClient
352
- options: {
353
- minLength: 3,
354
- fetch: (searchText: string, updateCallback: (items: false | any[]) => void) => {
355
- fetchJsonp<string[]>(`http://gd.geobytes.com/AutoCompleteCity?q=${searchText}`)
356
- .then((response) => response.json())
357
- .then((json) => updateCallback(json))
358
- .catch((ex) => console.log('invalid JSONP response', ex));
359
- },
360
- } as AutocompleterOption,
361
- },
362
- },
363
- {
364
- id: 'countryOfOrigin',
365
- name: 'Country of Origin',
366
- field: 'countryOfOrigin',
367
- formatter: Formatters.complexObject,
368
- exportWithFormatter: true,
369
- dataKey: 'code',
370
- labelKey: 'name',
371
- type: 'object',
372
- sortComparer: SortComparers.objectString, // this sorter requires the dataKey and assume that obj1[dataKey] will be a string so it can sort it that way
373
- filterable: true,
374
- sortable: true,
375
- minWidth: 100,
376
- editor: {
377
- model: Editors.autocompleter,
378
- customStructure: { label: 'name', value: 'code' },
379
- collectionAsync: this.http.get(URL_COUNTRIES_COLLECTION),
380
- },
381
- filter: {
382
- model: Filters.autocompleter,
383
- customStructure: { label: 'name', value: 'code' },
384
- collectionAsync: this.http.get(URL_COUNTRIES_COLLECTION),
385
- },
386
- },
387
- {
388
- id: 'countryOfOriginName',
389
- name: 'Country of Origin Name',
390
- field: 'countryOfOriginName',
391
- filterable: true,
392
- sortable: true,
393
- minWidth: 100,
394
- editor: {
395
- model: Editors.autocompleter,
396
- collectionAsync: this.http.get(URL_COUNTRY_NAMES),
397
- },
398
- filter: {
399
- model: Filters.autocompleter,
400
- collectionAsync: this.http.get(URL_COUNTRY_NAMES),
401
- },
402
- },
403
- {
404
- id: 'effort-driven',
405
- name: 'Effort Driven',
406
- field: 'effortDriven',
407
- minWidth: 70,
408
- filterable: true,
409
- type: 'boolean',
410
- filter: {
411
- model: Filters.singleSelect,
412
- collection: [
413
- { value: '', label: '' },
414
- { value: true, label: 'True' },
415
- { value: false, label: 'False' },
416
- ],
417
- },
418
- formatter: Formatters.checkmarkMaterial,
419
- editor: {
420
- model: Editors.checkbox,
421
- },
422
- },
423
- {
424
- id: 'prerequisites',
425
- name: 'Prerequisites',
426
- field: 'prerequisites',
427
- minWidth: 100,
428
- filterable: true,
429
- formatter: taskFormatter,
430
- exportWithFormatter: true,
431
- sanitizeDataExport: true,
432
- sortable: true,
433
- editor: {
434
- placeholder: 'choose option',
435
- collectionAsync: this.http.get<{ value: string; label: string }[]>(URL_SAMPLE_COLLECTION_DATA),
436
- // OR a regular collection load
437
- // collection: Array.from(Array(100).keys()).map(k => ({ value: k, prefix: 'Task', label: k })),
438
- collectionSortBy: {
439
- property: 'label',
440
- sortDesc: true,
441
- },
442
- customStructure: {
443
- label: 'label',
444
- value: 'value',
445
- labelPrefix: 'prefix',
446
- },
447
- collectionOptions: {
448
- separatorBetweenTextLabels: ' ',
449
- },
450
- model: Editors.multipleSelect,
451
- required: true,
452
- },
453
- filter: {
454
- collectionAsync: this.http.get<{ value: string; label: string }[]>(URL_SAMPLE_COLLECTION_DATA),
455
- // OR a regular collection load
456
- // collection: Array.from(Array(100).keys()).map(k => ({ value: k, prefix: 'Task', label: k })),
457
- collectionSortBy: {
458
- property: 'label',
459
- sortDesc: true,
460
- },
461
- customStructure: {
462
- label: 'label',
463
- value: 'value',
464
- labelPrefix: 'prefix',
465
- },
466
- collectionOptions: {
467
- separatorBetweenTextLabels: ' ',
468
- },
469
- model: Filters.multipleSelect,
470
- operator: OperatorType.inContains,
471
- },
472
- },
473
- ];
474
-
475
- this.gridOptions = {
476
- asyncEditorLoading: false,
477
- autoEdit: this.isAutoEdit,
478
- autoCommitEdit: false,
479
- autoResize: {
480
- container: '#demo-container',
481
- rightPadding: 10,
482
- },
483
- editable: true,
484
- enableCellNavigation: true,
485
- enableColumnPicker: true,
486
- enableExcelCopyBuffer: true,
487
- enableFiltering: true,
488
- editCommandHandler: (item, column, editCommand) => {
489
- this._commandQueue.push(editCommand);
490
- editCommand.execute();
491
- },
492
- i18n: this.translate,
493
- };
494
-
495
- this.dataset = this.mockData(NB_ITEMS);
496
- }
497
-
498
- /** Add a new row to the grid and refresh the Filter collection.
499
- * Note that because Filter elements are always displayed on the screen, we need to tell the Filter,
500
- * we do this via a Subject .next(), that it's collection got changed
501
- * as for the Editor, there's nothing to do since the element is not shown and it will have latest collection next time it shows up
502
- */
503
- addItem() {
504
- const lastRowIndex = this.dataset.length;
505
- const newRows = this.mockData(1, lastRowIndex);
506
-
507
- // wrap into a timer to simulate a backend async call
508
- setTimeout(() => {
509
- const requisiteColumnDef = this.columnDefinitions.find((column: Column) => column.id === 'prerequisites');
510
- if (requisiteColumnDef) {
511
- const filterCollectionAsync = requisiteColumnDef.filter!.collectionAsync;
512
- const editorCollection = requisiteColumnDef.editor!.collection;
513
-
514
- if (Array.isArray(editorCollection)) {
515
- // add the new row to the grid
516
- this.angularGrid.gridService.addItem(newRows[0]);
517
-
518
- // then refresh the Editor "collection", we have 2 ways of doing it
519
-
520
- // Push to the Editor "collection"
521
- editorCollection.push({ value: lastRowIndex, label: lastRowIndex, prefix: 'Task' });
522
-
523
- // or replace entire "collection"
524
- // durationColumnDef.editor.collection = [...collection, ...[{ value: lastRowIndex, label: lastRowIndex }]];
525
-
526
- // for the Filter only, we have a trigger an RxJS/Subject change with the new collection
527
- // we do this because Filter(s) are shown at all time, while on Editor it's unnecessary since they are only shown when opening them
528
- if (filterCollectionAsync instanceof Subject) {
529
- filterCollectionAsync.next(editorCollection);
530
- }
531
- }
532
- }
533
- }, 250);
534
- }
535
-
536
- /**
537
- * Delete last inserted row.
538
- * Note that because Filter elements are always displayed on the screen, we need to tell the Filter,
539
- * we do this via a Subject .next(), that it's collection got changed
540
- * as for the Editor, there's nothing to do since the element is not shown and it will have latest collection next time it shows up
541
- */
542
- deleteItem() {
543
- const requisiteColumnDef = this.columnDefinitions.find((column: Column) => column.id === 'prerequisites');
544
- if (requisiteColumnDef) {
545
- const filterCollectionAsync = requisiteColumnDef.filter!.collectionAsync;
546
- const filterCollection = requisiteColumnDef.filter!.collection;
547
-
548
- if (Array.isArray(filterCollection)) {
549
- // sort collection in descending order and take out last collection option
550
- const selectCollectionObj = this.sortCollectionDescending(filterCollection).pop();
551
-
552
- // then we will delete that item from the grid
553
- this.angularGrid.gridService.deleteItemById(selectCollectionObj.value);
554
-
555
- // for the Filter only, we have a trigger an RxJS/Subject change with the new collection
556
- // we do this because Filter(s) are shown at all time, while on Editor it's unnecessary since they are only shown when opening them
557
- if (filterCollectionAsync instanceof Subject) {
558
- filterCollectionAsync.next(filterCollection);
559
- }
560
- }
561
- }
562
- }
563
-
564
- sortCollectionDescending(collection: any[]) {
565
- return collection.sort((item1, item2) => item1.value - item2.value);
566
- }
567
-
568
- mockData(itemCount: number, startingIndex = 0) {
569
- // mock a dataset
570
- const tempDataset = [];
571
- for (let i = startingIndex; i < startingIndex + itemCount; i++) {
572
- const randomYear = 2000 + this.randomBetween(4, 15);
573
- const randomFinishYear = new Date().getFullYear() - 3 + Math.floor(Math.random() * 10); // use only years not lower than 3 years ago
574
- const randomMonth = Math.floor(Math.random() * 11);
575
- const randomDay = Math.floor(Math.random() * 29);
576
- const randomPercent = Math.round(Math.random() * 100);
577
- const randomFinish = new Date(randomFinishYear, randomMonth + 1, randomDay);
578
-
579
- tempDataset.push({
580
- id: i,
581
- title: 'Task ' + i,
582
- duration: i % 33 === 0 ? null : Math.round(Math.random() * 100) + '',
583
- start: new Date(randomYear, randomMonth, randomDay),
584
- percentComplete: randomPercent,
585
- percentCompleteNumber: randomPercent,
586
- finish: randomFinish < new Date() ? '' : randomFinish, // make sure the random date is earlier than today
587
- effortDriven: i % 5 === 0,
588
- prerequisites: i % 2 === 0 && i !== 0 && i < 12 ? [i, i - 1] : [],
589
- countryOfOrigin: i % 2 ? { code: 'CA', name: 'Canada' } : { code: 'US', name: 'United States' },
590
- countryOfOriginName: i % 2 ? 'Canada' : 'United States',
591
- cityOfOrigin: i % 2 ? 'Vancouver, BC, Canada' : 'Boston, MA, United States',
592
- });
593
- }
594
- return tempDataset;
595
- }
596
-
597
- randomBetween(min: number, max: number): number {
598
- return Math.floor(Math.random() * (max - min + 1) + min);
599
- }
600
-
601
- onCellChanged(e: Event, args: any) {
602
- this.updatedObject = args.item;
603
- }
604
-
605
- onCellClicked(e: Event, args: any) {
606
- const metadata = this.angularGrid.gridService.getColumnFromEventArguments(args);
607
- console.log(metadata);
608
-
609
- if (metadata.columnDef.id === 'edit') {
610
- this.alertWarning = `open a modal window to edit: ${metadata.dataContext.title}`;
611
-
612
- // highlight the row, to customize the color, you can change the SASS variable $row-highlight-background-color
613
- this.angularGrid.gridService.highlightRow(args.row, 1500);
614
-
615
- // you could also select the row, when using "enableCellNavigation: true", it automatically selects the row
616
- // this.angularGrid.gridService.setSelectedRow(args.row);
617
- } else if (metadata.columnDef.id === 'delete') {
618
- if (confirm('Are you sure?')) {
619
- this.angularGrid.gridService.deleteItemById(metadata.dataContext.id);
620
- }
621
- }
622
- }
623
-
624
- onValidationError(e: Event, args: any) {
625
- if (args.validationResults) {
626
- alert(args.validationResults.msg);
627
- }
628
- }
629
-
630
- changeAutoCommit() {
631
- this.gridOptions.autoCommitEdit = !this.gridOptions.autoCommitEdit;
632
- this.gridObj.setOptions({
633
- autoCommitEdit: this.gridOptions.autoCommitEdit,
634
- });
635
- return true;
636
- }
637
-
638
- dynamicallyAddTitleHeader() {
639
- const newCol = {
640
- id: `title${this.duplicateTitleHeaderCount++}`,
641
- name: 'Title',
642
- field: 'title',
643
- editor: {
644
- model: Editors.text,
645
- required: true,
646
- validator: myCustomTitleValidator, // use a custom validator
647
- },
648
- sortable: true,
649
- minWidth: 100,
650
- filterable: true,
651
- };
652
-
653
- // you can dynamically add your column to your column definitions
654
- // and then use the spread operator [...cols] OR slice to force Angular to review the changes
655
- this.columnDefinitions.push(newCol);
656
- this.columnDefinitions = this.columnDefinitions.slice(); // or use spread operator [...cols]
657
-
658
- // NOTE if you use an Extensions (Checkbox Selector, Row Detail, ...) that modifies the column definitions in any way
659
- // you MUST use "getAllColumnDefinitions()" from the GridService, using this will be ALL columns including the 1st column that is created internally
660
- // for example if you use the Checkbox Selector (row selection), you MUST use the code below
661
- /*
662
- const allColumns = this.angularGrid.gridService.getAllColumnDefinitions();
663
- allColumns.push(newCol);
664
- this.columnDefinitions = [...allColumns]; // (or use slice) reassign to column definitions for Angular to do dirty checking
665
- */
666
- }
667
-
668
- dynamicallyRemoveLastColumn() {
669
- this.columnDefinitions.pop();
670
- this.columnDefinitions = this.columnDefinitions.slice();
671
-
672
- /*
673
- // remove your column the full set of columns
674
- // and use slice or spread [...] to trigger an Angular dirty change
675
- allOriginalColumns.pop();
676
- this.columnDefinitions = allOriginalColumns.slice();
677
- */
678
- }
679
-
680
- setAutoEdit(isAutoEdit: boolean) {
681
- this.isAutoEdit = isAutoEdit;
682
- this.gridObj.setOptions({ autoEdit: isAutoEdit }); // change the grid option dynamically
683
- return true;
684
- }
685
-
686
- undo() {
687
- const command = this._commandQueue.pop();
688
- // const item = this.angularGrid.dataView.getItem(command.row);
689
- if (command && SlickGlobalEditorLock.cancelCurrentEdit()) {
690
- command.undo();
691
- this.gridObj.gotoCell(command.row, command.cell, false);
692
- }
693
- }
694
- }